diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-multimedia/gstreamer')
47 files changed, 1774 insertions, 468 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch new file mode 100644 index 000000000..e3f1c4f74 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch @@ -0,0 +1,32 @@ +From 220c2659a45dd354270a465c45197970dae5f548 Mon Sep 17 00:00:00 2001 +From: "Maxin B. John" <maxin.john@intel.com> +Date: Fri, 5 Aug 2016 17:52:18 +0300 +Subject: [PATCH] gtk-play: provide similar behaviour for quit and close + +In x86 targets, gtk-play just pause rather than quitting the application +when we click the close button (delete-event). Change the callback function +to get similar behaviour when we click on "Quit" menu option. + +Upstream-Status: Accepted + +Signed-off-by: Maxin B. John <maxin.john@intel.com> +--- + gtk/gtk-play.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c +index a520bef..16afc6b 100644 +--- a/gtk/gtk-play.c ++++ b/gtk/gtk-play.c +@@ -177,7 +177,7 @@ load_from_builder (const gchar * filename, gboolean register_sig_handler, + static void + delete_event_cb (GtkWidget * widget, GdkEvent * event, GtkPlay * play) + { +- gst_player_stop (play->player); ++ gtk_widget_destroy (GTK_WIDGET (play)); + } + + static void +-- +2.4.0 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop index 9fd207b38..7ddd456a1 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Name=Media Player Comment=Basic media player -Icon=audio-player +Icon=multimedia-player TryExec=gtk-play Exec=gtk-play StartupNotify=true diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch deleted file mode 100644 index 2cd18bbc9..000000000 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch +++ /dev/null @@ -1,71 +0,0 @@ -As the rest of Sato is GTK+ 2, patch gtk-play to use GTK+ 2. When the rest of -Sato has been ported to GTK+ 3 this patch can be dropped. - -Upstream-Status: Inappropriate -Signed-off-by: Ross Burton <ross.burton@intel.com> - - -diff --git a/configure.ac b/configure.ac -index b8af13b..90ab74c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -60,7 +60,7 @@ AC_SUBST(GLIB_PREFIX) - GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-1.0`" - AC_SUBST(GST_PREFIX) - --PKG_CHECK_MODULES(GTK, [gtk+-3.0], [have_gtk="yes"], [have_gtk="no"]) -+PKG_CHECK_MODULES(GTK, [gtk+-2.0], [have_gtk="yes"], [have_gtk="no"]) - AM_CONDITIONAL(HAVE_GTK, test "x$have_gtk" != "xno") - - GOBJECT_INTROSPECTION_CHECK([1.31.1]) -diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c -index f015077..954d6fb 100644 ---- a/gtk/gtk-play.c -+++ b/gtk/gtk-play.c -@@ -34,6 +34,46 @@ typedef struct - gulong seekbar_value_changed_signal_id; - } GtkPlay; - -+/* Compat stubs */ -+GtkWidget * -+gtk_box_new (GtkOrientation orientation, -+ gint spacing) -+{ -+ switch (orientation) { -+ case GTK_ORIENTATION_HORIZONTAL: -+ return gtk_hbox_new (FALSE, spacing); -+ case GTK_ORIENTATION_VERTICAL: -+ return gtk_vbox_new (FALSE, spacing); -+ } -+} -+ -+GtkWidget* -+gtk_button_new_from_icon_name (const gchar *icon_name, -+ GtkIconSize size) -+{ -+ GtkWidget *button; -+ GtkWidget *image; -+ -+ image = gtk_image_new_from_icon_name (icon_name, size); -+ button = g_object_new (GTK_TYPE_BUTTON, -+ "image", image, -+ NULL); -+ return button; -+} -+ -+GtkWidget * -+gtk_scale_new_with_range (GtkOrientation orientation, -+ gdouble min, -+ gdouble max, -+ gdouble step) -+{ -+ switch (orientation) { -+ case GTK_ORIENTATION_HORIZONTAL: -+ return gtk_hscale_new_with_range (min, max, step); -+ case GTK_ORIENTATION_VERTICAL: -+ return gtk_vscale_new_with_range (min, max, step); -+ } -+} - - static void - set_title (GtkPlay * play, const gchar * title) diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb index 8129169c5..2a4c9dcfb 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gst-player_git.bb @@ -1,39 +1,37 @@ SUMMARY = "GStreamer playback helper library and examples" LICENSE = "LGPL-2.0+" -LIC_FILES_CHKSUM = "file://lib/gst/player/gstplayer.c;beginline=1;endline=19;md5=03aeca9d8295f811817909075a15ff65" +LIC_FILES_CHKSUM = "file://gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9" -DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gtk+" +DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3" SRC_URI = "git://github.com/sdroege/gst-player.git \ - file://filechooser.patch \ - file://gtk2.patch \ - file://Fix-pause-play.patch \ - file://Add-error-signal-emission-for-missing-plugins.patch \ + file://filechooser.patch;apply=0 \ + file://Fix-pause-play.patch;apply=0 \ + file://Add-error-signal-emission-for-missing-plugins.patch;apply=0 \ + file://0001-gtk-play-provide-similar-behaviour-for-quit-and-clos.patch \ file://gst-player.desktop" -SRCREV = "5386c5b984d40ef5434673ed62204e69aaf52645" +SRCREV = "ea90e63c1064503f9ba5d59aa4ca604f13ca5def" +PV = "0.0.1+git${SRCPV}" S = "${WORKDIR}/git" -inherit autotools gtk-doc lib_package pkgconfig distro_features_check gobject-introspection +inherit autotools pkgconfig distro_features_check -ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}" +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" do_configure_prepend() { touch ${S}/ChangeLog } -EXTRA_OECONF += "ac_cv_path_VALGRIND=no ac_cv_path_GDB=no" - do_install_append() { install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop } -FILES_${PN}-bin += "${datadir}/applications/*.desktop" - -RDEPENDS_${PN}-bin = "gstreamer1.0-plugins-base-playback" -RRECOMMENDS_${PN}-bin = "gstreamer1.0-plugins-base-meta \ - gstreamer1.0-plugins-good-meta \ - gstreamer1.0-plugins-bad-meta \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \ - ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}" +RDEPENDS_${PN} = "gstreamer1.0-plugins-base-playback" +RRECOMMENDS_${PN} = "gstreamer1.0-plugins-base-meta \ + gstreamer1.0-plugins-good-meta \ + gstreamer1.0-plugins-bad-meta \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-libav", "", d)} \ + ${@bb.utils.contains("LICENSE_FLAGS_WHITELIST", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}" +RPROVIDES_${PN} += "${PN}-bin" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc index 363101e1a..ea011637c 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc @@ -7,7 +7,7 @@ LICENSE_FLAGS = "commercial" DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base zlib bzip2 xz" -inherit autotools pkgconfig upstream-version-is-even +inherit autotools pkgconfig upstream-version-is-even gtk-doc # CAUTION: Using the system libav is not recommended. Since the libav API is changing all the time, # compilation errors (and other, more subtle bugs) can happen. It is usually better to rely on the @@ -18,6 +18,7 @@ PACKAGECONFIG[gpl] = "--enable-gpl,--disable-gpl," PACKAGECONFIG[libav] = "--with-system-libav,,libav" PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" PACKAGECONFIG[yasm] = "--enable-yasm,--disable-yasm,yasm-native" +PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind" GSTREAMER_1_0_DEBUG ?= "--disable-debug" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.8.3.bb index 687230a8f..3d86221d2 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.6.3.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.8.3.bb @@ -14,7 +14,7 @@ SRC_URI = " \ file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \ " -SRC_URI[md5sum] = "cfe9a06913d4fd4067e9e47f6e05fac2" -SRC_URI[sha256sum] = "857b9c060a0337de38c6d26238c47352433c02eabf26c2f860c854dbc35bd4ab" +SRC_URI[md5sum] = "b51a736147bacb40f85827a4e0ae0d2c" +SRC_URI[sha256sum] = "9006a05990089f7155ee0e848042f6bb24e52ab1d0a59ff8d1b5d7e33001a495" S = "${WORKDIR}/gst-libav-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb index ebc8a5ef2..f4604a34c 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb @@ -15,20 +15,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ # and remove the ffmpeg sources from SRC_URI below. However, first note the # warnings in gstreamer1.0-libav.inc SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gst-libav;name=base \ + git://anongit.freedesktop.org/gstreamer/gst-libav;branch=1.8;name=base \ git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \ git://source.ffmpeg.org/ffmpeg;destsuffix=git/gst-libs/ext/libav;name=ffmpeg;branch=release/3.0 \ file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \ file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \ " -PV = "1.7.2+git${SRCPV}" +PV = "1.8.2+git${SRCPV}" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" -SRCREV_base = "6c4878b6abc916b7f6f25b8926c4859119acf1ec" -SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0" -SRCREV_ffmpeg = "c40983a6f631d22fede713d535bb9c31d5c9740c" +SRCREV_base = "f285cf0fd799cc3b46b5cecaaa439d5a2a38a9b7" +SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275" +SRCREV_ffmpeg = "c66f4d1ae64dffaf456d05cbdade02054446f499" SRCREV_FORMAT = "base" S = "${WORKDIR}/git" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc index 0fff612ee..07e5b7db5 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc @@ -7,11 +7,10 @@ LICENSE_FLAGS = "commercial" DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" -inherit autotools pkgconfig gettext +inherit autotools pkgconfig gettext gtk-doc upstream-version-is-even acpaths = "-I ${S}/common/m4 -I ${S}/m4" -PR = "r1" GSTREAMER_1_0_OMX_TARGET ?= "bellagio" GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc index 9e2b94ede..0fe5564b5 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc @@ -21,7 +21,7 @@ PACKAGECONFIG ??= " \ ${PACKAGECONFIG_GL} \ ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \ bz2 curl dash dtls hls neon rsvg sbc smoothstreaming sndfile uvch264 webp \ " @@ -32,13 +32,16 @@ PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl" PACKAGECONFIG[dash] = "--enable-dash,--disable-dash,libxml2" PACKAGECONFIG[directfb] = "--enable-directfb,--disable-directfb,directfb" PACKAGECONFIG[dtls] = "--enable-dtls,--disable-dtls,openssl" +PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl" PACKAGECONFIG[faac] = "--enable-faac,--disable-faac,faac" PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2" PACKAGECONFIG[flite] = "--enable-flite,--disable-flite,flite-alsa" PACKAGECONFIG[fluidsynth] = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth" PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2" PACKAGECONFIG[gtk] = "--enable-gtk3,--disable-gtk3,gtk+3" -PACKAGECONFIG[hls] = "--enable-hls,--disable-hls,nettle" +# ensure OpenSSL is used for HLS AES description instead of nettle +# (OpenSSL is a shared dependency with dtls) +PACKAGECONFIG[hls] = "--enable-hls --with-hls-crypto=openssl,--disable-hls,openssl" PACKAGECONFIG[libmms] = "--enable-libmms,--disable-libmms,libmms" PACKAGECONFIG[libssh2] = "--enable-libssh2,--disable-libssh2,libssh2" PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug" @@ -46,7 +49,9 @@ PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon" PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft" PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv" PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,virtual/libgl libglu" -PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus" +# the opus encoder/decoder elements are now in the -base package, +# but the opus parser remains in -bad +PACKAGECONFIG[opusparse] = "--enable-opus,--disable-opus,libopus" PACKAGECONFIG[resindvd] = "--enable-resindvd,--disable-resindvd,libdvdread libdvdnav" PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg" PACKAGECONFIG[rtmp] = "--enable-rtmp,--disable-rtmp,rtmpdump" @@ -58,19 +63,19 @@ PACKAGECONFIG[srtp] = "--enable-srtp,--disable-srtp,libsrtp" PACKAGECONFIG[uvch264] = "--enable-uvch264,--disable-uvch264,libusb1 libgudev" PACKAGECONFIG[voaacenc] = "--enable-voaacenc,--disable-voaacenc,vo-aacenc" PACKAGECONFIG[voamrwbenc] = "--enable-voamrwbenc,--disable-voamrwbenc,vo-amrwbenc" -PACKAGECONFIG[wayland] = "--enable-wayland --enable-egl,--disable-wayland --disable-egl,wayland virtual/egl" +PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland-native wayland" PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp" # these plugins have not been ported to 1.0 (yet): -# apexsink dc1394 lv2 linsys musepack nas timidity teletextdec sdl xvid wininet -# acm gsettings sndio cdxaparse dccp faceoverlay hdvparse tta mve nuvdemux -# patchdetect real sdi videomeasure gsettings +# apexsink dc1394 lv2 linsys musepack nas timidity sdl xvid wininet +# sndio cdxaparse dccp faceoverlay hdvparse tta mve nuvdemux +# patchdetect sdi videomeasure # these plugins have no corresponding library in OE-core or meta-openembedded: -# openni2 winks direct3d directsound winscreencap +# openni2 winks direct3d directsound winscreencap acm # apple_media android_media avc bs2b chromaprint daala dts gme gsm kate ladspa -# libde265 mimic mpeg2enc mplex ofa openh264 opensles pvr soundtouch spandsp -# spc vdpau wasapi x265 zbar +# libde265 mimic mpeg2enc mplex nvenc ofa openh264 opensles pvr soundtouch spandsp +# spc teletextdec tinyalsa vdpau vulkan wasapi x265 zbar # qt5 support is disabled, because it is not present in OE core, and requires more work than # just adding a packageconfig (it requires access to moc, uic, rcc, and qmake paths). @@ -81,6 +86,7 @@ EXTRA_OECONF += " \ --enable-decklink \ --enable-dvb \ --enable-fbdev \ + --enable-netsim \ --enable-shm \ --enable-vcd \ --disable-acm \ @@ -109,6 +115,7 @@ EXTRA_OECONF += " \ --disable-mplex \ --disable-musepack \ --disable-nas \ + --disable-nvenc \ --disable-ofa \ --disable-openexr \ --disable-openh264 \ @@ -125,7 +132,9 @@ EXTRA_OECONF += " \ --disable-spc \ --disable-teletextdec \ --disable-timidity \ + --disable-tinyalsa \ --disable-vdpau \ + --disable-vulkan \ --disable-wasapi \ --disable-wildmidi \ --disable-wininet \ diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch index 154d340e4..33efc503e 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch @@ -17,7 +17,7 @@ diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am index f968357..7cc2c7a 100644 --- a/gst-libs/gst/gl/Makefile.am +++ b/gst-libs/gst/gl/Makefile.am -@@ -149,7 +149,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@ +@@ -167,7 +167,7 @@ GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@ --library=libgstgl-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ @@ -30,7 +30,7 @@ diff --git a/gst-libs/gst/insertbin/Makefile.am b/gst-libs/gst/insertbin/Makefil index 09eb97c..b746885 100644 --- a/gst-libs/gst/insertbin/Makefile.am +++ b/gst-libs/gst/insertbin/Makefile.am -@@ -43,7 +43,7 @@ GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GS +@@ -44,7 +44,7 @@ GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GS --library=libgstinsertbin-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch new file mode 100755 index 000000000..51f4eb4b3 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch @@ -0,0 +1,634 @@ +From 8a0e97f7e672301cc76e394855e8c7a3448b0249 Mon Sep 17 00:00:00 2001 +From: Haihua Hu <jared.hu@nxp.com> +Date: Fri, 8 Apr 2016 16:47:15 +0800 +Subject: [PATCH 4/6] [glplugin] enable gldeinterlace on OpenGL ES +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +1.Porting the exist deinterlace shader and OpenGL callback + to be compatible with OpenGL ES. +2.Add a our blur vertical shader to gldeinterlace. +3.Add a property named “method” to let user choose which + deinterlace function to use. Default to choose blur vertical + method for better performance. + +Upstream-Status: Backport [1.9.1] + +https://bugzilla.gnome.org/show_bug.cgi?id=764873 + +Signed-off-by: Haihua Hu <jared.hu@nxp.com> +--- + ext/gl/Makefile.am | 4 +- + ext/gl/gstgldeinterlace.c | 344 +++++++++++++++++++++++++++++++++++----------- + ext/gl/gstgldeinterlace.h | 6 +- + ext/gl/gstopengl.c | 13 +- + 4 files changed, 275 insertions(+), 92 deletions(-) + +diff --git a/ext/gl/Makefile.am b/ext/gl/Makefile.am +index 5d55f54..46419a7 100644 +--- a/ext/gl/Makefile.am ++++ b/ext/gl/Makefile.am +@@ -40,6 +40,7 @@ libgstopengl_la_SOURCES = \ + gstglfilterapp.c \ + gstglviewconvert.c \ + gstglstereosplit.c \ ++ gstgldeinterlace.c \ + gstglstereomix.c + + noinst_HEADERS = \ +@@ -63,20 +64,19 @@ noinst_HEADERS = \ + gstglfilterapp.h \ + gstglstereosplit.h \ + gstglstereomix.h \ ++ gstgldeinterlace.h \ + gstglviewconvert.h + + # full opengl required + if USE_OPENGL + libgstopengl_la_SOURCES += \ + gstglfilterglass.c \ +- gstgldeinterlace.c \ + gltestsrc.c \ + gstgltestsrc.c \ + gstglmosaic.c + + noinst_HEADERS += \ + gstglfilterglass.h \ +- gstgldeinterlace.h \ + gltestsrc.h \ + gstgltestsrc.h \ + gstglmosaic.h \ +diff --git a/ext/gl/gstgldeinterlace.c b/ext/gl/gstgldeinterlace.c +index bd0eff0..c1250dc 100644 +--- a/ext/gl/gstgldeinterlace.c ++++ b/ext/gl/gstgldeinterlace.c +@@ -43,7 +43,8 @@ GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); + + enum + { +- PROP_0 ++ PROP_0, ++ PROP_METHOD + }; + + #define DEBUG_INIT \ +@@ -57,17 +58,23 @@ static void gst_gl_deinterlace_set_property (GObject * object, + static void gst_gl_deinterlace_get_property (GObject * object, + guint prop_id, GValue * value, GParamSpec * pspec); + ++static gboolean gst_gl_deinterlace_start (GstBaseTransform * trans); + static gboolean gst_gl_deinterlace_reset (GstBaseTransform * trans); +-static gboolean gst_gl_deinterlace_init_shader (GstGLFilter * filter); ++static gboolean gst_gl_deinterlace_init_fbo (GstGLFilter * filter); + static gboolean gst_gl_deinterlace_filter (GstGLFilter * filter, + GstBuffer * inbuf, GstBuffer * outbuf); + static gboolean gst_gl_deinterlace_filter_texture (GstGLFilter * filter, + guint in_tex, guint out_tex); +-static void gst_gl_deinterlace_callback (gint width, gint height, ++static void gst_gl_deinterlace_vfir_callback (gint width, gint height, ++ guint texture, gpointer stuff); ++static void gst_gl_deinterlace_greedyh_callback (gint width, gint height, + guint texture, gpointer stuff); + + /* *INDENT-OFF* */ + static const gchar *greedyh_fragment_source = ++ "#ifdef GL_ES\n" ++ "precision mediump float;\n" ++ "#endif\n" + "uniform sampler2D tex;\n" + "uniform sampler2D tex_prev;\n" + "uniform float max_comb;\n" +@@ -75,35 +82,35 @@ static const gchar *greedyh_fragment_source = + "uniform float motion_sense;\n" + "uniform float width;\n" + "uniform float height;\n" ++ "varying vec2 v_texcoord;\n" + + "void main () {\n" +- " vec2 texcoord = gl_TexCoord[0].xy;\n" +- " if (int(mod(texcoord.y * height, 2.0)) == 0) {\n" +- " gl_FragColor = vec4(texture2D(tex_prev, texcoord).rgb, 1.0);\n" ++ " if (int(mod(v_texcoord.y * height, 2.0)) == 0) {\n" ++ " gl_FragColor = vec4(texture2D(tex_prev, v_texcoord).rgb, 1.0);\n" + " } else {\n" + " vec2 texcoord_L1_a1, texcoord_L3_a1, texcoord_L1, texcoord_L3, texcoord_L1_1, texcoord_L3_1;\n" + " vec3 L1_a1, L3_a1, L1, L3, L1_1, L3_1;\n" + +- " texcoord_L1 = vec2(texcoord.x, texcoord.y - 1.0 / height);\n" +- " texcoord_L3 = vec2(texcoord.x, texcoord.y + 1.0 / height);\n" ++ " texcoord_L1 = vec2(v_texcoord.x, v_texcoord.y - 1.0 / height);\n" ++ " texcoord_L3 = vec2(v_texcoord.x, v_texcoord.y + 1.0 / height);\n" + " L1 = texture2D(tex_prev, texcoord_L1).rgb;\n" + " L3 = texture2D(tex_prev, texcoord_L3).rgb;\n" +- " if (texcoord.x == 1.0 && texcoord.y == 1.0) {\n" ++ " if (v_texcoord.x == 1.0 && v_texcoord.y == 1.0) {\n" + " L1_1 = L1;\n" + " L3_1 = L3;\n" + " } else {\n" +- " texcoord_L1_1 = vec2(texcoord.x + 1.0 / width, texcoord.y - 1.0 / height);\n" +- " texcoord_L3_1 = vec2(texcoord.x + 1.0 / width, texcoord.y + 1.0 / height);\n" ++ " texcoord_L1_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y - 1.0 / height);\n" ++ " texcoord_L3_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y + 1.0 / height);\n" + " L1_1 = texture2D(tex_prev, texcoord_L1_1).rgb;\n" + " L3_1 = texture2D(tex_prev, texcoord_L3_1).rgb;\n" + " }\n" + +- " if (int(ceil(texcoord.x + texcoord.y)) == 0) {\n" ++ " if (int(ceil(v_texcoord.x + v_texcoord.y)) == 0) {\n" + " L1_a1 = L1;\n" + " L3_a1 = L3;\n" + " } else {\n" +- " texcoord_L1_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y - 1.0 / height);\n" +- " texcoord_L3_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y + 1.0 / height);\n" ++ " texcoord_L1_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y - 1.0 / height);\n" ++ " texcoord_L3_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y + 1.0 / height);\n" + " L1_a1 = texture2D(tex_prev, texcoord_L1_a1).rgb;\n" + " L3_a1 = texture2D(tex_prev, texcoord_L3_a1).rgb;\n" + " }\n" +@@ -113,8 +120,8 @@ static const gchar *greedyh_fragment_source = + " vec3 avg_1 = (L1_1 + L3_1) / 2.0;\n" + " vec3 avg_s = (avg_a1 + avg_1) / 2.0;\n" + " vec3 avg_sc = (avg_s + avg) / 2.0;\n" +- " vec3 L2 = texture2D(tex, texcoord).rgb;\n" +- " vec3 LP2 = texture2D(tex_prev, texcoord).rgb;\n" ++ " vec3 L2 = texture2D(tex, v_texcoord).rgb;\n" ++ " vec3 LP2 = texture2D(tex_prev, v_texcoord).rgb;\n" + " vec3 best;\n" + " if (abs(L2.r - avg_sc.r) < abs(LP2.r - avg_sc.r)) {\n" + " best.r = L2.r;\n" " } else {\n" +@@ -144,8 +151,87 @@ static const gchar *greedyh_fragment_source = + " gl_FragColor = vec4(last, 1.0);\n" + " }\n" + "}\n"; ++ ++const gchar *vfir_fragment_source = ++ "#ifdef GL_ES\n" ++ "precision mediump float;\n" ++ "#endif\n" ++ "uniform sampler2D tex;\n" ++ "uniform float width;\n" ++ "uniform float height;\n" ++ "varying vec2 v_texcoord;\n" ++ "void main()\n" ++ "{\n" ++ " vec2 topcoord, botcoord;\n" ++ " vec4 cur_color, top_color, bot_color;\n" ++ " topcoord.x = v_texcoord.x;\n" ++ " botcoord.x = v_texcoord.x;\n" ++ " if (v_texcoord.y == 0.0 || v_texcoord.y == 1.0) {\n" ++ " topcoord.y = v_texcoord.y ;\n" ++ " botcoord.y = v_texcoord.y ;\n" ++ " }\n" ++ " else {\n" ++ " topcoord.y = v_texcoord.y - 1.0/height;\n" ++ " botcoord.y = v_texcoord.y + 1.0/height;\n" ++ " }\n" ++ " cur_color = texture2D(tex, v_texcoord);\n" ++ " top_color = texture2D(tex, topcoord);\n" ++ " bot_color = texture2D(tex, botcoord);\n" ++ " gl_FragColor = 0.5*cur_color + 0.25*top_color + 0.25*bot_color;\n" ++ "}"; + /* *INDENT-ON* */ + ++/* dont' forget to edit the following when a new method is added */ ++typedef enum ++{ ++ GST_GL_DEINTERLACE_VFIR, ++ GST_GL_DEINTERLACE_GREEDYH ++} GstGLDeinterlaceMethod; ++ ++static const GEnumValue * ++gst_gl_deinterlace_get_methods (void) ++{ ++ static const GEnumValue method_types[] = { ++ {GST_GL_DEINTERLACE_VFIR, "Blur Vertical", "vfir"}, ++ {GST_GL_DEINTERLACE_GREEDYH, "Motion Adaptive: Advanced Detection", ++ "greedhy"}, ++ {0, NULL, NULL} ++ }; ++ return method_types; ++} ++ ++#define GST_TYPE_GL_DEINTERLACE_METHODS (gst_gl_deinterlace_method_get_type ()) ++static GType ++gst_gl_deinterlace_method_get_type (void) ++{ ++ static GType gl_deinterlace_method_type = 0; ++ if (!gl_deinterlace_method_type) { ++ gl_deinterlace_method_type = ++ g_enum_register_static ("GstGLDeinterlaceMethod", ++ gst_gl_deinterlace_get_methods ()); ++ } ++ return gl_deinterlace_method_type; ++} ++ ++static void ++gst_gl_deinterlace_set_method (GstGLDeinterlace * deinterlace, ++ guint method_types) ++{ ++ switch (method_types) { ++ case GST_GL_DEINTERLACE_VFIR: ++ deinterlace->deinterlacefunc = gst_gl_deinterlace_vfir_callback; ++ deinterlace->current_method = method_types; ++ break; ++ case GST_GL_DEINTERLACE_GREEDYH: ++ deinterlace->deinterlacefunc = gst_gl_deinterlace_greedyh_callback; ++ deinterlace->current_method = method_types; ++ break; ++ default: ++ g_assert_not_reached (); ++ break; ++ } ++} ++ + static void + gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass) + { +@@ -163,25 +249,60 @@ gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass) + "Deinterlacing based on fragment shaders", + "Julien Isorce <julien.isorce@mail.com>"); + ++ g_object_class_install_property (gobject_class, ++ PROP_METHOD, ++ g_param_spec_enum ("method", ++ "Deinterlace Method", ++ "Select which deinterlace method apply to GL video texture", ++ GST_TYPE_GL_DEINTERLACE_METHODS, ++ GST_GL_DEINTERLACE_VFIR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); ++ ++ GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_deinterlace_start; + GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_deinterlace_reset; + + GST_GL_FILTER_CLASS (klass)->filter = gst_gl_deinterlace_filter; + GST_GL_FILTER_CLASS (klass)->filter_texture = + gst_gl_deinterlace_filter_texture; +- GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_shader; ++ GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_fbo; + +- GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api = GST_GL_API_OPENGL; ++ GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api = ++ GST_GL_API_OPENGL | GST_GL_API_GLES2 | GST_GL_API_OPENGL3; + } + + static void + gst_gl_deinterlace_init (GstGLDeinterlace * filter) + { +- filter->shader = NULL; ++ filter->shaderstable = NULL; ++ filter->deinterlacefunc = gst_gl_deinterlace_vfir_callback; ++ filter->current_method = GST_GL_DEINTERLACE_VFIR; + filter->prev_buffer = NULL; + filter->prev_tex = 0; + } + + static gboolean ++gst_gl_deinterlace_start (GstBaseTransform * trans) ++{ ++ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans); ++ ++ deinterlace_filter->shaderstable = g_hash_table_new (g_str_hash, g_str_equal); ++ ++ return GST_BASE_TRANSFORM_CLASS (parent_class)->start (trans); ++} ++ ++static void ++gst_gl_deinterlace_ghash_func_clean (gpointer key, gpointer value, ++ gpointer data) ++{ ++ GstGLShader *shader = (GstGLShader *) value; ++ GstGLFilter *filter = (GstGLFilter *) data; ++ ++ //blocking call, wait the opengl thread has destroyed the shader ++ gst_gl_context_del_shader (GST_GL_BASE_FILTER (filter)->context, shader); ++ ++ value = NULL; ++} ++ ++static gboolean + gst_gl_deinterlace_reset (GstBaseTransform * trans) + { + GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans); +@@ -189,10 +310,17 @@ gst_gl_deinterlace_reset (GstBaseTransform * trans) + gst_buffer_replace (&deinterlace_filter->prev_buffer, NULL); + + //blocking call, wait the opengl thread has destroyed the shader +- if (deinterlace_filter->shader) +- gst_gl_context_del_shader (GST_GL_BASE_FILTER (trans)->context, +- deinterlace_filter->shader); +- deinterlace_filter->shader = NULL; ++ if (deinterlace_filter->shaderstable) { ++ /* release shaders in the gl thread */ ++ g_hash_table_foreach (deinterlace_filter->shaderstable, ++ gst_gl_deinterlace_ghash_func_clean, deinterlace_filter); ++ ++ /* clean the htable without calling values destructors ++ * because shaders have been released in the glthread ++ * through the foreach func */ ++ g_hash_table_unref (deinterlace_filter->shaderstable); ++ deinterlace_filter->shaderstable = NULL; ++ } + + return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (trans); + } +@@ -201,9 +329,12 @@ static void + gst_gl_deinterlace_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) + { +- //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object); ++ GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object); + + switch (prop_id) { ++ case PROP_METHOD: ++ gst_gl_deinterlace_set_method (filter, g_value_get_enum (value)); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -214,9 +345,12 @@ static void + gst_gl_deinterlace_get_property (GObject * object, guint prop_id, + GValue * value, GParamSpec * pspec) + { +- //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object); ++ GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object); + + switch (prop_id) { ++ case PROP_METHOD: ++ g_value_set_enum (value, filter->current_method); ++ break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; +@@ -224,13 +358,9 @@ gst_gl_deinterlace_get_property (GObject * object, guint prop_id, + } + + static gboolean +-gst_gl_deinterlace_init_shader (GstGLFilter * filter) ++gst_gl_deinterlace_init_fbo (GstGLFilter * filter) + { +- GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter); +- +- //blocking call, wait the opengl thread has compiled the shader +- return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context, 0, +- greedyh_fragment_source, &deinterlace_filter->shader); ++ return TRUE; + } + + static gboolean +@@ -241,7 +371,7 @@ gst_gl_deinterlace_filter_texture (GstGLFilter * filter, guint in_tex, + + //blocking call, use a FBO + gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex, +- gst_gl_deinterlace_callback, deinterlace_filter); ++ deinterlace_filter->deinterlacefunc, deinterlace_filter); + + return TRUE; + } +@@ -259,36 +389,104 @@ gst_gl_deinterlace_filter (GstGLFilter * filter, GstBuffer * inbuf, + return TRUE; + } + +-//opengl scene, params: input texture (not the output filter->texture) ++static GstGLShader * ++gst_gl_deinterlace_get_fragment_shader (GstGLFilter * filter, ++ const gchar * shader_name, const gchar * shader_source) ++{ ++ GstGLShader *shader = NULL; ++ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter); ++ GstGLContext *context = GST_GL_BASE_FILTER (filter)->context; ++ ++ shader = g_hash_table_lookup (deinterlace_filter->shaderstable, shader_name); ++ ++ if (!shader) { ++ GError *error = NULL; ++ ++ if (!(shader = gst_gl_shader_new_link_with_stages (context, &error, ++ gst_glsl_stage_new_default_vertex (context), ++ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER, ++ GST_GLSL_VERSION_NONE, ++ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY, ++ shader_source), NULL))) { ++ GST_ELEMENT_ERROR (deinterlace_filter, RESOURCE, NOT_FOUND, ++ ("Failed to initialize %s shader", shader_name), (NULL)); ++ } ++ ++ filter->draw_attr_position_loc = ++ gst_gl_shader_get_attribute_location (shader, "a_position"); ++ filter->draw_attr_texture_loc = ++ gst_gl_shader_get_attribute_location (shader, "a_texcoord"); ++ } ++ ++ g_hash_table_insert (deinterlace_filter->shaderstable, (gchar *) shader_name, ++ shader); ++ ++ return shader; ++} ++ + static void +-gst_gl_deinterlace_callback (gint width, gint height, guint texture, ++gst_gl_deinterlace_vfir_callback (gint width, gint height, guint texture, + gpointer stuff) + { +- GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (stuff); ++ GstGLShader *shader; + GstGLFilter *filter = GST_GL_FILTER (stuff); +- GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable; ++ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter); ++ GstGLContext *context = GST_GL_BASE_FILTER (filter)->context; ++ GstGLFuncs *gl = context->gl_vtable; ++ ++ shader = gst_gl_deinterlace_get_fragment_shader (deinterlace_filter, "vfir", ++ vfir_fragment_source); ++ ++ if (!shader) ++ return; ++ ++#if GST_GL_HAVE_OPENGL ++ if (USING_OPENGL (context)) { ++ gl->MatrixMode (GL_PROJECTION); ++ gl->LoadIdentity (); ++ } ++#endif ++ ++ gst_gl_shader_use (shader); ++ ++ gl->ActiveTexture (GL_TEXTURE0); ++ gl->BindTexture (GL_TEXTURE_2D, texture); ++ ++ gst_gl_shader_set_uniform_1i (shader, "tex", 0); ++ gst_gl_shader_set_uniform_1f (shader, "width", ++ GST_VIDEO_INFO_WIDTH (&filter->out_info)); ++ gst_gl_shader_set_uniform_1f (shader, "height", ++ GST_VIDEO_INFO_HEIGHT (&filter->out_info)); ++ ++ gst_gl_filter_draw_texture (filter, texture, width, height); ++} ++ ++static void ++gst_gl_deinterlace_greedyh_callback (gint width, gint height, guint texture, ++ gpointer stuff) ++{ ++ GstGLShader *shader; ++ GstGLFilter *filter = GST_GL_FILTER (stuff); ++ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter); ++ GstGLContext *context = GST_GL_BASE_FILTER (filter)->context; ++ GstGLFuncs *gl = context->gl_vtable; + guint temp; + +- GLfloat verts[] = { -1.0, -1.0, +- 1.0, -1.0, +- 1.0, 1.0, +- -1.0, 1.0 +- }; +- GLfloat texcoords0[] = { 0.0f, 0.0f, +- 1.0f, 0.0f, +- 1.0f, 1.0f, +- 0.0f, 1.0f +- }; +- GLfloat texcoords1[] = { 0.0f, 0.0f, +- 1.0f, 0.0f, +- 1.0f, 1.0f, +- 0.0f, 1.0f +- }; ++ shader = ++ gst_gl_deinterlace_get_fragment_shader (deinterlace_filter, "greedhy", ++ greedyh_fragment_source); + +- gl->MatrixMode (GL_PROJECTION); +- gl->LoadIdentity (); ++ if (!shader) ++ return; + +- gst_gl_shader_use (deinterlace_filter->shader); ++#if GST_GL_HAVE_OPENGL ++ if (USING_OPENGL (context)) { ++ gl->MatrixMode (GL_PROJECTION); ++ gl->LoadIdentity (); ++ } ++#endif ++ ++ gst_gl_shader_use (shader); + + if (G_UNLIKELY (deinterlace_filter->prev_tex == 0)) { + gst_gl_context_gen_texture (GST_GL_BASE_FILTER (filter)->context, +@@ -298,44 +496,24 @@ gst_gl_deinterlace_callback (gint width, gint height, guint texture, + GST_VIDEO_INFO_HEIGHT (&filter->out_info)); + } else { + gl->ActiveTexture (GL_TEXTURE1); +- gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex_prev", 1); ++ gst_gl_shader_set_uniform_1i (shader, "tex_prev", 1); + gl->BindTexture (GL_TEXTURE_2D, deinterlace_filter->prev_tex); + } + + gl->ActiveTexture (GL_TEXTURE0); +- gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex", 0); ++ gl->BindTexture (GL_TEXTURE_2D, texture); + +- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "max_comb", +- 5.0f / 255.0f); +- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_threshold", +- 25.0f / 255.0f); +- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_sense", +- 30.0f / 255.0f); ++ gst_gl_shader_set_uniform_1i (shader, "tex", 0); ++ gst_gl_shader_set_uniform_1f (shader, "max_comb", 5.0f / 255.0f); ++ gst_gl_shader_set_uniform_1f (shader, "motion_threshold", 25.0f / 255.0f); ++ gst_gl_shader_set_uniform_1f (shader, "motion_sense", 30.0f / 255.0f); + +- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "width", ++ gst_gl_shader_set_uniform_1f (shader, "width", + GST_VIDEO_INFO_WIDTH (&filter->out_info)); +- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "height", ++ gst_gl_shader_set_uniform_1f (shader, "height", + GST_VIDEO_INFO_HEIGHT (&filter->out_info)); + +- gl->ClientActiveTexture (GL_TEXTURE0); +- +- gl->EnableClientState (GL_TEXTURE_COORD_ARRAY); +- gl->EnableClientState (GL_VERTEX_ARRAY); +- +- gl->VertexPointer (2, GL_FLOAT, 0, &verts); +- gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords0); +- +- gl->ClientActiveTexture (GL_TEXTURE1); +- gl->EnableClientState (GL_TEXTURE_COORD_ARRAY); +- gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords1); +- +- gl->DrawArrays (GL_TRIANGLE_FAN, 0, 4); +- +- gl->DisableClientState (GL_VERTEX_ARRAY); +- gl->DisableClientState (GL_TEXTURE_COORD_ARRAY); +- +- gl->ClientActiveTexture (GL_TEXTURE0); +- gl->DisableClientState (GL_TEXTURE_COORD_ARRAY); ++ gst_gl_filter_draw_texture (filter, texture, width, height); + + if (texture == filter->in_tex_id) { + temp = filter->in_tex_id; +diff --git a/ext/gl/gstgldeinterlace.h b/ext/gl/gstgldeinterlace.h +index a81a2e7..58a9c0c 100644 +--- a/ext/gl/gstgldeinterlace.h ++++ b/ext/gl/gstgldeinterlace.h +@@ -38,9 +38,13 @@ typedef struct _GstGLDeinterlaceClass GstGLDeinterlaceClass; + struct _GstGLDeinterlace + { + GstGLFilter filter; +- GstGLShader *shader; ++ ++ GLCB deinterlacefunc; ++ GHashTable *shaderstable; + GstBuffer *prev_buffer; + guint prev_tex; ++ ++ gint current_method; + }; + + struct _GstGLDeinterlaceClass +diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c +index 50676c4..135862a 100644 +--- a/ext/gl/gstopengl.c ++++ b/ext/gl/gstopengl.c +@@ -62,6 +62,7 @@ + #include "gstglstereosplit.h" + #include "gstglstereomix.h" + #include "gstglviewconvert.h" ++#include "gstgldeinterlace.h" + + #if HAVE_GRAPHENE + #include "gstgltransformation.h" +@@ -77,7 +78,6 @@ + #include "gstgltestsrc.h" + #include "gstglfilterglass.h" + /* #include "gstglfilterreflectedscreen.h" */ +-#include "gstgldeinterlace.h" + #include "gstglmosaic.h" + #if HAVE_PNG + #include "gstgldifferencematte.h" +@@ -226,6 +226,12 @@ plugin_init (GstPlugin * plugin) + GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX)) { + return FALSE; + } ++ ++ if (!gst_element_register (plugin, "gldeinterlace", ++ GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) { ++ return FALSE; ++ } ++ + #if HAVE_JPEG + #if HAVE_PNG + if (!gst_element_register (plugin, "gloverlay", +@@ -250,11 +256,6 @@ plugin_init (GstPlugin * plugin) + return FALSE; + } + #endif +- if (!gst_element_register (plugin, "gldeinterlace", +- GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) { +- return FALSE; +- } +- + if (!gst_element_register (plugin, "glmosaic", + GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) { + return FALSE; +-- +1.9.1 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch deleted file mode 100755 index 3491a15e6..000000000 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 95cda7fbcf1a81289d9315c801c8e2b3d896f4cb Mon Sep 17 00:00:00 2001 -From: Haihua Hu <b55597@freescale.com> -Date: Mon, 30 Nov 2015 09:36:09 +0800 -Subject: [PATCH 2/5] [glplugin] glwindow: fix memory leak of navigation - thread - -When exit navigation thread, call g_thread_join() to release -the resource hold by it. - -Upstream-Status: Backport [1.7.1] - -bugzilla URL: https://bugzilla.gnome.org/show_bug.cgi?id=758820 - -Signed-off-by: Haihua Hu <b55597@freescale.com> ---- - gst-libs/gst/gl/gstglwindow.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c -index 44b74ca..42ef296 100644 ---- a/gst-libs/gst/gl/gstglwindow.c -+++ b/gst-libs/gst/gl/gstglwindow.c -@@ -343,6 +343,9 @@ gst_gl_window_finalize (GObject * object) - while (window->nav_alive) { - g_cond_wait (&window->nav_destroy_cond, &window->nav_lock); - } -+ /* release resource hold by navigation thread */ -+ g_thread_join(window->priv->navigation_thread); -+ window->priv->navigation_thread = NULL; - g_mutex_unlock (&window->nav_lock); - } - --- -1.7.9.5 - diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glcolorconvert-implement-multiple-render-targets-for.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glcolorconvert-implement-multiple-render-targets-for.patch new file mode 100755 index 000000000..31d8e052f --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-glcolorconvert-implement-multiple-render-targets-for.patch @@ -0,0 +1,244 @@ +From 127e517568490fc147211d8b2fb4da01cecbbeb5 Mon Sep 17 00:00:00 2001 +From: Matthew Waters <matthew@centricular.com> +Date: Thu, 31 Mar 2016 19:50:28 +1100 +Subject: [PATCH 5/6] glcolorconvert: implement multiple render targets for + GLES3 + +There are numerous slight differences required between Desktop GL and GLES3 for +multiple render targets. + +1. gl_FragData doesn't exist at all and one is required to use + 'layout (location = ?) out ...' instead. +2. gl_FragColor doesn't exist, same as 1 +3. texture2D() has been deprecated + +Fortunately most of these have been taken care of with GL3 and the shader +mangling already exists so just expand the conditions they are used in. The +gl_FragData issue requires a new mangle pass though. We also use this new +pass on desktop GL for consistency. + +Upstream-Status: Backport [1.9.1] + +--- + gst-libs/gst/gl/gstglcolorconvert.c | 125 ++++++++++++++++++++++++++++-------- + 1 file changed, 99 insertions(+), 26 deletions(-) + +diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c +index 490ec54..f478faa 100644 +--- a/gst-libs/gst/gl/gstglcolorconvert.c ++++ b/gst-libs/gst/gl/gstglcolorconvert.c +@@ -1802,10 +1802,11 @@ _mangle_sampler_type (const gchar * str, GstGLTextureTarget from, + + static gchar * + _mangle_varying_attribute (const gchar * str, guint shader_type, +- GstGLAPI gl_api) ++ GstGLAPI gl_api, guint gl_major, guint gl_minor) + { +- if (gl_api & GST_GL_API_OPENGL3) { +- if (shader_type == GL_VERTEX_SHADER) { ++ if (shader_type == GL_VERTEX_SHADER) { ++ if ((gl_api & GST_GL_API_OPENGL3) || (gl_api & GST_GL_API_GLES2 ++ && gl_major >= 3)) { + gchar *tmp, *tmp2; + GRegex *regex; + +@@ -1821,7 +1822,10 @@ _mangle_varying_attribute (const gchar * str, guint shader_type, + + g_free (tmp); + return tmp2; +- } else if (shader_type == GL_FRAGMENT_SHADER) { ++ } ++ } else if (shader_type == GL_FRAGMENT_SHADER) { ++ if ((gl_api & GST_GL_API_OPENGL3) || (gl_api & GST_GL_API_GLES2 ++ && gl_major > 3)) { + gchar *tmp; + GRegex *regex; + +@@ -1837,28 +1841,48 @@ _mangle_varying_attribute (const gchar * str, guint shader_type, + } + + static gchar * +-_mangle_frag_color (const gchar * str) ++_mangle_frag_color_data (const gchar * str) + { + GRegex *regex; +- gchar *ret; ++ gchar *ret, *tmp; + + regex = g_regex_new ("gl_FragColor", 0, 0, NULL); + ret = g_regex_replace_literal (regex, str, -1, 0, "fragColor", 0, NULL); + g_regex_unref (regex); + ++ tmp = ret; ++ /* search and replace 'gl_FragData[NUM]' into fragColor_NUM */ ++ regex = g_regex_new ("gl_FragData\\[(\\d+)\\]", 0, 0, NULL); ++ ret = g_regex_replace (regex, tmp, -1, 0, "fragColor_\\1", 0, NULL); ++ g_regex_unref (regex); ++ g_free (tmp); ++ + return ret; + } + + static void +-_mangle_version_profile_from_gl_api (GstGLAPI gl_api, GstGLSLVersion * version, +- GstGLSLProfile * profile) ++_mangle_version_profile_from_gl_api (GstGLAPI gl_api, gint gl_major, ++ gint gl_minor, GstGLSLVersion * version, GstGLSLProfile * profile) + { ++ *version = GST_GLSL_VERSION_NONE; ++ *profile = GST_GLSL_PROFILE_NONE; ++ + if (gl_api & GST_GL_API_OPENGL3) { +- *version = GST_GLSL_VERSION_150; +- *profile = GST_GLSL_PROFILE_NONE; ++ if (gl_major > 3 || gl_minor >= 3) { ++ *version = GST_GLSL_VERSION_330; ++ *profile = GST_GLSL_PROFILE_CORE; ++ } else { ++ *version = GST_GLSL_VERSION_150; ++ *profile = GST_GLSL_PROFILE_NONE; ++ } + } else if (gl_api & GST_GL_API_GLES2) { +- *version = GST_GLSL_VERSION_100; +- *profile = GST_GLSL_PROFILE_ES; ++ if (gl_major >= 3) { ++ *version = GST_GLSL_VERSION_300; ++ *profile = GST_GLSL_PROFILE_ES; ++ } else if (gl_major >= 2) { ++ *version = GST_GLSL_VERSION_100; ++ *profile = GST_GLSL_PROFILE_ES; ++ } + } else if (gl_api & GST_GL_API_OPENGL) { + *version = GST_GLSL_VERSION_110; + *profile = GST_GLSL_PROFILE_COMPATIBILITY; +@@ -1867,22 +1891,28 @@ _mangle_version_profile_from_gl_api (GstGLAPI gl_api, GstGLSLVersion * version, + + static gchar * + _mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from, +- GstGLTextureTarget to, GstGLAPI gl_api, GstGLSLVersion * version, +- GstGLSLProfile * profile) ++ GstGLTextureTarget to, GstGLAPI gl_api, gint gl_major, gint gl_minor, ++ GstGLSLVersion * version, GstGLSLProfile * profile) + { + gchar *tmp, *tmp2; + ++ _mangle_version_profile_from_gl_api (gl_api, gl_major, gl_minor, version, ++ profile); + tmp = _mangle_texture_access (str, from, to, gl_api); + tmp2 = _mangle_sampler_type (tmp, from, to); + g_free (tmp); +- tmp = _mangle_varying_attribute (tmp2, shader_type, gl_api); ++ tmp = ++ _mangle_varying_attribute (tmp2, shader_type, gl_api, gl_major, gl_minor); + g_free (tmp2); +- if (shader_type == GL_FRAGMENT_SHADER && gl_api & GST_GL_API_OPENGL3) { +- tmp2 = _mangle_frag_color (tmp); +- g_free (tmp); +- tmp = tmp2; ++ if (shader_type == GL_FRAGMENT_SHADER) { ++ if ((*profile == GST_GLSL_PROFILE_ES && *version >= GST_GLSL_VERSION_300) ++ || (*profile == GST_GLSL_PROFILE_CORE ++ && *version >= GST_GLSL_VERSION_150)) { ++ tmp2 = _mangle_frag_color_data (tmp); ++ g_free (tmp); ++ tmp = tmp2; ++ } + } +- _mangle_version_profile_from_gl_api (gl_api, version, profile); + return tmp; + } + +@@ -1899,15 +1929,18 @@ _create_shader (GstGLColorConvert * convert) + const gchar *strings[2]; + GError *error = NULL; + GstGLAPI gl_api; ++ gint gl_major, gl_minor; + int i; + + gl_api = gst_gl_context_get_gl_api (convert->context); ++ gst_gl_context_get_gl_version (convert->context, &gl_major, &gl_minor); + + ret = gst_gl_shader_new (convert->context); + + tmp = + _mangle_shader (text_vertex_shader, GL_VERTEX_SHADER, info->templ->target, +- convert->priv->from_texture_target, gl_api, &version, &profile); ++ convert->priv->from_texture_target, gl_api, gl_major, gl_minor, &version, ++ &profile); + + tmp1 = gst_glsl_version_profile_to_string (version, profile); + version_str = g_strdup_printf ("#version %s\n", tmp1); +@@ -1945,9 +1978,37 @@ _create_shader (GstGLColorConvert * convert) + if (info->templ->uniforms) + g_string_append (str, info->templ->uniforms); + +- if (gl_api & GST_GL_API_OPENGL3) { +- g_string_append_c (str, '\n'); +- g_string_append (str, "out vec4 fragColor;\n"); ++ g_string_append_c (str, '\n'); ++ ++ /* GL 3.3+ and GL ES 3.x */ ++ if ((profile == GST_GLSL_PROFILE_CORE && version >= GST_GLSL_VERSION_330) ++ || (profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)) { ++ if (info->out_n_textures > 1) { ++ gint i; ++ ++ for (i = 0; i < info->out_n_textures; i++) { ++ g_string_append_printf (str, ++ "layout(location = %d) out vec4 fragColor_%d;\n", i, i); ++ } ++ } else { ++ g_string_append (str, "layout (location = 0) out vec4 fragColor;\n"); ++ } ++ } else if (profile == GST_GLSL_PROFILE_CORE ++ && version >= GST_GLSL_VERSION_150) { ++ /* no layout specifiers, use glBindFragDataLocation instead */ ++ if (info->out_n_textures > 1) { ++ gint i; ++ ++ for (i = 0; i < info->out_n_textures; i++) { ++ gchar *var_name = g_strdup_printf ("fragColor_%d", i); ++ g_string_append_printf (str, "out vec4 %s;\n", var_name); ++ gst_gl_shader_bind_frag_data_location (ret, i, var_name); ++ g_free (var_name); ++ } ++ } else { ++ g_string_append (str, "out vec4 fragColor;\n"); ++ gst_gl_shader_bind_frag_data_location (ret, 0, "fragColor"); ++ } + } + + for (i = 0; i < MAX_FUNCTIONS; i++) { +@@ -1959,7 +2020,19 @@ _create_shader (GstGLColorConvert * convert) + g_string_append_c (str, '\n'); + } + +- g_string_append (str, "\nvarying vec2 v_texcoord;\nvoid main (void) {\n"); ++ { ++ const gchar *varying = NULL; ++ ++ if ((profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300) ++ || (profile == GST_GLSL_PROFILE_CORE ++ && version >= GST_GLSL_VERSION_150)) { ++ varying = "in"; ++ } else { ++ varying = "varying"; ++ } ++ g_string_append_printf (str, "\n%s vec2 v_texcoord;\nvoid main (void) {\n", ++ varying); ++ } + if (info->frag_body) { + g_string_append (str, "vec2 texcoord;\n"); + if (convert->priv->from_texture_target == GST_GL_TEXTURE_TARGET_RECTANGLE +@@ -1975,7 +2048,7 @@ _create_shader (GstGLColorConvert * convert) + tmp = g_string_free (str, FALSE); + info->frag_prog = _mangle_shader (tmp, GL_FRAGMENT_SHADER, + info->templ->target, convert->priv->from_texture_target, gl_api, +- &version, &profile); ++ gl_major, gl_minor, &version, &profile); + g_free (tmp); + + strings[1] = info->frag_prog; +-- +1.9.1 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch new file mode 100755 index 000000000..b75f402d8 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch @@ -0,0 +1,32 @@ +From b069672ace2b762f400ca6d318571cbedf5141f2 Mon Sep 17 00:00:00 2001 +From: Matthew Waters <matthew@centricular.com> +Date: Thu, 31 Mar 2016 20:00:37 +1100 +Subject: [PATCH 1/3] glcolorconvert: don't use the predefined variable name + sample + +Using 'sample' as a variable name is an error in GLES3 + +Upstream-Status: Backport [1.9.1] +--- + gst-libs/gst/gl/gstglcolorconvert.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c +index f478faa..c23624f 100644 +--- a/gst-libs/gst/gl/gstglcolorconvert.c ++++ b/gst-libs/gst/gl/gstglcolorconvert.c +@@ -261,9 +261,9 @@ static const struct shader_templ templ_RGB_to_PLANAR_YUV = + " for (int j = 0; j < int(chroma_sampling.y); j++) {\n" + " int n = (i+1)*(j+1);\n" + " delta.y = float(j);\n" +- " vec4 sample = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n" ++ " vec4 s = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n" + /* rolling average */ +- " uv_texel = (float(n-1) * uv_texel + sample) / float(n);\n" ++ " uv_texel = (float(n-1) * uv_texel + s) / float(n);\n" + " }\n" + " }\n" + "}\n" +-- +1.9.1 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glshader-add-glBindFragDataLocation.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glshader-add-glBindFragDataLocation.patch new file mode 100755 index 000000000..57e9d1a46 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-glshader-add-glBindFragDataLocation.patch @@ -0,0 +1,77 @@ +From 38221080181229d520522a20bcb1663ca19f7aff Mon Sep 17 00:00:00 2001 +From: Matthew Waters <matthew@centricular.com> +Date: Thu, 31 Mar 2016 19:25:32 +1100 +Subject: [PATCH 2/3] glshader: add glBindFragDataLocation + +There are some cases where it's needed for binding in/out variables in shaders. +e.g. glsl 150 (gl 3.2) doesn't support the 'layout (location = ?)' specifiers in +the shader source so we have to bind them ourselves. + +Upstream-Status: Backport [1.9.1] +--- + gst-libs/gst/gl/glprototypes/shaders.h | 10 ++++++++++ + gst-libs/gst/gl/gstglshader.c | 20 ++++++++++++++++++++ + gst-libs/gst/gl/gstglshader.h | 1 + + 3 files changed, 31 insertions(+) + +diff --git a/gst-libs/gst/gl/glprototypes/shaders.h b/gst-libs/gst/gl/glprototypes/shaders.h +index 817e479..6d828db 100644 +--- a/gst-libs/gst/gl/glprototypes/shaders.h ++++ b/gst-libs/gst/gl/glprototypes/shaders.h +@@ -362,3 +362,13 @@ GST_GL_EXT_FUNCTION (void, UniformMatrix3x4fv, + GST_GL_EXT_FUNCTION (void, UniformMatrix4x3fv, + (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) + GST_GL_EXT_END () ++ ++GST_GL_EXT_BEGIN (bind_frag_data, ++ GST_GL_API_OPENGL | GST_GL_API_OPENGL3, ++ 3, 0, ++ 255, 255, ++ "\0", ++ "\0") ++GST_GL_EXT_FUNCTION (void, BindFragDataLocation, ++ (GLuint program, GLuint index, const GLchar * name)) ++GST_GL_EXT_END () +diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c +index 9d96784..9f09236 100644 +--- a/gst-libs/gst/gl/gstglshader.c ++++ b/gst-libs/gst/gl/gstglshader.c +@@ -1306,3 +1306,23 @@ gst_gl_shader_bind_attribute_location (GstGLShader * shader, GLuint index, + + gl->BindAttribLocation (priv->program_handle, index, name); + } ++ ++void ++gst_gl_shader_bind_frag_data_location (GstGLShader * shader, ++ guint index, const gchar * name) ++{ ++ GstGLShaderPrivate *priv; ++ GstGLFuncs *gl; ++ ++ g_return_if_fail (shader != NULL); ++ if (!_ensure_program (shader)) ++ g_return_if_fail (shader->priv->program_handle); ++ priv = shader->priv; ++ gl = shader->context->gl_vtable; ++ g_return_if_fail (gl->BindFragDataLocation); ++ ++ GST_TRACE_OBJECT (shader, "binding program %i frag data \'%s\' location %i", ++ (int) priv->program_handle, name, index); ++ ++ gl->BindFragDataLocation (priv->program_handle, index, name); ++} +diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h +index 21410e2..2200b89 100644 +--- a/gst-libs/gst/gl/gstglshader.h ++++ b/gst-libs/gst/gl/gstglshader.h +@@ -104,6 +104,7 @@ void gst_gl_shader_set_uniform_matrix_4x3fv (GstGLShader *shader, const gchar *n + + gint gst_gl_shader_get_attribute_location (GstGLShader *shader, const gchar *name); + void gst_gl_shader_bind_attribute_location (GstGLShader * shader, guint index, const gchar * name); ++void gst_gl_shader_bind_frag_data_location (GstGLShader * shader, guint index, const gchar * name); + + G_END_DECLS + +-- +1.9.1 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch new file mode 100755 index 000000000..79ef4c81a --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch @@ -0,0 +1,51 @@ +From 764fd69f8482eca9f925cefe72ebae090ae59d43 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> +Date: Tue, 19 Apr 2016 19:27:33 +0300 +Subject: [PATCH 3/3] glcolorconvert: GLES3 deprecates texture2D() and it does + not work at all in newer versions than 3.3 + +Use the newer texture() function instead. This fixes glimagesink and other +things on various Android devices. + +Upstream-Status: Backport [1.9.1] + +https://bugzilla.gnome.org/show_bug.cgi?id=765266 +--- + gst-libs/gst/gl/gstglcolorconvert.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c +index c23624f..f472d5d 100644 +--- a/gst-libs/gst/gl/gstglcolorconvert.c ++++ b/gst-libs/gst/gl/gstglcolorconvert.c +@@ -1716,7 +1716,7 @@ _unbind_buffer (GstGLColorConvert * convert) + + static gchar * + _mangle_texture_access (const gchar * str, GstGLTextureTarget from, +- GstGLTextureTarget to, GstGLAPI gl_api) ++ GstGLTextureTarget to, GstGLAPI gl_api, guint gl_major, guint gl_minor) + { + const gchar *from_str = NULL, *to_str = NULL; + gchar *ret, *tmp; +@@ -1730,7 +1730,8 @@ _mangle_texture_access (const gchar * str, GstGLTextureTarget from, + if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) + from_str = "texture2D"; + +- if (gl_api & GST_GL_API_OPENGL3) { ++ if ((gl_api & GST_GL_API_OPENGL3) || (gl_api & GST_GL_API_GLES2 ++ && gl_major >= 3)) { + to_str = "texture"; + } else { + if (to == GST_GL_TEXTURE_TARGET_2D) +@@ -1898,7 +1899,7 @@ _mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from, + + _mangle_version_profile_from_gl_api (gl_api, gl_major, gl_minor, version, + profile); +- tmp = _mangle_texture_access (str, from, to, gl_api); ++ tmp = _mangle_texture_access (str, from, to, gl_api, gl_major, gl_minor); + tmp2 = _mangle_sampler_type (tmp, from, to); + g_free (tmp); + tmp = +-- +1.9.1 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0008-gl-implement-GstGLMemoryEGL.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0008-gl-implement-GstGLMemoryEGL.patch new file mode 100644 index 000000000..a67381cfe --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0008-gl-implement-GstGLMemoryEGL.patch @@ -0,0 +1,495 @@ +From 806bbe75b0b6947f589bce3960c28fee51b5c6c2 Mon Sep 17 00:00:00 2001 +From: Gwang Yoon Hwang <yoon@igalia.com> +Date: Thu, 21 Jan 2016 22:18:17 +0900 +Subject: [PATCH] gl: implement GstGLMemoryEGL + +Because current GstEGLImageMemory does not inherit GstGLMemory, GLUpload +allocates additional GLMemory and upload the decoded contents from the decoder +which uses EGLImage (e.g. gst-omx in RPi). + +This work adds GstGLMemoryEGL to avoid this overhead. Decoders allocate +GstGLMemoryEGL and decode its contents to the EGLImage of GstGLMemoryEGL. And +GLUpload uses this memory without allocation of additional textures and blit +operations. + +https://bugzilla.gnome.org/show_bug.cgi?id=760916 +--- +Upstream-Status: Backport +Signed-off-by: Khem Raj <raj.khem@gmail.com> + + gst-libs/gst/gl/egl/Makefile.am | 2 + + gst-libs/gst/gl/egl/gstgldisplay_egl.c | 2 + + gst-libs/gst/gl/egl/gstglmemoryegl.c | 241 +++++++++++++++++++++++++++++++++ + gst-libs/gst/gl/egl/gstglmemoryegl.h | 108 +++++++++++++++ + gst-libs/gst/gl/gstgl_fwd.h | 4 + + gst-libs/gst/gl/gstgldisplay.c | 2 + + gst-libs/gst/gl/gstglupload.c | 8 ++ + 7 files changed, 367 insertions(+) + create mode 100644 gst-libs/gst/gl/egl/gstglmemoryegl.c + create mode 100644 gst-libs/gst/gl/egl/gstglmemoryegl.h + +diff --git a/gst-libs/gst/gl/egl/Makefile.am b/gst-libs/gst/gl/egl/Makefile.am +index b808178..878f16c 100644 +--- a/gst-libs/gst/gl/egl/Makefile.am ++++ b/gst-libs/gst/gl/egl/Makefile.am +@@ -5,6 +5,7 @@ noinst_LTLIBRARIES = libgstgl-egl.la + libgstgl_egl_la_SOURCES = \ + gstgldisplay_egl.c \ + gstglcontext_egl.c \ ++ gstglmemoryegl.c \ + gsteglimagememory.c + + noinst_HEADERS = +@@ -13,6 +14,7 @@ libgstgl_eglincludedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl/egl + libgstgl_eglinclude_HEADERS = \ + gstgldisplay_egl.h \ + gstglcontext_egl.h \ ++ gstglmemoryegl.h \ + gsteglimagememory.h \ + gstegl.h + +diff --git a/gst-libs/gst/gl/egl/gstgldisplay_egl.c b/gst-libs/gst/gl/egl/gstgldisplay_egl.c +index 9acf4f0..20816c2 100644 +--- a/gst-libs/gst/gl/egl/gstgldisplay_egl.c ++++ b/gst-libs/gst/gl/egl/gstgldisplay_egl.c +@@ -24,6 +24,7 @@ + + #include <gst/gl/egl/gstgldisplay_egl.h> + #include <gst/gl/egl/gsteglimagememory.h> ++#include <gst/gl/egl/gstglmemoryegl.h> + + GST_DEBUG_CATEGORY_STATIC (gst_gl_display_debug); + #define GST_CAT_DEFAULT gst_gl_display_debug +@@ -51,6 +52,7 @@ gst_gl_display_egl_init (GstGLDisplayEGL * display_egl) + display_egl->foreign_display = FALSE; + + gst_egl_image_memory_init (); ++ gst_gl_memory_egl_init_once (); + } + + static void +diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.c b/gst-libs/gst/gl/egl/gstglmemoryegl.c +new file mode 100644 +index 0000000..03cf432 +--- /dev/null ++++ b/gst-libs/gst/gl/egl/gstglmemoryegl.c +@@ -0,0 +1,241 @@ ++/* ++ * GStreamer ++ * Copyright (C) 2012 Collabora Ltd. ++ * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk> ++ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com> ++ * Copyright (C) 2015 Igalia ++ * Author: Gwang Yoon Hwang <yoon@igalia.com> ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, ++ * Boston, MA 02110-1301, USA. ++ */ ++ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ ++#include <string.h> ++ ++#include <gst/gl/egl/gstglmemoryegl.h> ++ ++static GstAllocator *_gl_memory_egl_allocator; ++ ++GST_DEBUG_CATEGORY_STATIC (GST_CAT_GL_MEMORY); ++#define GST_CAT_DEFAULT GST_CAT_GL_MEMORY ++ ++#define parent_class gst_gl_memory_egl_allocator_parent_class ++G_DEFINE_TYPE (GstGLMemoryEGLAllocator, gst_gl_memory_egl_allocator, ++ GST_TYPE_GL_MEMORY_ALLOCATOR); ++ ++gboolean ++gst_is_gl_memory_egl (GstMemory * mem) ++{ ++ return mem != NULL && mem->allocator != NULL ++ && g_type_is_a (G_OBJECT_TYPE (mem->allocator), ++ GST_TYPE_GL_MEMORY_EGL_ALLOCATOR); ++} ++ ++static GstGLMemoryEGL * ++_gl_mem_get_parent (GstGLMemoryEGL * gl_mem) ++{ ++ GstGLMemoryEGL *parent = (GstGLMemoryEGL *)gl_mem->mem.mem.mem.parent; ++ return parent ? parent : gl_mem; ++} ++ ++EGLImageKHR ++gst_gl_memory_egl_get_image (GstGLMemoryEGL * mem) ++{ ++ g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)), ++ EGL_NO_IMAGE_KHR); ++ return _gl_mem_get_parent(mem)->image; ++} ++ ++EGLDisplay ++gst_gl_memory_egl_get_display (GstGLMemoryEGL * mem) ++{ ++ g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)), NULL); ++ return GST_GL_CONTEXT_EGL(_gl_mem_get_parent(mem))->egl_display; ++} ++ ++GstVideoGLTextureOrientation ++gst_gl_memory_egl_get_orientation (GstGLMemoryEGL * mem) ++{ ++ g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)), ++ GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL); ++ ++ return _gl_mem_get_parent(mem)->orientation; ++} ++ ++void ++gst_gl_memory_egl_set_orientation (GstGLMemoryEGL * mem, ++ GstVideoGLTextureOrientation orientation) ++{ ++ g_return_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem))); ++ ++ _gl_mem_get_parent(mem)->orientation = orientation; ++} ++ ++static GstMemory * ++_gl_mem_alloc (GstAllocator * allocator, gsize size, ++ GstAllocationParams * params) ++{ ++ g_warning ("Use gst_gl_base_memory_allocator_alloc() to allocate from this " ++ "GstGLMemoryEGL allocator"); ++ ++ return NULL; ++} ++ ++static void ++_gl_mem_destroy (GstGLMemoryEGL * mem) ++{ ++ /* Shared memory should not destroy all the data */ ++ if (!mem->mem.mem.mem.parent) { ++ GstGLContextEGL *context = GST_GL_CONTEXT_EGL(mem->mem.mem.context); ++ context->eglDestroyImage (context->egl_display, mem->image); ++ } ++ ++ GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class)->destroy ((GstGLBaseMemory ++ *) mem); ++} ++ ++static void ++_gl_mem_init (GstGLMemoryEGL * mem, GstAllocator * allocator, ++ GstMemory * parent, GstGLContext * context, GstGLTextureTarget target, ++ GstAllocationParams * params, GstVideoInfo * info, ++ guint plane, GstVideoAlignment * valign, gpointer user_data, ++ GDestroyNotify notify) ++{ ++ gst_gl_memory_init ((GstGLMemory *) mem, allocator, parent, ++ context, target, params, info, plane, valign, user_data, notify); ++} ++ ++static GstGLMemoryEGL * ++_gl_mem_egl_alloc (GstGLBaseMemoryAllocator * allocator, ++ GstGLVideoAllocationParams * params) ++{ ++ guint alloc_flags = params->parent.alloc_flags; ++ GstGLMemoryEGL *mem; ++ ++ g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO, ++ NULL); ++ g_return_val_if_fail ((alloc_flags & ++ GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) == 0, NULL); ++ g_return_val_if_fail ((alloc_flags & ++ GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) == 0, NULL); ++ ++ mem = g_new0 (GstGLMemoryEGL, 1); ++ mem->image = EGL_NO_IMAGE_KHR; ++ ++ _gl_mem_init (mem, GST_ALLOCATOR_CAST (allocator), NULL, ++ params->parent.context, params->target, params->parent.alloc_params, ++ params->v_info, params->plane, params->valign, params->parent.user_data, ++ params->parent.notify); ++ ++ return mem; ++} ++ ++static gboolean ++_gl_mem_create (GstGLMemoryEGL * gl_mem, GError ** error) ++{ ++ GstGLContextEGL *context = GST_GL_CONTEXT_EGL (gl_mem->mem.mem.context); ++ GstGLBaseMemoryAllocatorClass *alloc_class; ++ ++ if (!gst_gl_context_check_feature (GST_GL_CONTEXT (context), ++ "EGL_KHR_image_base")) { ++ g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_API, ++ "EGL_KHR_image_base is not supported"); ++ return FALSE; ++ } ++ ++ alloc_class = GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class); ++ if (!alloc_class->create ((GstGLBaseMemory *) gl_mem, error)) ++ return FALSE; ++ ++ gl_mem->image = context->eglCreateImage (context->egl_display, ++ context->egl_context, EGL_GL_TEXTURE_2D_KHR, ++ (EGLClientBuffer) GSIZE_TO_POINTER (gl_mem->mem.tex_id), NULL); ++ ++ GST_TRACE ("Generating EGLImage handle:%p from a texture:%u", ++ gl_mem->image, gl_mem->mem.tex_id); ++ ++ if (eglGetError () != EGL_SUCCESS) { ++ g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED, ++ "Failed to create EGLImage"); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++static GstMemory * ++_gl_mem_copy (GstGLMemoryEGL * src, gssize offset, gssize size) ++{ ++ GST_CAT_ERROR (GST_CAT_GL_MEMORY, "GstGLMemoryEGL does not support copy"); ++ return NULL; ++} ++ ++static void ++gst_gl_memory_egl_allocator_class_init (GstGLMemoryEGLAllocatorClass * klass) ++{ ++ GstGLBaseMemoryAllocatorClass *gl_base; ++ GstGLMemoryAllocatorClass *gl_tex; ++ GstAllocatorClass *allocator_class; ++ ++ gl_tex = (GstGLMemoryAllocatorClass *) klass; ++ gl_base = (GstGLBaseMemoryAllocatorClass *) klass; ++ allocator_class = (GstAllocatorClass *) klass; ++ ++ gl_base->alloc = (GstGLBaseMemoryAllocatorAllocFunction) _gl_mem_egl_alloc; ++ gl_base->create = (GstGLBaseMemoryAllocatorCreateFunction) _gl_mem_create; ++ gl_base->destroy = (GstGLBaseMemoryAllocatorDestroyFunction) _gl_mem_destroy; ++ gl_tex->copy = (GstGLBaseMemoryAllocatorCopyFunction) _gl_mem_copy; ++ ++ allocator_class->alloc = _gl_mem_alloc; ++} ++ ++static void ++gst_gl_memory_egl_allocator_init (GstGLMemoryEGLAllocator * allocator) ++{ ++ GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator); ++ ++ alloc->mem_type = GST_GL_MEMORY_EGL_ALLOCATOR_NAME; ++ ++ GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC); ++} ++ ++/** ++ * gst_gl_memory_egl_init_once: ++ * ++ * Initializes the GL Memory allocator. It is safe to call this function ++ * multiple times. This must be called before any other GstGLMemoryEGL operation. ++ */ ++void ++gst_gl_memory_egl_init_once (void) ++{ ++ static volatile gsize _init = 0; ++ ++ if (g_once_init_enter (&_init)) { ++ gst_gl_memory_init_once (); ++ ++ GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_MEMORY, "glmemory", 0, ++ "OpenGL Texture with EGLImage memory"); ++ ++ _gl_memory_egl_allocator = g_object_new (GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, NULL); ++ ++ gst_allocator_register (GST_GL_MEMORY_EGL_ALLOCATOR_NAME, ++ gst_object_ref (_gl_memory_egl_allocator)); ++ g_once_init_leave (&_init, 1); ++ } ++} +diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.h b/gst-libs/gst/gl/egl/gstglmemoryegl.h +new file mode 100644 +index 0000000..7256d33 +--- /dev/null ++++ b/gst-libs/gst/gl/egl/gstglmemoryegl.h +@@ -0,0 +1,108 @@ ++/* ++ * GStreamer ++ * Copyright (C) 2012 Collabora Ltd. ++ * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk> ++ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com> ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public ++ * License as published by the Free Software Foundation; either ++ * version 2 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with this library; if not, write to the ++ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, ++ * Boston, MA 02110-1301, USA. ++ */ ++ ++#ifndef _GST_GL_MEMORY_EGL_H_ ++#define _GST_GL_MEMORY_EGL_H_ ++ ++#include <gst/gst.h> ++#include <gst/gstallocator.h> ++#include <gst/gstmemory.h> ++#include <gst/video/video.h> ++ ++#include <gst/gl/gl.h> ++#include "gstglcontext_egl.h" ++ ++#include <gst/gl/gstglmemory.h> ++ ++G_BEGIN_DECLS ++ ++#define GST_TYPE_GL_MEMORY_EGL_ALLOCATOR (gst_gl_memory_egl_allocator_get_type()) ++GType gst_gl_memory_egl_allocator_get_type(void); ++ ++#define GST_IS_GL_MEMORY_EGL_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR)) ++#define GST_IS_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR)) ++#define GST_GL_MEMORY_EGL_ALLOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocatorClass)) ++#define GST_GL_MEMORY_EGL_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocator)) ++#define GST_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLAllocatorClass)) ++#define GST_GL_MEMORY_EGL_ALLOCATOR_CAST(obj) ((GstGLMemoryEGLAllocator *)(obj)) ++ ++typedef void (*GstEGLImageDestroyNotify) (GstGLContextEGL * context, ++ gpointer data); ++ ++typedef struct _GstEGLImageMemory GstEGLImageMemory; ++ ++ ++/** ++ * GstGLMemoryEGL: ++ * ++ * Private instance ++ */ ++struct _GstGLMemoryEGL ++{ ++ GstGLMemory mem; ++ ++ EGLImageKHR image; ++ GstVideoGLTextureOrientation orientation; ++}; ++ ++/** ++ * GST_GL_MEMORY_EGL_ALLOCATOR: ++ * ++ * The name of the GL Memory EGL allocator ++ */ ++#define GST_GL_MEMORY_EGL_ALLOCATOR_NAME "GLMemoryEGL" ++ ++void gst_gl_memory_egl_init_once (void); ++gboolean gst_is_gl_memory_egl (GstMemory * mem); ++ ++EGLImageKHR gst_gl_memory_egl_get_image (GstGLMemoryEGL * mem); ++EGLDisplay gst_gl_memory_egl_get_display (GstGLMemoryEGL * mem); ++ ++GstVideoGLTextureOrientation gst_gl_memory_egl_get_orientation ++ (GstGLMemoryEGL * mem); ++ ++void gst_gl_memory_egl_set_orientation (GstGLMemoryEGL * mem, ++ GstVideoGLTextureOrientation orientation); ++ ++/** ++ * GstGLAllocator ++ * ++ * Opaque #GstGLAllocator struct ++ */ ++struct _GstGLMemoryEGLAllocator ++{ ++ GstGLMemoryAllocator parent; ++}; ++ ++/** ++ * GstGLAllocatorClass: ++ * ++ * The #GstGLAllocatorClass only contains private data ++ */ ++struct _GstGLMemoryEGLAllocatorClass ++{ ++ GstGLMemoryAllocatorClass parent_class; ++}; ++ ++G_END_DECLS ++ ++#endif /* _GST_GL_MEMORY_EGL_H_ */ +diff --git a/gst-libs/gst/gl/gstgl_fwd.h b/gst-libs/gst/gl/gstgl_fwd.h +index fb64ff6..73e17bd 100644 +--- a/gst-libs/gst/gl/gstgl_fwd.h ++++ b/gst-libs/gst/gl/gstgl_fwd.h +@@ -55,6 +55,10 @@ typedef struct _GstGLMemoryPBO GstGLMemoryPBO; + typedef struct _GstGLMemoryPBOAllocator GstGLMemoryPBOAllocator; + typedef struct _GstGLMemoryPBOAllocatorClass GstGLMemoryPBOAllocatorClass; + ++typedef struct _GstGLMemoryEGL GstGLMemoryEGL; ++typedef struct _GstGLMemoryEGLAllocator GstGLMemoryEGLAllocator; ++typedef struct _GstGLMemoryEGLAllocatorClass GstGLMemoryEGLAllocatorClass; ++ + typedef struct _GstGLSLStage GstGLSLStage; + typedef struct _GstGLSLStagePrivate GstGLSLStagePrivate; + typedef struct _GstGLSLStageClass GstGLSLStageClass; +diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c +index 60dec6a..34770d0 100644 +--- a/gst-libs/gst/gl/gstgldisplay.c ++++ b/gst-libs/gst/gl/gstgldisplay.c +@@ -68,6 +68,7 @@ + #if GST_GL_HAVE_PLATFORM_EGL + #include <gst/gl/egl/gstgldisplay_egl.h> + #include <gst/gl/egl/gsteglimagememory.h> ++#include <gst/gl/egl/gstglmemoryegl.h> + #endif + + GST_DEBUG_CATEGORY_STATIC (gst_context); +@@ -144,6 +145,7 @@ gst_gl_display_init (GstGLDisplay * display) + + #if GST_GL_HAVE_PLATFORM_EGL + gst_egl_image_memory_init (); ++ gst_gl_memory_egl_init_once (); + #endif + } + +diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c +index 16ed5ea..73a9029 100644 +--- a/gst-libs/gst/gl/gstglupload.c ++++ b/gst-libs/gst/gl/gstglupload.c +@@ -29,6 +29,7 @@ + + #if GST_GL_HAVE_PLATFORM_EGL + #include "egl/gsteglimagememory.h" ++#include "egl/gstglmemoryegl.h" + #endif + + #if GST_GL_HAVE_DMABUF +@@ -301,6 +302,13 @@ _gl_memory_upload_propose_allocation (gpointer impl, GstQuery * decide_query, + context)); + gst_query_add_allocation_param (query, allocator, ¶ms); + gst_object_unref (allocator); ++ ++#if GST_GL_HAVE_PLATFORM_EGL ++ allocator = ++ GST_ALLOCATOR (gst_allocator_find (GST_GL_MEMORY_EGL_ALLOCATOR_NAME)); ++ gst_query_add_allocation_param (query, allocator, ¶ms); ++ gst_object_unref (allocator); ++#endif + } + + n_pools = gst_query_get_n_allocation_pools (query); +-- +2.5.0 + diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch index 1085e95e8..c81fb0f6a 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0009-glimagesink-Downrank-to-marginal.patch @@ -18,7 +18,7 @@ diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c index a4b2540..0ccaacd 100644 --- a/ext/gl/gstopengl.c +++ b/ext/gl/gstopengl.c -@@ -101,7 +101,7 @@ plugin_init (GstPlugin * plugin) +@@ -118,7 +118,7 @@ plugin_init (GstPlugin * plugin) #endif if (!gst_element_register (plugin, "glimagesink", diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bb deleted file mode 100644 index 8eb47c265..000000000 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.6.3.bb +++ /dev/null @@ -1,28 +0,0 @@ -include gstreamer1.0-plugins-bad.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ - file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 \ - file://gst/tta/crc32.h;beginline=12;endline=29;md5=27db269c575d1e5317fffca2d33b3b50 \ - file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a" - -# Note: The mpg123 plugin was moved to gst-plugins-ugly prior to the 1.7.2 -# release, so this line should be removed during the update to 1.8.x -# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=08d8aefcdaaf89ecb6dd53ec1e4f95cd42d01664 -PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123" - -# Note: The gsettings plug-in was dropped prior to the 1.7.2 release, -# so this line should be removed during the update to 1.8.x -# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=914291808ad10621d6a74031f3d46d45eef5a3a3 -EXTRA_OECONF += "--disable-gsettings" - -SRC_URI = " \ - http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \ - file://configure-allow-to-disable-libssh2.patch \ - file://0001-glimagesink-Downrank-to-marginal.patch \ - file://0002-glplugin-glwindow-fix-memory-leak-of-navigation-thre.patch \ -" - -SRC_URI[md5sum] = "4857adcafe41e4b9b8805cf88303bd55" -SRC_URI[sha256sum] = "971b29101d6a9c5e3fe94d99d977a227f58f0b2d29b6ca2c7f292052542b3a61" - -S = "${WORKDIR}/gst-plugins-bad-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bb new file mode 100644 index 000000000..108f4db10 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.8.3.bb @@ -0,0 +1,26 @@ +include gstreamer1.0-plugins-bad.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ + file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 \ + file://gst/tta/crc32.h;beginline=12;endline=29;md5=27db269c575d1e5317fffca2d33b3b50 \ + file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a" + +SRC_URI = " \ + http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \ + file://configure-allow-to-disable-libssh2.patch \ + file://fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch \ + file://avoid-including-sys-poll.h-directly.patch \ + file://ensure-valid-sentinels-for-gst_structure_get-etc.patch \ + file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \ + file://0002-glplugin-enable-gldeinterlace-on-OpenGL-ES.patch \ + file://0003-glcolorconvert-implement-multiple-render-targets-for.patch \ + file://0004-glcolorconvert-don-t-use-the-predefined-variable-nam.patch \ + file://0005-glshader-add-glBindFragDataLocation.patch \ + file://0006-glcolorconvert-GLES3-deprecates-texture2D-and-it-doe.patch \ + file://0008-gl-implement-GstGLMemoryEGL.patch \ + file://0009-glimagesink-Downrank-to-marginal.patch \ +" +SRC_URI[md5sum] = "955281a43e98c5464563fa049e0a0911" +SRC_URI[sha256sum] = "7899fcb18e6a1af2888b19c90213af018a57d741c6e72ec56b133bc73ec8509b" + +S = "${WORKDIR}/gst-plugins-bad-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb index ef6581b2a..1370380b9 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb @@ -8,7 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a" SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gst-plugins-bad;name=base \ + git://anongit.freedesktop.org/gstreamer/gst-plugins-bad;branch=1.8;name=base \ git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \ file://configure-allow-to-disable-libssh2.patch \ file://fix-maybe-uninitialized-warnings-when-compiling-with-Os.patch \ @@ -17,36 +17,16 @@ SRC_URI = " \ file://0001-gstreamer-gl.pc.in-don-t-append-GL_CFLAGS-to-CFLAGS.patch \ " -PV = "1.7.2+git${SRCPV}" +PV = "1.8.2+git${SRCPV}" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" -SRCREV_base = "50ae46cc0f8827bf966920d9c221e5cf86e811ba" -SRCREV_common = "a25397448942079002622be231e9ec49b985745a" +SRCREV_base = "5e73b5a4843d9675246f4efec158624475ed9586" +SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275" SRCREV_FORMAT = "base" S = "${WORKDIR}/git" -# over-ride the default hls PACKAGECONFIG in gstreamer1.0-plugins-bad.inc to -# pass an additional --with-hls-crypto=XXX option (new in 1.7.x) and switch HLS -# AES decryption from nettle to openssl (ie a shared dependency with dtls). -# This should move back to the common .inc once the main recipe updates to 1.8.x -PACKAGECONFIG[hls] = "--enable-hls --with-hls-crypto=openssl,--disable-hls,openssl" - -# The tinyalsa plugin was added prior to the 1.7.2 release -# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=c8bd74fa9a81398f57d976c478d2043f30188684 -PACKAGECONFIG[tinyalsa] = "--enable-tinyalsa,--disable-tinyalsa,tinyalsa" - -# The vulkan based video sink plugin was added prior to the 1.7.2 release -# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=5de6dd9f40629562acf90e35e1fa58464d66617d -PACKAGECONFIG[vulkan] = "--enable-vulkan,--disable-vulkan,libxcb" - -# The dependency-less netsim plugin was added prior to the 1.7.2 release -# https://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=e3f9e854f08e82bfab11182c5a2aa6f9a0c73cd5 -EXTRA_OECONF += " \ - --enable-netsim \ -" - do_configure_prepend() { ${S}/autogen.sh --noconfigure } diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc index 7381458f4..a04f155dc 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc @@ -31,6 +31,7 @@ PACKAGECONFIG[cdparanoia] = "--enable-cdparanoia,--disable-cdparanoia,cdparano PACKAGECONFIG[gio-unix-2.0] = "--enable-gio_unix_2_0,--disable-gio_unix_2_0,glib-2.0" PACKAGECONFIG[ivorbis] = "--enable-ivorbis,--disable-ivorbis,tremor" PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg" +PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus" PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango" PACKAGECONFIG[theora] = "--enable-theora,--disable-theora,libtheora" PACKAGECONFIG[visual] = "--enable-libvisual,--disable-libvisual,libvisual" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch index 781e4d801..094bdac84 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-Makefile.am-don-t-hardcode-libtool-name-when-running.patch @@ -24,7 +24,7 @@ diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makef index 9361bf9..bc7f53a 100644 --- a/gst-libs/gst/allocators/Makefile.am +++ b/gst-libs/gst/allocators/Makefile.am -@@ -37,7 +37,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ +@@ -38,7 +38,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ --library=libgstallocators-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ @@ -37,7 +37,7 @@ diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am index 6d6de8d..dcc2fe0 100644 --- a/gst-libs/gst/app/Makefile.am +++ b/gst-libs/gst/app/Makefile.am -@@ -52,7 +52,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO +@@ -53,7 +53,7 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO --library=libgstapp-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ @@ -50,7 +50,7 @@ diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am index 275d222..2374196 100644 --- a/gst-libs/gst/audio/Makefile.am +++ b/gst-libs/gst/audio/Makefile.am -@@ -106,7 +106,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE +@@ -116,7 +116,7 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ --include=GstTag-@GST_API_VERSION@ \ @@ -63,7 +63,7 @@ diff --git a/gst-libs/gst/fft/Makefile.am b/gst-libs/gst/fft/Makefile.am index 09b3d68..f545354 100644 --- a/gst-libs/gst/fft/Makefile.am +++ b/gst-libs/gst/fft/Makefile.am -@@ -64,7 +64,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO +@@ -65,7 +65,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ --library=libgstfft-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ @@ -76,7 +76,7 @@ diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am index 64d5eb0..91dc214 100644 --- a/gst-libs/gst/pbutils/Makefile.am +++ b/gst-libs/gst/pbutils/Makefile.am -@@ -94,7 +94,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP +@@ -99,7 +99,7 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP --include=GstTag-@GST_API_VERSION@ \ --include=GstVideo-@GST_API_VERSION@ \ --include=GstAudio-@GST_API_VERSION@ \ @@ -102,7 +102,7 @@ diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am index fdd01c1..f5445c1 100644 --- a/gst-libs/gst/rtp/Makefile.am +++ b/gst-libs/gst/rtp/Makefile.am -@@ -64,7 +64,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO +@@ -65,7 +65,7 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO --library=libgstrtp-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ @@ -115,7 +115,7 @@ diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am index ede5706..9b0b258 100644 --- a/gst-libs/gst/rtsp/Makefile.am +++ b/gst-libs/gst/rtsp/Makefile.am -@@ -71,7 +71,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS +@@ -72,7 +72,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS --include=Gio-2.0 \ --include=Gst-@GST_API_VERSION@ \ --include=GstSdp-@GST_API_VERSION@ \ @@ -128,7 +128,7 @@ diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am index a90f30b..0e149b8 100644 --- a/gst-libs/gst/sdp/Makefile.am +++ b/gst-libs/gst/sdp/Makefile.am -@@ -31,7 +31,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO +@@ -32,7 +32,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \ --library=libgstsdp-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ @@ -141,7 +141,7 @@ diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am index c534a4d..cafafd3 100644 --- a/gst-libs/gst/tag/Makefile.am +++ b/gst-libs/gst/tag/Makefile.am -@@ -44,7 +44,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO +@@ -45,7 +45,7 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO --library=libgsttag-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ @@ -154,7 +154,7 @@ diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am index 5d31fa1..ac64eb3 100644 --- a/gst-libs/gst/video/Makefile.am +++ b/gst-libs/gst/video/Makefile.am -@@ -113,7 +113,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE +@@ -116,7 +116,7 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE --library=libgstvideo-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch index 85fcacb55..0a8bc9b07 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-Makefile.am-prefix-calls-to-pkg-config-with-PKG_CONF.patch @@ -24,7 +24,7 @@ diff --git a/gst-libs/gst/allocators/Makefile.am b/gst-libs/gst/allocators/Makef index bc7f53a..0ef5f86 100644 --- a/gst-libs/gst/allocators/Makefile.am +++ b/gst-libs/gst/allocators/Makefile.am -@@ -34,7 +34,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ +@@ -35,7 +35,7 @@ GstAllocators-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstallocators-@ --c-include "gst/allocators/allocators.h" \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ @@ -33,7 +33,7 @@ index bc7f53a..0ef5f86 100644 --library=libgstallocators-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --libtool="$(LIBTOOL)" \ -@@ -58,7 +58,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -59,7 +59,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ @@ -46,7 +46,7 @@ diff --git a/gst-libs/gst/app/Makefile.am b/gst-libs/gst/app/Makefile.am index dcc2fe0..dc076cb 100644 --- a/gst-libs/gst/app/Makefile.am +++ b/gst-libs/gst/app/Makefile.am -@@ -47,8 +47,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO +@@ -48,8 +48,8 @@ GstApp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstapp-@GST_API_VERSIO --c-include "gst/app/app.h" \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ @@ -61,7 +61,7 @@ diff --git a/gst-libs/gst/audio/Makefile.am b/gst-libs/gst/audio/Makefile.am index 2374196..295eb42 100644 --- a/gst-libs/gst/audio/Makefile.am +++ b/gst-libs/gst/audio/Makefile.am -@@ -96,12 +96,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE +@@ -106,12 +106,12 @@ GstAudio-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstaudio-@GST_API_VE -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ --c-include "gst/audio/audio.h" \ @@ -78,7 +78,7 @@ index 2374196..295eb42 100644 --library-path="$(top_builddir)/gst-libs/gst/tag/" \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ -@@ -130,8 +130,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -140,8 +140,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) --includedir=$(srcdir) \ --includedir=$(builddir) \ --includedir="$(top_builddir)/gst-libs/gst/tag/" \ @@ -93,7 +93,7 @@ diff --git a/gst-libs/gst/fft/Makefile.am b/gst-libs/gst/fft/Makefile.am index f545354..1bb6243 100644 --- a/gst-libs/gst/fft/Makefile.am +++ b/gst-libs/gst/fft/Makefile.am -@@ -61,7 +61,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO +@@ -62,7 +62,7 @@ GstFft-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstfft-@GST_API_VERSIO --c-include "gst/fft/fft.h" \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ @@ -102,7 +102,7 @@ index f545354..1bb6243 100644 --library=libgstfft-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --libtool="$(LIBTOOL)" \ -@@ -85,7 +85,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -86,7 +86,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ @@ -115,7 +115,7 @@ diff --git a/gst-libs/gst/pbutils/Makefile.am b/gst-libs/gst/pbutils/Makefile.am index 91dc214..dc8e1d3 100644 --- a/gst-libs/gst/pbutils/Makefile.am +++ b/gst-libs/gst/pbutils/Makefile.am -@@ -79,14 +79,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP +@@ -84,14 +84,14 @@ GstPbutils-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstpbutils-@GST_AP --c-include "gst/pbutils/pbutils.h" \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ @@ -134,7 +134,7 @@ index 91dc214..dc8e1d3 100644 --library-path="$(top_builddir)/gst-libs/gst/tag/" \ --library-path="$(top_builddir)/gst-libs/gst/video/" \ --library-path="$(top_builddir)/gst-libs/gst/audio/" \ -@@ -119,8 +119,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -124,8 +124,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ @@ -175,7 +175,7 @@ diff --git a/gst-libs/gst/rtp/Makefile.am b/gst-libs/gst/rtp/Makefile.am index f5445c1..527c0b4 100644 --- a/gst-libs/gst/rtp/Makefile.am +++ b/gst-libs/gst/rtp/Makefile.am -@@ -59,8 +59,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO +@@ -60,8 +60,8 @@ GstRtp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtp-@GST_API_VERSIO --c-include "gst/rtp/rtp.h" \ -I$(top_builddir)/gst-libs \ -I$(top_srcdir)/gst-libs \ @@ -186,7 +186,7 @@ index f5445c1..527c0b4 100644 --library=libgstrtp-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ -@@ -87,8 +87,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -88,8 +88,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ @@ -201,7 +201,7 @@ diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am index 9b0b258..4f6d9f8 100644 --- a/gst-libs/gst/rtsp/Makefile.am +++ b/gst-libs/gst/rtsp/Makefile.am -@@ -66,7 +66,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS +@@ -67,7 +67,7 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS -I$(top_builddir)/gst-libs \ -I$(top_srcdir)/gst-libs \ --add-include-path=$(builddir)/../sdp \ @@ -210,7 +210,7 @@ index 9b0b258..4f6d9f8 100644 --library=libgstrtsp-@GST_API_VERSION@.la \ --include=Gio-2.0 \ --include=Gst-@GST_API_VERSION@ \ -@@ -96,7 +96,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -97,7 +97,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) --includedir=$(srcdir) \ --includedir=$(builddir) \ --includedir=$(builddir)/../sdp \ @@ -223,7 +223,7 @@ diff --git a/gst-libs/gst/sdp/Makefile.am b/gst-libs/gst/sdp/Makefile.am index 0e149b8..9aa0512 100644 --- a/gst-libs/gst/sdp/Makefile.am +++ b/gst-libs/gst/sdp/Makefile.am -@@ -28,7 +28,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO +@@ -29,7 +29,7 @@ GstSdp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstsdp-@GST_API_VERSIO --warn-all \ --c-include "gst/sdp/sdp.h" \ -I$(top_srcdir)/gst-libs \ @@ -232,7 +232,7 @@ index 0e149b8..9aa0512 100644 --library=libgstsdp-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --libtool="$(LIBTOOL)" \ -@@ -52,7 +52,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -53,7 +53,7 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ @@ -245,7 +245,7 @@ diff --git a/gst-libs/gst/tag/Makefile.am b/gst-libs/gst/tag/Makefile.am index cafafd3..ba99279 100644 --- a/gst-libs/gst/tag/Makefile.am +++ b/gst-libs/gst/tag/Makefile.am -@@ -39,8 +39,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO +@@ -40,8 +40,8 @@ GstTag-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgsttag-@GST_API_VERSIO --c-include "gst/tag/tag.h" \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ @@ -256,7 +256,7 @@ index cafafd3..ba99279 100644 --library=libgsttag-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ -@@ -67,8 +67,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -68,8 +68,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ @@ -271,7 +271,7 @@ diff --git a/gst-libs/gst/video/Makefile.am b/gst-libs/gst/video/Makefile.am index ac64eb3..342c8c6 100644 --- a/gst-libs/gst/video/Makefile.am +++ b/gst-libs/gst/video/Makefile.am -@@ -108,8 +108,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE +@@ -111,8 +111,8 @@ GstVideo-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstvideo-@GST_API_VE --c-include "gst/video/video.h" \ -I$(top_srcdir)/gst-libs \ -I$(top_builddir)/gst-libs \ @@ -282,7 +282,7 @@ index ac64eb3..342c8c6 100644 --library=libgstvideo-@GST_API_VERSION@.la \ --include=Gst-@GST_API_VERSION@ \ --include=GstBase-@GST_API_VERSION@ \ -@@ -136,8 +136,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) +@@ -139,8 +139,8 @@ typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib) $(INTROSPECTION_COMPILER) \ --includedir=$(srcdir) \ --includedir=$(builddir) \ diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch index 42d99c1db..4adf60546 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-rtsp-drop-incorrect-reference-to-gstreamer-sdp-in-Ma.patch @@ -14,7 +14,7 @@ diff --git a/gst-libs/gst/rtsp/Makefile.am b/gst-libs/gst/rtsp/Makefile.am index 4f6d9f8..0afa370 100644 --- a/gst-libs/gst/rtsp/Makefile.am +++ b/gst-libs/gst/rtsp/Makefile.am -@@ -74,7 +74,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS +@@ -75,7 +75,6 @@ GstRtsp-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstrtsp-@GST_API_VERS --libtool="$(LIBTOOL)" \ --pkg gio-2.0 \ --pkg gstreamer-@GST_API_VERSION@ \ diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch index 7813915d8..b924e3882 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch @@ -51,7 +51,7 @@ index b565e93..7741ccc GST_WARNING_OBJECT (self, "seek to 0 bytes failed"); } -@@ -1632,8 +1630,10 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) +@@ -1641,8 +1639,10 @@ gst_sub_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) gst_event_parse_segment (event, &s); if (s->format == GST_FORMAT_TIME) gst_event_copy_segment (event, &self->segment); diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch deleted file mode 100755 index 096a6f4cb..000000000 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0005-convertframe-Support-video-crop-when-convert-frame.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 5be6ed00aad028d9cbb4e0c63af0be69d335c71e Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Fri, 11 Dec 2015 21:42:00 +0800 -Subject: [PATCH] convertframe: Support video crop when convert frame - -Get thumbnail will user convertframe to convert video frame to -desired video format and size. But haven't process crop meta on -the video buffer. Add support video crop. - -https://bugzilla.gnome.org/show_bug.cgi?id=759329 - -Upstream-Status: Backport [1.7.1] - ---- - gst-libs/gst/video/convertframe.c | 65 +++++++++++++++++++++++++++++++++------ - 1 file changed, 56 insertions(+), 9 deletions(-) - -diff --git a/gst-libs/gst/video/convertframe.c b/gst-libs/gst/video/convertframe.c -index aa9c3d3..942a51e 100644 ---- a/gst-libs/gst/video/convertframe.c -+++ b/gst-libs/gst/video/convertframe.c -@@ -110,12 +110,23 @@ fail: - static GstElement * - build_convert_frame_pipeline (GstElement ** src_element, - GstElement ** sink_element, const GstCaps * from_caps, -- const GstCaps * to_caps, GError ** err) -+ GstVideoCropMeta * cmeta, const GstCaps * to_caps, GError ** err) - { -- GstElement *src = NULL, *csp = NULL, *vscale = NULL; -- GstElement *sink = NULL, *encoder = NULL, *pipeline; -+ GstElement *vcrop = NULL, *csp = NULL, *csp2 = NULL, *vscale = NULL; -+ GstElement *src = NULL, *sink = NULL, *encoder = NULL, *pipeline; -+ GstVideoInfo info; - GError *error = NULL; - -+ if (cmeta) { -+ if (!create_element ("videocrop", &vcrop, &error)) { -+ g_warning -+ ("build_convert_frame_pipeline: Buffer has crop metadata but videocrop element is not found. Cropping will be disabled"); -+ } else { -+ if (!create_element ("videoconvert", &csp2, &error)) -+ goto no_elements; -+ } -+ } -+ - /* videoscale is here to correct for the pixel-aspect-ratio for us */ - GST_DEBUG ("creating elements"); - if (!create_element ("appsrc", &src, &error) || -@@ -133,15 +144,42 @@ build_convert_frame_pipeline (GstElement ** src_element, - - GST_DEBUG ("adding elements"); - gst_bin_add_many (GST_BIN (pipeline), src, csp, vscale, sink, NULL); -+ if (vcrop) -+ gst_bin_add_many (GST_BIN (pipeline), vcrop, csp2, NULL); - - /* set caps */ - g_object_set (src, "caps", from_caps, NULL); -+ if (vcrop) { -+ gst_video_info_from_caps (&info, from_caps); -+ g_object_set (vcrop, "left", cmeta->x, NULL); -+ g_object_set (vcrop, "top", cmeta->y, NULL); -+ g_object_set (vcrop, "right", GST_VIDEO_INFO_WIDTH (&info) - cmeta->width, -+ NULL); -+ g_object_set (vcrop, "bottom", -+ GST_VIDEO_INFO_HEIGHT (&info) - cmeta->height, NULL); -+ GST_DEBUG ("crop meta [x,y,width,height]: %d %d %d %d", cmeta->x, cmeta->y, -+ cmeta->width, cmeta->height); -+ } - g_object_set (sink, "caps", to_caps, NULL); - - /* FIXME: linking is still way too expensive, profile this properly */ -- GST_DEBUG ("linking src->csp"); -- if (!gst_element_link_pads (src, "src", csp, "sink")) -- goto link_failed; -+ if (vcrop) { -+ GST_DEBUG ("linking src->csp2"); -+ if (!gst_element_link_pads (src, "src", csp2, "sink")) -+ goto link_failed; -+ -+ GST_DEBUG ("linking csp2->vcrop"); -+ if (!gst_element_link_pads (csp2, "src", vcrop, "sink")) -+ goto link_failed; -+ -+ GST_DEBUG ("linking vcrop->csp"); -+ if (!gst_element_link_pads (vcrop, "src", csp, "sink")) -+ goto link_failed; -+ } else { -+ GST_DEBUG ("linking src->csp"); -+ if (!gst_element_link_pads (src, "src", csp, "sink")) -+ goto link_failed; -+ } - - GST_DEBUG ("linking csp->vscale"); - if (!gst_element_link_pads_full (csp, "src", vscale, "sink", -@@ -193,8 +231,12 @@ no_elements: - { - if (src) - gst_object_unref (src); -+ if (vcrop) -+ gst_object_unref (vcrop); - if (csp) - gst_object_unref (csp); -+ if (csp2) -+ gst_object_unref (csp2); - if (vscale) - gst_object_unref (vscale); - if (sink) -@@ -209,7 +251,11 @@ no_elements: - no_pipeline: - { - gst_object_unref (src); -+ if (vcrop) -+ gst_object_unref (vcrop); - gst_object_unref (csp); -+ if (csp2) -+ gst_object_unref (csp2); - gst_object_unref (vscale); - gst_object_unref (sink); - -@@ -282,7 +328,8 @@ gst_video_convert_sample (GstSample * sample, const GstCaps * to_caps, - } - - pipeline = -- build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy, &err); -+ build_convert_frame_pipeline (&src, &sink, from_caps, -+ gst_buffer_get_video_crop_meta (buf), to_caps_copy, &err); - if (!pipeline) - goto no_pipeline; - -@@ -646,8 +693,8 @@ gst_video_convert_sample_async (GstSample * sample, - } - - pipeline = -- build_convert_frame_pipeline (&src, &sink, from_caps, to_caps_copy, -- &error); -+ build_convert_frame_pipeline (&src, &sink, from_caps, -+ gst_buffer_get_video_crop_meta (buf), to_caps_copy, &error); - if (!pipeline) - goto no_pipeline; - --- -2.5.0 - diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch index 325671721..5341e3cfc 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch @@ -17,7 +17,7 @@ diff --git a/gst/encoding/gstencodebin.c b/gst/encoding/gstencodebin.c index 6728e58..32daae4 100644 --- a/gst/encoding/gstencodebin.c +++ b/gst/encoding/gstencodebin.c -@@ -1138,8 +1138,7 @@ _create_stream_group (GstEncodeBin * ebin, GstEncodingProfile * sprof, +@@ -1228,8 +1228,7 @@ _create_stream_group (GstEncodeBin * ebin, GstEncodingProfile * sprof, * We only use a 1buffer long queue here, the actual queueing will be done * in the input queue */ last = sgroup->outqueue = gst_element_factory_make ("queue", NULL); diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch index 284abbe94..c8e6287a5 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch @@ -19,7 +19,7 @@ new mode 100755 index 9b6c478..ae2294a --- a/gst-libs/gst/tag/gsttagdemux.c +++ b/gst-libs/gst/tag/gsttagdemux.c -@@ -1708,6 +1708,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) +@@ -1769,6 +1769,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) } break; } diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch index 01e944ddd..413eff069 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/make-gio_unix_2_0-dependency-configurable.patch @@ -25,8 +25,8 @@ diff --git a/configure.ac b/configure.ac index 9c52aeb..26cacd6 100644 --- a/configure.ac +++ b/configure.ac -@@ -747,9 +747,16 @@ AC_SUBST(FT2_CFLAGS) - AC_SUBST(FT2_LIBS) +@@ -752,9 +752,16 @@ AC_SUBST(FT2_CFLAGS) + fi dnl of EXT plugins dnl *** gio-unix-2.0 for tests/check/pipelines/tcp.c *** +AC_ARG_ENABLE([gio_unix_2_0], diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.3.bb index 429dc9338..986b5ac60 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.6.3.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.8.3.bb @@ -4,22 +4,16 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607" -# Note: The dependency on freetype was dropped shortly after the 1.7.1 release -# so these lines should be removed during the update to 1.8.x -# http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=183610c035dd6955c9b3540b940aec50474af031 -DEPENDS += "freetype" -EXTRA_OECONF += "--disable-freetypetest" - SRC_URI = " \ http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \ file://get-caps-from-src-pad-when-query-caps.patch \ file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \ file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \ file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \ - file://0005-convertframe-Support-video-crop-when-convert-frame.patch \ + file://make-gio_unix_2_0-dependency-configurable.patch \ " -SRC_URI[md5sum] = "3ddde0ad598ef69f58d6a2e87f8b460f" -SRC_URI[sha256sum] = "b6154f8fdba4877e95efd94610ef0ada4f0171cd12eb829a3c3c97345d9c7a75" +SRC_URI[md5sum] = "4d03dd81828ea6b98a44c8f1ab7f4976" +SRC_URI[sha256sum] = "114871d4d63606b4af424a8433cd923e4ff66896b244bb7ac97b9da47f71e79e" S = "${WORKDIR}/gst-plugins-base-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb index 38a9fcc29..3c2b50400 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb @@ -7,17 +7,21 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607" SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gst-plugins-base;name=base \ + git://anongit.freedesktop.org/gstreamer/gst-plugins-base;branch=1.8;name=base \ git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \ + file://get-caps-from-src-pad-when-query-caps.patch \ + file://0003-ssaparse-enhance-SSA-text-lines-parsing.patch \ + file://0004-subparse-set-need_segment-after-sink-pad-received-GS.patch \ + file://encodebin-Need-more-buffers-in-output-queue-for-bett.patch \ file://make-gio_unix_2_0-dependency-configurable.patch \ " -PV = "1.7.2+git${SRCPV}" +PV = "1.8.2+git${SRCPV}" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" -SRCREV_base = "97e108bebaa58821f4566a74cbf0135e93407c01" -SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0" +SRCREV_base = "70f3750773bf5dba4098f6d72d63aa6c84f1f539" +SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275" SRCREV_FORMAT = "base" S = "${WORKDIR}/git" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc index 4621bf894..f1e30aba5 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc @@ -23,12 +23,12 @@ PACKAGECONFIG[gudev] = "--with-gudev,--without-gudev,libgudev" PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" PACKAGECONFIG[libpng] = "--enable-libpng,--disable-libpng,libpng" -PACKAGECONFIG[libv4l2] = "--with-libv4l2,--without-libv4l2,libv4l2" +PACKAGECONFIG[libv4l2] = "--with-libv4l2,--without-libv4l2,v4l-utils" PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio" PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4" PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex" PACKAGECONFIG[taglib] = "--enable-taglib,--disable-taglib,taglib" -PACKAGECONFIG[v4l2] = "--enable-gst_v4l2,--disable-gst_v4l2" +PACKAGECONFIG[v4l2] = "--enable-gst_v4l2 --enable-v4l2-probe,--disable-gst_v4l2" PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx,libvpx" PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack" PACKAGECONFIG[x11] = "--enable-x,--disable-x,${X11DEPENDS}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch index d1973d439..a2cbb70fe 100755..100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch @@ -17,7 +17,7 @@ diff --git a/gst/rtp/gstrtpmp4gpay.c b/gst/rtp/gstrtpmp4gpay.c index 7913d9a..1749d39 100644 --- a/gst/rtp/gstrtpmp4gpay.c +++ b/gst/rtp/gstrtpmp4gpay.c -@@ -390,6 +390,7 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) +@@ -391,6 +391,7 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) const GValue *codec_data; const gchar *media_type = NULL; gboolean res; @@ -25,7 +25,7 @@ index 7913d9a..1749d39 100644 rtpmp4gpay = GST_RTP_MP4G_PAY (payload); -@@ -400,7 +401,6 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) +@@ -401,7 +402,6 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) GST_LOG_OBJECT (rtpmp4gpay, "got codec_data"); if (G_VALUE_TYPE (codec_data) == GST_TYPE_BUFFER) { GstBuffer *buffer; @@ -33,7 +33,7 @@ index 7913d9a..1749d39 100644 buffer = gst_value_get_buffer (codec_data); GST_LOG_OBJECT (rtpmp4gpay, "configuring codec_data"); -@@ -426,6 +426,23 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) +@@ -427,6 +427,23 @@ gst_rtp_mp4g_pay_setcaps (GstRTPBasePayload * payload, GstCaps * caps) rtpmp4gpay->config = gst_buffer_copy (buffer); } diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.3.bb index 0b4f43690..5cc6578b7 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.6.3.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.8.3.bb @@ -7,9 +7,11 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ SRC_URI = " \ http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \ + file://avoid-including-sys-poll.h-directly.patch \ + file://ensure-valid-sentinel-for-gst_structure_get.patch \ " -SRC_URI[md5sum] = "a1958df7aa498b42793e2f2048673815" -SRC_URI[sha256sum] = "24b19db70b2a83461ebddfe20033db432dadfdb5d4b54ffb1dfa0d830134a177" +SRC_URI[md5sum] = "473ebb1f15c67de99ddb6e4d027c0876" +SRC_URI[sha256sum] = "a1d6579ba203a7734927c24b90bf6590d846c5a5fcec01a48201018c8ad2827a" S = "${WORKDIR}/gst-plugins-good-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb index 9cadc9afc..9b79af2a9 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb @@ -7,18 +7,19 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gst-plugins-good;name=base \ + git://anongit.freedesktop.org/gstreamer/gst-plugins-good;branch=1.8;name=base \ git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \ file://avoid-including-sys-poll.h-directly.patch \ file://ensure-valid-sentinel-for-gst_structure_get.patch \ + file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \ " -PV = "1.7.2+git${SRCPV}" +PV = "1.8.2+git${SRCPV}" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" -SRCREV_base = "1b6fdce67c15d59957e395b1957aa625322092d4" -SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0" +SRCREV_base = "9f73b5818f98cd045e7049bb313da1c943635109" +SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275" SRCREV_FORMAT = "base" S = "${WORKDIR}/git" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc index aff223072..708ad7a15 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc @@ -9,7 +9,7 @@ inherit gettext PACKAGECONFIG ??= " \ ${GSTREAMER_ORC} \ - a52dec lame mad mpeg2dec \ + a52dec lame mpg123 mpeg2dec \ " PACKAGECONFIG[a52dec] = "--enable-a52dec,--disable-a52dec,liba52" @@ -20,6 +20,7 @@ PACKAGECONFIG[dvdread] = "--enable-dvdread,--disable-dvdread,libdvdread" PACKAGECONFIG[lame] = "--enable-lame,--disable-lame,lame" PACKAGECONFIG[mad] = "--enable-mad,--disable-mad,libmad" PACKAGECONFIG[mpeg2dec] = "--enable-mpeg2dec,--disable-mpeg2dec,mpeg2dec" +PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123" PACKAGECONFIG[x264] = "--enable-x264,--disable-x264,x264" EXTRA_OECONF += " \ diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.3.bb index 7edfb81d2..274593796 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.6.3.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.8.3.bb @@ -7,7 +7,7 @@ SRC_URI = " \ http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ " -SRC_URI[md5sum] = "dbd92afb3816cbfa90ab1f197144a2e2" -SRC_URI[sha256sum] = "2fecf7b7c7882f8f62f1900048f4013f98c214fb3d3303d8d812245bb41fd064" +SRC_URI[md5sum] = "4fc66c77253b0ad5ce224bda654b2e7d" +SRC_URI[sha256sum] = "6fa2599fdd072d31fbaf50c34af406e2be944a010b1f4eab67a5fe32a0310693" S = "${WORKDIR}/gst-plugins-ugly-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb index 69afe4cfb..22cca3a8d 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb @@ -6,24 +6,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068" SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly;name=base \ + git://anongit.freedesktop.org/gstreamer/gst-plugins-ugly;branch=1.8;name=base \ git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \ " -PV = "1.7.2+git${SRCPV}" +PV = "1.8.2+git${SRCPV}" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" -SRCREV_base = "8bdb68edbc605e21314b608e7a39bdbaab7302b8" -SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0" +SRCREV_base = "79fe43c00925455a37fab6fc428e7f08655a9bbd" +SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275" SRCREV_FORMAT = "base" S = "${WORKDIR}/git" -# The mpg123 plugin was added prior to the 1.7.2 release -# https://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=43bd45ba991ef3247957ca37cdcb52f4b8c0acb1 -PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123" - do_configure_prepend() { ${S}/autogen.sh --noconfigure } diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc index 2dcec509d..9cfcec3ca 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc @@ -5,7 +5,7 @@ SECTION = "multimedia" DEPENDS = "gstreamer1.0 glib-2.0-native" -inherit autotools pkgconfig upstream-version-is-even gobject-introspection +inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc acpaths = "-I ${S}/common/m4 -I ${S}/m4" @@ -33,8 +33,21 @@ SRC_URI_append = " file://0001-introspection.m4-prefix-pkgconfig-paths-with-PKG_ delete_pkg_m4_file() { # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection rm "${S}/common/m4/pkg.m4" || true + rm -f "${S}/common/m4/gtk-doc.m4" } -do_configure[prefuncs] += " delete_pkg_m4_file" +# gstreamer is not using system-wide makefiles (which we patch in gtkdoc recipe, +# but its own custom ones, which we have to patch here +patch_gtk_doc_makefiles() { + # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries + # instead of libtool wrapper or running them directly + # Also substitute a bogus plugin scanner, as trying to run the real one is causing issues during build on x86_64. + sed -i \ + -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \ + -e "s|\$(GTKDOC_EXTRA_ENVIRONMENT)|\$(GTKDOC_EXTRA_ENVIRONMENT) GST_PLUGIN_SCANNER_1_0=\$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy|" \ + ${S}/common/gtk-doc*mak +} + +do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles" PACKAGES_DYNAMIC = "^${PN}-.*" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc index ae6d36477..13ba40d3d 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc @@ -13,12 +13,26 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz S = "${WORKDIR}/${PNREAL}-${PV}" -inherit autotools pkgconfig upstream-version-is-even gobject-introspection +inherit autotools pkgconfig upstream-version-is-even gobject-introspection gtk-doc + +# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well +LIBV = "1.0" +require gst-plugins-package.inc delete_pkg_m4_file() { # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection rm "${S}/common/m4/pkg.m4" || true } -do_configure[prefuncs] += " delete_pkg_m4_file" +# gstreamer is not using system-wide makefiles (which we patch in gtkdoc recipe, +# but its own custom ones, which we have to patch here +patch_gtk_doc_makefiles() { + # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries + # instead of libtool wrapper or running them directly + sed -i \ + -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \ + ${S}/common/gtk-doc*mak +} + +do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.6.2.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.6.2.bb deleted file mode 100644 index 5bdae6cf9..000000000 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.6.2.bb +++ /dev/null @@ -1,6 +0,0 @@ -include gstreamer1.0-rtsp-server.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" - -SRC_URI[md5sum] = "a1cafefb5fc14ac5d7e7d8cdbdfa9694" -SRC_URI[sha256sum] = "0f51f9879556c0950203c766b09a1b62f1f25b17f9a7d516e01b13ecf93c8858" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.8.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.8.3.bb new file mode 100644 index 000000000..17059d070 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.8.3.bb @@ -0,0 +1,6 @@ +include gstreamer1.0-rtsp-server.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" + +SRC_URI[md5sum] = "e4b07b10dd65b6c26c9ca5f72e59297b" +SRC_URI[sha256sum] = "010f06800c1c957851d1352e5ec7a8ba3ce6a857fec1b8afc7d1a9e5f53288bf" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc index 10b4668e5..cb0bd82f2 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc @@ -8,7 +8,7 @@ LICENSE = "LGPLv2+" DEPENDS = "glib-2.0 glib-2.0-native libcap libxml2 bison-native flex-native" -inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection +inherit autotools pkgconfig gettext upstream-version-is-even gobject-introspection gtk-doc # This way common/m4/introspection.m4 will come first # (it has a custom INTROSPECTION_INIT macro, and so must be used instead of our common introspection.m4 file) @@ -20,16 +20,16 @@ SRC_URI_append = " \ PACKAGECONFIG ??= "" -PACKAGECONFIG[check] = "--enable-check,--disable-check" PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" PACKAGECONFIG[tests] = "--enable-tests,--disable-tests" PACKAGECONFIG[valgrind] = "--enable-valgrind,--disable-valgrind,valgrind," +PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks," +PACKAGECONFIG[trace-historic] = "--enable-trace,--disable-trace," EXTRA_OECONF = " \ --disable-dependency-tracking \ --disable-docbook \ --disable-examples \ - --disable-gtk-doc \ " CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no" @@ -49,9 +49,22 @@ RRECOMMENDS_${PN}_qemux86-64 += "kernel-module-snd-ens1370 kernel-module-snd-raw delete_pkg_m4_file() { # This m4 file is out of date and is missing PKG_CONFIG_SYSROOT_PATH tweaks which we need for introspection rm "${S}/common/m4/pkg.m4" || true + rm -f "${S}/common/m4/gtk-doc.m4" } -do_configure[prefuncs] += " delete_pkg_m4_file" +# gstreamer is not using system-wide makefiles (which we patch in gtkdoc recipe, +# but its own custom ones, which we have to patch here +patch_gtk_doc_makefiles() { + # Patch the gtk-doc makefiles so that the qemu wrapper is used to run transient binaries + # instead of libtool wrapper or running them directly + # Also substitute a bogus plugin scanner, as trying to run the real one is causing issues during build on x86_64. + sed -i \ + -e "s|GTKDOC_RUN =.*|GTKDOC_RUN = \$(top_builddir)/gtkdoc-qemuwrapper|" \ + -e "s|\$(GTKDOC_EXTRA_ENVIRONMENT)|\$(GTKDOC_EXTRA_ENVIRONMENT) GST_PLUGIN_SCANNER_1_0=\$(top_builddir)/libs/gst/helpers/gst-plugin-scanner-dummy|" \ + ${S}/common/gtk-doc*mak +} + +do_configure[prefuncs] += " delete_pkg_m4_file patch_gtk_doc_makefiles" do_compile_prepend() { export GIR_EXTRA_LIBS_PATH="${B}/gst/.libs:${B}/libs/gst/base/.libs" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch deleted file mode 100644 index 94f5cc56e..000000000 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 6b26f3dbf9bf577d71534ab7410de66d06e46ba2 Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani <dv@pseudoterminal.org> -Date: Sat, 6 Apr 2013 23:52:11 +0200 -Subject: [PATCH] Fix crash with gst-inspect Chris Lord <chris@openedhand.com> - -Upstream-Status: Pending - -Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> ---- - tools/gst-inspect.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tools/gst-inspect.c b/tools/gst-inspect.c -index 23b7c44..b79b02e 100644 ---- a/tools/gst-inspect.c -+++ b/tools/gst-inspect.c -@@ -1556,7 +1556,7 @@ main (int argc, char *argv[]) - g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE); - g_option_context_add_group (ctx, gst_init_get_option_group ()); - if (!g_option_context_parse (ctx, &argc, &argv, &err)) { -- g_printerr ("Error initializing: %s\n", err->message); -+ g_printerr ("Error initializing: %s\n", err ? err->message : "(null)"); - return -1; - } - g_option_context_free (ctx); --- -1.8.2 - diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.6.3.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.8.3.bb index ba1b83b08..d3561ebbd 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.6.3.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.8.3.bb @@ -5,10 +5,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ SRC_URI = " \ http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ - file://0001-Fix-crash-with-gst-inspect.patch \ " -SRC_URI[md5sum] = "b4cdeb2b9cb20dd6ac022a4f417eae0d" -SRC_URI[sha256sum] = "22f9568d67b87cf700a111f381144bd37cb93790a77e4e331db01fe854a37f24" +SRC_URI[md5sum] = "e88dad542df9d986822e982105d2b530" +SRC_URI[sha256sum] = "66b37762d4fdcd63bce5a2bec57e055f92420e95037361609900278c0db7c53f" S = "${WORKDIR}/gstreamer-${PV}" diff --git a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb index 7715bb202..6112f2a89 100644 --- a/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb +++ b/import-layers/yocto-poky/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb @@ -6,25 +6,20 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gstreamer;name=base \ + git://anongit.freedesktop.org/gstreamer/gstreamer;branch=1.8;name=base \ git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;name=common \ " -PV = "1.7.2+git${SRCPV}" +PV = "1.8.2+git${SRCPV}" UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))" -SRCREV_base = "9e33bfa2c7a5f43da2c49b0a8235fd43cba9feaf" -SRCREV_common = "b64f03f6090245624608beb5d2fff335e23a01c0" +SRCREV_base = "3de8a4f728a7194a12b784ec4085f6a8e7d9b5bd" +SRCREV_common = "f363b3205658a38e84fa77f19dee218cd4445275" SRCREV_FORMAT = "base" S = "${WORKDIR}/git" -# The option to configure tracer hooks was added prior to the 1.7.2 release -# https://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=e5ca47236e4df4683707f0bcf99181a937d358d5 -PACKAGECONFIG[gst-tracer-hooks] = "--enable-gst-tracer-hooks,--disable-gst-tracer-hooks," -PACKAGECONFIG[trace-historic] = "--enable-trace,--disable-trace," - do_configure_prepend() { ${S}/autogen.sh --noconfigure } |