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