Update to debian 1.14.4
* Update to debian 1.14.4-1
* For Day release
* Remove Plugin doc for a smaller package
Bug: 148502049
Change-Id: If6e09a182e3afcd698c9e6c55841d1a71e714d48
diff --git a/debian/build-deps b/debian/build-deps
index 1a3c79a..48bdf64 100644
--- a/debian/build-deps
+++ b/debian/build-deps
@@ -15,7 +15,7 @@
@GST_EXTRA_BUILD_DEPENDS@
@GST_LIB_DEV_DEP@
gstreamer@GST_ABI@-doc
-gstreamer@GST_ABI@-plugins-base (>= 1.10.0)
+gstreamer@GST_ABI@-plugins-base (>= 1.14.4)
gstreamer@GST_ABI@-plugins-base-doc
gtk-doc-tools (>= 1.12)
ladspa-sdk
@@ -27,34 +27,32 @@
libcurl4-gnutls-dev (>= 7.35.0)
libdca-dev
libde265-dev
-libdrm-dev [!hurd-any]
libdvdnav-dev (>= 4.1.2) [!hurd-any]
-libegl1-mesa-dev
libexempi-dev
libexif-dev (>= 0.6.16)
libfaad-dev (>= 2.7)
libfluidsynth-dev (>= 1.0)
libgirepository1.0-dev (>= 0.9.12-4~)
-libgl1-mesa-dev
-libgles2-mesa-dev
libglib2.0-dev (>= 2.40)
-libglu1-mesa-dev
libgme-dev
libgnutls28-dev (>= 2.11.3)
libgsm1-dev
-libgstreamer-plugins-base@GST_ABI@-dev (>= 1.10.0)
+libgstreamer-plugins-base@GST_ABI@-dev (>= 1.14.4)
libgtk-3-dev (>= 3.15.0)
libiptcdata0-dev (>= 1.0.2)
libkate-dev (>= 0.1.7)
+liblcms2-dev (>= 2.7)
liblilv-dev (>= 0.16)
libmjpegtools-dev
libmms-dev (>= 0.4)
libmodplug-dev
libmpcdec-dev
+libnice-dev (>= 0.1.14)
libofa0-dev (>= 0.9.3)
libopenal-dev (>= 1:1.14)
libopenexr-dev
-libopenjp2-7-dev
+libopenjp2-7-dev (>= 2.1)
+libopenmpt-dev
libopus-dev (>= 0.9.4)
liborc-0.4-dev (>= 1:0.4.17)
libpng-dev
@@ -63,7 +61,7 @@
libsndfile1-dev (>= 1.0.16)
libsoundtouch-dev (>= 1.5.0)
libspandsp-dev
-libsrtp0-dev
+libsrtp2-dev (>= 2.1)
libssl-dev
libtool (>= 2.2.6)
libvo-aacenc-dev
@@ -72,6 +70,7 @@
libwebrtc-audio-processing-dev (>= 0.2)
libwildmidi-dev (>= 0.2.3)
libx11-dev
+libx11-xcb-dev
libx265-dev
libxml2-dev (>= 2.8)
libxvidcore-dev
diff --git a/debian/build-deps.in b/debian/build-deps.in
index 6ae6aaa..2c4dee2 100644
--- a/debian/build-deps.in
+++ b/debian/build-deps.in
@@ -1,6 +1,6 @@
@GST_LIB_DEV_DEP@
@GST_EXTRA_BUILD_DEPENDS@
-libgstreamer-plugins-base@GST_ABI@-dev (>= 1.10.0)
+libgstreamer-plugins-base@GST_ABI@-dev (>= 1.14.4)
autotools-dev
dh-autoreconf
automake (>= 1.14)
@@ -28,11 +28,12 @@
libexempi-dev
libiptcdata0-dev (>= 1.0.2)
libwildmidi-dev (>= 0.2.3)
-gstreamer@GST_ABI@-plugins-base (>= 1.10.0)
+gstreamer@GST_ABI@-plugins-base (>= 1.14.4)
libofa0-dev (>= 0.9.3)
libdvdnav-dev (>= 4.1.2) [!hurd-any]
libssl-dev
libx11-dev
+libx11-xcb-dev
libass-dev (>= 0.10.4)
libmodplug-dev
libkate-dev (>= 0.1.7)
@@ -54,14 +55,10 @@
libzvbi-dev
libspandsp-dev
libopus-dev (>= 0.9.4)
-libgl1-mesa-dev
-libegl1-mesa-dev
-libgles2-mesa-dev
-libglu1-mesa-dev
libxml2-dev (>= 2.8)
libfluidsynth-dev (>= 1.0)
-libsrtp0-dev
-libopenjp2-7-dev
+libsrtp2-dev (>= 2.1)
+libopenjp2-7-dev (>= 2.1)
libchromaprint-dev
libwebp-dev (>= 0.2.1)
libmjpegtools-dev
@@ -77,6 +74,8 @@
gir1.2-freedesktop
gir1.2-gstreamer-1.0
gir1.2-gst-plugins-base-1.0
-libdrm-dev [!hurd-any]
liblilv-dev (>= 0.16)
libwebrtc-audio-processing-dev (>= 0.2)
+liblcms2-dev (>= 2.7)
+libopenmpt-dev
+libnice-dev (>= 0.1.14)
diff --git a/debian/changelog b/debian/changelog
index 28cf455..d464042 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+gst-plugins-bad1.0 (1.14.4-1+mtk) mendel-day; urgency=medium
+
+ * Update to debian 1.14.4-1
+ * For Mendel Day release
+ * Remove doc in the package
+
+ -- Coral Team <coral-support@google.com> Mon, 03 Feb 2020 11:48:14 -0800
+
gst-plugins-bad1.0 (1.10.4-1+mtk) mendel-chef; urgency=medium
* Configuration tweaks for Excelsior platform
diff --git a/debian/control b/debian/control
index 36ee4ce..54e22b1 100644
--- a/debian/control
+++ b/debian/control
@@ -1,7 +1,7 @@
Source: gst-plugins-bad1.0
Section: libs
-Priority: extra
-Maintainer: Maintainers of GStreamer packages <pkg-gstreamer-maintainers@lists.alioth.debian.org>
+Priority: optional
+Maintainer: Maintainers of GStreamer packages <gst-plugins-bad1.0@packages.debian.org>
Uploaders: Sebastian Dröge <slomo@debian.org>,
Sjoerd Simons <sjoerd@debian.org>
Build-Depends: autoconf (>= 2.69),
@@ -20,13 +20,12 @@
libusb-1.0-0-dev [linux-any],
libbluetooth-dev (>= 5) [linux-any],
libsbc-dev (>= 1.1) [linux-any],
- libwayland-dev (>= 1.0) [linux-any],
- wayland-protocols [linux-any],
- libgstreamer1.0-dev (>= 1.10.0),
- gstreamer1.0-doc,
- gstreamer1.0-plugins-base (>= 1.10.0),
- gstreamer1.0-plugins-base-doc,
- gtk-doc-tools (>= 1.12),
+ libwayland-dev (>= 1.4.0) [linux-any],
+ libdrm-dev (>= 2.4.55) [linux-any],
+ wayland-protocols (>= 1.4) [linux-any],
+ libvulkan-dev [linux-any],
+ libgstreamer1.0-dev (>= 1.14.4),
+ gstreamer1.0-plugins-base (>= 1.14.4),
ladspa-sdk,
libass-dev (>= 0.10.4),
libbs2b-dev,
@@ -36,33 +35,31 @@
libcurl4-gnutls-dev (>= 7.35.0),
libdca-dev,
libde265-dev,
- libdrm-dev [!hurd-any],
libdvdnav-dev (>= 4.1.2) [!hurd-any],
- libegl1-mesa-dev,
libexempi-dev,
libexif-dev (>= 0.6.16),
libfaad-dev (>= 2.7),
libfluidsynth-dev (>= 1.0),
- libgl1-mesa-dev,
- libgles2-mesa-dev,
libglib2.0-dev (>= 2.40),
- libglu1-mesa-dev,
libgme-dev,
libgnutls28-dev (>= 2.11.3),
libgsm1-dev,
- libgstreamer-plugins-base1.0-dev (>= 1.10.0),
+ libgstreamer-plugins-base1.0-dev (>= 1.14.4),
libgtk-3-dev (>= 3.15.0),
libiptcdata0-dev (>= 1.0.2),
libkate-dev (>= 0.1.7),
+ liblcms2-dev (>= 2.7),
liblilv-dev (>= 0.16),
libmjpegtools-dev,
libmms-dev (>= 0.4),
libmodplug-dev,
libmpcdec-dev,
+ libnice-dev (>= 0.1.14),
libofa0-dev (>= 0.9.3),
libopenal-dev (>= 1:1.14),
libopenexr-dev,
- libopenjp2-7-dev,
+ libopenjp2-7-dev (>= 2.1),
+ libopenmpt-dev,
libopus-dev (>= 0.9.4),
liborc-0.4-dev (>= 1:0.4.17),
libpng-dev,
@@ -71,7 +68,7 @@
libsndfile1-dev (>= 1.0.16),
libsoundtouch-dev (>= 1.5.0),
libspandsp-dev,
- libsrtp0-dev,
+ libsrtp2-dev (>= 2.1),
libssl-dev,
libtool (>= 2.2.6),
libvo-aacenc-dev,
@@ -80,6 +77,7 @@
libwebrtc-audio-processing-dev (>= 0.2),
libwildmidi-dev (>= 0.2.3),
libx11-dev,
+ libx11-xcb-dev,
libx265-dev,
libxml2-dev (>= 2.8),
libxvidcore-dev,
@@ -87,31 +85,9 @@
nettle-dev,
pkg-config (>= 0.11.0)
Standards-Version: 3.9.8
-Vcs-Git: git://anonscm.debian.org/pkg-gstreamer/gst-plugins-bad1.0.git
-Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-gstreamer/gst-plugins-bad1.0.git;a=summary
-Homepage: http://gstreamer.freedesktop.org/modules/gst-plugins-bad.html
-
-Package: gstreamer1.0-plugins-bad-doc
-Architecture: all
-Multi-Arch: foreign
-Section: doc
-Depends: ${misc:Depends},
- gstreamer1.0-doc,
- gstreamer1.0-plugins-base-doc
-Description: GStreamer documentation for plugins from the "bad" set
- GStreamer is a streaming media framework, based on graphs of filters
- which operate on media data. Applications using this library can do
- anything from real-time sound processing to playing videos, and just
- about anything else media-related. Its plugin-based architecture means
- that new data types or processing capabilities can be added simply by
- installing new plug-ins.
- .
- GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
- to the rest. They might be close to being good quality, but they're missing
- something - be it a good code review, some documentation, a set of tests, a
- real live maintainer, or some actual wide use.
- .
- This package contains the documentation for plugins from the "bad" set.
+Vcs-Git: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0.git
+Vcs-Browser: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0/
+Homepage: https://gstreamer.freedesktop.org
Package: gstreamer1.0-plugins-bad
Architecture: any
@@ -121,9 +97,15 @@
${shlibs:Depends},
gstreamer1.0-plugins-base,
libgstreamer-plugins-bad1.0-0 (= ${binary:Version}),
-Provides: ${gstreamer:Provides}
+Provides: gstreamer1.0-plugins-bad-videoparsers,
+ gstreamer1.0-plugins-bad-faad,
+ ${gstreamer:Provides}
Suggests: frei0r-plugins
-Replaces: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
+Conflicts: gstreamer1.0-plugins-bad-videoparsers (<< 1.11.91-1ubuntu1),
+ gstreamer1.0-plugins-bad-faad (<< 1.11.91-1ubuntu1)
+Replaces: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2),
+ gstreamer1.0-plugins-bad-videoparsers (<< 1.11.91-1ubuntu1),
+ gstreamer1.0-plugins-bad-faad (<< 1.11.91-1ubuntu1)
Breaks: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
XB-GStreamer-Version: ${gstreamer:Version}
XB-GStreamer-Elements: ${gstreamer:Elements}
@@ -148,7 +130,7 @@
Architecture: any
Multi-Arch: same
Section: debug
-Priority: extra
+Priority: optional
Depends: gstreamer1.0-plugins-bad (= ${binary:Version}),
${misc:Depends}
Replaces: gstreamer1.0-plugins-base-dbg (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
@@ -169,12 +151,12 @@
Package: libgstreamer-plugins-bad1.0-0
Architecture: any
Section: libs
-Priority: extra
+Priority: optional
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends},
${shlibs:Depends},
-Description: GStreamer development files for libraries from the "bad" set
+Description: GStreamer libraries from the "bad" set
GStreamer is a streaming media framework, based on graphs of filters
which operate on media data. Applications using this library can do
anything from real-time sound processing to playing videos, and just
@@ -192,8 +174,9 @@
Package: libgstreamer-plugins-bad1.0-dev
Architecture: any
+Multi-Arch: same
Section: libdevel
-Priority: extra
+Priority: optional
Depends: ${misc:Depends},
libgstreamer-plugins-bad1.0-0 (= ${binary:Version}),
libgstreamer1.0-dev,
diff --git a/debian/control.in b/debian/control.in
index 67f86f0..3c1e541 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -1,14 +1,14 @@
Source: gst-plugins-bad@GST_ABI@
Section: libs
Priority: extra
-Maintainer: Maintainers of GStreamer packages <pkg-gstreamer-maintainers@lists.alioth.debian.org>
+Maintainer: Maintainers of GStreamer packages <gst-plugins-bad1.0@packages.debian.org>
Uploaders: Sebastian Dröge <slomo@debian.org>,
Sjoerd Simons <sjoerd@debian.org>
Build-Depends: BUILDDEPS
Standards-Version: 3.9.3
-Vcs-Git: git://anonscm.debian.org/pkg-gstreamer/gst-plugins-bad@GST_ABI@.git
-Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-gstreamer/gst-plugins-bad@GST_ABI@.git;a=summary
-Homepage: http://gstreamer.freedesktop.org/modules/gst-plugins-bad.html
+Vcs-Git: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0.git
+Vcs-Browser: https://salsa.debian.org/gstreamer-team/gst-plugins-bad1.0/
+Homepage: https://gstreamer.freedesktop.org
Package: @GST_PKGNAME@-plugins-bad-doc
Architecture: all
@@ -40,9 +40,15 @@
${shlibs:Depends},
gstreamer@GST_ABI@-plugins-base,
libgstreamer-plugins-bad@GST_DEB_ABI@ (= ${binary:Version}),
-Provides: ${gstreamer:Provides}
+Provides: @GST_PKGNAME@-plugins-bad-videoparsers,
+ @GST_PKGNAME@-plugins-bad-faad,
+ ${gstreamer:Provides}
Suggests: frei0r-plugins
-Replaces: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
+Conflicts: @GST_PKGNAME@-plugins-bad-videoparsers (<< 1.11.91-1ubuntu1),
+ @GST_PKGNAME@-plugins-bad-faad (<< 1.11.91-1ubuntu1)
+Replaces: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2),
+ @GST_PKGNAME@-plugins-bad-videoparsers (<< 1.11.91-1ubuntu1),
+ @GST_PKGNAME@-plugins-bad-faad (<< 1.11.91-1ubuntu1)
Breaks: gstreamer1.0-plugins-base (<< 0.11.94), gstreamer1.0-plugins-good (<< 1.1.2)
XB-GStreamer-Version: ${gstreamer:Version}
XB-GStreamer-Elements: ${gstreamer:Elements}
@@ -63,6 +69,37 @@
something - be it a good code review, some documentation, a set of tests, a
real live maintainer, or some actual wide use.
+Package: @GST_PKGNAME@-opencv
+Architecture: any
+Multi-Arch: same
+Depends: ${misc:Depends},
+ ${shlibs:Depends},
+ gstreamer@GST_ABI@-plugins-base,
+ libgstreamer-plugins-bad@GST_DEB_ABI@ (= ${binary:Version}),
+ libgstreamer-opencv@GST_DEB_ABI@ (= ${binary:Version}),
+Conflicts: @GST_PKGNAME@-plugins-bad (<< 1.13.1)
+Replaces: @GST_PKGNAME@-plugins-bad (<< 1.13.1)
+XB-GStreamer-Version: ${gstreamer:Version}
+XB-GStreamer-Elements: ${gstreamer:Elements}
+XB-GStreamer-URI-Sources: ${gstreamer:URISources}
+XB-GStreamer-URI-Sinks: ${gstreamer:URISinks}
+XB-GStreamer-Encoders: ${gstreamer:Encoders}
+XB-GStreamer-Decoders: ${gstreamer:Decoders}
+Description: GStreamer OpenCV plugins
+ GStreamer is a streaming media framework, based on graphs of filters
+ which operate on media data. Applications using this library can do
+ anything from real-time sound processing to playing videos, and just
+ about anything else media-related. Its plugin-based architecture means
+ that new data types or processing capabilities can be added simply by
+ installing new plug-ins.
+ .
+ GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
+ to the rest. They might be close to being good quality, but they're missing
+ something - be it a good code review, some documentation, a set of tests, a
+ real live maintainer, or some actual wide use.
+ .
+ This package contains the OpenCV plugins.
+
Package: @GST_PKGNAME@-plugins-bad-dbg
Architecture: any
Multi-Arch: same
@@ -93,7 +130,7 @@
Pre-Depends: ${misc:Pre-Depends}
Depends: ${misc:Depends},
${shlibs:Depends},
-Description: GStreamer development files for libraries from the "bad" set
+Description: GStreamer libraries from the "bad" set
GStreamer is a streaming media framework, based on graphs of filters
which operate on media data. Applications using this library can do
anything from real-time sound processing to playing videos, and just
@@ -109,15 +146,43 @@
This package contains shared GStreamer libraries from the "bad" set. The API
is not guaranteed to be stable.
+Package: libgstreamer-opencv@GST_DEB_ABI@
+Architecture: any
+Section: libs
+Priority: extra
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends},
+ ${shlibs:Depends},
+Conflicts: libgstreamer-plugins-bad@GST_DEB_ABI@ (<< 1.13.1)
+Replaces: libgstreamer-plugins-bad@GST_DEB_ABI@ (<< 1.13.1)
+Description: GStreamer OpenCV libraries
+ GStreamer is a streaming media framework, based on graphs of filters
+ which operate on media data. Applications using this library can do
+ anything from real-time sound processing to playing videos, and just
+ about anything else media-related. Its plugin-based architecture means
+ that new data types or processing capabilities can be added simply by
+ installing new plug-ins.
+ .
+ GStreamer Bad Plug-ins is a set of plug-ins that aren't up to par compared
+ to the rest. They might be close to being good quality, but they're missing
+ something - be it a good code review, some documentation, a set of tests, a
+ real live maintainer, or some actual wide use.
+ .
+ This package contains shared GStreamer libraries for OpenCV.
+
Package: libgstreamer-plugins-bad@GST_ABI@-dev
Architecture: any
+Multi-Arch: same
Section: libdevel
Priority: extra
Depends: ${misc:Depends},
libgstreamer-plugins-bad@GST_DEB_ABI@ (= ${binary:Version}),
+ libgstreamer-opencv@GST_DEB_ABI@ (= ${binary:Version}),
libgstreamer@GST_ABI@-dev,
libgstreamer-plugins-base@GST_ABI@-dev,
- gir1.2-gst-plugins-bad-@GST_ABI@ (= ${binary:Version})
+ gir1.2-gst-plugins-bad-@GST_ABI@ (= ${binary:Version}),
+ libopencv-dev (>= 2.3.0)
Description: GStreamer development files for libraries from the "bad" set
GStreamer is a streaming media framework, based on graphs of filters
which operate on media data. Applications using this library can do
@@ -137,10 +202,10 @@
Package: gir1.2-gst-plugins-bad-@GST_ABI@
Section: introspection
Architecture: any
+Multi-Arch: same
Depends: ${gir:Depends},
${shlibs:Depends},
- ${misc:Depends},
- ${gir:Depends}
+ ${misc:Depends}
Description: GObject introspection data for the GStreamer libraries from the "bad" set
GStreamer is a streaming media framework, based on graphs of filters
which operate on media data. Applications using this library can do
diff --git a/debian/extra b/debian/extra
deleted file mode 100644
index 6d8d206..0000000
--- a/debian/extra
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/bin/sh
-
-if [ $# -lt 2 ]; then
- echo "usage: $1 deps|control plugin"
- exit 1
-fi
-
-case $1 in
- deps)
- case $2 in
- amrwbenc)
- echo "libamrwb-dev | amrwb-dev"
- ;;
- faac)
- echo "libfaac-dev"
- ;;
- mpeg2enc)
- echo "libmjpegtools-dev | mjpegtools-dev"
- ;;
- *)
- echo "ERROR invalid plugin: add your plugin to debian/extra"
- exit 1
- ;;
- esac ;;
-
- control)
- case $2 in
- amrwbenc)
-cat << EOF
-Package: @GST_PKGNAME@-amrwbenc
-Architecture: any
-Depends: \${shlibs:Depends}, \${misc:Depends}, @GST_LIB@
-XB-GStreamer-Version: \${gstreamer:Version}
-XB-GStreamer-Elements: \${gstreamer:Elements}
-XB-GStreamer-URI-Sources: \${gstreamer:URISources}
-XB-GStreamer-URI-Sinks: \${gstreamer:URISinks}
-XB-GStreamer-Encoders: \${gstreamer:Encoders}
-XB-GStreamer-Decoders: \${gstreamer:Decoders}
-Provides: \${gstreamer:Provides}
-Description: amrwb encoder plugin for GStreamer
- This GStreamer plugin uses amrwb to encode audio stream into an Adaptive
- Multi-Rate - Wideband (AMR-WB) speech codec compressed audio stream.
- .
- amrwb Homepage: http://www.penguin.cz/~utx/amr
-
-EOF
-;;
- faac)
-cat << EOF
-Package: @GST_PKGNAME@-faac
-Architecture: any
-Depends: \${shlibs:Depends}, \${misc:Depends}, @GST_LIB@
-Recommends: @GST_PKGNAME@-ffmpeg
-XB-GStreamer-Version: \${gstreamer:Version}
-XB-GStreamer-Elements: \${gstreamer:Elements}
-XB-GStreamer-URI-Sources: \${gstreamer:URISources}
-XB-GStreamer-URI-Sinks: \${gstreamer:URISinks}
-XB-GStreamer-Encoders: \${gstreamer:Encoders}
-XB-GStreamer-Decoders: \${gstreamer:Decoders}
-Provides: \${gstreamer:Provides}
-Description: FAAC plugin for GStreamer
- This GStreamer plugin uses FAAC to encode audio stream into a AAC
- compressed audio stream. This is commonly known as the "mp4" format.
- .
- FAAC Homepage: http://www.audiocoding.com/
-
-EOF
-;;
- mpeg2enc)
-cat << EOF
-Package: @GST_PKGNAME@-mpeg2enc
-Architecture: any
-Depends: \${shlibs:Depends}, \${misc:Depends}, \${misc:Depends}, @GST_LIB@
-XB-GStreamer-Version: \${gstreamer:Version}
-XB-GStreamer-Elements: \${gstreamer:Elements}
-XB-GStreamer-URI-Sources: \${gstreamer:URISources}
-XB-GStreamer-URI-Sinks: \${gstreamer:URISinks}
-XB-GStreamer-Encoders: \${gstreamer:Encoders}
-XB-GStreamer-Decoders: \${gstreamer:Decoders}
-Provides: \${gstreamer:Provides}
-Description: MJPEG Tools plugin for GStreamer
- This GStreamer plugin uses MJPEG Tools to encode video stream into a MPEG-2
- compressed video stream.
- .
- MJPEG Tools Homepage: http://mjpeg.sourceforge.net/
-
-EOF
-;;
- *)
- echo "ERROR invalid plugin: add your plugin to debian/extra"
- exit 1
- ;;
- esac ;;
- *) echo "ERROR use deps or control" ;;
-esac
-
diff --git a/debian/gir1.2-gst-plugins-bad.install b/debian/gir1.2-gst-plugins-bad.install
deleted file mode 100644
index 9803e33..0000000
--- a/debian/gir1.2-gst-plugins-bad.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/lib/*/girepository-* usr/lib
diff --git a/debian/gstreamer-faac.install b/debian/gstreamer-faac.install
deleted file mode 100644
index 6898d51..0000000
--- a/debian/gstreamer-faac.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstfaac.so
diff --git a/debian/gstreamer-mpeg2enc.install b/debian/gstreamer-mpeg2enc.install
deleted file mode 100644
index 4c1b2fc..0000000
--- a/debian/gstreamer-mpeg2enc.install
+++ /dev/null
@@ -1 +0,0 @@
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstmpeg2enc.so
diff --git a/debian/gstreamer-plugins-bad.install b/debian/gstreamer-plugins-bad.install
index df834f9..5845a3a 100644
--- a/debian/gstreamer-plugins-bad.install
+++ b/debian/gstreamer-plugins-bad.install
@@ -3,22 +3,24 @@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstadpcmenc.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaiff.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaudiofxbad.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaudiomixer.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstasfmux.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstassrender.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaudiobuffersplit.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaudiolatency.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaudiomixmatrix.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstaudiovisualizers.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstautoconvert.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstbayer.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstbs2b.so
@bluez@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstbz2.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcamerabin2.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcamerabin.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstchromaprint.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcoloreffects.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcolormanagement.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcompositor.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstcurl.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdashdemux.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdataurisrc.so
@dc1394@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdebugutilsbad.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdtls.so
@@ -26,6 +28,7 @@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdvbsuboverlay.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstdvdspu.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstfaad.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstfaceoverlay.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstfestival.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstfieldanalysis.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstfreeverb.so
@@ -37,18 +40,19 @@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstgeometrictransform.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstgme.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstgsm.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstgtksink.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgsthls.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstid3tag.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstinter.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstinterlace.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstipcpipeline.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstivfparse.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstivtc.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstkate.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstjpegformat.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstjp2kdecimator.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstladspa.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstlibde265.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstlegacyrawparse.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstde265.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstmidi.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstmms.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstmodplug.so
@@ -61,13 +65,14 @@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstnetsim.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstofa.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopenal.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopengl.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopenglmixers.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopenexr.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopenjpeg.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopenmpt.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstopusparse.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstpcapparse.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstpnm.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstrawparse.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstproxy.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstremovesilence.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstrfbsrc.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstrsvg.so
@@ -84,10 +89,11 @@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstsoundtouch.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstspandsp.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstspeed.so
-debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstsrtp.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgststereo.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstsubenc.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstteletext.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgsttimecode.so
+debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstttmlsubs.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstvideofiltersbad.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstvideoframe_audiolevel.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstvideoparsersbad.so
@@ -102,11 +108,12 @@
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgsty4mdec.so
debian/tmp/usr/lib/*/gstreamer-@GST_ABI@/libgstyadif.so
debian/tmp/usr/share/locale
-debian/tmp/usr/share/gstreamer-@GST_ABI@/presets/
@dvb@
@resindvd@
@decklink@
@fbdev@
@uvch264@
@waylandsink@
+@kms@
@vcd@
+@vulkan@
diff --git a/debian/gstreamer1.0-plugins-bad.lintian-overrides b/debian/gstreamer1.0-plugins-bad.lintian-overrides
new file mode 100644
index 0000000..039022e
--- /dev/null
+++ b/debian/gstreamer1.0-plugins-bad.lintian-overrides
@@ -0,0 +1 @@
+gstreamer1.0-plugins-bad: library-not-linked-against-libc *
diff --git a/debian/libgstreamer-plugins-bad-dev.install b/debian/libgstreamer-plugins-bad-dev.install
index 163b18c..ac87bac 100644
--- a/debian/libgstreamer-plugins-bad-dev.install
+++ b/debian/libgstreamer-plugins-bad-dev.install
@@ -1,4 +1,3 @@
debian/tmp/usr/include
-debian/tmp/usr/lib/*/gstreamer-1.0/include
debian/tmp/usr/lib/*/pkgconfig
debian/tmp/usr/lib/*/*.so
diff --git a/debian/libgstreamer-plugins-bad.install b/debian/libgstreamer-plugins-bad.install
index b7375ab..588aec8 100644
--- a/debian/libgstreamer-plugins-bad.install
+++ b/debian/libgstreamer-plugins-bad.install
@@ -1,13 +1,13 @@
debian/tmp/usr/lib/*/libgstadaptivedemux-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstphotography-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstbadaudio-@GST_ABI@.so.*
-debian/tmp/usr/lib/*/libgstbadbase-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstbadvideo-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstbasecamerabinsrc-@GST_ABI@.so.*
-debian/tmp/usr/lib/*/libgstgl-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstinsertbin-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstcodecparsers-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstmpegts-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgstplayer-@GST_ABI@.so.*
debian/tmp/usr/lib/*/libgsturidownloader-@GST_ABI@.so.*
+debian/tmp/usr/lib/*/libgstisoff-@GST_ABI@.so.*
+debian/tmp/usr/lib/*/libgstwebrtc-@GST_ABI@.so.*
@wayland@
diff --git a/debian/libgstreamer-plugins-bad1.0-0.lintian-overrides b/debian/libgstreamer-plugins-bad1.0-0.lintian-overrides
index a6f4b75..990379d 100644
--- a/debian/libgstreamer-plugins-bad1.0-0.lintian-overrides
+++ b/debian/libgstreamer-plugins-bad1.0-0.lintian-overrides
@@ -1 +1,2 @@
-libgstreamer-plugins-bad1.0-0: package-name-doesnt-match-sonames libgstadaptivedemux-1.0-0 libgstbadaudio-1.0-0 libgstbadbase-1.0-0 libgstbadvideo-1.0-0 libgstbasecamerabinsrc-1.0-0 libgstcodecparsers-1.0-0 libgstgl-1.0-0 libgstinsertbin-1.0-0 libgstmpegts-1.0-0 libgstphotography-1.0-0 libgstplayer-1.0-0 libgsturidownloader-1.0-0 libgstwayland-1.0-0
+libgstreamer-plugins-bad1.0-0: package-name-doesnt-match-sonames libgstadaptivedemux-1.0-0 libgstbadaudio-1.0-0 libgstbadvideo-1.0-0 libgstbasecamerabinsrc-1.0-0 libgstcodecparsers-1.0-0 libgstinsertbin-1.0-0 libgstisoff-1.0-0 libgstmpegts-1.0-0 libgstphotography-1.0-0 libgstplayer-1.0-0 libgsturidownloader-1.0-0 libgstwayland-1.0-0 libgstwebrtc-1.0-0
+libgstreamer-plugins-bad1.0-0: library-not-linked-against-libc *
diff --git a/debian/patches/0001-Make-sure-to-link-gme-plugin-with-lz.patch b/debian/patches/0001-Make-sure-to-link-gme-plugin-with-lz.patch
deleted file mode 100644
index 217d806..0000000
--- a/debian/patches/0001-Make-sure-to-link-gme-plugin-with-lz.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From aefc177ca791ebba8acc048cb8526ef3277f6eca Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
-Date: Fri, 25 Sep 2015 23:22:02 +0200
-Subject: [PATCH] Make sure to link gme plugin with -lz
-
----
- configure.ac | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index aba2ec0..b5ef3a5 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2843,9 +2843,11 @@ AG_GST_CHECK_FEATURE(SPC, [spc decoder], spc, [
- dnl *** gme ***
- translit(dnm, m, l) AM_CONDITIONAL(USE_GME, true)
- AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
-+ old_LIBS="$LIBS"
-+ LIBS="$LIBS -lz"
- AC_CHECK_HEADER(gme/gme.h, [
- AC_CHECK_LIB(gme, gme_new_emu, [
-- GME_LIBS="-lgme"
-+ GME_LIBS="-lgme -lz"
- AC_SUBST(GME_LIBS)
- HAVE_GME=yes
- ], [
-@@ -2860,6 +2862,7 @@ AG_GST_CHECK_FEATURE(GME, [gme decoder], gme, [
- AC_DEFINE(HAVE_LIBGME_ACCURACY, 1, [Define if gme 0.5.6 or newer is available])
- ])
- fi
-+ LIBS="$old_LIBS"
- ])
-
- dnl *** XVID ***
---
-2.5.3
-
diff --git a/debian/patches/0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch b/debian/patches/0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch
new file mode 100644
index 0000000..ab51aa8
--- /dev/null
+++ b/debian/patches/0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch
@@ -0,0 +1,55 @@
+From 11cf797e31a671e0ef4a5ca7c1a0205c15ea9456 Mon Sep 17 00:00:00 2001
+From: Qian Hu <Qian.Hu@mediatek.com>
+Date: Sun, 1 Dec 2019 11:06:20 +0800
+Subject: [PATCH] add judge for mpeg4 codec in mpeg container
+
+Signed-off-by: Qian Hu <Qian.Hu@mediatek.com>
+---
+ gst/mpegdemux/gstmpegdemux.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
+index 4454149..0c684b5 100644
+--- a/gst/mpegdemux/gstmpegdemux.c
++++ b/gst/mpegdemux/gstmpegdemux.c
+@@ -2255,6 +2255,23 @@ gst_ps_demux_data_cb (GstPESFilter * filter, gboolean first,
+ }
+ if (stream_type == -1)
+ goto unknown_stream_type;
++ } else if (stream_type == ST_GST_VIDEO_MPEG1_OR_2) {
++ if (datalen >= 4) {
++ if (!memcmp("\x00\x00\x01\xB0", map.data, 4)) {
++ stream_type = ST_VIDEO_MPEG4;
++ }
++ }
++ if (datalen >= 5) {
++ if (!memcmp("\x00\x00\x01\x00\x00", map.data, 5)) {
++ stream_type = ST_VIDEO_MPEG4;
++ }
++ }
++ } else if (stream_type == ST_AUDIO_MPEG1) {
++ if (datalen >= 4) {
++ if (!memcmp("\xFF\xF1\x50\x80", map.data, 4)) {
++ stream_type = ST_AUDIO_AAC_ADTS;
++ }
++ }
+ }
+ if (filter->pts != -1) {
+ demux->next_pts = filter->pts + demux->scr_adjust;
+@@ -2858,9 +2875,10 @@ gst_ps_demux_loop (GstPad * pad)
+ offset += size;
+ gst_segment_set_position (&demux->sink_segment, GST_FORMAT_BYTES, offset);
+ /* check EOS condition */
+- if ((demux->sink_segment.position >= demux->sink_segment.stop) ||
+- (demux->src_segment.stop != (guint64) - 1 &&
+- demux->src_segment.position >= demux->src_segment.stop)) {
++ if ((demux->src_segment.flags & GST_SEEK_FLAG_SEGMENT) &&
++ ((demux->sink_segment.position >= demux->sink_segment.stop) ||
++ (demux->src_segment.stop != (guint64) - 1 &&
++ demux->src_segment.position >= demux->src_segment.stop))) {
+ GST_DEBUG_OBJECT (demux,
+ "forward mode using segment reached end of " "segment pos %"
+ GST_TIME_FORMAT " stop %" GST_TIME_FORMAT " pos in bytes %"
+--
+2.6.4
+
diff --git a/debian/patches/0001-mtk-upgrade-gst-bad-to-1-14-4.patch b/debian/patches/0001-mtk-upgrade-gst-bad-to-1-14-4.patch
new file mode 100644
index 0000000..33c65bd
--- /dev/null
+++ b/debian/patches/0001-mtk-upgrade-gst-bad-to-1-14-4.patch
@@ -0,0 +1,656 @@
+From 41476a48b06f2b2285659844e88f3e7ffa71b1ec Mon Sep 17 00:00:00 2001
+From: Yuan Fang <yuan.fang@mediatek.com>
+Date: Wed, 14 Aug 2019 16:18:17 +0800
+Subject: [PATCH] upgrade-gst-bad-to-1-14-4
+
+---
+ ext/resindvd/gstmpegdemux.c | 17 ++++
+ gst-libs/gst/wayland/Makefile.am | 3 +
+ gst-libs/gst/wayland/Makefile.in | 58 ++++++++---
+ gst/adpcmdec/adpcmdec.c | 4 +
+ gst/ivfparse/gstivfparse.c | 3 +-
+ gst/jpegformat/gstjpegformat.c | 2 +-
+ gst/jpegformat/gstjpegparse.c | 2 +-
+ gst/mpegtsdemux/tsdemux.c | 178 ++++++++++++++++++++++++++++++++++
+ gst/videoparsers/gsth264parse.c | 26 +++--
+ gst/videoparsers/gsth264parse.h | 1 +
+ gst/videoparsers/gsth265parse.c | 8 +-
+ gst/videoparsers/gsth265parse.h | 1 +
+ gst/videoparsers/gstmpeg4videoparse.c | 9 +-
+ gst/videoparsers/gstmpeg4videoparse.h | 1 +
+ gst/videoparsers/gstmpegvideoparse.c | 91 ++++++++++++++---
+ 15 files changed, 361 insertions(+), 43 deletions(-)
+
+diff --git a/ext/resindvd/gstmpegdemux.c b/ext/resindvd/gstmpegdemux.c
+index a35a6a4..562f3bb 100644
+--- a/ext/resindvd/gstmpegdemux.c
++++ b/ext/resindvd/gstmpegdemux.c
+@@ -1932,6 +1932,23 @@ gst_flups_demux_data_cb (GstPESFilter * filter, gboolean first,
+ }
+ if (stream_type == -1)
+ goto unknown_stream_type;
++ } else if (stream_type == ST_GST_VIDEO_MPEG1_OR_2) {
++ if (datalen >= 4) {
++ if (!memcmp("\x00\x00\x01\xB0", map.data, 4)) {
++ stream_type = ST_VIDEO_MPEG4;
++ }
++ }
++ if (datalen >= 5) {
++ if (!memcmp("\x00\x00\x01\x00\x00", map.data, 5)) {
++ stream_type = ST_VIDEO_MPEG4;
++ }
++ }
++ } else if (stream_type == ST_AUDIO_MPEG1) {
++ if (datalen >= 4) {
++ if (!memcmp("\xFF\xF1\x50\x80", map.data, 4)) {
++ stream_type = ST_AUDIO_AAC_ADTS;
++ }
++ }
+ }
+ if (filter->pts != -1) {
+ demux->next_pts = filter->pts + demux->scr_adjust;
+diff --git a/gst-libs/gst/wayland/Makefile.am b/gst-libs/gst/wayland/Makefile.am
+index 743a489..d2e4f6e 100644
+--- a/gst-libs/gst/wayland/Makefile.am
++++ b/gst-libs/gst/wayland/Makefile.am
+@@ -22,6 +22,9 @@ libgstwayland_@GST_API_VERSION@_la_LDFLAGS = \
+ $(GST_ALL_LDFLAGS) \
+ $(GST_LT_LDFLAGS)
+
++libgstwayland_@GST_API_VERSION@include_HEADERS = \
++ wayland.h
++
+ noinst_HEADERS = \
+ wayland.h
+
+diff --git a/gst/adpcmdec/adpcmdec.c b/gst/adpcmdec/adpcmdec.c
+index 3cfa820..4412d85 100644
+--- a/gst/adpcmdec/adpcmdec.c
++++ b/gst/adpcmdec/adpcmdec.c
+@@ -424,6 +424,10 @@ adpcmdec_handle_frame (GstAudioDecoder * bdec, GstBuffer * buffer)
+ ("frame decode failed"), ret);
+ }
+
++ if (bdec->ts_none) {
++ bdec->sub_ts_none = FALSE;
++ }
++
+ if (ret == GST_FLOW_OK)
+ ret = gst_audio_decoder_finish_frame (bdec, outbuf, 1);
+
+diff --git a/gst/ivfparse/gstivfparse.c b/gst/ivfparse/gstivfparse.c
+index e0e8401..df6a915 100644
+--- a/gst/ivfparse/gstivfparse.c
++++ b/gst/ivfparse/gstivfparse.c
+@@ -331,7 +331,8 @@ gst_ivf_parse_handle_frame_data (GstIvfParse * ivf, GstBaseParseFrame * frame,
+ if (gst_buffer_map (frame->out_buffer, &map, GST_MAP_READ)) {
+ guint32 width, height;
+
+- if (ivf->fourcc == GST_MAKE_FOURCC ('V', 'P', '8', '0')) {
++ if ((ivf->fourcc == GST_MAKE_FOURCC ('V', 'P', '8', '0')) ||
++ (ivf->fourcc == GST_MAKE_FOURCC ('V', 'P', '9', '0'))) {
+ guint32 frame_tag;
+ frame_tag = GST_READ_UINT24_LE (map.data);
+ if (!(frame_tag & 0x01) && map.size >= 10) { /* key frame */
+diff --git a/gst/jpegformat/gstjpegformat.c b/gst/jpegformat/gstjpegformat.c
+index b410466..1faf1ce 100644
+--- a/gst/jpegformat/gstjpegformat.c
++++ b/gst/jpegformat/gstjpegformat.c
+@@ -30,7 +30,7 @@
+ static gboolean
+ plugin_init (GstPlugin * plugin)
+ {
+- if (!gst_element_register (plugin, "jpegparse", GST_RANK_NONE,
++ if (!gst_element_register (plugin, "jpegparse", GST_RANK_PRIMARY,
+ GST_TYPE_JPEG_PARSE))
+ return FALSE;
+ if (!gst_element_register (plugin, "jifmux", GST_RANK_SECONDARY,
+diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
+index 0bfdc80..b9f1853 100644
+--- a/gst/jpegformat/gstjpegparse.c
++++ b/gst/jpegformat/gstjpegparse.c
+@@ -151,7 +151,7 @@ gst_jpeg_parse_class_init (GstJpegParseClass * klass)
+
+ gst_element_class_set_static_metadata (gstelement_class,
+ "JPEG stream parser",
+- "Video/Parser",
++ "Video/Parser/Codec",
+ "Parse JPEG images into single-frame buffers",
+ "Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
+
+diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
+index e5c78e7..49a426f 100644
+--- a/gst/mpegtsdemux/tsdemux.c
++++ b/gst/mpegtsdemux/tsdemux.c
+@@ -39,6 +39,9 @@
+ #include <gst/pbutils/pbutils.h>
+ #include <gst/base/base.h>
+ #include <gst/audio/audio.h>
++#include <gst/riff/riff-read.h>
++#include <gst/riff/riff-ids.h>
++#include <gst/riff/riff-media.h>
+
+ #include "mpegtsbase.h"
+ #include "tsdemux.h"
+@@ -1067,6 +1070,168 @@ gst_ts_demux_create_tags (TSDemuxStream * stream)
+ }
+ }
+
++static GstFlowReturn
++gst_ts_demux_scan_vc1_wh (MpegTSBase * base, guint * w, guint * h)
++{
++ const guint cacheSize = 64 * 1024;
++ const guint cacheCount = 32;
++ const guint gapCount = 4 + 2 + 3;
++ guint cacheStart = 0;
++ GstFlowReturn ret = GST_FLOW_ERROR;
++ gboolean done = FALSE;
++ GstBuffer *buffer = NULL;
++ guint i = 0;
++ guint offset = 0;
++ GstMapInfo map;
++ guint8 *data = NULL;
++ size_t size = 0;
++
++ if (G_UNLIKELY (base == NULL)) {
++ GST_DEBUG ("base is NULL");
++ return ret;
++ }
++
++ if (w == NULL || h == NULL) {
++ GST_DEBUG ("w or h is NULL");
++ return ret;
++ }
++
++ GST_DEBUG ("Scanning for width and height");
++
++ for (i = 0; (i < cacheCount) && !done; i++) {
++ if (i == 0) {
++ cacheStart = 0;
++ } else {
++ cacheStart = i * (cacheSize - gapCount);
++ }
++
++ GST_DEBUG ("Grabbing %d => %d", cacheStart, cacheStart + cacheSize);
++ ret = gst_pad_pull_range (base->sinkpad, cacheStart, cacheSize, &buffer);
++ if (G_UNLIKELY (ret == GST_FLOW_EOS)) {
++ break;
++ }
++ if (G_UNLIKELY (ret != GST_FLOW_OK)) {
++ break;
++ }
++
++ gst_buffer_map (buffer, &map, GST_MAP_READ);
++
++ data=map.data;
++ size=map.size;
++
++ for (offset = 0; offset <= (size - gapCount); offset++) {
++ if (memcmp("\x00\x00\x01\x0F", data + offset, 4)) {
++ offset++;
++ } else {
++ offset +=4;
++ offset +=2;
++
++ *w = (((data[offset] << 4) + (data[offset+1] >> 4)) << 1) + 2;
++ *h = ((((data[offset+1] & 0x0F) << 8) + data[offset+2]) << 1) + 2;
++ done = TRUE;
++ ret = GST_FLOW_OK;
++ break;
++ }
++ }
++
++ gst_buffer_unmap (buffer, &map);
++ gst_buffer_unref(buffer);
++ buffer = NULL;
++ }
++
++ return ret;
++}
++
++static GstFlowReturn
++gst_ts_demux_separate_vc1_header (GstTSDemux * demux, TSDemuxStream * stream, GstBuffer ** buffer)
++{
++ static gboolean headerPushed = FALSE;
++ GstFlowReturn res = GST_FLOW_OK;
++
++ if (memcmp("\x00\x00\x01\x0F", stream->data, 4)) {
++ if (!headerPushed) {
++ gst_buffer_unref (*buffer);
++ GST_DEBUG ("This frame should be dropped!");
++ res = GST_FLOW_ERROR;
++ return res;
++ }
++ } else {
++ GstBuffer *bufLeft = NULL;
++ const guint8 *data = stream->data;
++ size_t offset = 0;
++
++ while (offset + 3 < stream->current_size) {
++ if (memcmp(data+offset, "\x00\x00\x01", 3)) {
++ offset++;
++ continue;
++ } else {
++ guint currentStartCode = data[offset+3];
++
++ if (currentStartCode == 0x0F || currentStartCode == 0x0E) {
++ offset++;
++ continue;
++ } else {
++ //found data
++ break;
++ }
++ }
++ }
++
++ if (!headerPushed) {
++ GstCaps *caps = NULL;
++ GstStructure *str = NULL;
++ GstBuffer *bufVids = NULL;
++ GstBuffer *bufSeq = NULL;
++ GstBuffer *bufMerged = NULL;
++ guint width = 0;
++ guint height = 0;
++ gst_riff_strf_vids *pVids;
++ const guint sizeVids = sizeof (gst_riff_strf_vids);
++
++ pVids = g_new (gst_riff_strf_vids, 1);
++ memset (pVids, 0, sizeVids);
++
++ caps = gst_pad_get_current_caps (stream->pad);
++ if (caps) {
++ str = gst_caps_get_structure (caps, 0);
++
++ gst_structure_get_int (str, "width", &width);
++ gst_structure_get_int (str, "height", &height);
++ }
++
++ pVids->size = sizeVids + offset;
++ pVids->width = width;
++ pVids->height = height;
++
++ pVids->size = GUINT32_FROM_LE (pVids->size);
++ pVids->width = GUINT32_FROM_LE (pVids->width);
++ pVids->height = GUINT32_FROM_LE (pVids->height);
++ pVids->compression = GST_MAKE_FOURCC ('W', 'V', 'C', '1');
++
++ bufVids = gst_buffer_new_wrapped (g_memdup ((guint8 *) pVids,
++ sizeVids), sizeVids);
++ bufSeq = gst_buffer_new_wrapped (g_memdup ((guint8 *) data,
++ offset), offset);
++ bufMerged = gst_buffer_append (bufVids, bufSeq);
++
++ gst_pad_push (stream->pad, bufMerged);
++ headerPushed = TRUE;
++
++ if (pVids) {
++ g_free (pVids);
++ }
++ }
++
++ bufLeft = gst_buffer_copy_region (*buffer, GST_BUFFER_COPY_ALL, offset, stream->current_size-offset);
++ stream->current_size -= offset;
++ gst_buffer_unref (*buffer);
++ *buffer = bufLeft;
++ res = GST_FLOW_OK;
++ }
++
++ return res;
++}
++
+ static GstPad *
+ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
+ MpegTSBaseProgram * program)
+@@ -1081,6 +1246,8 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
+ gboolean sparse = FALSE;
+ gboolean is_audio = FALSE, is_video = FALSE, is_subpicture = FALSE,
+ is_private = FALSE;
++ guint width = 0;
++ guint height = 0;
+
+ gst_ts_demux_create_tags (stream);
+
+@@ -1565,6 +1732,10 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
+ is_video = TRUE;
+ caps = gst_caps_new_simple ("video/x-wmv",
+ "wmvversion", G_TYPE_INT, 3, "format", G_TYPE_STRING, "WVC1", NULL);
++
++ gst_ts_demux_scan_vc1_wh (base, &width, &height);
++ gst_caps_set_simple (caps, "width", G_TYPE_INT, width, NULL);
++ gst_caps_set_simple (caps, "height", G_TYPE_INT, height, NULL);
+
+ break;
+ }
+@@ -2945,6 +3116,13 @@ gst_ts_demux_push_pending_data (GstTSDemux * demux, TSDemuxStream * stream,
+ }
+ }
+
++ if (bs->stream_type == ST_PRIVATE_EA) {
++ if (G_UNLIKELY (gst_ts_demux_separate_vc1_header (demux, stream, &buffer)
++ != GST_FLOW_OK)) {
++ goto beach;
++ }
++ }
++
+ if (G_UNLIKELY (stream->need_newsegment))
+ calculate_and_push_newsegment (demux, stream, target_program);
+
+diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
+index 7751ea2..ceb2f58 100644
+--- a/gst/videoparsers/gsth264parse.c
++++ b/gst/videoparsers/gsth264parse.c
+@@ -167,6 +167,7 @@ gst_h264_parse_init (GstH264Parse * h264parse)
+
+ h264parse->aud_needed = TRUE;
+ h264parse->aud_insert = TRUE;
++ h264parse->caps_flag = FALSE;
+ }
+
+
+@@ -1835,13 +1836,21 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
+ caps = gst_caps_copy (sink_caps);
+
+ /* sps should give this but upstream overrides */
+- if (s && gst_structure_has_field (s, "width"))
+- gst_structure_get_int (s, "width", &width);
++ if (s && gst_structure_has_field (s, "width")) {
++ gst_structure_get_int (s, "width", &width);
++ if (width != h264parse->width) {
++ width = h264parse->width;
++ }
++ }
+ else
+ width = h264parse->width;
+
+- if (s && gst_structure_has_field (s, "height"))
+- gst_structure_get_int (s, "height", &height);
++ if (s && gst_structure_has_field (s, "height")) {
++ gst_structure_get_int (s, "height", &height);
++ if (height != h264parse->height) {
++ height = h264parse->height;
++ }
++ }
+ else
+ height = h264parse->height;
+
+@@ -1988,7 +1997,10 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
+ gst_buffer_replace (&h264parse->codec_data, NULL);
+ }
+
+- gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h264parse), caps);
++ if (sps && !h264parse->caps_flag) {
++ h264parse->caps_flag = TRUE;
++ gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h264parse), caps);
++ }
+ }
+
+ if (src_caps)
+@@ -2581,11 +2593,11 @@ gst_h264_parse_set_caps (GstBaseParse * parse, GstCaps * caps)
+ if (format == GST_H264_PARSE_FORMAT_NONE) {
+ /* codec_data implies avc */
+ if (codec_data_value != NULL) {
+- GST_ERROR ("video/x-h264 caps with codec_data but no stream-format=avc");
++ GST_LOG ("video/x-h264 caps with codec_data but no stream-format=avc");
+ format = GST_H264_PARSE_FORMAT_AVC;
+ } else {
+ /* otherwise assume bytestream input */
+- GST_ERROR ("video/x-h264 caps without codec_data or stream-format");
++ GST_LOG ("video/x-h264 caps without codec_data or stream-format");
+ format = GST_H264_PARSE_FORMAT_BYTE;
+ }
+ }
+diff --git a/gst/videoparsers/gsth264parse.h b/gst/videoparsers/gsth264parse.h
+index 137c2cd..997c0e3 100644
+--- a/gst/videoparsers/gsth264parse.h
++++ b/gst/videoparsers/gsth264parse.h
+@@ -132,6 +132,7 @@ struct _GstH264Parse
+ /* For insertion of AU Delimiter */
+ gboolean aud_needed;
+ gboolean aud_insert;
++ gboolean caps_flag;
+ };
+
+ struct _GstH264ParseClass
+diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
+index 775cd24..13c93ea 100644
+--- a/gst/videoparsers/gsth265parse.c
++++ b/gst/videoparsers/gsth265parse.c
+@@ -154,6 +154,7 @@ static void
+ gst_h265_parse_init (GstH265Parse * h265parse)
+ {
+ h265parse->frame_out = gst_adapter_new ();
++ h265parse->has_caps_flag = FALSE;
+ gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h265parse), FALSE);
+ GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h265parse));
+ GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h265parse));
+@@ -1761,7 +1762,12 @@ gst_h265_parse_update_src_caps (GstH265Parse * h265parse, GstCaps * caps)
+ gst_buffer_replace (&h265parse->codec_data, NULL);
+ }
+
+- gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h265parse), caps);
++ if (h265parse->has_caps_flag == FALSE) {
++ GST_INFO_OBJECT (h265parse, "h265parse->has_caps_flag=FALSE");
++ gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (h265parse), caps);
++ h265parse->has_caps_flag = TRUE;
++ }
++
+ }
+
+ if (src_caps)
+diff --git a/gst/videoparsers/gsth265parse.h b/gst/videoparsers/gsth265parse.h
+index eb82f6f..0d6be87 100644
+--- a/gst/videoparsers/gsth265parse.h
++++ b/gst/videoparsers/gsth265parse.h
+@@ -86,6 +86,7 @@ struct _GstH265Parse
+ /* frame parsing */
+ gint idr_pos, sei_pos;
+ gboolean update_caps;
++ gboolean has_caps_flag;
+ GstAdapter *frame_out;
+ gboolean keyframe;
+ gboolean header;
+diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c
+index 38e1f45..990f0db 100644
+--- a/gst/videoparsers/gstmpeg4videoparse.c
++++ b/gst/videoparsers/gstmpeg4videoparse.c
+@@ -210,6 +210,7 @@ gst_mpeg4vparse_reset (GstMpeg4VParse * mp4vparse)
+ mp4vparse->pending_key_unit_ts = GST_CLOCK_TIME_NONE;
+ mp4vparse->force_key_unit_event = NULL;
+ mp4vparse->discont = FALSE;
++ mp4vparse->vop_flag = FALSE;
+
+ gst_buffer_replace (&mp4vparse->config, NULL);
+ memset (&mp4vparse->vol, 0, sizeof (mp4vparse->vol));
+@@ -338,6 +339,7 @@ gst_mpeg4vparse_process_sc (GstMpeg4VParse * mp4vparse, GstMpeg4Packet * packet,
+ if (packet->type == GST_MPEG4_VIDEO_OBJ_PLANE) {
+ GST_LOG_OBJECT (mp4vparse, "startcode is VOP");
+ mp4vparse->vop_offset = packet->offset;
++ mp4vparse->vop_flag = TRUE;
+ } else if (packet->type == GST_MPEG4_GROUP_OF_VOP) {
+ GST_LOG_OBJECT (mp4vparse, "startcode is GOP");
+ } else {
+@@ -527,6 +529,7 @@ out:
+ GST_BUFFER_FLAG_SET (frame->buffer, GST_BUFFER_FLAG_DISCONT);
+ mp4vparse->discont = FALSE;
+ }
++ mp4vparse->vop_flag = FALSE;
+ return gst_base_parse_finish_frame (parse, frame, framesize);
+ }
+
+@@ -540,8 +543,8 @@ gst_mpeg4vparse_update_src_caps (GstMpeg4VParse * mp4vparse)
+ GstStructure *s = NULL;
+
+ /* only update if no src caps yet or explicitly triggered */
+- if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mp4vparse)) &&
+- !mp4vparse->update_caps))
++ if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mp4vparse)) ||
++ !mp4vparse->update_caps || (mp4vparse->vop_flag == FALSE)))
+ return;
+
+ GST_LOG_OBJECT (mp4vparse, "Updating caps");
+@@ -641,7 +644,7 @@ gst_mpeg4vparse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+ else
+ GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DELTA_UNIT);
+
+- if (G_UNLIKELY (mp4vparse->drop && !mp4vparse->config)) {
++ if (G_UNLIKELY (mp4vparse->drop && !mp4vparse->config && (mp4vparse->vop_flag == FALSE))) {
+ GST_LOG_OBJECT (mp4vparse, "dropping frame as no config yet");
+ return GST_BASE_PARSE_FLOW_DROPPED;
+ } else
+diff --git a/gst/videoparsers/gstmpeg4videoparse.h b/gst/videoparsers/gstmpeg4videoparse.h
+index 149289a..73e4407 100644
+--- a/gst/videoparsers/gstmpeg4videoparse.h
++++ b/gst/videoparsers/gstmpeg4videoparse.h
+@@ -54,6 +54,7 @@ struct _GstMpeg4VParse {
+ gboolean config_found;
+ gboolean update_caps;
+ gboolean sent_codec_tag;
++ gboolean vop_flag;
+
+ GstMpeg4VisualObject vo;
+ gint vo_offset;
+diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
+index 6896339..6547517 100644
+--- a/gst/videoparsers/gstmpegvideoparse.c
++++ b/gst/videoparsers/gstmpegvideoparse.c
+@@ -561,10 +561,10 @@ gst_mpegv_parse_process_sc (GstMpegvParse * mpvparse,
+ ret = FALSE;
+ } else {
+ /* TSN is stored in first 10 bits */
+- int tsn = info->data[off] << 2 | (info->data[off + 1] & 0xC0) >> 6;
++ //int tsn = info->data[off] << 2 | (info->data[off + 1] & 0xC0) >> 6;
+
+- if (tsn == mpvparse->pichdr.tsn) /* prevent termination if TSN is same */
+- ret = FALSE;
++ //if (tsn == mpvparse->pichdr.tsn) /* prevent termination if TSN is same */
++ // ret = FALSE;
+ }
+ }
+ }
+@@ -731,12 +731,18 @@ gst_mpegv_parse_update_src_caps (GstMpegvParse * mpvparse)
+ {
+ GstCaps *caps = NULL;
+ GstStructure *s = NULL;
++ static gboolean is_first_in=TRUE;
+
+ /* only update if no src caps yet or explicitly triggered */
+ if (G_LIKELY (gst_pad_has_current_caps (GST_BASE_PARSE_SRC_PAD (mpvparse)) &&
+ !mpvparse->update_caps))
+ return;
+
++ if (!is_first_in) {
++ return;
++ }
++ is_first_in = FALSE;
++
+ /* carry over input caps as much as possible; override with our own stuff */
+ caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (mpvparse));
+ if (caps) {
+@@ -758,24 +764,12 @@ gst_mpegv_parse_update_src_caps (GstMpegvParse * mpvparse)
+ "parsed", G_TYPE_BOOLEAN, TRUE, NULL);
+
+ if (mpvparse->sequencehdr.width > 0 && mpvparse->sequencehdr.height > 0) {
+- GstMpegVideoSequenceDisplayExt *seqdispext;
++
+ gint width, height;
+
+ width = mpvparse->sequencehdr.width;
+ height = mpvparse->sequencehdr.height;
+
+- if (mpvparse->config_flags & FLAG_SEQUENCE_DISPLAY_EXT) {
+- seqdispext = &mpvparse->sequencedispext;
+-
+- if (seqdispext->display_horizontal_size <= width
+- && seqdispext->display_vertical_size <= height) {
+- width = seqdispext->display_horizontal_size;
+- height = seqdispext->display_vertical_size;
+- GST_INFO_OBJECT (mpvparse,
+- "stream has display extension: display_width=%d display_height=%d",
+- width, height);
+- }
+- }
+ gst_caps_set_simple (caps, "width", G_TYPE_INT, width,
+ "height", G_TYPE_INT, height, NULL);
+ }
+@@ -927,6 +921,61 @@ gst_mpegv_parse_parse_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+ }
+
+ static GstFlowReturn
++gst_mpegv_parse_frame_max_slice_no (const GstBuffer * buf, guint * max_slice_no)
++{
++ GstFlowReturn ret = GST_FLOW_OK;
++ GstBuffer *buffer = buf;
++ GstMapInfo map;
++ guint8 *data = NULL;
++ size_t size = 0;
++ size_t offset = 0;
++ guint max_no = 0;
++
++ gst_buffer_map (buffer, &map, GST_MAP_READ);
++ data = map.data;
++ size = map.size;
++
++ for (offset=0; offset + 3 < size; offset++) {
++ if (!memcmp(data+offset, "\x00\x00\x01", 3)) {
++ guint currentStartCode = data[offset+3];
++
++ if ((currentStartCode <= GST_MPEG_VIDEO_PACKET_SLICE_MAX) && (currentStartCode > max_no)) {
++ max_no = currentStartCode;
++ }
++ }
++ }
++
++ gst_buffer_unmap (buffer, &map);
++
++ *max_slice_no = max_no;
++ return ret;
++}
++
++static gboolean
++gst_mpegv_parse_frame_is_invalid (GstBaseParse * parse, GstBaseParseFrame * frame)
++{
++ GstMpegvParse *mpvparse = GST_MPEGVIDEO_PARSE (parse);
++ GstBuffer *buffer = frame->buffer;
++ static guint preFrameMaxSliceNo = 0;
++ guint curFrameMaxSliceNo = 0;
++ static gboolean shouldDrop = FALSE;
++
++ if (G_UNLIKELY (mpvparse->pichdr.pic_type != GST_MPEG_VIDEO_PICTURE_TYPE_I)) {
++ return shouldDrop;
++ }
++
++ gst_mpegv_parse_frame_max_slice_no (buffer, &curFrameMaxSliceNo);
++ if ((curFrameMaxSliceNo + 13) <= preFrameMaxSliceNo) {
++ shouldDrop = TRUE;
++ } else {
++ shouldDrop = FALSE;
++ }
++
++ preFrameMaxSliceNo = curFrameMaxSliceNo;
++ return shouldDrop;
++}
++
++static GstFlowReturn
+ gst_mpegv_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+ {
+ GstMpegvParse *mpvparse = GST_MPEGVIDEO_PARSE (parse);
+@@ -939,6 +988,16 @@ gst_mpegv_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
+ GstMpegVideoPictureExt *pic_ext = NULL;
+ GstMpegVideoQuantMatrixExt *quant_ext = NULL;
+
++ if (gst_mpegv_parse_frame_is_invalid (parse, frame)) {
++ frame->flags |= GST_BASE_PARSE_FRAME_FLAG_DROP;
++ return GST_FLOW_OK;
++ }
++
++ GstBuffer *buffer = frame->buffer;
++ if (!GST_BUFFER_PTS_IS_VALID (buffer)) {
++ GST_BUFFER_PTS (buffer) = GST_BUFFER_DTS (buffer);
++ }
++
+ /* tag sending done late enough in hook to ensure pending events
+ * have already been sent */
+
+--
+1.9.1
+
diff --git a/debian/patches/0002-mtk-gst-libs-gst-wayland-makefile.patch b/debian/patches/0002-mtk-gst-libs-gst-wayland-makefile.patch
new file mode 100644
index 0000000..08c4c5c
--- /dev/null
+++ b/debian/patches/0002-mtk-gst-libs-gst-wayland-makefile.patch
@@ -0,0 +1,126 @@
+diff --git a/gst-libs/gst/wayland/Makefile.in b/gst-libs/gst/wayland/Makefile.in
+index 23b16c63..045e493f 100644
+--- a/gst-libs/gst/wayland/Makefile.in
++++ b/gst-libs/gst/wayland/Makefile.in
+@@ -126,8 +126,9 @@ am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+-DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+- $(am__DIST_COMMON)
++DIST_COMMON = $(srcdir)/Makefile.am \
++ $(libgstwayland_@GST_API_VERSION@include_HEADERS) \
++ $(noinst_HEADERS) $(am__DIST_COMMON)
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+@@ -159,7 +160,8 @@ am__uninstall_files_from_dir = { \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+-am__installdirs = "$(DESTDIR)$(libdir)"
++am__installdirs = "$(DESTDIR)$(libdir)" \
++ "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)"
+ LTLIBRARIES = $(lib_LTLIBRARIES)
+ am__DEPENDENCIES_1 =
+ libgstwayland_@GST_API_VERSION@_la_DEPENDENCIES = \
+@@ -220,7 +222,8 @@ am__can_run_installinfo = \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+-HEADERS = $(noinst_HEADERS)
++HEADERS = $(libgstwayland_@GST_API_VERSION@include_HEADERS) \
++ $(noinst_HEADERS)
+ am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+ # Read a list of newline-separated strings from the standard input,
+ # and print each of them once, without duplicates. Input order is
+@@ -762,6 +765,9 @@ libgstwayland_@GST_API_VERSION@_la_LDFLAGS = \
+ $(GST_ALL_LDFLAGS) \
+ $(GST_LT_LDFLAGS)
+
++libgstwayland_@GST_API_VERSION@include_HEADERS = \
++ wayland.h
++
+ noinst_HEADERS = \
+ wayland.h
+
+@@ -888,6 +894,28 @@ mostlyclean-libtool:
+ clean-libtool:
+ -rm -rf .libs _libs
+
++install-libgstwayland_@GST_API_VERSION@includeHEADERS: $(libgstwayland_@GST_API_VERSION@include_HEADERS)
++ @$(NORMAL_INSTALL)
++ @list='$(libgstwayland_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstwayland_@GST_API_VERSION@includedir)" || list=; \
++ if test -n "$$list"; then \
++ echo " $(MKDIR_P) '$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)'"; \
++ $(MKDIR_P) "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)" || exit 1; \
++ fi; \
++ for p in $$list; do \
++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
++ echo "$$d$$p"; \
++ done | $(am__base_list) | \
++ while read files; do \
++ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)'"; \
++ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)" || exit $$?; \
++ done
++
++uninstall-libgstwayland_@GST_API_VERSION@includeHEADERS:
++ @$(NORMAL_UNINSTALL)
++ @list='$(libgstwayland_@GST_API_VERSION@include_HEADERS)'; test -n "$(libgstwayland_@GST_API_VERSION@includedir)" || list=; \
++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
++ dir='$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)'; $(am__uninstall_files_from_dir)
++
+ ID: $(am__tagged_files)
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
+ tags: tags-am
+@@ -977,7 +1005,7 @@ check-am: all-am
+ check: check-am
+ all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+ installdirs:
+- for dir in "$(DESTDIR)$(libdir)"; do \
++ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libgstwayland_@GST_API_VERSION@includedir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+ install: install-am
+@@ -1033,7 +1061,8 @@ info: info-am
+
+ info-am:
+
+-install-data-am:
++install-data-am: \
++ install-libgstwayland_@GST_API_VERSION@includeHEADERS
+
+ install-dvi: install-dvi-am
+
+@@ -1079,7 +1108,8 @@ ps: ps-am
+
+ ps-am:
+
+-uninstall-am: uninstall-libLTLIBRARIES
++uninstall-am: uninstall-libLTLIBRARIES \
++ uninstall-libgstwayland_@GST_API_VERSION@includeHEADERS
+
+ .MAKE: install-am install-strip
+
+@@ -1090,12 +1120,15 @@ uninstall-am: uninstall-libLTLIBRARIES
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+- install-info-am install-libLTLIBRARIES install-man install-pdf \
+- install-pdf-am install-ps install-ps-am install-strip \
+- installcheck installcheck-am installdirs maintainer-clean \
+- maintainer-clean-generic mostlyclean mostlyclean-compile \
+- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+- tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES
++ install-info-am install-libLTLIBRARIES \
++ install-libgstwayland_@GST_API_VERSION@includeHEADERS \
++ install-man install-pdf install-pdf-am install-ps \
++ install-ps-am install-strip installcheck installcheck-am \
++ installdirs maintainer-clean maintainer-clean-generic \
++ mostlyclean mostlyclean-compile mostlyclean-generic \
++ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
++ uninstall-am uninstall-libLTLIBRARIES \
++ uninstall-libgstwayland_@GST_API_VERSION@includeHEADERS
+
+ .PRECIOUS: Makefile
+
diff --git a/debian/patches/01_fix-modplug-linking.patch b/debian/patches/01_fix-modplug-linking.patch
index 2a03069..d7cb05c 100644
--- a/debian/patches/01_fix-modplug-linking.patch
+++ b/debian/patches/01_fix-modplug-linking.patch
@@ -1,16 +1,17 @@
Description: Tell libtool not to deduplicate linked libraries which causes problems in the case of circular deps. Force -lc to be added at the end.
Author: Iain Lane <iain.lane@canonical.com>
---- a/ext/modplug/Makefile.am
-+++ b/ext/modplug/Makefile.am
-@@ -2,8 +2,8 @@
+Index: gst-plugins-bad1.0/ext/modplug/Makefile.am
+===================================================================
+--- gst-plugins-bad1.0.orig/ext/modplug/Makefile.am
++++ gst-plugins-bad1.0/ext/modplug/Makefile.am
+@@ -2,7 +2,7 @@ plugin_LTLIBRARIES = libgstmodplug.la
libgstmodplug_la_SOURCES = gstmodplug.cc
libgstmodplug_la_CXXFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(MODPLUG_CFLAGS)
-libgstmodplug_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(LIBM) $(MODPLUG_LIBS)
+-libgstmodplug_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+libgstmodplug_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(LIBM) $(MODPLUG_LIBS) -lc
- libgstmodplug_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
--libgstmodplug_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-+libgstmodplug_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) --preserve-dup-deps
++libgstmodplug_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) --preserve-dup-deps
noinst_HEADERS = gstmodplug.h
diff --git a/debian/patches/02_opencv-linking.patch b/debian/patches/02_opencv-linking.patch
deleted file mode 100644
index a199f6f..0000000
--- a/debian/patches/02_opencv-linking.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/ext/opencv/Makefile.am b/ext/opencv/Makefile.am
-index 3ba1c34..2bda4e3 100644
---- a/ext/opencv/Makefile.am
-+++ b/ext/opencv/Makefile.am
-@@ -40,7 +40,9 @@ libgstopencv_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) \
- -DCV_INLINE="static inline" \
- -DCV_NO_BACKWARD_COMPATIBILITY
-
--libgstopencv_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) $(OPENCV_LIBS) \
-+# workaround for broken pkg-config file
-+OPENCV_LIBS_FIXED = $(subst ocl,ml,$(OPENCV_LIBS))
-+libgstopencv_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) $(OPENCV_LIBS_FIXED) \
- $(GSTPB_BASE_LIBS) -lgstvideo-$(GST_API_VERSION)
-
- libgstopencv_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
diff --git a/debian/patches/series b/debian/patches/series
index 2eada45..f9c29d1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
01_fix-modplug-linking.patch
-02_opencv-linking.patch
-0001-Make-sure-to-link-gme-plugin-with-lz.patch
+0001-add-judge-for-mpeg4-codec-in-mpeg-container.patch
+0001-mtk-upgrade-gst-bad-to-1-14-4.patch
+0002-mtk-gst-libs-gst-wayland-makefile.patch
diff --git a/debian/rules b/debian/rules
index c6b5cac..02cf91a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -45,7 +45,7 @@
gst_lib=libgstreamer$(gst_abi)-0
gst_lib_dev=libgstreamer$(gst_abi)-dev
# what gstreamer version is needed
-gst_lib_dev_dep=$(gst_lib_dev) (>= 1.10.0)
+gst_lib_dev_dep=$(gst_lib_dev) (>= 1.14.4)
gst_pkgname=gstreamer$(gst_abi)
gst_deb_abi=$(gst_abi)-0
@@ -58,22 +58,15 @@
gst_extra_build_depends += , libusb-1.0-0-dev [linux-any]
gst_extra_build_depends += , libbluetooth-dev (>= 5) [linux-any]
gst_extra_build_depends += , libsbc-dev (>= 1.1) [linux-any]
-gst_extra_build_depends += , libwayland-dev (>= 1.0) [linux-any]
-gst_extra_build_depends += , wayland-protocols [linux-any]
+gst_extra_build_depends += , libwayland-dev (>= 1.4.0) [linux-any]
+gst_extra_build_depends += , libdrm-dev (>= 2.4.55) [linux-any]
+gst_extra_build_depends += , wayland-protocols (>= 1.4) [linux-any]
+gst_extra_build_depends += , libvulkan-dev [linux-any]
-# The plugins are basically the same.
-# Link special names to a template file.
-# still need "*.install" to be done by hand
-#
-# EXTRA_PLUGINS: See debian/README.Debian for docs
-EXTRA_PLUGINS +=
-
-PLUGINS += plugins-bad $(EXTRA_PLUGINS)
+PLUGINS += plugins-bad
ifeq ($(DEB_HOST_ARCH_OS),linux)
PLUGINS +=
endif
-VERSIONIZE= \
- plugins-bad-doc.install \
#debug package
DEB_DH_STRIP_ARGS := --dbg-package=$(gst_pkgname)-plugins-bad-dbg
@@ -91,6 +84,8 @@
sbc = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstsbc.so
waylandsink = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstwaylandsink.so
wayland = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/libgstwayland-$(gst_abi).so.*
+kms = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstkms.so
+vulkan = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/gstreamer-$(gst_abi)/libgstvulkan.so
endif
ifeq ($(DEB_HOST_ARCH_OS),kfreebsd)
@@ -135,6 +130,8 @@
-e 's,@bluez@,$(bluez),g' \
-e 's,@sbc@,$(sbc),g' \
-e 's,@waylandsink@,$(waylandsink),g' \
+ -e 's,@kms@,$(kms),g' \
+ -e 's,@vulkan@,$(vulkan),g' \
-e 's/@GST_ABI@/$(gst_abi)/g' \
debian/gstreamer-$$p.install \
> debian/$(gst_pkgname)-$$p.install; \
@@ -150,18 +147,14 @@
> debian/libgstreamer-plugins-bad$(gst_deb_abi).install
sed 's/@GST_ABI@/$(gst_abi)/g' debian/libgstreamer-plugins-bad-dev.install \
> debian/libgstreamer-plugins-bad$(gst_abi)-dev.install
- cp debian/gir1.2-gst-plugins-bad.install \
- debian/gir1.2-gst-plugins-bad-$(gst_abi).install
maint: debian/control
-
DEB_CONFIGURE_EXTRA_FLAGS += \
--libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
--disable-examples \
--enable-DEBUG \
--enable-debug \
- --enable-experimental \
--with-package-name=$(GST_PACKAGE_NAME) \
--with-package-origin=$(GST_PACKAGE_ORIGIN) \
--disable-pvr \
@@ -173,11 +166,6 @@
--disable-opengl \
--enable-gles2
-# only build the docs on arches which can
-ifeq (,$(findstring $(DEB_HOST_ARCH),m68k arm))
-DEB_CONFIGURE_EXTRA_FLAGS += --enable-gtk-doc
-endif
-
common-binary-fixup-arch::
LD_LIBRARY_PATH=debian/libgstreamer-plugins-bad1.0-0/usr/lib/$(DEB_HOST_MULTIARCH):$(LD_LIBRARY_PATH) \
dh_gstscancodecs
@@ -192,9 +180,9 @@
rm -f debian/$(gst_pkgname)-$$f; \
done
-gst_patch = $(shell echo $(gst_version) | cut -d '.' -f 3)
+gst_patch = $(shell echo $(gst_version) | cut -d '.' -f 2)
gst_patch_next = $(shell expr $(gst_patch) + 1)
-gst_version_next = $(shell echo $(gst_version) | cut -d '.' -f-2).$(gst_patch_next)
+gst_version_next = $(shell echo $(gst_version) | cut -d '.' -f-1).$(gst_patch_next)
DEB_DH_MAKESHLIBS_ARGS_libgstreamer-plugins-bad$(gst_deb_abi) += -V "libgstreamer-plugins-bad$(gst_deb_abi) (>= $(gst_version)), libgstreamer-plugins-bad$(gst_deb_abi) (<< $(gst_version_next))"
DEB_INSTALL_DOCS_ALL += debian/README.Debian NEWS
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
new file mode 100644
index 0000000..e5d03e4
--- /dev/null
+++ b/debian/source/lintian-overrides
@@ -0,0 +1 @@
+gst-plugins-bad1.0 source: debian-rules-sets-dpkg-architecture-variable *
\ No newline at end of file