diff options
Diffstat (limited to 'meta/recipes-multimedia/gstreamer')
91 files changed, 1641 insertions, 2830 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch b/meta/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch new file mode 100644 index 0000000000..c0e4581358 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-devtools/0001-connect-has-a-different-signature-on-musl.patch @@ -0,0 +1,38 @@ +From 73b1002eda17451db1f58431b42c25203f1d3097 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Sun, 9 Sep 2018 17:38:10 -0700 +Subject: [PATCH] connect has a different signature on musl + +On linux when not using glibc and using musl for C library, connect +API has a different signature, this patch fixes this so it can compile +on musl, the functionality should remain same as it is immediately +typcasted to struct sockaddr_in* type inside the function before use + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + validate/plugins/fault_injection/socket_interposer.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/validate/plugins/fault_injection/socket_interposer.c b/validate/plugins/fault_injection/socket_interposer.c +index 53c1ebb..ad7adf8 100644 +--- a/validate/plugins/fault_injection/socket_interposer.c ++++ b/validate/plugins/fault_injection/socket_interposer.c +@@ -100,10 +100,15 @@ socket_interposer_set_callback (struct sockaddr_in *addrin, + } + + int +-connect (int socket, const struct sockaddr_in *addrin, socklen_t address_len) ++#if defined(__linux__) && !defined(__GLIBC__) ++connect (int socket, const struct sockaddr *addr, socklen_t address_len) ++#else ++connect (int socket, const struct sockaddr_in *addr, socklen_t address_len) ++#endif + { + size_t i; + int override_errno = 0; ++ struct sockaddr_in* addrin = (struct sockaddr_in*)addr; + typedef ssize_t (*real_connect_fn) (int, const struct sockaddr_in *, + socklen_t); + static real_connect_fn real_connect = 0; diff --git a/meta/recipes-multimedia/gstreamer/gst-devtools_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gst-devtools_1.20.0.bb new file mode 100644 index 0000000000..e17f4ee09d --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-devtools_1.20.0.bb @@ -0,0 +1,52 @@ +SUMMARY = "Gstreamer validation tool" +DESCRIPTION = "A Tool to test GStreamer components" +HOMEPAGE = "https://gstreamer.freedesktop.org/documentation/gst-devtools/index.html" +SECTION = "multimedia" + +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://validate/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343" + +#S = "${WORKDIR}/gst-devtools-${PV}" + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-devtools/gst-devtools-${PV}.tar.xz \ + file://0001-connect-has-a-different-signature-on-musl.patch \ + " + +SRC_URI[sha256sum] = "69fc8756ec9d93e5c5258c99088434f203e91fdbc5af28d1f2c583fd819b7a1d" + +DEPENDS = "json-glib glib-2.0 glib-2.0-native gstreamer1.0 gstreamer1.0-plugins-base" +RRECOMMENDS:${PN} = "git" + +FILES:${PN} += "${datadir}/gstreamer-1.0/* ${libdir}/gst-validate-launcher/* ${libdir}/gstreamer-1.0/*" + +inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection + +# TODO: put this in a gettext.bbclass patch +def gettext_oemeson(d): + if d.getVar('USE_NLS') == 'no': + return '-Dnls=disabled' + # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set + if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'): + return '-Dnls=disabled' + return '-Dnls=enabled' + +# Build GstValidateVideo +PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Ddebug_viewer=disabled \ + -Dtests=disabled \ + -Dvalidate=enabled \ + ${@gettext_oemeson(d)} \ +" + +do_install:append () { + for fn in ${bindir}/gst-validate-launcher \ + ${libdir}/gst-validate-launcher/python/launcher/config.py; do + sed -i -e 's,${B},/usr/src/debug/${PN},g' -e 's,${S},/usr/src/debug/${PN},g' ${D}$fn + done +} + +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" diff --git a/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch b/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch new file mode 100644 index 0000000000..ab93c13244 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-examples/0001-Make-player-examples-installable.patch @@ -0,0 +1,37 @@ +From 7924016fce2d0b435891a335cdae52fc939c7e3b Mon Sep 17 00:00:00 2001 +From: Jussi Kukkonen <jussi.kukkonen@intel.com> +Date: Thu, 17 Aug 2017 11:07:02 +0300 +Subject: [PATCH] Make player examples installable + +Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> +Upstream-Status: Denied [Upstream considers these code examples, for now a least] + +https://bugzilla.gnome.org/show_bug.cgi?id=777827 + +--- + playback/player/gst-play/meson.build | 1 + + playback/player/gtk/meson.build | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/playback/player/gst-play/meson.build b/playback/player/gst-play/meson.build +index 8ec021d..977cc5c 100644 +--- a/playback/player/gst-play/meson.build ++++ b/playback/player/gst-play/meson.build +@@ -2,5 +2,6 @@ executable('gst-play', + ['gst-play.c', + 'gst-play-kb.c', + 'gst-play-kb.h'], ++ install: true, + dependencies : [gst_dep, gstplayer_dep, m_dep]) + +diff --git a/playback/player/gtk/meson.build b/playback/player/gtk/meson.build +index f7a7419..6281130 100644 +--- a/playback/player/gtk/meson.build ++++ b/playback/player/gtk/meson.build +@@ -13,5 +13,6 @@ if gtk_dep.found() + gtk_play_resources, + 'gtk-video-renderer.h', + 'gtk-video-renderer.c'], ++ install: true, + dependencies : [glib_dep, gobject_dep, gmodule_dep, gst_dep, gsttag_dep, gstplayer_dep, gtk_dep, x11_dep]) + endif diff --git a/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop b/meta/recipes-multimedia/gstreamer/gst-examples/gst-player.desktop index 9fd207b384..7ddd456a1e 100644 --- a/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop +++ b/meta/recipes-multimedia/gstreamer/gst-examples/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/meta/recipes-multimedia/gstreamer/gst-examples_1.18.6.bb b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.6.bb new file mode 100644 index 0000000000..02282ac5d9 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-examples_1.18.6.bb @@ -0,0 +1,35 @@ +SUMMARY = "GStreamer examples (including gtk-play, gst-play)" +DESCRIPTION = "GStreamer example applications" +HOMEPAGE = "https://gitlab.freedesktop.org/gstreamer/gst-examples" +BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-examples/-/issues" +LICENSE = "LGPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://playback/player/gtk/gtk-play.c;beginline=1;endline=20;md5=f8c72dae3d36823ec716a9ebcae593b9" + +DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad gtk+3 libsoup-2.4 json-glib glib-2.0-native" + +SRC_URI = "git://gitlab.freedesktop.org/gstreamer/gst-examples.git;protocol=https;branch=1.18 \ + file://0001-Make-player-examples-installable.patch \ + file://gst-player.desktop \ + " + +SRCREV = "70e4fcf4fc8ae19641aa990de5f37d758cdfcea4" + +S = "${WORKDIR}/git" + +inherit meson pkgconfig features_check + +UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.(\d*[02468])+(\.\d+)+)" + +ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" + +do_install:append() { + install -m 0644 -D ${WORKDIR}/gst-player.desktop ${D}${datadir}/applications/gst-player.desktop +} + +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_ACCEPTED", "commercial", "gstreamer1.0-libav", "", d)} \ + ${@bb.utils.contains("LICENSE_FLAGS_ACCEPTED", "commercial", "gstreamer1.0-plugins-ugly-meta", "", d)}" +RPROVIDES:${PN} += "gst-player gst-player-bin" diff --git a/meta/recipes-multimedia/gstreamer/gst-player/Add-error-signal-emission-for-missing-plugins.patch b/meta/recipes-multimedia/gstreamer/gst-player/Add-error-signal-emission-for-missing-plugins.patch deleted file mode 100644 index 712d46daa0..0000000000 --- a/meta/recipes-multimedia/gstreamer/gst-player/Add-error-signal-emission-for-missing-plugins.patch +++ /dev/null @@ -1,252 +0,0 @@ -From d64c7edb66f4a64ff49c4306cf77fd269b7079ab Mon Sep 17 00:00:00 2001 -From: Jussi Kukkonen <jussi.kukkonen@intel.com> -Date: Mon, 16 Mar 2015 13:45:30 +0200 -Subject: [PATCH] Add error signal emission for missing plugins - -Add a missing plugins error signal to gst-player. Note that this error -does not necessarily mean the playback has completely failed, but in -practice the user experience will be bad (think, e.g. of a mp4 file -where H.264 codec is missing: AAC playback still works...). - -Use the signal in gtk-play to show a infobar if plugins are missing. - -Submitted upstream at https://github.com/sdroege/gst-player/pull/11 - -Upstream-Status: Submitted -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> ---- - configure.ac | 2 +- - gtk/gtk-play.c | 54 +++++++++++++++++++++++++++++++++++++++++++++- - lib/gst/player/gstplayer.c | 22 +++++++++++++++++++ - lib/gst/player/gstplayer.h | 3 ++- - 4 files changed, 78 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 90ab74c..6cdb4eb 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -53,7 +53,7 @@ AC_SUBST(LT_AGE) - PKG_PROG_PKG_CONFIG - - PKG_CHECK_MODULES(GLIB, [glib-2.0 gobject-2.0]) --PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0 >= 1.4 gstreamer-video-1.0 >= 1.4]) -+PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0 >= 1.4 gstreamer-video-1.0 >= 1.4 gstreamer-pbutils-1.0]) - - GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`" - AC_SUBST(GLIB_PREFIX) -diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c -index b92773b..e2b605a 100644 ---- a/gtk/gtk-play.c -+++ b/gtk/gtk-play.c -@@ -30,6 +30,8 @@ typedef struct - GtkWidget *prev_button, *next_button; - GtkWidget *seekbar; - GtkWidget *video_area; -+ GtkWidget *info_label; -+ GtkWidget *info_bar; - GtkWidget *volume_button; - gulong seekbar_value_changed_signal_id; - gboolean playing; -@@ -141,6 +143,13 @@ play_pause_clicked_cb (GtkButton * button, GtkPlay * play) - } - - static void -+clear_missing_plugins (GtkPlay * play) -+{ -+ gtk_label_set_text (GTK_LABEL (play->info_label), ""); -+ gtk_widget_hide (play->info_bar); -+} -+ -+static void - skip_prev_clicked_cb (GtkButton * button, GtkPlay * play) - { - GList *prev; -@@ -155,6 +164,7 @@ skip_prev_clicked_cb (GtkButton * button, GtkPlay * play) - - gtk_widget_set_sensitive (play->next_button, TRUE); - gst_player_set_uri (play->player, prev->data); -+ clear_missing_plugins (play); - gst_player_play (play->player); - set_title (play, prev->data); - gtk_widget_set_sensitive (play->prev_button, g_list_previous (prev) != NULL); -@@ -175,6 +185,7 @@ skip_next_clicked_cb (GtkButton * button, GtkPlay * play) - - gtk_widget_set_sensitive (play->prev_button, TRUE); - gst_player_set_uri (play->player, next->data); -+ clear_missing_plugins (play); - gst_player_play (play->player); - set_title (play, next->data); - gtk_widget_set_sensitive (play->next_button, g_list_next (next) != NULL); -@@ -193,10 +204,16 @@ volume_changed_cb (GtkScaleButton * button, gdouble value, GtkPlay * play) - gst_player_set_volume (play->player, value); - } - -+void -+info_bar_response_cb (GtkInfoBar * bar, gint response, GtkPlay * play) -+{ -+ gtk_widget_hide (GTK_WIDGET (bar)); -+} -+ - static void - create_ui (GtkPlay * play) - { -- GtkWidget *controls, *main_hbox, *main_vbox; -+ GtkWidget *controls, *main_hbox, *main_vbox, *info_bar, *content_area; - - play->window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - g_signal_connect (G_OBJECT (play->window), "delete-event", -@@ -208,6 +225,20 @@ create_ui (GtkPlay * play) - g_signal_connect (play->video_area, "realize", - G_CALLBACK (video_area_realize_cb), play); - -+ play->info_bar = gtk_info_bar_new (); -+ gtk_info_bar_set_message_type (GTK_INFO_BAR (play->info_bar), -+ GTK_MESSAGE_WARNING); -+ //gtk_info_bar_set_show_close_button (GTK_INFO_BAR (play->info_bar), -+ // TRUE); -+ gtk_widget_set_no_show_all (play->info_bar, TRUE); -+ g_signal_connect (play->info_bar, "response", -+ G_CALLBACK (info_bar_response_cb), play); -+ -+ content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (play->info_bar)); -+ play->info_label = gtk_label_new (""); -+ gtk_container_add (GTK_CONTAINER (content_area), play->info_label); -+ gtk_widget_show (play->info_label); -+ - /* Unified play/pause button */ - play->play_pause_button = - gtk_button_new_from_icon_name ("media-playback-pause", -@@ -258,6 +289,7 @@ create_ui (GtkPlay * play) - - main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); - gtk_box_pack_start (GTK_BOX (main_vbox), main_hbox, TRUE, TRUE, 0); -+ gtk_box_pack_start (GTK_BOX (main_vbox), play->info_bar, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (main_vbox), controls, FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (play->window), main_vbox); - -@@ -322,6 +354,7 @@ eos_cb (GstPlayer * unused, GtkPlay * play) - gtk_widget_set_sensitive (play->next_button, g_list_next (next) != NULL); - - gst_player_set_uri (play->player, next->data); -+ clear_missing_plugins (play); - gst_player_play (play->player); - set_title (play, next->data); - } else { -@@ -330,6 +363,24 @@ eos_cb (GstPlayer * unused, GtkPlay * play) - } - } - -+static void -+error_cb (GstPlayer * player, GError * err, GtkPlay * play) -+{ -+ char *message; -+ -+ if (g_error_matches (err, gst_player_error_quark (), -+ GST_PLAYER_ERROR_MISSING_PLUGIN)) { -+ // add message to end of any existing message: there may be -+ // multiple missing plugins. -+ message = g_strdup_printf ("%s%s. ", -+ gtk_label_get_text (GTK_LABEL (play->info_label)), err->message); -+ gtk_label_set_text (GTK_LABEL (play->info_label), message); -+ g_free (message); -+ -+ gtk_widget_show (play->info_bar); -+ } -+} -+ - int - main (gint argc, gchar ** argv) - { -@@ -422,6 +473,7 @@ main (gint argc, gchar ** argv) - g_signal_connect (play.player, "video-dimensions-changed", - G_CALLBACK (video_dimensions_changed_cb), &play); - g_signal_connect (play.player, "end-of-stream", G_CALLBACK (eos_cb), &play); -+ g_signal_connect (play.player, "error", G_CALLBACK (error_cb), &play); - - /* We have file(s) that need playing. */ - set_title (&play, g_list_first (play.uris)->data); -diff --git a/lib/gst/player/gstplayer.c b/lib/gst/player/gstplayer.c -index bd682d9..78e7ba1 100644 ---- a/lib/gst/player/gstplayer.c -+++ b/lib/gst/player/gstplayer.c -@@ -47,6 +47,7 @@ - - #include <gst/gst.h> - #include <gst/video/video.h> -+#include <gst/pbutils/missing-plugins.h> - - GST_DEBUG_CATEGORY_STATIC (gst_player_debug); - #define GST_CAT_DEFAULT gst_player_debug -@@ -238,6 +239,7 @@ gst_player_class_init (GstPlayerClass * klass) - g_signal_new ("video-dimensions-changed", G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, NULL, - NULL, NULL, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT); -+ - } - - static void -@@ -619,6 +621,21 @@ error_cb (GstBus * bus, GstMessage * msg, gpointer user_data) - g_mutex_unlock (&self->priv->lock); - } - -+static void -+element_cb (GstBus * bus, GstMessage * msg, gpointer user_data) -+{ -+ GstPlayer *self = GST_PLAYER (user_data); -+ -+ if (gst_is_missing_plugin_message (msg)) { -+ gchar *desc; -+ -+ desc = gst_missing_plugin_message_get_description (msg); -+ emit_error (self, g_error_new (GST_PLAYER_ERROR, -+ GST_PLAYER_ERROR_MISSING_PLUGIN, "Missing plugin '%s'", desc)); -+ g_free (desc); -+ } -+} -+ - static gboolean - eos_dispatch (gpointer user_data) - { -@@ -1059,6 +1076,8 @@ gst_player_main (gpointer data) - NULL, NULL); - g_source_attach (bus_source, self->priv->context); - -+ g_signal_connect (G_OBJECT (bus), "message::element", -+ G_CALLBACK (element_cb), self); - g_signal_connect (G_OBJECT (bus), "message::error", G_CALLBACK (error_cb), - self); - g_signal_connect (G_OBJECT (bus), "message::eos", G_CALLBACK (eos_cb), self); -@@ -1560,6 +1579,7 @@ gst_player_error_get_type (void) - static gsize id = 0; - static const GEnumValue values[] = { - {C_ENUM (GST_PLAYER_ERROR_FAILED), "GST_PLAYER_ERROR_FAILED", "failed"}, -+ {C_ENUM (GST_PLAYER_ERROR_MISSING_PLUGIN), "GST_PLAYER_ERROR_MISSING_PLUGIN", "missing-plugin"}, - {0, NULL, NULL} - }; - -@@ -1577,6 +1597,8 @@ gst_player_error_get_name (GstPlayerError error) - switch (error) { - case GST_PLAYER_ERROR_FAILED: - return "failed"; -+ case GST_PLAYER_ERROR_MISSING_PLUGIN: -+ return "missing-plugin"; - } - - g_assert_not_reached (); -diff --git a/lib/gst/player/gstplayer.h b/lib/gst/player/gstplayer.h -index c438513..35fb5bb 100644 ---- a/lib/gst/player/gstplayer.h -+++ b/lib/gst/player/gstplayer.h -@@ -44,7 +44,8 @@ GType gst_player_error_get_type (void); - #define GST_TYPE_PLAYER_ERROR (gst_player_error_get_type ()) - - typedef enum { -- GST_PLAYER_ERROR_FAILED = 0 -+ GST_PLAYER_ERROR_FAILED = 0, -+ GST_PLAYER_ERROR_MISSING_PLUGIN - } GstPlayerError; - - const gchar *gst_player_error_get_name (GstPlayerError error); --- -2.1.4 - diff --git a/meta/recipes-multimedia/gstreamer/gst-player/Fix-pause-play.patch b/meta/recipes-multimedia/gstreamer/gst-player/Fix-pause-play.patch deleted file mode 100644 index 783c42ad70..0000000000 --- a/meta/recipes-multimedia/gstreamer/gst-player/Fix-pause-play.patch +++ /dev/null @@ -1,107 +0,0 @@ -Fix pause/play - -The current player state is now notified via the state-changed signal, -and in the GTK UI it was only used to keep track of the desired state. - -This is a backport of upstream commit 738479c7a0. - -Upstream-Status: Backport -Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> - ---- - gtk/gtk-play.c | 8 ++++++-- - lib/gst/player/gstplayer.c | 12 ------------ - lib/gst/player/gstplayer.h | 2 -- - 3 files changed, 6 insertions(+), 16 deletions(-) - -diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c -index 6e7a098..e2b605a 100644 ---- a/gtk/gtk-play.c -+++ b/gtk/gtk-play.c -@@ -34,6 +34,7 @@ typedef struct - GtkWidget *info_bar; - GtkWidget *volume_button; - gulong seekbar_value_changed_signal_id; -+ gboolean playing; - } GtkPlay; - - /* Compat stubs */ -@@ -118,12 +119,13 @@ play_pause_clicked_cb (GtkButton * button, GtkPlay * play) - { - GtkWidget *image; - -- if (gst_player_is_playing (play->player)) { -+ if (play->playing) { - gst_player_pause (play->player); - image = - gtk_image_new_from_icon_name ("media-playback-start", - GTK_ICON_SIZE_BUTTON); - gtk_button_set_image (GTK_BUTTON (play->play_pause_button), image); -+ play->playing = FALSE; - } else { - gchar *title; - -@@ -136,6 +138,7 @@ play_pause_clicked_cb (GtkButton * button, GtkPlay * play) - title = gst_player_get_uri (play->player); - set_title (play, title); - g_free (title); -+ play->playing = TRUE; - } - } - -@@ -335,7 +338,7 @@ video_dimensions_changed_cb (GstPlayer * unused, gint width, gint height, - static void - eos_cb (GstPlayer * unused, GtkPlay * play) - { -- if (gst_player_is_playing (play->player)) { -+ if (play->playing) { - GList *next = NULL; - gchar *uri; - -@@ -452,6 +455,7 @@ main (gint argc, gchar ** argv) - } - - play.player = gst_player_new (); -+ play.playing = TRUE; - - g_object_set (play.player, "dispatch-to-main-context", TRUE, NULL); - -diff --git a/lib/gst/player/gstplayer.c b/lib/gst/player/gstplayer.c -index 069b284..78e7ba1 100644 ---- a/lib/gst/player/gstplayer.c -+++ b/lib/gst/player/gstplayer.c -@@ -1422,18 +1422,6 @@ gst_player_set_uri (GstPlayer * self, const gchar * val) - g_object_set (self, "uri", val, NULL); - } - --gboolean --gst_player_is_playing (GstPlayer * self) --{ -- gboolean val; -- -- g_return_val_if_fail (GST_IS_PLAYER (self), FALSE); -- -- g_object_get (self, "is-playing", &val, NULL); -- -- return val; --} -- - GstClockTime - gst_player_get_position (GstPlayer * self) - { -diff --git a/lib/gst/player/gstplayer.h b/lib/gst/player/gstplayer.h -index 6933dd7..35fb5bb 100644 ---- a/lib/gst/player/gstplayer.h -+++ b/lib/gst/player/gstplayer.h -@@ -93,8 +93,6 @@ gchar * gst_player_get_uri (GstPlayer * player); - void gst_player_set_uri (GstPlayer * player, - const gchar * uri); - --gboolean gst_player_is_playing (GstPlayer * player); -- - GstClockTime gst_player_get_position (GstPlayer * player); - GstClockTime gst_player_get_duration (GstPlayer * player); - --- -2.1.4 - diff --git a/meta/recipes-multimedia/gstreamer/gst-player/filechooser.patch b/meta/recipes-multimedia/gstreamer/gst-player/filechooser.patch deleted file mode 100644 index 7bf1b034b3..0000000000 --- a/meta/recipes-multimedia/gstreamer/gst-player/filechooser.patch +++ /dev/null @@ -1,54 +0,0 @@ -Upstream-Status: Submitted -Signed-off-by: Ross Burton <ross.burton@intel.com> - -From 43d4b19ab611d844156e26c4840cc54ddb73ae03 Mon Sep 17 00:00:00 2001 -From: Ross Burton <ross.burton@intel.com> -Date: Thu, 26 Feb 2015 17:17:05 +0000 -Subject: [PATCH] gtk-play: show a file chooser if no URIs were passed - ---- - gtk/gtk-play.c | 28 ++++++++++++++++++++++++++-- - 1 file changed, 26 insertions(+), 2 deletions(-) - -diff --git a/gtk/gtk-play.c b/gtk/gtk-play.c -index f015077..9766a72 100644 ---- a/gtk/gtk-play.c -+++ b/gtk/gtk-play.c -@@ -319,8 +319,32 @@ main (gint argc, gchar ** argv) - // FIXME: Add support for playlists and stuff - /* Parse the list of the file names we have to play. */ - if (!file_names) { -- g_print ("Usage: %s FILE(s)|URI(s)\n", APP_NAME); -- return 1; -+ GtkWidget *chooser; -+ int res; -+ -+ chooser = gtk_file_chooser_dialog_new ("Select files to play", NULL, -+ GTK_FILE_CHOOSER_ACTION_OPEN, -+ "_Cancel", GTK_RESPONSE_CANCEL, -+ "_Open", GTK_RESPONSE_ACCEPT, -+ NULL); -+ g_object_set (chooser, -+ "local-only", FALSE, -+ "select-multiple", TRUE, -+ NULL); -+ -+ res = gtk_dialog_run (GTK_DIALOG (chooser)); -+ if (res == GTK_RESPONSE_ACCEPT) { -+ GSList *l; -+ -+ l = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (chooser)); -+ while (l) { -+ play.uris = g_list_append (play.uris, l->data); -+ l = g_slist_delete_link (l, l); -+ } -+ } else { -+ return 0; -+ } -+ gtk_widget_destroy (chooser); - } else { - guint i; - --- -1.7.10.4 - diff --git a/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch b/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch deleted file mode 100644 index 2cd18bbc95..0000000000 --- a/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/meta/recipes-multimedia/gstreamer/gst-player_git.bb b/meta/recipes-multimedia/gstreamer/gst-player_git.bb deleted file mode 100644 index 9850242567..0000000000 --- a/meta/recipes-multimedia/gstreamer/gst-player_git.bb +++ /dev/null @@ -1,40 +0,0 @@ -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" - -DEPENDS = "glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base gtk+" - -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://gst-player.desktop" - -SRCREV = "5386c5b984d40ef5434673ed62204e69aaf52645" - -S = "${WORKDIR}/git" - -inherit autotools gtk-doc lib_package pkgconfig distro_features_check - -ANY_OF_DISTRO_FEATURES = "${GTK2DISTROFEATURES}" - -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)}" diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc b/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc deleted file mode 100644 index cb1be06d09..0000000000 --- a/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc +++ /dev/null @@ -1,58 +0,0 @@ -PACKAGESPLITFUNCS_prepend = " split_gstreamer10_packages " -PACKAGESPLITFUNCS_append = " set_metapkg_rdepends " - -python split_gstreamer10_packages () { - gst_libdir = d.expand('${libdir}/gstreamer-${LIBV}') - postinst = d.getVar('plugin_postinst', True) - glibdir = d.getVar('libdir', True) - - do_split_packages(d, glibdir, '^lib(.*)\.so\.*', 'lib%s', 'gstreamer %s library', extra_depends='', allow_links=True) - do_split_packages(d, gst_libdir, 'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer plugin for %s', postinst=postinst, extra_depends='') - do_split_packages(d, gst_libdir, 'libgst(.*)\.la$', d.expand('${PN}-%s-dev'), 'GStreamer plugin for %s (development files)', extra_depends=d.expand('${PN}-dev')) - do_split_packages(d, gst_libdir, 'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer plugin for %s (static development files)', extra_depends=d.expand('${PN}-staticdev')) -} - -python set_metapkg_rdepends () { - import os - - pn = d.getVar('PN', True) - metapkg = pn + '-meta' - d.setVar('ALLOW_EMPTY_' + metapkg, "1") - d.setVar('FILES_' + metapkg, "") - blacklist = [ pn, pn + '-locale', pn + '-dev', pn + '-dbg', pn + '-doc', pn + '-meta' ] - metapkg_rdepends = [] - packages = d.getVar('PACKAGES', True).split() - pkgdest = d.getVar('PKGDEST', True) - for pkg in packages[1:]: - if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.endswith('-dbg') and not pkg.count('locale') and not pkg.count('-staticdev'): - # See if the package is empty by looking at the contents of its PKGDEST subdirectory. - # If this subdirectory is empty, then the package is. - # Empty packages do not get added to the meta package's RDEPENDS - pkgdir = os.path.join(pkgdest, pkg) - if os.path.exists(pkgdir): - dir_contents = os.listdir(pkgdir) or [] - else: - dir_contents = [] - is_empty = len(dir_contents) == 0 - if not is_empty: - metapkg_rdepends.append(pkg) - d.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends)) - d.setVar('DESCRIPTION_' + metapkg, pn + ' meta package') -} - -# each plugin-dev depends on PN-dev, plugin-staticdev on PN-staticdev -# so we need them even when empty (like in gst-plugins-good case) -ALLOW_EMPTY_${PN} = "1" -ALLOW_EMPTY_${PN}-dev = "1" -ALLOW_EMPTY_${PN}-staticdev = "1" - -PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib" -FILES_${PN}-apps = "${bindir}" - -RDEPENDS_${PN}-apps += "perl" -RRECOMMENDS_${PN} += "${PN}-meta" - -FILES_${PN} = "" -FILES_${PN}-dbg += "${libdir}/gstreamer-${LIBV}/.debug" -FILES_${PN}-glib = "${datadir}/glib-2.0" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc deleted file mode 100644 index 84e6e95d36..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav.inc +++ /dev/null @@ -1,32 +0,0 @@ -SUMMARY = "Libav-based GStreamer 1.x plugin" -SECTION = "multimedia" -LICENSE = "GPLv2+ & LGPLv2+ & ( (GPLv2+ & LGPLv2.1+) | (GPLv3+ & LGPLv3+) )" -LICENSE_FLAGS = "commercial" -HOMEPAGE = "http://www.gstreamer.net/" -DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base zlib bzip2" - -inherit autotools pkgconfig - -# 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 -# libav copy included in the gst-libav package. -PACKAGECONFIG ??= " orc yasm " -PACKAGECONFIG[libav] = "--with-system-libav,,libav" -PACKAGECONFIG[lgpl] = "--enable-lgpl,," -PACKAGECONFIG[yasm] = "--enable-yasm,--disable-yasm,yasm-native" -PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" - - -GSTREAMER_1_0_DEBUG ?= "--disable-debug" - -LIBAV_EXTRA_CONFIGURE = "--with-libav-extra-configure" -LIBAV_EXTRA_CONFIGURE_COMMON = \ -'${LIBAV_EXTRA_CONFIGURE}="${LIBAV_EXTRA_CONFIGURE_COMMON_ARG}"' - -EXTRA_OECONF = "${LIBAV_EXTRA_CONFIGURE_COMMON}" - -FILES_${PN} += "${libdir}/gstreamer-1.0/*.so" -FILES_${PN}-dbg += "${libdir}/gstreamer-1.0/.debug" -FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la" -FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch deleted file mode 100644 index 1d99ad1251..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/0001-Disable-yasm-for-libav-when-disable-yasm.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 54bba228ea52d01fd84941d97be23c03f9862b64 Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani <dv@pseudoterminal.org> -Date: Sat, 6 Apr 2013 01:22:22 +0200 -Subject: [PATCH] Disable yasm for libav when --disable-yasm - -Upstream-Status: Inappropriate [configuration] - -Signed-off-by: Shane Wang <shane.wang@intel.com> -Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> ---- - configure.ac | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 22ede88..ef3c050 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -305,6 +305,12 @@ else - emblibav_configure_args="$emblibav_configure_args --enable-gpl" - fi - -+ AC_ARG_ENABLE(yasm, -+ [AC_HELP_STRING([--disable-yasm], [disable use of yasm assembler])]) -+ if test "x$enable_yasm" = "xno"; then -+ emblibav_configure_args="$emblibav_configure_args --disable-yasm" -+ fi -+ - # if we are cross-compiling, tell libav so - case $host in - *android*) --- -1.8.2 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch deleted file mode 100644 index ccadea4d5c..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav/workaround-to-build-gst-libav-for-i586-with-gcc.patch +++ /dev/null @@ -1,26 +0,0 @@ -Description: Workaround to build libav for i586 with gcc 4.9.2 by avoiding memset -Author: Bernhard Übelacker <bernhardu@vr-web.de> - ---- -Bug-Debian: https://bugs.debian.org/783082 -Last-Update: 2015-04-28 - -Upstream-Status: Backport [debian] - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> - ---- gst-libav-1.4.5.orig/gst-libs/ext/libav/libavcodec/h264_cabac.c -+++ gst-libav-1.4.5/gst-libs/ext/libav/libavcodec/h264_cabac.c -@@ -2020,7 +2020,11 @@ decode_intra_mb: - // In deblocking, the quantizer is 0 - h->cur_pic.qscale_table[mb_xy] = 0; - // All coeffs are present -- memset(h->non_zero_count[mb_xy], 16, 48); -+ /*memset(h->non_zero_count[mb_xy], 16, 48);*/ -+ /* avoiding this memset because it leads at least with gcc4.9.2 to error: 'asm' operand has impossible constraints */ -+ for (size_t i = 0; i < 48; i++) { -+ ( (unsigned char*)(h->non_zero_count[mb_xy]) ) [i] = 16; -+ } - h->cur_pic.mb_type[mb_xy] = mb_type; - h->last_qscale_diff = 0; - return 0; diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.0.bb new file mode 100644 index 0000000000..575e608d65 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.20.0.bb @@ -0,0 +1,28 @@ +SUMMARY = "Libav-based GStreamer 1.x plugin" +DESCRIPTION = "Contains a GStreamer plugin for using the encoders, decoders, \ +muxers, and demuxers provided by FFmpeg." +HOMEPAGE = "http://gstreamer.freedesktop.org/" +SECTION = "multimedia" + +# ffmpeg has comercial license flags so add it as we need ffmpeg as a dependency +LICENSE_FLAGS = "commercial" +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \ + file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \ + " + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz" +SRC_URI[sha256sum] = "5eee5ed8d5082a31b500448e41535c722ee30cd5f8224f32982bbaba2eedef17" + +S = "${WORKDIR}/gst-libav-${PV}" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base ffmpeg" + +inherit meson pkgconfig upstream-version-is-even + +EXTRA_OEMESON += " \ + -Dtests=disabled \ +" + +FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.5.bb deleted file mode 100644 index 97fc7ec3f8..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.5.bb +++ /dev/null @@ -1,27 +0,0 @@ -include gstreamer1.0-libav.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ - file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \ - file://gst-libs/ext/libav/LICENSE;md5=ea66e97a7ac1db978cf3529068a8c948 \ - file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \ - file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \ - file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" - -SRC_URI = " \ - http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \ - file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \ - file://workaround-to-build-gst-libav-for-i586-with-gcc.patch \ -" -SRC_URI[md5sum] = "f4922a46adbcbe7bd01331ff5dc7979d" -SRC_URI[sha256sum] = "605c62624604f3bb5c870844cc1f2711779cc533b004c2aa1d8c0d58557afbbc" - -LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \ - --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \ - --ranlib='${RANLIB}' \ - ${GSTREAMER_1_0_DEBUG} \ - --cross-prefix='${HOST_PREFIX}'" - -S = "${WORKDIR}/gst-libav-${PV}" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb deleted file mode 100644 index bf1b87e6de..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb +++ /dev/null @@ -1,29 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0-libav.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ - file://ext/libav/gstav.h;beginline=1;endline=18;md5=a752c35267d8276fd9ca3db6994fca9c \ - file://gst-libs/ext/libav/LICENSE;md5=23a54f59b82572c203a559346e89ed57 \ - file://gst-libs/ext/libav/COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://gst-libs/ext/libav/COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \ - file://gst-libs/ext/libav/COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \ - file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" - -SRC_URI = "git://anongit.freedesktop.org/gstreamer/gst-libav;branch=master" -S = "${WORKDIR}/git" - -SRCREV = "127202d6f65584891dabf92be031f0d170b0e7f1" - -LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \ - --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \ - ${GSTREAMER_1_0_DEBUG} \ - --cross-prefix='${HOST_PREFIX}'" - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb index 3ef10c3723..57a9adbaec 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-meta-base.bb @@ -1,6 +1,9 @@ -DESCRIPTION = "Gstreamer1.0 package groups" +SUMMARY = "Gstreamer1.0 package groups" LICENSE = "MIT" +# Due to use of COMBINED_FEATURES +PACKAGE_ARCH = "${MACHINE_ARCH}" + inherit packagegroup COMMERCIAL_PLUGINS = "${COMMERCIAL_AUDIO_PLUGINS} ${COMMERCIAL_VIDEO_PLUGINS}" @@ -15,18 +18,18 @@ PACKAGES = "\ gstreamer1.0-meta-debug \ gstreamer1.0-meta-video" -ALLOW_EMPTY_gstreamer1.0-meta-base = "1" -ALLOW_EMPTY_gstreamer1.0-meta-x11-base = "1" -ALLOW_EMPTY_gstreamer1.0-meta-audio = "1" -ALLOW_EMPTY_gstreamer1.0-meta-debug = "1" -ALLOW_EMPTY_gstreamer1.0-meta-video = "1" +ALLOW_EMPTY:gstreamer1.0-meta-base = "1" +ALLOW_EMPTY:gstreamer1.0-meta-x11-base = "1" +ALLOW_EMPTY:gstreamer1.0-meta-audio = "1" +ALLOW_EMPTY:gstreamer1.0-meta-debug = "1" +ALLOW_EMPTY:gstreamer1.0-meta-video = "1" -RDEPENDS_gstreamer1.0-meta-base = "\ +RDEPENDS:gstreamer1.0-meta-base = "\ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'gstreamer1.0-meta-x11-base', '', d)} \ gstreamer1.0 \ gstreamer1.0-plugins-base-playback \ gstreamer1.0-plugins-base-gio \ - gstreamer1.0-plugins-base-alsa \ + ${@bb.utils.contains('COMBINED_FEATURES', 'alsa', 'gstreamer1.0-plugins-base-alsa', '',d)} \ gstreamer1.0-plugins-base-volume \ gstreamer1.0-plugins-base-audioconvert \ gstreamer1.0-plugins-base-audioresample \ @@ -34,13 +37,13 @@ RDEPENDS_gstreamer1.0-meta-base = "\ gstreamer1.0-plugins-base-videoscale \ gstreamer1.0-plugins-base-videoconvert \ gstreamer1.0-plugins-good-autodetect \ - gstreamer1.0-plugins-good-souphttpsrc" + gstreamer1.0-plugins-good-soup" -RRECOMMENDS_gstreamer1.0-meta-x11-base = "\ +RRECOMMENDS:gstreamer1.0-meta-x11-base = "\ gstreamer1.0-plugins-base-ximagesink \ gstreamer1.0-plugins-base-xvimagesink" -RDEPENDS_gstreamer1.0-meta-audio = "\ +RDEPENDS:gstreamer1.0-meta-audio = "\ gstreamer1.0-meta-base \ gstreamer1.0-plugins-base-vorbis \ gstreamer1.0-plugins-base-ogg \ @@ -48,18 +51,18 @@ RDEPENDS_gstreamer1.0-meta-audio = "\ gstreamer1.0-plugins-good-flac \ ${COMMERCIAL_AUDIO_PLUGINS}" -RDEPENDS_gstreamer1.0-meta-debug = "\ +RDEPENDS:gstreamer1.0-meta-debug = "\ gstreamer1.0-meta-base \ gstreamer1.0-plugins-good-debug \ gstreamer1.0-plugins-base-audiotestsrc \ gstreamer1.0-plugins-base-videotestsrc" -RDEPENDS_gstreamer1.0-meta-video = "\ +RDEPENDS:gstreamer1.0-meta-video = "\ gstreamer1.0-meta-base \ gstreamer1.0-plugins-good-avi \ gstreamer1.0-plugins-good-matroska \ gstreamer1.0-plugins-base-theora \ ${COMMERCIAL_VIDEO_PLUGINS}" -RRECOMMENDS_gstreamer1.0-meta-video = "\ +RRECOMMENDS:gstreamer1.0-meta-video = "\ gstreamer1.0-meta-audio" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc deleted file mode 100644 index 26c13361fe..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx.inc +++ /dev/null @@ -1,41 +0,0 @@ -SUMMARY = "OpenMAX IL plugins for GStreamer" -SECTION = "multimedia" -LICENSE = "LGPLv2.1" -LICENSE_FLAGS = "commercial" -HOMEPAGE = "http://www.gstreamer.net/" -DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" -RDEPENDS_${PN} = "libomxil" - -inherit autotools pkgconfig gettext - -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" - -EXTRA_OECONF += "--disable-valgrind --with-omx-target=${GSTREAMER_1_0_OMX_TARGET}" - -python __anonymous () { - omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET", True) - if omx_target in ['generic', 'bellagio']: - # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,# - # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros); - # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this - d.appendVar("CFLAGS", " -I${S}/omx/openmax") - elif omx_target == "rpi": - # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific - d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH", True)) -} - -set_omx_core_name() { - sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf" -} -do_install[postfuncs] += " set_omx_core_name " - -FILES_${PN} += "${libdir}/gstreamer-1.0/*.so" -FILES_${PN}-dbg += "${libdir}/gstreamer-1.0/.debug" -FILES_${PN}-dev += "${libdir}/gstreamer-1.0/*.la" -FILES_${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-omx-fixed-type-error-in-printf-call.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-omx-fixed-type-error-in-printf-call.patch deleted file mode 100644 index a428ac9c91..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx/0001-omx-fixed-type-error-in-printf-call.patch +++ /dev/null @@ -1,30 +0,0 @@ -From f629e041e9f678fcd86ad764a15117dff63c271c Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani <dv@pseudoterminal.org> -Date: Sat, 27 Apr 2013 02:50:25 +0200 -Subject: [PATCH] omx: fixed type error in printf call - -%zu expects size_t - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=699008] - -Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> ---- - omx/gstomx.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/omx/gstomx.c b/omx/gstomx.c -index a2945ed..1eca7cc 100644 ---- a/omx/gstomx.c -+++ b/omx/gstomx.c -@@ -1630,7 +1630,7 @@ gst_omx_port_allocate_buffers_unlocked (GstOMXPort * port, - - GST_INFO_OBJECT (comp->parent, - "Allocating %d buffers of size %zu for %s port %u", n, -- port->port_def.nBufferSize, comp->name, (guint) port->index); -+ (size_t) (port->port_def.nBufferSize), comp->name, (guint) port->index); - - if (!port->buffers) - port->buffers = g_ptr_array_sized_new (n); --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bb deleted file mode 100644 index fe7c91cb30..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.2.0.bb +++ /dev/null @@ -1,12 +0,0 @@ -include gstreamer1.0-omx.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ - file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f" - -SRC_URI = "http://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz" - -SRC_URI[md5sum] = "d24e8c0153c35dfefee3e26b1c2c35f8" -SRC_URI[sha256sum] = "0b4874961e6488ad9e5808114bd486ea981c540907262caab1419355fd82d745" - -S = "${WORKDIR}/gst-omx-${PV}" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.0.bb new file mode 100644 index 0000000000..94c5214a37 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_1.20.0.bb @@ -0,0 +1,47 @@ +SUMMARY = "OpenMAX IL plugins for GStreamer" +DESCRIPTION = "Wraps available OpenMAX IL components and makes them available as standard GStreamer elements." +HOMEPAGE = "http://gstreamer.freedesktop.org/" +SECTION = "multimedia" + +LICENSE = "LGPL-2.1-or-later" +LICENSE_FLAGS = "commercial" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ + file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f" + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-omx/gst-omx-${PV}.tar.xz" + +SRC_URI[sha256sum] = "c1e46b70ac379ac7b3646506370c9e1007b56ae293f4d334bc0e724c76c345dd" + +S = "${WORKDIR}/gst-omx-${PV}" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad virtual/libomxil" + +inherit meson pkgconfig upstream-version-is-even + +GSTREAMER_1_0_OMX_TARGET ?= "bellagio" +GSTREAMER_1_0_OMX_CORE_NAME ?= "${libdir}/libomxil-bellagio.so.0" + +EXTRA_OEMESON += "-Dtarget=${GSTREAMER_1_0_OMX_TARGET}" + +python __anonymous () { + omx_target = d.getVar("GSTREAMER_1_0_OMX_TARGET") + if omx_target in ['generic', 'bellagio']: + # Bellagio headers are incomplete (they are missing the OMX_VERSION_MAJOR,# + # OMX_VERSION_MINOR, OMX_VERSION_REVISION, and OMX_VERSION_STEP macros); + # appending a directory path to gst-omx' internal OpenMAX IL headers fixes this + d.appendVar("CFLAGS", " -I${S}/omx/openmax") + elif omx_target == "rpi": + # Dedicated Raspberry Pi OpenMAX IL support makes this package machine specific + d.setVar("PACKAGE_ARCH", d.getVar("MACHINE_ARCH")) +} + +set_omx_core_name() { + sed -i -e "s;^core-name=.*;core-name=${GSTREAMER_1_0_OMX_CORE_NAME};" "${D}${sysconfdir}/xdg/gstomx.conf" +} +do_install[postfuncs] += " set_omx_core_name " + +FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES:${PN}-staticdev += "${libdir}/gstreamer-1.0/*.a" + +VIRTUAL-RUNTIME_libomxil ?= "libomxil" +RDEPENDS:${PN} = "${VIRTUAL-RUNTIME_libomxil}" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb deleted file mode 100644 index 99c84668ef..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb +++ /dev/null @@ -1,26 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0-omx.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c \ - file://omx/gstomx.h;beginline=1;endline=21;md5=5c8e1fca32704488e76d2ba9ddfa935f" - -SRC_URI = " \ - git://anongit.freedesktop.org/gstreamer/gst-omx;branch=master;name=gst-omx \ - git://anongit.freedesktop.org/gstreamer/common;destsuffix=git/common;branch=master;name=common \ - file://0001-omx-fixed-type-error-in-printf-call.patch \ - " - -S = "${WORKDIR}/git" - -SRCREV_gst-omx = "a2db76b048db278ef0aa798e106b7594264e06c0" -SRCREV_common = "5edcd857b2107cd8b78c16232dd10877513ec157" - -SRCREV_FORMAT = "gst-omx" - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc deleted file mode 100644 index cdedb60b2b..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc +++ /dev/null @@ -1,135 +0,0 @@ -require gstreamer1.0-plugins.inc - -LICENSE = "GPLv2+ & LGPLv2+ & LGPLv2.1+ " - -DEPENDS += "gstreamer1.0-plugins-base libpng jpeg" - -S = "${WORKDIR}/gst-plugins-bad-${PV}" - -SRC_URI += "file://configure-allow-to-disable-libssh2.patch \ - " - -inherit gettext bluetooth - -# opengl packageconfig factored out to make it easy for distros -# and BSP layers to pick either (desktop) opengl, gles2, or no GL -PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)}" - -PACKAGECONFIG ??= " \ - ${PACKAGECONFIG_GL} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'directfb', 'directfb', '', d)} \ - orc curl uvch264 neon sndfile \ - hls sbc dash bz2 smoothstreaming \ - " - -# dash = Dynamic Adaptive Streaming over HTTP -PACKAGECONFIG[assrender] = "--enable-assrender,--disable-assrender,libass" -PACKAGECONFIG[curl] = "--enable-curl,--disable-curl,curl" -PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2" -PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,virtual/libgl libglu" -PACKAGECONFIG[faac] = "--enable-faac,--disable-faac,faac" -PACKAGECONFIG[faad] = "--enable-faad,--disable-faad,faad2" -PACKAGECONFIG[libmms] = "--enable-libmms,--disable-libmms,libmms" -PACKAGECONFIG[modplug] = "--enable-modplug,--disable-modplug,libmodplug" -PACKAGECONFIG[mpg123] = "--enable-mpg123,--disable-mpg123,mpg123" -PACKAGECONFIG[opus] = "--enable-opus,--disable-opus,libopus" -PACKAGECONFIG[flite] = "--enable-flite,--disable-flite,flite-alsa" -PACKAGECONFIG[opencv] = "--enable-opencv,--disable-opencv,opencv" -PACKAGECONFIG[wayland] = "--enable-wayland --enable-egl,--disable-wayland --disable-egl,wayland virtual/egl" -PACKAGECONFIG[uvch264] = "--enable-uvch264,--disable-uvch264,libusb1 udev" -PACKAGECONFIG[directfb] = "--enable-directfb,--disable-directfb,directfb" -PACKAGECONFIG[neon] = "--enable-neon,--disable-neon,neon" -PACKAGECONFIG[openal] = "--enable-openal,--disable-openal,openal-soft" -PACKAGECONFIG[hls] = "--enable-hls,--disable-hls,gnutls" -PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc" -PACKAGECONFIG[dash] = "--enable-dash,--disable-dash,libxml2" -PACKAGECONFIG[bz2] = "--enable-bz2,--disable-bz2,bzip2" -PACKAGECONFIG[fluidsynth] = "--enable-fluidsynth,--disable-fluidsynth,fluidsynth" -PACKAGECONFIG[schroedinger] = "--enable-schro,--disable-schro,schroedinger" -PACKAGECONFIG[smoothstreaming] = "--enable-smoothstreaming,--disable-smoothstreaming,libxml2" -PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,${BLUEZ}" -PACKAGECONFIG[rsvg] = "--enable-rsvg,--disable-rsvg,librsvg" -PACKAGECONFIG[sndfile] = "--enable-sndfile,--disable-sndfile,libsndfile1" -PACKAGECONFIG[webp] = "--enable-webp,--disable-webp,libwebp" -PACKAGECONFIG[rtmp] = "--enable-rtmp,--disable-rtmp,rtmpdump" -PACKAGECONFIG[libssh2] = "--enable-libssh2,--disable-libssh2,libssh2" - -# these plugins have not been ported to 1.0 (yet): -# directdraw vcd apexsink dc1394 lv2 linsys musepack mythtv -# nas timidity teletextdec sdl xvid wininet acm gsettings -# sndio qtwrapper cdxaparse dccp faceoverlay hdvparse tta -# mve nuvdemux osx_video patchdetect quicktime real sdi -# videomeasure gsettings - -# these plugins have no corresponding library in OE-core or meta-openembedded: -# openni2 winks direct3d directdraw directsound winscreencap osx_video -# apple_media android_media avc chromaprint daala dts gme gsm kate ladspa mimic -# mpeg2enc mplex ofa openjpeg opensles pvr resindvd rtmp soundtouch spandsp spc -# srtp vdpau voaacenc voamrwbenc wasapi zbar - -EXTRA_OECONF += " \ - --enable-dvb \ - --enable-shm \ - --enable-fbdev \ - --enable-decklink \ - --disable-acm \ - --disable-android_media \ - --disable-apexsink \ - --disable-apple_media \ - --disable-avc \ - --disable-chromaprint \ - --disable-cocoa \ - --disable-daala \ - --disable-dc1394 \ - --disable-direct3d \ - --disable-directdraw \ - --disable-directsound \ - --disable-dts \ - --disable-gme \ - --disable-gsettings \ - --disable-gsm \ - --disable-kate \ - --disable-ladspa \ - --disable-linsys \ - --disable-lv2 \ - --disable-mimic \ - --disable-mpeg2enc \ - --disable-mplex \ - --disable-musepack \ - --disable-mythtv \ - --disable-nas \ - --disable-ofa \ - --disable-openjpeg \ - --disable-opensles \ - --disable-osx_video \ - --disable-pvr \ - --disable-quicktime \ - --disable-resindvd \ - --disable-sdl \ - --disable-sdltest \ - --disable-sndio \ - --disable-soundtouch \ - --disable-spandsp \ - --disable-spc \ - --disable-srtp \ - --disable-teletextdec \ - --disable-timidity \ - --disable-vcd \ - --disable-vdpau \ - --disable-voaacenc \ - --disable-voamrwbenc \ - --disable-wasapi \ - --disable-wildmidi \ - --disable-wininet \ - --disable-winscreencap \ - --disable-xvid \ - --disable-zbar \ - ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--disable-yadif", "", d)} \ - " - -ARM_INSTRUCTION_SET = "arm" - -FILES_gstreamer1.0-plugins-bad-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch new file mode 100644 index 0000000000..4b3451d321 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch @@ -0,0 +1,26 @@ +From 6c3eeaf6435608f744303c17d52245f926cd28ac Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Tue, 26 Jan 2016 15:16:01 -0800 +Subject: [PATCH] fix maybe-uninitialized warnings when compiling with -Os + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +--- + gst-libs/gst/codecparsers/gstvc1parser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c +index 2c60ced..e8226d8 100644 +--- a/gst-libs/gst/codecparsers/gstvc1parser.c ++++ b/gst-libs/gst/codecparsers/gstvc1parser.c +@@ -1730,7 +1730,7 @@ gst_vc1_parse_sequence_layer (const guint8 * data, gsize size, + GstVC1SeqLayer * seqlayer) + { + guint32 tmp; +- guint8 tmp8; ++ guint8 tmp8 = 0; + guint8 structA[8] = { 0, }; + guint8 structB[12] = { 0, }; + GstBitReader br; diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gl-do-not-check-for-GL-GLU-EGL-GLES2-libs-if-disable.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gl-do-not-check-for-GL-GLU-EGL-GLES2-libs-if-disable.patch deleted file mode 100644 index 042a32c04d..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-gl-do-not-check-for-GL-GLU-EGL-GLES2-libs-if-disable.patch +++ /dev/null @@ -1,41 +0,0 @@ -From deba0da45ec821209a7ed148a4521d562e6512cd Mon Sep 17 00:00:00 2001 -From: Carlos Rafael Giani <dv@pseudoterminal.org> -Date: Wed, 27 Aug 2014 14:47:25 +0200 -Subject: [PATCH] gl: do not check for GL/GLU/EGL/GLES2 libs if disabled in - configuration - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=735522] - -Signed-off-by: Carlos Rafael Giani <dv@pseudoterminal.org> ---- - configure.ac | 14 ++++++++++---- - 1 file changed, 10 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 1a46afb..e85d4ba 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -661,10 +661,16 @@ case $host in - fi - ;; - *) -- AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h) -- AG_GST_CHECK_LIBHEADER(GLU, GLU, gluSphere,, GL/glu.h) -- AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h) -- AG_GST_CHECK_LIBHEADER(EGL, EGL, eglGetError,, EGL/egl.h) -+ if test "x$NEED_GL" != "xno"; then -+ AG_GST_CHECK_LIBHEADER(GL, GL, glTexImage2D,, GL/gl.h) -+ AG_GST_CHECK_LIBHEADER(GLU, GLU, gluSphere,, GL/glu.h) -+ fi -+ if test "x$NEED_GLES2" != "xno"; then -+ AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h) -+ fi -+ if test "x$NEED_EGL" != "xno"; then -+ AG_GST_CHECK_LIBHEADER(EGL, EGL, eglGetError,, EGL/egl.h) -+ fi - - old_LIBS=$LIBS - old_CFLAGS=$CFLAGS --- -1.8.3.2 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch deleted file mode 100644 index f677603ebc..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0001-glimagesink-Downrank-to-marginal.patch +++ /dev/null @@ -1,32 +0,0 @@ -From c6b37a80806f9128de47f1ccc3f2354f8d436bb6 Mon Sep 17 00:00:00 2001 -From: Alexander Kanavin <alex.kanavin@gmail.com> -Date: Thu, 24 Sep 2015 19:47:32 +0300 -Subject: [PATCH] glimagesink: Downrank to marginal - -On desktop, where there is good OpenGL, xvimagesink will come up first, -on other platforms, OpenGL can't be trusted because it's either software (like -in a VM) or broken (like on embedded)., so let ximagesink come above. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=751684] - -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> ---- - ext/gl/gstopengl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -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) - #endif - - if (!gst_element_register (plugin, "glimagesink", -- GST_RANK_SECONDARY, GST_TYPE_GLIMAGE_SINK)) { -+ GST_RANK_MARGINAL, GST_TYPE_GLIMAGE_SINK)) { - return FALSE; - } - --- -2.1.4 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch new file mode 100644 index 0000000000..e3e5d9fb60 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0002-avoid-including-sys-poll.h-directly.patch @@ -0,0 +1,28 @@ +From 701255c5797f222f0c47ace6437d213607b98d1e Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Wed, 3 Feb 2016 18:05:41 -0800 +Subject: [PATCH] avoid including <sys/poll.h> directly + +musl libc generates warnings if <sys/poll.h> is included directly. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +--- + sys/dvb/gstdvbsrc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c +index 92c918c..5e27871 100644 +--- a/sys/dvb/gstdvbsrc.c ++++ b/sys/dvb/gstdvbsrc.c +@@ -98,7 +98,7 @@ + #include <gst/gst.h> + #include <gst/glib-compat-private.h> + #include <sys/ioctl.h> +-#include <sys/poll.h> ++#include <poll.h> + #include <fcntl.h> + #include <errno.h> + #include <stdio.h> diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch new file mode 100644 index 0000000000..280cbf984a --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch @@ -0,0 +1,86 @@ +From 001fa08542dd5fc79571f7c803b2d3dd59c04a06 Mon Sep 17 00:00:00 2001 +From: Andre McCurdy <armccurdy@gmail.com> +Date: Tue, 9 Feb 2016 14:00:00 -0800 +Subject: [PATCH] ensure valid sentinals for gst_structure_get() etc + +For GStreamer functions declared with G_GNUC_NULL_TERMINATED, +ie __attribute__((__sentinel__)), gcc will generate a warning if the +last parameter passed to the function is not NULL (where a valid NULL +in this context is defined as zero with any pointer type). + +The C callers to such functions within gst-plugins-bad use the C NULL +definition (ie ((void*)0)), which is a valid sentinel. + +However the C++ NULL definition (ie 0L), is not a valid sentinel +without an explicit cast to a pointer type. + +Upstream-Status: Pending + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +--- + sys/decklink/gstdecklink.cpp | 10 +++++----- + sys/decklink/gstdecklinkaudiosrc.cpp | 2 +- + sys/decklink/gstdecklinkvideosink.cpp | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp +index 3f79deb..96600c6 100644 +--- a/sys/decklink/gstdecklink.cpp ++++ b/sys/decklink/gstdecklink.cpp +@@ -680,7 +680,7 @@ gst_decklink_mode_get_generic_structure (GstDecklinkModeEnum e) + "pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d, + "interlace-mode", G_TYPE_STRING, + mode->interlaced ? "interleaved" : "progressive", +- "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL); ++ "framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, (void*)NULL); + + return s; + } +@@ -705,16 +705,16 @@ gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f, + case bmdFormat8BitYUV: /* '2vuy' */ + gst_structure_set (s, "format", G_TYPE_STRING, "UYVY", + "colorimetry", G_TYPE_STRING, mode->colorimetry, +- "chroma-site", G_TYPE_STRING, "mpeg2", NULL); ++ "chroma-site", G_TYPE_STRING, "mpeg2", (void*)NULL); + break; + case bmdFormat10BitYUV: /* 'v210' */ +- gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL); ++ gst_structure_set (s, "format", G_TYPE_STRING, "v210", (void*)NULL); + break; + case bmdFormat8BitARGB: /* 'ARGB' */ +- gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL); ++ gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", (void*)NULL); + break; + case bmdFormat8BitBGRA: /* 'BGRA' */ +- gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL); ++ gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", (void*)NULL); + break; + case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */ + case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */ +diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp +index 50ad5cc..d209180 100644 +--- a/sys/decklink/gstdecklinkaudiosrc.cpp ++++ b/sys/decklink/gstdecklinkaudiosrc.cpp +@@ -388,7 +388,7 @@ gst_decklink_audio_src_start (GstDecklinkAudioSrc * self) + g_mutex_unlock (&self->input->lock); + + if (videosrc) { +- g_object_get (videosrc, "connection", &vconn, NULL); ++ g_object_get (videosrc, "connection", &vconn, (void *) NULL); + gst_object_unref (videosrc); + + switch (vconn) { +diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp +index a64c046..07a09e8 100644 +--- a/sys/decklink/gstdecklinkvideosink.cpp ++++ b/sys/decklink/gstdecklinkvideosink.cpp +@@ -288,7 +288,7 @@ reset_framerate (GstCapsFeatures * features, GstStructure * structure, + gpointer user_data) + { + gst_structure_set (structure, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, +- G_MAXINT, 1, NULL); ++ G_MAXINT, 1, (void *) NULL); + + return TRUE; + } diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch new file mode 100644 index 0000000000..029b80e174 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch @@ -0,0 +1,33 @@ +From 3bc5d48257032b6bbee532aad15062fbbcc43bfe Mon Sep 17 00:00:00 2001 +From: Andrey Zhizhikin <andrey.z@gmail.com> +Date: Mon, 27 Jan 2020 10:22:35 +0000 +Subject: [PATCH] opencv: resolve missing opencv data dir in yocto build + +When Yocto build is performed, opencv searches for data dir using simple +'test' command, this fails because pkg-config provides an absolute +path on the target which needs to be prepended by PKG_CONFIG_SYSROOT_DIR +in order for the 'test' utility to pick up the absolute path. + +Upstream-Status: Inappropriate [OE-specific] + +Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com> +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> + +--- + ext/opencv/meson.build | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/ext/opencv/meson.build b/ext/opencv/meson.build +index 1d86b90..b5c8b95 100644 +--- a/ext/opencv/meson.build ++++ b/ext/opencv/meson.build +@@ -87,6 +87,9 @@ if opencv_found + opencv_prefix = opencv_dep.get_variable('prefix') + gstopencv_cargs += ['-DOPENCV_PREFIX="' + opencv_prefix + '"'] + ++ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip() ++ opencv_prefix = pkgconf_sysroot + opencv_prefix ++ + # Check the data dir used by opencv for its xml data files + # Use prefix from pkg-config to be compatible with cross-compilation + r = run_command('test', '-d', opencv_prefix + '/share/opencv', check: false) diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch new file mode 100644 index 0000000000..273b45bd49 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/0005-msdk-fix-includedir-path.patch @@ -0,0 +1,40 @@ +From e31f68c46ff0c29fa3c22755f18d5dde87b23bf2 Mon Sep 17 00:00:00 2001 +From: Naveen Saini <naveen.kumar.saini@intel.com> +Date: Wed, 30 Dec 2020 16:37:47 +0800 +Subject: [PATCH] msdk: fix includedir path + +In cross compilation, need to prepend PKG_CONFIG_SYSROOT_DIR to the dir path. + +Upstream-Status: Inappropriate [OE-specific] + +Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> + +--- + sys/msdk/meson.build | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/sys/msdk/meson.build b/sys/msdk/meson.build +index 24aabc7..6003bb7 100644 +--- a/sys/msdk/meson.build ++++ b/sys/msdk/meson.build +@@ -46,7 +46,9 @@ if mfx_api != 'oneVPL' + mfx_dep = dependency('libmfx', version: ['>= 1.0', '<= 1.99'], required: false) + + if mfx_dep.found() ++ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip() + mfx_incdir = mfx_dep.get_variable('includedir') ++ mfx_incdir = pkgconf_sysroot + mfx_incdir + mfx_inc = [] + use_msdk = true + else +@@ -75,7 +77,9 @@ if not use_msdk and mfx_api != 'MSDK' + mfx_dep = dependency('vpl', version: '>= 2.2', required: false) + + if mfx_dep.found() ++ pkgconf_sysroot = run_command(python3, '-c', 'import os; print(os.environ.get("PKG_CONFIG_SYSROOT_DIR"))').stdout().strip() + mfx_incdir = mfx_dep.get_variable('includedir') ++ mfx_incdir = pkgconf_sysroot + mfx_incdir + mfx_inc = [] + use_onevpl = true + endif diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch deleted file mode 100644 index d52afd5d57..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/configure-allow-to-disable-libssh2.patch +++ /dev/null @@ -1,64 +0,0 @@ -From f59c5269f92d59a5296cbfeeb682d42095cd88ad Mon Sep 17 00:00:00 2001 -From: Wenzong Fan <wenzong.fan@windriver.com> -Date: Thu, 18 Sep 2014 02:24:07 -0400 -Subject: [PATCH] gstreamer1.0-plugins-bad: allow to disable libssh2 - -libssh2 is automatically linked to if present, this undetermined -dependency may cause build errors like: - - .../x86_64-poky-linux/4.9.0/ld: cannot find -lssh2 - -libssh2 isn't an oe-core recipe, so allow to disable it from -configure. - -Upstream-Status: Pending - -Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> ---- - configure.ac | 23 +++++++++++++++++------ - 1 file changed, 17 insertions(+), 6 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 0e95c5c..12153b4 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1901,6 +1901,15 @@ AG_GST_CHECK_FEATURE(CHROMAPRINT, [chromaprint], chromaprint, [ - ]) - - dnl *** Curl *** -+AC_ARG_ENABLE([libssh2], -+ [ --enable-libssh2 enable LIBSSH2 support @<:@default=auto@:>@], -+ [case "${enableval}" in -+ yes) NEED_SSH2=yes ;; -+ no) NEED_SSH2=no ;; -+ auto) NEED_SSH2=auto ;; -+ *) AC_MSG_ERROR([bad value ${enableval} for --enable-libssh2]) ;; -+ esac],[NEED_SSH2=auto]) -+ - translit(dnm, m, l) AM_CONDITIONAL(USE_CURL, true) - AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [ - PKG_CHECK_MODULES(CURL, libcurl >= 7.21.0, [ -@@ -1915,12 +1924,14 @@ AG_GST_CHECK_FEATURE(CURL, [Curl plugin], curl, [ - ]) - AC_SUBST(CURL_CFLAGS) - AC_SUBST(CURL_LIBS) -- PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [ -- HAVE_SSH2="yes" -- AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available]) -- ], [ -- HAVE_SSH2="no" -- ]) -+ if test "x$NEED_SSH2" != "xno"; then -+ PKG_CHECK_MODULES(SSH2, libssh2 >= 1.4.3, [ -+ HAVE_SSH2="yes" -+ AC_DEFINE(HAVE_SSH2, 1, [Define if libssh2 is available]) -+ ], [ -+ HAVE_SSH2="no" -+ ]) -+ fi - AM_CONDITIONAL(USE_SSH2, test "x$HAVE_SSH2" = "xyes") - AC_SUBST(SSH2_CFLAGS) - AC_SUBST(SSH2_LIBS) --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb new file mode 100644 index 0000000000..44532222fa --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.20.0.bb @@ -0,0 +1,165 @@ +require gstreamer1.0-plugins-common.inc + +DESCRIPTION = "'Bad' GStreamer plugins and helper libraries " +HOMEPAGE = "https://gstreamer.freedesktop.org/" +BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues" + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-${PV}.tar.xz \ + file://0001-fix-maybe-uninitialized-warnings-when-compiling-with.patch \ + file://0002-avoid-including-sys-poll.h-directly.patch \ + file://0003-ensure-valid-sentinals-for-gst_structure_get-etc.patch \ + file://0004-opencv-resolve-missing-opencv-data-dir-in-yocto-buil.patch \ + file://0005-msdk-fix-includedir-path.patch \ + " +SRC_URI[sha256sum] = "015b8d4d9a395ebf444d40876867a2034dd3304b3ad48bc3a0dd0c1ee71dc11d" + +S = "${WORKDIR}/gst-plugins-bad-${PV}" + +LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" + +DEPENDS += "gstreamer1.0-plugins-base" + +inherit gobject-introspection + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', 'bluez', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'directfb vulkan x11', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)} \ + bz2 closedcaption curl dash dtls hls openssl sbc smoothstreaming \ + sndfile ttml uvch264 webp \ + ${@bb.utils.contains('TUNE_FEATURES', 'mx32', '', 'rsvg', d)} \ +" + +PACKAGECONFIG[aom] = "-Daom=enabled,-Daom=disabled,aom" +PACKAGECONFIG[assrender] = "-Dassrender=enabled,-Dassrender=disabled,libass" +PACKAGECONFIG[bluez] = "-Dbluez=enabled,-Dbluez=disabled,bluez5" +PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2" +PACKAGECONFIG[closedcaption] = "-Dclosedcaption=enabled,-Dclosedcaption=disabled,pango cairo" +PACKAGECONFIG[curl] = "-Dcurl=enabled,-Dcurl=disabled,curl" +PACKAGECONFIG[dash] = "-Ddash=enabled,-Ddash=disabled,libxml2" +PACKAGECONFIG[dc1394] = "-Ddc1394=enabled,-Ddc1394=disabled,libdc1394" +PACKAGECONFIG[directfb] = "-Ddirectfb=enabled,-Ddirectfb=disabled,directfb" +PACKAGECONFIG[dtls] = "-Ddtls=enabled,-Ddtls=disabled,openssl" +PACKAGECONFIG[faac] = "-Dfaac=enabled,-Dfaac=disabled,faac" +PACKAGECONFIG[fluidsynth] = "-Dfluidsynth=enabled,-Dfluidsynth=disabled,fluidsynth" +PACKAGECONFIG[hls] = "-Dhls=enabled,-Dhls=disabled," +# Pick atleast one crypto backend below when enabling hls +PACKAGECONFIG[nettle] = "-Dhls-crypto=nettle,,nettle" +PACKAGECONFIG[openssl] = "-Dhls-crypto=openssl,,openssl" +PACKAGECONFIG[gcrypt] = "-Dhls-crypto=libgcrypt,,libgcrypt" +# the gl packageconfig enables OpenGL elements that haven't been ported +# to -base yet. They depend on the gstgl library in -base, so we do +# not add GL dependencies here, since these are taken care of in -base. +PACKAGECONFIG[gl] = "-Dgl=enabled,-Dgl=disabled," +PACKAGECONFIG[kms] = "-Dkms=enabled,-Dkms=disabled,libdrm" +PACKAGECONFIG[libde265] = "-Dlibde265=enabled,-Dlibde265=disabled,libde265" +PACKAGECONFIG[libssh2] = "-Dcurl-ssh2=enabled,-Dcurl-ssh2=disabled,libssh2" +PACKAGECONFIG[lcms2] = "-Dcolormanagement=enabled,-Dcolormanagement=disabled,lcms" +PACKAGECONFIG[modplug] = "-Dmodplug=enabled,-Dmodplug=disabled,libmodplug" +PACKAGECONFIG[msdk] = "-Dmsdk=enabled,-Dmsdk=disabled,intel-mediasdk" +PACKAGECONFIG[neon] = "-Dneon=enabled,-Dneon=disabled,neon" +PACKAGECONFIG[openal] = "-Dopenal=enabled,-Dopenal=disabled,openal-soft" +PACKAGECONFIG[opencv] = "-Dopencv=enabled,-Dopencv=disabled,opencv" +PACKAGECONFIG[openh264] = "-Dopenh264=enabled,-Dopenh264=disabled,openh264" +PACKAGECONFIG[openjpeg] = "-Dopenjpeg=enabled,-Dopenjpeg=disabled,openjpeg" +PACKAGECONFIG[openmpt] = "-Dopenmpt=enabled,-Dopenmpt=disabled,libopenmpt" +# the opus encoder/decoder elements are now in the -base package, +# but the opus parser remains in -bad +PACKAGECONFIG[opusparse] = "-Dopus=enabled,-Dopus=disabled,libopus" +PACKAGECONFIG[rsvg] = "-Drsvg=enabled,-Drsvg=disabled,librsvg" +PACKAGECONFIG[rtmp] = "-Drtmp=enabled,-Drtmp=disabled,rtmpdump" +PACKAGECONFIG[sbc] = "-Dsbc=enabled,-Dsbc=disabled,sbc" +PACKAGECONFIG[sctp] = "-Dsctp=enabled,-Dsctp=disabled" +PACKAGECONFIG[smoothstreaming] = "-Dsmoothstreaming=enabled,-Dsmoothstreaming=disabled,libxml2" +PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" +PACKAGECONFIG[srt] = "-Dsrt=enabled,-Dsrt=disabled,srt" +PACKAGECONFIG[srtp] = "-Dsrtp=enabled,-Dsrtp=disabled,libsrtp" +PACKAGECONFIG[tinyalsa] = "-Dtinyalsa=enabled,-Dtinyalsa=disabled,tinyalsa" +PACKAGECONFIG[ttml] = "-Dttml=enabled,-Dttml=disabled,libxml2 pango cairo" +PACKAGECONFIG[uvch264] = "-Duvch264=enabled,-Duvch264=disabled,libusb1 libgudev" +PACKAGECONFIG[v4l2codecs] = "-Dv4l2codecs=enabled,-Dv4l2codecs=disabled,libgudev" +PACKAGECONFIG[va] = "-Dva=enabled,-Dva=disabled,libva" +PACKAGECONFIG[voaacenc] = "-Dvoaacenc=enabled,-Dvoaacenc=disabled,vo-aacenc" +PACKAGECONFIG[voamrwbenc] = "-Dvoamrwbenc=enabled,-Dvoamrwbenc=disabled,vo-amrwbenc" +PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-loader shaderc-native" +PACKAGECONFIG[wayland] = "-Dwayland=enabled,-Dwayland=disabled,wayland-native wayland wayland-protocols libdrm" +PACKAGECONFIG[webp] = "-Dwebp=enabled,-Dwebp=disabled,libwebp" +PACKAGECONFIG[webrtc] = "-Dwebrtc=enabled,-Dwebrtc=disabled,libnice" +PACKAGECONFIG[webrtcdsp] = "-Dwebrtcdsp=enabled,-Dwebrtcdsp=disabled,webrtc-audio-processing" +PACKAGECONFIG[zbar] = "-Dzbar=enabled,-Dzbar=disabled,zbar" +PACKAGECONFIG[x11] = "-Dx11=enabled,-Dx11=disabled,libxcb libxkbcommon" + +# GPL - only built if gpl option is also enabled! +PACKAGECONFIG[gpl] = "-Dgpl=enabled,-Dgpl=disabled" +PACKAGECONFIG[faad] = "-Dfaad=enabled,-Dfaad=disabled,faad2" +PACKAGECONFIG[resindvd] = "-Dresindvd=enabled,-Dresindvd=disabled,libdvdread libdvdnav" +PACKAGECONFIG[x265] = "-Dx265=enabled,-Dx265=disabled,x265" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Daes=enabled \ + -Dcodecalpha=enabled \ + -Ddecklink=enabled \ + -Ddvb=enabled \ + -Dfbdev=enabled \ + -Dipcpipeline=enabled \ + -Dshm=enabled \ + -Dtranscode=enabled \ + -Dandroidmedia=disabled \ + -Dapplemedia=disabled \ + -Dasio=disabled \ + -Davtp=disabled \ + -Dbs2b=disabled \ + -Dchromaprint=disabled \ + -Dd3dvideosink=disabled \ + -Dd3d11=disabled \ + -Ddirectsound=disabled \ + -Ddts=disabled \ + -Dfdkaac=disabled \ + -Dflite=disabled \ + -Dgme=disabled \ + -Dgs=disabled \ + -Dgsm=disabled \ + -Diqa=disabled \ + -Dkate=disabled \ + -Dladspa=disabled \ + -Dldac=disabled \ + -Dlv2=disabled \ + -Dmagicleap=disabled \ + -Dmediafoundation=disabled \ + -Dmicrodns=disabled \ + -Dmpeg2enc=disabled \ + -Dmplex=disabled \ + -Dmusepack=disabled \ + -Dnvcodec=disabled \ + -Dopenexr=disabled \ + -Dopenni2=disabled \ + -Dopenaptx=disabled \ + -Dopensles=disabled \ + -Donnx=disabled \ + -Dqroverlay=disabled \ + -Dsoundtouch=disabled \ + -Dspandsp=disabled \ + -Dsvthevcenc=disabled \ + -Dteletext=disabled \ + -Dwasapi=disabled \ + -Dwasapi2=disabled \ + -Dwildmidi=disabled \ + -Dwinks=disabled \ + -Dwinscreencap=disabled \ + -Dwpe=disabled \ + -Dzxing=disabled \ +" + +export OPENCV_PREFIX = "${STAGING_DIR_TARGET}${prefix}" + +ARM_INSTRUCTION_SET:armv4 = "arm" +ARM_INSTRUCTION_SET:armv5 = "arm" + +FILES:${PN}-freeverb += "${datadir}/gstreamer-1.0/presets/GstFreeverb.prs" +FILES:${PN}-opencv += "${datadir}/gst-plugins-bad/1.0/opencv*" +FILES:${PN}-transcode += "${datadir}/gstreamer-1.0/encoding-profiles" +FILES:${PN}-voamrwbenc += "${datadir}/gstreamer-1.0/presets/GstVoAmrwbEnc.prs" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb deleted file mode 100644 index 687366924e..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb +++ /dev/null @@ -1,16 +0,0 @@ -include gstreamer1.0-plugins-bad.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ - file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a \ - file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 \ - file://gst/tta/crc32.h;beginline=12;endline=29;md5=27db269c575d1e5317fffca2d33b3b50" - -SRC_URI += "file://0001-gl-do-not-check-for-GL-GLU-EGL-GLES2-libs-if-disable.patch \ - file://0001-glimagesink-Downrank-to-marginal.patch \ - " - -SRC_URI[md5sum] = "e0bb39412cf4a48fe0397bcf3a7cd451" -SRC_URI[sha256sum] = "152fad7250683d72f9deb36c5685428338365fe4a4c87ffe15e38783b14f983c" - -S = "${WORKDIR}/gst-plugins-bad-${PV}" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb deleted file mode 100644 index 309505f7db..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb +++ /dev/null @@ -1,26 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0-plugins-bad.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ - file://gst/tta/filters.h;beginline=12;endline=29;md5=8a08270656f2f8ad7bb3655b83138e5a \ - file://COPYING.LIB;md5=21682e4e8fea52413fd26c60acb907e5 \ - file://gst/tta/crc32.h;beginline=12;endline=29;md5=27db269c575d1e5317fffca2d33b3b50" - -S = "${WORKDIR}/git" - -SRCREV = "6e5db57d2446a753aaa76bee268e1f95600b14ce" - -PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc" -PACKAGECONFIG[hls] = "--enable-hls,--disable-hls,gnutls" - -EXTRA_OECONF += " \ - -disable-openjpeg \ - " - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc deleted file mode 100644 index 47f3f40110..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc +++ /dev/null @@ -1,39 +0,0 @@ -require gstreamer1.0-plugins.inc - -LICENSE = "GPLv2+ & LGPLv2+" - -DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxv', '', d)}" -DEPENDS += "freetype liboil util-linux" - -inherit gettext - -PACKAGES_DYNAMIC =+ "^libgst.*" - -PACKAGECONFIG ??= " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa', '', d)} \ - orc ivorbis ogg theora vorbis pango \ - " - -X11DEPENDS = "virtual/libx11 libsm libxrender" -X11ENABLEOPTS = "--enable-x --enable-xvideo --enable-xshm" -X11DISABLEOPTS = "--disable-x --disable-xvideo --disable-xshm" -PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" -PACKAGECONFIG[alsa] = "--enable-alsa,--disable-alsa,alsa-lib" -PACKAGECONFIG[ivorbis] = "--enable-ivorbis,--disable-ivorbis,tremor" -PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg" -PACKAGECONFIG[theora] = "--enable-theora,--disable-theora,libtheora" -PACKAGECONFIG[vorbis] = "--enable-vorbis,--disable-vorbis,libvorbis" -PACKAGECONFIG[pango] = "--enable-pango,--disable-pango,pango" - - -# cdparanoia and libvisual do not seem to exist anywhere in OE -EXTRA_OECONF += " \ - --disable-freetypetest \ - --disable-cdparanoia \ - --disable-libvisual \ -" - -FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict" - -CACHED_CONFIGUREVARS_append_x86 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch index 284abbe94b..d5d9838372 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/get-caps-from-src-pad-when-query-caps.patch +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch @@ -1,7 +1,7 @@ -From af0dac26f62aaceb4bf266720911953793e0fc5d Mon Sep 17 00:00:00 2001 +From f9d48cd85ee68207733b1b91a00453462c33524a Mon Sep 17 00:00:00 2001 From: zhouming <b42586@freescale.com> Date: Wed, 14 May 2014 10:16:20 +0800 -Subject: [PATCH] ENGR00312515: get caps from src pad when query caps +Subject: [PATCH 1/4] ENGR00312515: get caps from src pad when query caps https://bugzilla.gnome.org/show_bug.cgi?id=728312 @@ -9,17 +9,17 @@ Upstream-Status: Pending Signed-off-by: zhouming <b42586@freescale.com> --- - gst-libs/gst/tag/gsttagdemux.c | 13 +++++++++++++ + gst-libs/gst/tag/gsttagdemux.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) mode change 100644 => 100755 gst-libs/gst/tag/gsttagdemux.c diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c old mode 100644 new mode 100755 -index 9b6c478..ae2294a +index f545857..62d10ef --- 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) +@@ -1777,6 +1777,19 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) } break; } @@ -40,5 +40,5 @@ index 9b6c478..ae2294a res = gst_pad_query_default (pad, parent, query); break; -- -1.7.9.5 +2.28.0 diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch deleted file mode 100644 index 03dca956a8..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 3781d40940d46d7e6a502092d24aac7997f6da5b Mon Sep 17 00:00:00 2001 -From: Mingke Wang <mingke.wang@freescale.com> -Date: Thu, 5 Mar 2015 12:06:23 +0800 -Subject: [PATCH 1/4] basetextoverlay: make memory copy when video buffer's - memory is ready only - -1. since gst_buffer_make_writable just lookup the refcount to determine if - a buffer is writable, and it will use _gst_buffer_copy() which don't - perform a deep memory copy even if the flag of a memory is set to - GST_MEMORY_FLAG_READONLY. So, we detect the memory flag and use - gst_buffer_copy_region with GST_BUFFER_COPY_DEEP parameter to perform - deep memory copy. if the allocator of a memory don't support mem_copy - interface, the it will return NULL, if this case, we can use - gst_buffer_make_writable() to get a shared memory buffer or the orignal - buffer if the buffer's refcount is 1. -2. new feature is no added if caps has no feature during caps negotiation - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747495] - -Signed-off-by: Mingke Wang <mingke.wang@freescale.com> - -diff --git a/ext/pango/gstbasetextoverlay.c b/ext/pango/gstbasetextoverlay.c -index c919861..3c0a1d7 100755 ---- a/ext/pango/gstbasetextoverlay.c -+++ b/ext/pango/gstbasetextoverlay.c -@@ -747,6 +747,7 @@ gst_base_text_overlay_negotiate (GstBaseTextOverlay * overlay, GstCaps * caps) - if (f == NULL) { - f = gst_caps_features_new - (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION, NULL); -+ gst_caps_set_features(overlay_caps, 0, f); - } else { - gst_caps_features_add (f, - GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION); -@@ -1890,16 +1891,71 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay, - if (gst_pad_check_reconfigure (overlay->srcpad)) - gst_base_text_overlay_negotiate (overlay, NULL); - -- video_frame = gst_buffer_make_writable (video_frame); -- - if (overlay->attach_compo_to_buffer) { - GST_DEBUG_OBJECT (overlay, "Attaching text overlay image to video buffer"); -+ video_frame = gst_buffer_make_writable (video_frame); - gst_buffer_add_video_overlay_composition_meta (video_frame, - overlay->composition); - /* FIXME: emulate shaded background box if want_shading=true */ - goto done; - } - -+ gint m = gst_buffer_n_memory(video_frame); -+ gboolean mem_rdonly = FALSE; -+ GstMemory *mem; -+ GstBuffer *orig = video_frame; -+ -+ while (--m>=0) { -+ mem = gst_buffer_get_memory(video_frame, m); -+ if (GST_MEMORY_IS_READONLY(mem)) { -+ mem_rdonly = TRUE; -+ gst_memory_unref (mem); -+ break; -+ } -+ gst_memory_unref (mem); -+ } -+ -+ if (mem_rdonly) { -+ // since gst_buffer_make_writable just lookup the refcount to determine if -+ // a buffer is writable, and it will use _gst_buffer_copy() which don't -+ // perform a deep memory copy even if the flag of a memory is set to -+ // GST_MEMORY_FLAG_READONLY. So, we detect the memory flag and use -+ // gst_buffer_copy_region with GST_BUFFER_COPY_DEEP parameter to perform -+ // deep memory copy. if the allocator of a memory don't support mem_copy -+ // interface, the it will return NULL, if this case, we can use -+ // gst_buffer_make_writable() to get a shared memory buffer or the orignal -+ // buffer if the buffer's refcount is 1. -+ GstBuffer *new_buf = gst_buffer_copy_region (video_frame, -+ GST_BUFFER_COPY_ALL | GST_BUFFER_COPY_DEEP, 0, -1); -+ -+ GST_DEBUG_OBJECT (overlay, "copy %s video frame buffer %p -> %p", -+ g_type_name (GST_MINI_OBJECT_TYPE (video_frame)), video_frame, new_buf); -+ -+ if (!new_buf) { -+ //maybe the allocator don't support mem_copy interface, the we just use -+ //gst_buffer_make_writable() to get a writable buffer. -+ video_frame = gst_buffer_make_writable (video_frame); -+ } else { -+ gst_mini_object_unref (video_frame); -+ GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_TAG_MEMORY); -+ video_frame = new_buf; -+ } -+ -+ if (!video_frame) { -+ GST_WARNING_OBJECT (overlay, "make writable buffer failed"); -+ return GST_FLOW_OK; -+ } -+ -+ m = gst_buffer_n_memory(video_frame); -+ while (--m>=0) { -+ mem = gst_buffer_get_memory(video_frame, m); -+ GST_MEMORY_FLAG_UNSET (mem, GST_MEMORY_FLAG_READONLY); -+ gst_memory_unref (mem); -+ } -+ } else { -+ video_frame = gst_buffer_make_writable (video_frame); -+ } -+ - if (!gst_video_frame_map (&frame, &overlay->info, video_frame, - GST_MAP_READWRITE)) - goto invalid_frame; -@@ -1918,6 +1974,18 @@ gst_base_text_overlay_push_frame (GstBaseTextOverlay * overlay, - - gst_video_frame_unmap (&frame); - -+ if (mem_rdonly && orig == video_frame) { -+ //if we used the original buffer and it's mem is set to read only, -+ //recover the memory ready only flag since we unset it before -+ // gst_video_frame_map () -+ m = gst_buffer_n_memory(video_frame); -+ while (--m>=0) { -+ mem = gst_buffer_get_memory(video_frame, m); -+ GST_MEMORY_FLAGS(mem) |= (GST_MEMORY_FLAG_READONLY); -+ gst_memory_unref (mem); -+ } -+ } -+ - done: - - return gst_pad_push (overlay->srcpad, video_frame); --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch deleted file mode 100644 index 3db4724fe6..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 269f642c45d85cfd630ed490478e6bd6b71a767f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> -Date: Tue, 16 Sep 2014 01:07:18 +0300 -Subject: [PATCH] video-frame: Don't ref buffers twice when mapping - -Upstream-Status: Backport [1.5.1] ---- - gst-libs/gst/video/video-frame.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c -index 01f23c0..8a9ae96 100644 ---- a/gst-libs/gst/video/video-frame.c -+++ b/gst-libs/gst/video/video-frame.c -@@ -105,7 +105,7 @@ gst_video_frame_map_id (GstVideoFrame * frame, GstVideoInfo * info, - frame->data[i] = frame->map[0].data + info->offset[i]; - } - } -- frame->buffer = gst_buffer_ref (buffer); -+ frame->buffer = buffer; - if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0) - gst_buffer_ref (frame->buffer); - --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch deleted file mode 100644 index 39c146aade..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0a78555ea6c8c2f1ee27ee4707e8d7aa00ab7a66 Mon Sep 17 00:00:00 2001 -From: Mingke Wang <mingke.wang@freescale.com> -Date: Thu, 19 Mar 2015 14:15:25 +0800 -Subject: [PATCH 2/4] gstplaysink: don't set async of custom text-sink to - false - -set async to false lead to A/V sync problem when seeking. -the preroll need use GAP event instead of set async to false. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747499] - -Signed-off-by: Mingke Wang <mingke.wang@freescale.com> - -diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c -old mode 100644 -new mode 100755 -index f5a2d42..fba0172 ---- a/gst/playback/gstplaysink.c -+++ b/gst/playback/gstplaysink.c -@@ -2408,7 +2408,7 @@ gen_text_chain (GstPlaySink * playsink) - G_TYPE_BOOLEAN); - if (elem) { - /* make sure the sparse subtitles don't participate in the preroll */ -- g_object_set (elem, "async", FALSE, NULL); -+ //g_object_set (elem, "async", FALSE, NULL); - GST_DEBUG_OBJECT (playsink, "adding custom text sink"); - gst_bin_add (bin, chain->sink); - /* NOTE streamsynchronizer needs streams decoupled */ --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch index 9fbebd5700..e453a500c9 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-ssaparse-enhance-SSA-text-lines-parsing.patch +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-ssaparse-enhance-SSA-text-lines-parsing.patch @@ -1,7 +1,7 @@ -From be6163cfa3a255493f9d75bad9541cbfe1723fee Mon Sep 17 00:00:00 2001 +From f587861bbe12ad0b10370f835592746aafedbf56 Mon Sep 17 00:00:00 2001 From: Mingke Wang <mingke.wang@freescale.com> Date: Thu, 19 Mar 2015 14:17:10 +0800 -Subject: [PATCH 3/4] ssaparse: enhance SSA text lines parsing. +Subject: [PATCH 2/4] ssaparse: enhance SSA text lines parsing. some parser will pass in the original ssa text line which starts with "Dialog:" and there's are maybe multiple Dialog lines in one input buffer. @@ -9,14 +9,18 @@ and there's are maybe multiple Dialog lines in one input buffer. Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747496] Signed-off-by: Mingke Wang <mingke.wang@freescale.com> +--- + gst/subparse/gstssaparse.c | 150 +++++++++++++++++++++++++++++++++---- + 1 file changed, 134 insertions(+), 16 deletions(-) + mode change 100644 => 100755 gst/subparse/gstssaparse.c diff --git a/gst/subparse/gstssaparse.c b/gst/subparse/gstssaparse.c old mode 100644 new mode 100755 -index 06ecef9..0ab5dce +index c849c08..4b9636c --- a/gst/subparse/gstssaparse.c +++ b/gst/subparse/gstssaparse.c -@@ -260,6 +260,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt) +@@ -262,6 +262,7 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt) * gst_ssa_parse_push_line: * @parse: caller element * @txt: text to push @@ -24,7 +28,7 @@ index 06ecef9..0ab5dce * @start: timestamp for the buffer * @duration: duration for the buffer * -@@ -269,27 +270,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt) +@@ -271,27 +272,133 @@ gst_ssa_parse_remove_override_codes (GstSsaParse * parse, gchar * txt) * Returns: result of the push of the created buffer */ static GstFlowReturn @@ -169,7 +173,7 @@ index 06ecef9..0ab5dce GST_LOG_OBJECT (parse, "Text : %s", t); if (gst_ssa_parse_remove_override_codes (parse, t)) { -@@ -307,13 +414,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, +@@ -309,13 +416,22 @@ gst_ssa_parse_push_line (GstSsaParse * parse, gchar * txt, gst_buffer_fill (buf, 0, escaped, len + 1); gst_buffer_set_size (buf, len); g_free (escaped); @@ -196,7 +200,7 @@ index 06ecef9..0ab5dce ret = gst_pad_push (parse->srcpad, buf); -@@ -333,6 +449,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf) +@@ -335,6 +451,7 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf) GstClockTime ts; gchar *txt; GstMapInfo map; @@ -204,7 +208,7 @@ index 06ecef9..0ab5dce if (G_UNLIKELY (!parse->framed)) goto not_framed; -@@ -350,13 +467,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf) +@@ -352,13 +469,14 @@ gst_ssa_parse_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * buf) /* make double-sure it's 0-terminated and all */ gst_buffer_map (buf, &map, GST_MAP_READ); txt = g_strndup ((gchar *) map.data, map.size); @@ -221,5 +225,5 @@ index 06ecef9..0ab5dce if (ret != GST_FLOW_OK && GST_CLOCK_TIME_IS_VALID (ts)) { GstSegment segment; -- -1.7.9.5 +2.28.0 diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch deleted file mode 100644 index c465b5ceed..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 40a293d44d1aeccf5eb8e86f23a0b13666111c5c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> -Date: Fri, 12 Sep 2014 14:39:16 +0300 -Subject: [PATCH 2/3] video-frame: Add GST_VIDEO_FRAME_MAP_FLAG_NO_REF - -This makes sure that the buffer is not reffed another time when -storing it in the GstVideoFrame, keeping it writable if it was -writable. - -Upstream-Status: Backport [1.5.1] -https://bugzilla.gnome.org/show_bug.cgi?id=736118 ---- - gst-libs/gst/video/video-frame.c | 9 ++++++++- - gst-libs/gst/video/video-frame.h | 18 ++++++++++++++++++ - 2 files changed, 26 insertions(+), 1 deletion(-) - -diff --git a/gst-libs/gst/video/video-frame.c b/gst-libs/gst/video/video-frame.c -index 537cf70..01f23c0 100644 ---- a/gst-libs/gst/video/video-frame.c -+++ b/gst-libs/gst/video/video-frame.c -@@ -106,6 +106,9 @@ gst_video_frame_map_id (GstVideoFrame * frame, GstVideoInfo * info, - } - } - frame->buffer = gst_buffer_ref (buffer); -+ if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0) -+ gst_buffer_ref (frame->buffer); -+ - frame->meta = meta; - - /* buffer flags enhance the frame flags */ -@@ -189,11 +192,13 @@ gst_video_frame_unmap (GstVideoFrame * frame) - GstBuffer *buffer; - GstVideoMeta *meta; - gint i; -+ GstMapFlags flags; - - g_return_if_fail (frame != NULL); - - buffer = frame->buffer; - meta = frame->meta; -+ flags = frame->map[0].flags; - - if (meta) { - for (i = 0; i < frame->info.finfo->n_planes; i++) { -@@ -202,7 +207,9 @@ gst_video_frame_unmap (GstVideoFrame * frame) - } else { - gst_buffer_unmap (buffer, &frame->map[0]); - } -- gst_buffer_unref (buffer); -+ -+ if ((flags & GST_VIDEO_FRAME_MAP_FLAG_NO_REF) == 0) -+ gst_buffer_unref (frame->buffer); - } - - /** -diff --git a/gst-libs/gst/video/video-frame.h b/gst-libs/gst/video/video-frame.h -index 627fab0..f8e6304 100644 ---- a/gst-libs/gst/video/video-frame.h -+++ b/gst-libs/gst/video/video-frame.h -@@ -149,6 +149,24 @@ typedef enum { - GST_VIDEO_BUFFER_FLAG_LAST = (GST_BUFFER_FLAG_LAST << 8) - } GstVideoBufferFlags; - -+/** -+ * GstVideoBufferFlags: -+ * @GST_VIDEO_FRAME_MAP_FLAG_NO_REF: Don't take another reference of the buffer and store it in -+ * the GstVideoFrame. This makes sure that the buffer stays -+ * writable while the frame is mapped, but requires that the -+ * buffer reference stays valid until the frame is unmapped again. -+ * @GST_VIDEO_FRAME_MAP_FLAG_LAST: Offset to define more flags -+ * -+ * Additional mapping flags for gst_video_frame_map(). -+ * -+ * Since: 1.6 -+ */ -+typedef enum { -+ GST_VIDEO_FRAME_MAP_FLAG_NO_REF = (GST_MAP_FLAG_LAST << 0), -+ GST_VIDEO_FRAME_MAP_FLAG_LAST = (GST_MAP_FLAG_LAST << 8) -+ /* 8 more flags possible afterwards */ -+} GstVideoFrameMapFlags; -+ - G_END_DECLS - - #endif /* __GST_VIDEO_FRAME_H__ */ --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch deleted file mode 100644 index 132bf06f75..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 3a7cdcdfc9c5b0d20394fe51b3b8cda23931ca6d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com> -Date: Fri, 12 Sep 2014 14:41:01 +0300 -Subject: [PATCH 3/3] videofilter: Use new GST_VIDEO_FRAME_MAP_FLAG_NO_REF - -Upstream-Status: Backport [1.5.1] -https://bugzilla.gnome.org/show_bug.cgi?id=736118 ---- - gst-libs/gst/video/gstvideofilter.c | 23 ++++------------------- - 1 file changed, 4 insertions(+), 19 deletions(-) - -diff --git a/gst-libs/gst/video/gstvideofilter.c b/gst-libs/gst/video/gstvideofilter.c -index e1fa2c1..874b2e8 100644 ---- a/gst-libs/gst/video/gstvideofilter.c -+++ b/gst-libs/gst/video/gstvideofilter.c -@@ -260,23 +260,15 @@ gst_video_filter_transform (GstBaseTransform * trans, GstBuffer * inbuf, - if (fclass->transform_frame) { - GstVideoFrame in_frame, out_frame; - -- if (!gst_video_frame_map (&in_frame, &filter->in_info, inbuf, GST_MAP_READ)) -+ if (!gst_video_frame_map (&in_frame, &filter->in_info, inbuf, -+ GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF)) - goto invalid_buffer; - - if (!gst_video_frame_map (&out_frame, &filter->out_info, outbuf, -- GST_MAP_WRITE)) -+ GST_MAP_WRITE | GST_VIDEO_FRAME_MAP_FLAG_NO_REF)) - goto invalid_buffer; - -- /* GstVideoFrame has another reference, so the buffer looks unwriteable, -- * meaning that we can't attach any metas or anything to it. Other -- * map() functions like gst_buffer_map() don't get another reference -- * of the buffer and expect the buffer reference to be kept until -- * the buffer is unmapped again. */ -- gst_buffer_unref (inbuf); -- gst_buffer_unref (outbuf); - res = fclass->transform_frame (filter, &in_frame, &out_frame); -- gst_buffer_ref (inbuf); -- gst_buffer_ref (outbuf); - - gst_video_frame_unmap (&out_frame); - gst_video_frame_unmap (&in_frame); -@@ -317,7 +309,7 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf) - GstVideoFrame frame; - GstMapFlags flags; - -- flags = GST_MAP_READ; -+ flags = GST_MAP_READ | GST_VIDEO_FRAME_MAP_FLAG_NO_REF; - - if (!gst_base_transform_is_passthrough (trans)) - flags |= GST_MAP_WRITE; -@@ -325,14 +317,7 @@ gst_video_filter_transform_ip (GstBaseTransform * trans, GstBuffer * buf) - if (!gst_video_frame_map (&frame, &filter->in_info, buf, flags)) - goto invalid_buffer; - -- /* GstVideoFrame has another reference, so the buffer looks unwriteable, -- * meaning that we can't attach any metas or anything to it. Other -- * map() functions like gst_buffer_map() don't get another reference -- * of the buffer and expect the buffer reference to be kept until -- * the buffer is unmapped again. */ -- gst_buffer_unref (buf); - res = fclass->transform_frame_ip (filter, &frame); -- gst_buffer_ref (buf); - - gst_video_frame_unmap (&frame); - } else { --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch new file mode 100644 index 0000000000..2af83ff8b9 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0003-viv-fb-Make-sure-config.h-is-included.patch @@ -0,0 +1,32 @@ +From 153f3b83a3fed77785bd1420bed8bbafa2d791b3 Mon Sep 17 00:00:00 2001 +From: Carlos Rafael Giani <crg7475@mailbox.org> +Date: Tue, 21 May 2019 14:01:11 +0200 +Subject: [PATCH 3/4] viv-fb: Make sure config.h is included + +This prevents build errors due to missing GST_API_* symbols + +Upstream-Status: Pending + +Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> +--- + gst-libs/gst/gl/gl-prelude.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/gst-libs/gst/gl/gl-prelude.h b/gst-libs/gst/gl/gl-prelude.h +index 05e1f62..96ce5e6 100644 +--- a/gst-libs/gst/gl/gl-prelude.h ++++ b/gst-libs/gst/gl/gl-prelude.h +@@ -22,6 +22,10 @@ + #ifndef __GST_GL_PRELUDE_H__ + #define __GST_GL_PRELUDE_H__ + ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ + #include <gst/gst.h> + + #ifdef BUILDING_GST_GL +-- +2.28.0 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch deleted file mode 100644 index 7813915d8d..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/0004-subparse-set-need_segment-after-sink-pad-received-GS.patch +++ /dev/null @@ -1,69 +0,0 @@ -From ed09c8fd2c9c2b5384b72cc70af3728be6694e64 Mon Sep 17 00:00:00 2001 -From: Mingke Wang <mingke.wang@freescale.com> -Date: Thu, 19 Mar 2015 14:20:26 +0800 -Subject: [PATCH 4/4] subparse: set need_segment after sink pad received - GST_EVENT_SEGMENT - -subparse works in push mode, chain funciton will be called once -up stream element finished the seeking and flushing. -if set need_segment flag in src pad event handler, the segment -event will be pushed earlier, result in the subtitle text will -be send out to down stream from the beginning. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=747498] - -Signed-off-by: Mingke Wang <mingke.wang@freescale.com> - -diff --git a/gst/subparse/gstsubparse.c b/gst/subparse/gstsubparse.c -old mode 100644 -new mode 100755 -index b565e93..7741ccc ---- a/gst/subparse/gstsubparse.c -+++ b/gst/subparse/gstsubparse.c -@@ -266,22 +266,20 @@ gst_sub_parse_src_event (GstPad * pad, GstObject * parent, GstEvent * event) - goto beach; - } - -+ /* Apply the seek to our segment */ -+ gst_segment_do_seek (&self->segment, rate, format, flags, -+ start_type, start, stop_type, stop, &update); -+ -+ GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT, -+ &self->segment); -+ - /* Convert that seek to a seeking in bytes at position 0, - FIXME: could use an index */ - ret = gst_pad_push_event (self->sinkpad, - gst_event_new_seek (rate, GST_FORMAT_BYTES, flags, - GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_NONE, 0)); - -- if (ret) { -- /* Apply the seek to our segment */ -- gst_segment_do_seek (&self->segment, rate, format, flags, -- start_type, start, stop_type, stop, &update); -- -- GST_DEBUG_OBJECT (self, "segment after seek: %" GST_SEGMENT_FORMAT, -- &self->segment); -- -- self->need_segment = TRUE; -- } else { -+ if (!ret) { - GST_WARNING_OBJECT (self, "seek to 0 bytes failed"); - } - -@@ -1632,8 +1630,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); -- GST_DEBUG_OBJECT (self, "newsegment (%s)", -- gst_format_get_name (self->segment.format)); -+ GST_DEBUG_OBJECT (self, "newsegment (%s) %" GST_SEGMENT_FORMAT, -+ gst_format_get_name (self->segment.format), &self->segment); -+ -+ self->need_segment = TRUE; - - /* if not time format, we'll either start with a 0 timestamp anyway or - * it's following a seek in which case we'll have saved the requested --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch deleted file mode 100644 index aa55de10e4..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event-if.patch +++ /dev/null @@ -1,37 +0,0 @@ -From b608d027fff6efc2d1988ebf169cbe3b2b44a61b Mon Sep 17 00:00:00 2001 -From: zhouming <b42586@freescale.com> -Date: Thu, 8 May 2014 12:01:17 +0800 -Subject: [PATCH] ENGR00312034: do not change eos event to gap event if no - data has passed to streamsynchronizer. - -https://bugzilla.gnome.org/show_bug.cgi?id=727074 - -Upstream-Status: Pending - -Signed-off-by: zhouming <b42586@freescale.com> ---- - gst/playback/gststreamsynchronizer.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - -diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c -index 3997d1b..3e17c55 100644 ---- a/gst/playback/gststreamsynchronizer.c -+++ b/gst/playback/gststreamsynchronizer.c -@@ -488,12 +488,11 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent, - } - g_slist_free (pads); - } else { -- /* if EOS, but no data has passed, then send something to replace EOS -- * for preroll purposes */ -+ /* if EOS, but no data has passed, then send EOS event */ - if (!seen_data) { - GstEvent *gap_event; - -- gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE); -+ gap_event = gst_event_new_eos (); - ret = gst_pad_push_event (srcpad, gap_event); - } else { - GstEvent *gap_event; --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch deleted file mode 100755 index f24bc7cd6f..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event2.patch +++ /dev/null @@ -1,49 +0,0 @@ -commit f9536544f5ad182b4f78d0143d1daa45dd64e624 -Author: Song Bing <b06498@freescale.com> -Date: Thu Oct 9 17:37:43 2014 +0800 - -[gststreamsynchronizer] send EOS event insterd of GAP event as GAP -event has issue when A/V have different duration. - -send EOS event insterd of GAP event as GAP event has issue when A/V have different duration. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=736655] - -Signed-off-by: Song Bing <b06498@freescale.com> - -diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c -index 3e17c55..ff42d72 100644 ---- a/gst/playback/gststreamsynchronizer.c -+++ b/gst/playback/gststreamsynchronizer.c -@@ -488,19 +488,24 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent, - } - g_slist_free (pads); - } else { -- /* if EOS, but no data has passed, then send EOS event */ -+ /* if EOS, but no data has passed, then send something to replace EOS -+ * for preroll purposes */ - if (!seen_data) { -- GstEvent *gap_event; -+ GstEvent *eos_event; - -- gap_event = gst_event_new_eos (); -- ret = gst_pad_push_event (srcpad, gap_event); -+ /* FIXME: change to EOS event as GAP event has issue when A/V have -+ * different duration */ -+ eos_event = gst_event_new_eos (); -+ ret = gst_pad_push_event (srcpad, eos_event); - } else { -- GstEvent *gap_event; -+ GstEvent *eos_event; - - /* FIXME: Also send a GAP event to let audio sinks start their - * clock in case they did not have enough data yet */ -- gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE); -- ret = gst_pad_push_event (srcpad, gap_event); -+ /* FIXME: change to EOS event as GAP event has issue when A/V have -+ * different duration */ -+ eos_event = gst_event_new_eos (); -+ ret = gst_pad_push_event (srcpad, eos_event); - } - } - gst_object_unref (srcpad); diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch deleted file mode 100755 index 731be686de..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/do-not-change-eos-event-to-gap-event3.patch +++ /dev/null @@ -1,31 +0,0 @@ -commit 3f7052aac5e0118a9a9e09fff2f65091be448972 -Author: Song Bing <b06498@freescale.com> -Date: Thu Oct 23 13:35:13 2014 +0800 - -[streamsynchronizer] One stream can finish playback. - -As changed GAP event EOS event, so EOS will send more times, which will -cause send function return error. -Streamsynchronizer will don’t send second track EOS event if send the -first track EOS return fail. Fixed by ignore the return error. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=736655] - -Signed-off-by: Song Bing b06498@freescale.com - -diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c -index ff42d72..d1732c3 100644 ---- a/gst/playback/gststreamsynchronizer.c -+++ b/gst/playback/gststreamsynchronizer.c -@@ -482,7 +482,10 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent, - while (epad) { - pad = epad->data; - GST_DEBUG_OBJECT (pad, "Pushing EOS"); -- ret = ret && gst_pad_push_event (pad, gst_event_new_eos ()); -+ /* FIXME: remove error check as GAP changed to EOS will send EOS -+ * more times, which will cause return error and then don't send -+ * EOS event to following tracks. */ -+ gst_pad_push_event (pad, gst_event_new_eos ()); - gst_object_unref (pad); - epad = g_slist_next (epad); - } diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch deleted file mode 100644 index 325671721d..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/encodebin-Need-more-buffers-in-output-queue-for-bett.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 540e02c92c75e08b90326863dc787fa5cadf9da6 Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Fri, 13 Mar 2015 18:04:31 +0800 -Subject: [PATCH] encodebin: Need more buffers in output queue for better - performance - -Need more buffers in output queue for better performance - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=744191] - -Signed-off-by: Song Bing <b06498@freescale.com> ---- - gst/encoding/gstencodebin.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -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, - * 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); -- g_object_set (sgroup->outqueue, "max-size-buffers", (guint32) 1, -- "max-size-bytes", (guint32) 0, "max-size-time", (guint64) 0, -+ g_object_set (sgroup->outqueue, "max-size-time", (guint64) 0, - "silent", TRUE, NULL); - - gst_bin_add (GST_BIN (ebin), sgroup->outqueue); --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch deleted file mode 100755 index ef3f75fba5..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch +++ /dev/null @@ -1,54 +0,0 @@ -Author: Lyon Wang <b12696@freescale.com> -Date: Thu Oct 9 17:37:43 2014 +0800 - -[id3v2frames] Bug fix for id3demux issue - -Fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux -when I tried to get the id3v2 tag such as TIT2, TALB etc. it will return extrac -failed. - -Checked in id3v2frame.c, When parse the UTF-16 streams, it used g_convert() to -convert the buffer from UTF-16 to UTF-8, however it will return err that this -conversion is not supported which cause the extraction failed with these UTF-16 -characters. - -In the patch, use g_utf16_to_utf8() instead of g_convert, which can convert the -character format successfully. - -https://bugzilla.gnome.org/show_bug.cgi?id=741144 - -Upstream-Status: Backport [1.5.1] - -Signed-off-by: Lyon Wang <b12696@freescale.com> - -diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c -old mode 100644 -new mode 100755 -index 3785c2a..7b9d8ac ---- a/gst-libs/gst/tag/id3v2frames.c -+++ b/gst-libs/gst/tag/id3v2frames.c -@@ -1057,14 +1057,17 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size, - data_size -= 2; - } - -- field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL); -- -- if (field == NULL || g_utf8_validate (field, -1, NULL) == FALSE) { -- /* As a fallback, try interpreting UTF-16 in the other endianness */ -- if (in_encode == utf16beenc) -- field = g_convert (data, data_size, "UTF-8", utf16leenc, -- NULL, NULL, NULL); -+ if (in_encode == utf16beenc) { -+ gunichar2 *data_utf16; -+ guint i; -+ data_utf16 = (gunichar2 *) data; -+ for (i=0; i<(data_size>>1); i++) { -+ data_utf16[i] = GUINT16_TO_LE (data_utf16[i]); -+ } - } -+ //field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL); -+ field = g_utf16_to_utf8((gunichar2 *)data, (glong)(data_size>>1), NULL, NULL, NULL); -+ - } - - break; diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch deleted file mode 100755 index 833ce72bb2..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/handle-audio-video-decoder-error.patch +++ /dev/null @@ -1,64 +0,0 @@ -From bcb2b8b6f49e7c66124a4f5e07dea829d5ebfe59 Mon Sep 17 00:00:00 2001 -From: Lyon Wang <lyon.wang@freescale.com> -Date: Mon, 15 Dec 2014 16:52:07 +0800 -Subject: [PATCH] handle audio/video decoder error - -When there is input data and no output data to the end of the stream, it will -send GST_ELEMENT_ERROR, So the clips playing will quit. -However, if only one of the tracks is corrupt, there is no need to quit other -tracks playing. - -The patch comments the GST_ELEMENT_ERROR() and just add GST_ERROR_OBJECT() -information instead. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=741542] - -Signed-off-by: Lyon Wang <lyon.wang@freescale.com> ---- - gst-libs/gst/audio/gstaudiodecoder.c | 5 +++-- - gst-libs/gst/video/gstvideodecoder.c | 5 +++-- - 2 files changed, 6 insertions(+), 4 deletions(-) - mode change 100644 => 100755 gst-libs/gst/audio/gstaudiodecoder.c - mode change 100644 => 100755 gst-libs/gst/video/gstvideodecoder.c - -diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c -old mode 100644 -new mode 100755 -index c2e7a28..891df0a ---- a/gst-libs/gst/audio/gstaudiodecoder.c -+++ b/gst-libs/gst/audio/gstaudiodecoder.c -@@ -2123,9 +2123,10 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event) - GST_AUDIO_DECODER_STREAM_UNLOCK (dec); - - if (dec->priv->ctx.had_input_data && !dec->priv->ctx.had_output_data) { -- GST_ELEMENT_ERROR (dec, STREAM, DECODE, -+ /* GST_ELEMENT_ERROR (dec, STREAM, DECODE, - ("No valid frames decoded before end of stream"), -- ("no valid frames found")); -+ ("no valid frames found")); */ -+ GST_ERROR_OBJECT(dec, "No valid frames decoded before end of stream"); - } - - /* send taglist if no valid frame is decoded util EOS */ -diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c -old mode 100644 -new mode 100755 -index ac581e1..4278bcd ---- a/gst-libs/gst/video/gstvideodecoder.c -+++ b/gst-libs/gst/video/gstvideodecoder.c -@@ -1068,9 +1068,10 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder, - - /* Error out even if EOS was ok when we had input, but no output */ - if (ret && priv->had_input_data && !priv->had_output_data) { -- GST_ELEMENT_ERROR (decoder, STREAM, DECODE, -+ /* GST_ELEMENT_ERROR (decoder, STREAM, DECODE, - ("No valid frames decoded before end of stream"), -- ("no valid frames found")); -+ ("no valid frames found")); */ -+ GST_ERROR_OBJECT(decoder, "No valid frames decoded before end of stream"); - } - - /* Forward EOS immediately. This is required because no --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch deleted file mode 100644 index 62a52b038a..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 68fa1b1425ad2c5f7c5013d0943153a8a6d0934e Mon Sep 17 00:00:00 2001 -From: Jian Li <lj.qfy.sh@gmail.com> -Date: Wed, 24 Sep 2014 17:21:02 +0800 -Subject: [PATCH] taglist not send to down stream if all the frame corrupted - -https://bugzilla.gnome.org/show_bug.cgi?id=737246 - -Upstream-Status: Pending - -Signed-off-by: Jian Li <lj.qfy.sh@gmail.com> ---- - gst-libs/gst/audio/gstaudiodecoder.c | 9 +++++++++ - gst-libs/gst/video/gstvideodecoder.c | 8 ++++++++ - 2 files changed, 17 insertions(+) - -diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c -index 3504678..3d69efe 100644 ---- a/gst-libs/gst/audio/gstaudiodecoder.c -+++ b/gst-libs/gst/audio/gstaudiodecoder.c -@@ -2083,6 +2083,15 @@ gst_audio_decoder_sink_eventfunc (GstAudioDecoder * dec, GstEvent * event) - gst_audio_decoder_drain (dec); - GST_AUDIO_DECODER_STREAM_UNLOCK (dec); - -+ /* send taglist if no valid frame is decoded util EOS */ -+ if (dec->priv->taglist && dec->priv->taglist_changed) { -+ GST_DEBUG_OBJECT (dec, "codec tag %" GST_PTR_FORMAT, dec->priv->taglist); -+ if (!gst_tag_list_is_empty (dec->priv->taglist)) -+ gst_audio_decoder_push_event (dec, -+ gst_event_new_tag (gst_tag_list_ref (dec->priv->taglist))); -+ dec->priv->taglist_changed = FALSE; -+ } -+ - /* Forward EOS because no buffer or serialized event will come after - * EOS and nothing could trigger another _finish_frame() call. */ - ret = gst_audio_decoder_push_event (dec, event); -diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c -index dd8abe3..d9bfe4d 100644 ---- a/gst-libs/gst/video/gstvideodecoder.c -+++ b/gst-libs/gst/video/gstvideodecoder.c -@@ -1024,6 +1024,14 @@ gst_video_decoder_sink_event_default (GstVideoDecoder * decoder, - * parent class' ::sink_event() until a later time. - */ - forward_immediate = TRUE; -+ -+ /* send taglist if no valid frame is decoded util EOS */ -+ if (decoder->priv->tags && decoder->priv->tags_changed) { -+ gst_video_decoder_push_event (decoder, -+ gst_event_new_tag (gst_tag_list_ref (decoder->priv->tags))); -+ decoder->priv->tags_changed = FALSE; -+ } -+ - break; - } - case GST_EVENT_GAP: --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch deleted file mode 100755 index 8cfda955a7..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videobuffer_updata_alignment_update.patch +++ /dev/null @@ -1,53 +0,0 @@ -commit 88d253ea23b06289df40401160b606323f16c910 -Author: Song Bing <b06498@freescale.com> -Date: Mon Dec 15 09:34:35 2014 +0800 - -videopool: update video alignment after video alignment - -Video buffer pool will update video alignment to respect stride alignment -requirement. But haven't update it to video alignment in configure. -Which will cause user get wrong video alignment. - -https://bugzilla.gnome.org/show_bug.cgi?id=741501 - -Upstream-Status: Backport [1.5.1] - -Signed-off-by: Song Bing <b06498@freescale.com> -diff --git a/gst-libs/gst/video/gstvideopool.c b/gst-libs/gst/video/gstvideopool.c -index 4475f45..acef594 100644 ---- a/gst-libs/gst/video/gstvideopool.c -+++ b/gst-libs/gst/video/gstvideopool.c -@@ -167,6 +167,7 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) - /* get an apply the alignment to the info */ - gst_buffer_pool_config_get_video_alignment (config, &priv->video_align); - gst_video_info_align (&info, &priv->video_align); -+ gst_buffer_pool_config_set_video_alignment (config, &priv->video_align); - } - priv->info = info; - -diff --git a/sys/ximage/ximagepool.c b/sys/ximage/ximagepool.c -index 6cc2cfa..6a1cbc9 100644 ---- a/sys/ximage/ximagepool.c -+++ b/sys/ximage/ximagepool.c -@@ -597,6 +597,8 @@ ximage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) - /* do padding and alignment */ - gst_video_info_align (&info, &priv->align); - -+ gst_buffer_pool_config_set_video_alignment (config, &priv->align); -+ - /* we need the video metadata too now */ - priv->add_metavideo = TRUE; - } else { -diff --git a/sys/xvimage/xvimagepool.c b/sys/xvimage/xvimagepool.c -index 244a51a..34b1ab2 100644 ---- a/sys/xvimage/xvimagepool.c -+++ b/sys/xvimage/xvimagepool.c -@@ -124,6 +124,8 @@ xvimage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) - /* do padding and alignment */ - gst_video_info_align (&info, &priv->align); - -+ gst_buffer_pool_config_set_video_alignment (config, &priv->align); -+ - /* we need the video metadata too now */ - priv->add_metavideo = TRUE; - } else { diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch deleted file mode 100644 index b476969111..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch +++ /dev/null @@ -1,46 +0,0 @@ -From c3f7d36b992a3cbcee3386dea85720f3cb04e1ff Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Fri, 27 Mar 2015 13:39:43 +0800 -Subject: [PATCH] videoencoder: Keep sticky events around when doing a soft - reset - -The current code will first discard all frames, and then tries to copy -all sticky events from the (now discarded) frames. Let's change the order. - -https://bugzilla.gnome.org/show_bug.cgi?id=746865 - -Upstream-Status: Accepted - ---- - gst-libs/gst/video/gstvideoencoder.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/gst-libs/gst/video/gstvideoencoder.c b/gst-libs/gst/video/gstvideoencoder.c -index 614ba2d..4c5b111 100644 ---- a/gst-libs/gst/video/gstvideoencoder.c -+++ b/gst-libs/gst/video/gstvideoencoder.c -@@ -340,10 +340,6 @@ gst_video_encoder_reset (GstVideoEncoder * encoder, gboolean hard) - - priv->drained = TRUE; - -- g_list_foreach (priv->frames, (GFunc) gst_video_codec_frame_unref, NULL); -- g_list_free (priv->frames); -- priv->frames = NULL; -- - priv->bytes = 0; - priv->time = 0; - -@@ -392,6 +388,10 @@ gst_video_encoder_reset (GstVideoEncoder * encoder, gboolean hard) - encoder->priv->current_frame_events); - } - -+ g_list_foreach (priv->frames, (GFunc) gst_video_codec_frame_unref, NULL); -+ g_list_free (priv->frames); -+ priv->frames = NULL; -+ - GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder); - - return ret; --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.0.bb new file mode 100644 index 0000000000..c9fbc599ae --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.20.0.bb @@ -0,0 +1,94 @@ +require gstreamer1.0-plugins-common.inc + +DESCRIPTION = "'Base' GStreamer plugins and helper libraries" +HOMEPAGE = "https://gstreamer.freedesktop.org/" +BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues" +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770" + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-${PV}.tar.xz \ + file://0001-ENGR00312515-get-caps-from-src-pad-when-query-caps.patch \ + file://0003-viv-fb-Make-sure-config.h-is-included.patch \ + file://0002-ssaparse-enhance-SSA-text-lines-parsing.patch \ + " +SRC_URI[sha256sum] = "4cb66fccf730b1037e6533862c2128990912a6db4e5bbd14e0ef914450eb4c7c" + +S = "${WORKDIR}/gst-plugins-base-${PV}" + +DEPENDS += "iso-codes util-linux zlib" + +inherit gobject-introspection + +PACKAGES_DYNAMIC =+ "^libgst.*" + +# opengl packageconfig factored out to make it easy for distros +# and BSP layers to choose OpenGL APIs/platforms/window systems +PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}" + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + ${PACKAGECONFIG_GL} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'alsa x11', d)} \ + jpeg ogg pango png theora vorbis \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland egl', '', d)} \ +" + +OPENGL_APIS = 'opengl gles2' +OPENGL_PLATFORMS = 'egl' + +X11DEPENDS = "virtual/libx11 libsm libxrender libxv" +X11ENABLEOPTS = "-Dx11=enabled -Dxvideo=enabled -Dxshm=enabled" +X11DISABLEOPTS = "-Dx11=disabled -Dxvideo=disabled -Dxshm=disabled" + +PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib" +PACKAGECONFIG[cdparanoia] = "-Dcdparanoia=enabled,-Dcdparanoia=disabled,cdparanoia" +PACKAGECONFIG[graphene] = "-Dgl-graphene=enabled,-Dgl-graphene=disabled,graphene" +PACKAGECONFIG[jpeg] = "-Dgl-jpeg=enabled,-Dgl-jpeg=disabled,jpeg" +PACKAGECONFIG[ogg] = "-Dogg=enabled,-Dogg=disabled,libogg" +PACKAGECONFIG[opus] = "-Dopus=enabled,-Dopus=disabled,libopus" +PACKAGECONFIG[pango] = "-Dpango=enabled,-Dpango=disabled,pango" +PACKAGECONFIG[png] = "-Dgl-png=enabled,-Dgl-png=disabled,libpng" +PACKAGECONFIG[qt5] = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native" +PACKAGECONFIG[theora] = "-Dtheora=enabled,-Dtheora=disabled,libtheora" +PACKAGECONFIG[tremor] = "-Dtremor=enabled,-Dtremor=disabled,tremor" +PACKAGECONFIG[visual] = "-Dlibvisual=enabled,-Dlibvisual=disabled,libvisual" +PACKAGECONFIG[vorbis] = "-Dvorbis=enabled,-Dvorbis=disabled,libvorbis" +PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" + +# OpenGL API packageconfigs +PACKAGECONFIG[opengl] = ",,virtual/libgl libglu" +PACKAGECONFIG[gles2] = ",,virtual/libgles2" + +# OpenGL platform packageconfigs +PACKAGECONFIG[egl] = ",,virtual/egl" + +# OpenGL window systems (except for X11) +PACKAGECONFIG[gbm] = ",,virtual/libgbm libgudev libdrm" +PACKAGECONFIG[wayland] = ",,wayland-native wayland wayland-protocols libdrm" +PACKAGECONFIG[dispmanx] = ",,virtual/libomxil" +PACKAGECONFIG[viv-fb] = ",,virtual/libgles2 virtual/libg2d" + +OPENGL_WINSYS = "${@bb.utils.filter('PACKAGECONFIG', 'x11 gbm wayland dispmanx egl viv-fb', d)}" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + ${@get_opengl_cmdline_list('gl_api', d.getVar('OPENGL_APIS'), d)} \ + ${@get_opengl_cmdline_list('gl_platform', d.getVar('OPENGL_PLATFORMS'), d)} \ + ${@get_opengl_cmdline_list('gl_winsys', d.getVar('OPENGL_WINSYS'), d)} \ +" + +FILES:${PN}-dev += "${libdir}/gstreamer-1.0/include/gst/gl/gstglconfig.h" +FILES:${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict" + +def get_opengl_cmdline_list(switch_name, options, d): + selected_options = [] + if bb.utils.contains('DISTRO_FEATURES', 'opengl', True, False, d): + for option in options.split(): + if bb.utils.contains('PACKAGECONFIG', option, True, False, d): + selected_options += [option] + if selected_options: + return '-D' + switch_name + '=' + ','.join(selected_options) + else: + return '' + +CVE_PRODUCT += "gst-plugins-base" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb deleted file mode 100644 index b09c2cb581..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb +++ /dev/null @@ -1,30 +0,0 @@ -include gstreamer1.0-plugins-base.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ - file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \ - file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ - " - -SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \ - file://get-caps-from-src-pad-when-query-caps.patch \ - file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \ - file://fix-id3demux-utf16-to-utf8-issue.patch \ - file://handle-audio-video-decoder-error.patch \ - file://videobuffer_updata_alignment_update.patch \ - file://0002-video-frame-Add-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \ - file://0001-video-frame-Don-t-ref-buffers-twice-when-mapping.patch \ - file://0003-videofilter-Use-new-GST_VIDEO_FRAME_MAP_FLAG_NO_REF.patch \ - file://videoencoder-Keep-sticky-events-around-when-doing-a-soft-.patch \ - file://do-not-change-eos-event-to-gap-event2.patch \ - file://do-not-change-eos-event-to-gap-event3.patch \ - file://0001-basetextoverlay-make-memory-copy-when-video-buffer-s.patch \ - file://0002-gstplaysink-don-t-set-async-of-custom-text-sink-to-f.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 \ -" - -SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e" -SRC_URI[sha256sum] = "77bd8199e7a312d3d71de9b7ddf761a3b78560a2c2a80829d0815ca39cbd551d" - -S = "${WORKDIR}/gst-plugins-base-${PV}" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb deleted file mode 100644 index fbe3a42cd7..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_git.bb +++ /dev/null @@ -1,19 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0-plugins-base.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ - file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \ - file://COPYING.LIB;md5=6762ed442b3822387a51c92d928ead0d \ - " - -S = "${WORKDIR}/git" - -SRCREV = "8d4cb64a4b9d84b10076bf350f80a0d6ea68ec2d" - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc new file mode 100644 index 0000000000..54dd92873f --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-common.inc @@ -0,0 +1,47 @@ +# This .inc file contains the common setup for the gstreamer1.0-plugins-* +# plugin set recipes. + +# SUMMARY is set in the actual .bb recipes +HOMEPAGE = "https://gstreamer.freedesktop.org/" +BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" +SECTION = "multimedia" + +DEPENDS = "gstreamer1.0 glib-2.0-native" + +inherit gettext meson pkgconfig upstream-version-is-even + +require gstreamer1.0-plugins-packaging.inc + +# Orc enables runtime JIT compilation of data processing routines from Orc +# bytecode to SIMD instructions for various architectures (currently SSE, MMX, +# MIPS, Altivec and NEON are supported). +# This value is used in the PACKAGECONFIG values for each plugin set recipe. +# By modifying it, Orc can be enabled/disabled in all of these recipes at once. +GSTREAMER_ORC ?= "orc" +# workaround to disable orc on mips to fix the build failure +# {standard input}: Assembler messages: +# {standard input}:46587: Error: branch out of range +GSTREAMER_ORC:mips = "" +PACKAGECONFIG[orc] = "-Dorc=enabled,-Dorc=disabled,orc orc-native" + +# TODO: put this in a gettext.bbclass patch (with variables to allow for +# configuring the option name and the enabled/disabled values). +def gettext_oemeson(d): + if d.getVar('USE_NLS') == 'no': + return '-Dnls=disabled' + # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set + if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'): + return '-Dnls=disabled' + return '-Dnls=enabled' + +# Not all plugin sets contain examples, so the -Dexamples +# option needs to be added conditionally. +GST_PLUGIN_SET_HAS_EXAMPLES ?= "1" + +EXTRA_OEMESON += " \ + ${@bb.utils.contains('GST_PLUGIN_SET_HAS_EXAMPLES', '1', '-Dexamples=disabled', '', d)} \ + ${@gettext_oemeson(d)} \ +" + +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc deleted file mode 100644 index 6e316de9f2..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc +++ /dev/null @@ -1,57 +0,0 @@ -require gstreamer1.0-plugins.inc - -LICENSE = "GPLv2+ & LGPLv2.1+" - -# libid3tag -DEPENDS += "gstreamer1.0-plugins-base zlib bzip2 libcap" - -inherit gettext - - -PACKAGECONFIG ??= " \ - ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ - ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \ - orc cairo flac gdk-pixbuf gudev jpeg libpng soup speex taglib \ - " - -X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage" -X11ENABLEOPTS = "--enable-x --enable-xshm" -X11DISABLEOPTS = "--disable-x --disable-xshm" -PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" -PACKAGECONFIG[pulseaudio] = "--enable-pulse,--disable-pulse,pulseaudio" -PACKAGECONFIG[cairo] = "--enable-cairo,--disable-cairo,cairo" -PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac" -PACKAGECONFIG[gdk-pixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf" -PACKAGECONFIG[gudev] = "--with-gudev,--without-gudev,udev" -PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" -PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" -PACKAGECONFIG[libpng] = "--enable-libpng,--disable-libpng,libpng" -PACKAGECONFIG[soup] = "--enable-soup,--disable-soup,libsoup-2.4" -PACKAGECONFIG[speex] = "--enable-speex,--disable-speex,speex" -PACKAGECONFIG[taglib] = "--enable-taglib,--disable-taglib,taglib" -PACKAGECONFIG[vpx] = "--enable-vpx,--disable-vpx,libvpx" -PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack" - -# the 1394 plugins require both libraw1394 and libiec61883 -# the former is included in meta-oe, the latter isn't -# -> disabled - -EXTRA_OECONF += " \ - --enable-oss \ - --enable-gst_v4l2 \ - --without-libv4l2 \ - --disable-directsound \ - --disable-waveform \ - --disable-oss4 \ - --disable-sunaudio \ - --disable-osx_audio \ - --disable-osx_video \ - --disable-aalib \ - --disable-libcaca \ - --disable-libdv \ - --disable-shout2 \ - --disable-examples \ - --disable-dv1394 \ -" - -FILES_${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch deleted file mode 100755 index d1973d439f..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch +++ /dev/null @@ -1,62 +0,0 @@ -From c782a30482908a4b4dd9cd4abff9f9bc4016698f Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Tue, 5 Aug 2014 14:40:46 +0800 -Subject: [PATCH] gstrtpmp4gpay: set dafault value for MPEG4 without codec - data in caps. - -https://bugzilla.gnome.org/show_bug.cgi?id=734263 - -Upstream-Status: Submitted - -Signed-off-by: Song Bing <b06498@freescale.com> ---- - gst/rtp/gstrtpmp4gpay.c | 19 ++++++++++++++++++- - 1 file changed, 18 insertions(+), 1 deletion(-) - -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) - const GValue *codec_data; - const gchar *media_type = NULL; - gboolean res; -+ const gchar *name; - - rtpmp4gpay = GST_RTP_MP4G_PAY (payload); - -@@ -400,7 +401,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; -- const gchar *name; - - 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) - - rtpmp4gpay->config = gst_buffer_copy (buffer); - } -+ } else { -+ name = gst_structure_get_name (structure); -+ -+ if (!strcmp (name, "video/mpeg")) { -+ rtpmp4gpay->profile = g_strdup ("1"); -+ -+ /* fixed rate */ -+ rtpmp4gpay->rate = 90000; -+ /* video stream type */ -+ rtpmp4gpay->streamtype = "4"; -+ /* no params for video */ -+ rtpmp4gpay->params = NULL; -+ /* mode */ -+ rtpmp4gpay->mode = "generic"; -+ -+ media_type = "video"; -+ } - } - if (media_type == NULL) - goto config_failed; --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch new file mode 100644 index 0000000000..788d752058 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch @@ -0,0 +1,56 @@ +From bf8b2fa0f6870589d036f0f33c140a3f85b530a0 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 31 Mar 2020 21:23:28 -0700 +Subject: [PATCH] qt: include ext/qt/gstqtgl.h instead of gst/gl/gstglfuncs.h + +gst/gl/gstglfuncs.h is included via ext/qt/gstqtgl.h which has logic to +prefer qt headers definitions for GLsync + +This helps in fixing build errors like below + +/mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/QtGui/qopengles2ext.h:24:26: error: conflicting declaration 'typedef struct __GLsync* GLsync' + 24 | typedef struct __GLsync *GLsync; + | ^~~~~~ +In file included from /mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/gstglfuncs.h:84, + from ../gst-plugins-good-1.16.2/ext/qt/gstqsgtexture.cc:30: +/mnt/b/yoe/build/tmp/work/cortexa7t2hf-neon-vfpv4-yoe-linux-gnueabi/gstreamer1.0-plugins-good/1.16.2-r0/recipe-sysroot/usr/include/gstreamer-1.0/gst/gl/glprototypes/gstgl_compat.h:40:18: note: previous declaration as 'typedef void* GLsync +' + 40 | typedef gpointer GLsync; + | ^~~~~~ + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + ext/qt/gstqsgtexture.cc | 2 +- + ext/qt/qtwindow.cc | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ext/qt/gstqsgtexture.cc b/ext/qt/gstqsgtexture.cc +index a05d26e..4cc9fc6 100644 +--- a/ext/qt/gstqsgtexture.cc ++++ b/ext/qt/gstqsgtexture.cc +@@ -27,7 +27,7 @@ + + #include <gst/video/video.h> + #include <gst/gl/gl.h> +-#include <gst/gl/gstglfuncs.h> ++#include <ext/qt/gstqtgl.h> + #include "gstqsgtexture.h" + + #define GST_CAT_DEFAULT gst_qsg_texture_debug +diff --git a/ext/qt/qtwindow.cc b/ext/qt/qtwindow.cc +index 9360c33..0dfd3f1 100644 +--- a/ext/qt/qtwindow.cc ++++ b/ext/qt/qtwindow.cc +@@ -25,7 +25,7 @@ + #include <stdio.h> + + #include <gst/video/video.h> +-#include <gst/gl/gstglfuncs.h> ++#include <ext/qt/gstqtgl.h> + #include "qtwindow.h" + #include "gstqsgtexture.h" + #include "gstqtglutility.h" +-- +2.28.0 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/decrease_asteriskh263_rank.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/decrease_asteriskh263_rank.patch deleted file mode 100755 index 288631bf76..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/decrease_asteriskh263_rank.patch +++ /dev/null @@ -1,25 +0,0 @@ -commit d71d74daac8ed54156ed103958ab455c63c72b0e -Author: Song Bing <b06498@freescale.com> -Date: Mon Nov 10 11:25:47 2014 +0800 - -[asteriskh263] decrease the rank as we havn't this kind of decoder. - -Decrease the rank as we havn't this kind of decoder. - -https://bugzilla.gnome.org/show_bug.cgi?id=739935 - -Upstream-Status: Pending - -Signed-off-by: Song Bing <b06498@freescale.com> - -diff --git a/gst/rtp/gstasteriskh263.c b/gst/rtp/gstasteriskh263.c -index a01fbc8..8fa3194 100644 ---- a/gst/rtp/gstasteriskh263.c -+++ b/gst/rtp/gstasteriskh263.c -@@ -226,5 +226,5 @@ gboolean - gst_asteriskh263_plugin_init (GstPlugin * plugin) - { - return gst_element_register (plugin, "asteriskh263", -- GST_RANK_SECONDARY, GST_TYPE_ASTERISK_H263); -+ GST_RANK_SECONDARY - 1, GST_TYPE_ASTERISK_H263); - } diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.0.bb new file mode 100644 index 0000000000..17086bc3b8 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.20.0.bb @@ -0,0 +1,76 @@ +require gstreamer1.0-plugins-common.inc + +DESCRIPTION = "'Good' GStreamer plugins" +HOMEPAGE = "https://gstreamer.freedesktop.org/" +BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues" + +SRC_URI = "https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-${PV}.tar.xz \ + file://0001-qt-include-ext-qt-gstqtgl.h-instead-of-gst-gl-gstglf.patch \ + " + +SRC_URI[sha256sum] = "2d119c15ab8c9e79f8cd3c6bf582ff7a050b28ccae52ab4865e1a1464991659c" + +S = "${WORKDIR}/gst-plugins-good-${PV}" + +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" + +DEPENDS += "gstreamer1.0-plugins-base libcap zlib" +RPROVIDES:${PN}-pulseaudio += "${PN}-pulse" +RPROVIDES:${PN}-soup += "${PN}-souphttpsrc" + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'pulseaudio x11', d)} \ + ${@bb.utils.contains('TUNE_FEATURES', 'm64', 'asm', '', d)} \ + bz2 cairo flac gdk-pixbuf gudev jpeg lame libpng mpg123 soup speex taglib v4l2 \ +" + +X11DEPENDS = "virtual/libx11 libsm libxrender libxfixes libxdamage" +X11ENABLEOPTS = "-Dximagesrc=enabled -Dximagesrc-xshm=enabled -Dximagesrc-xfixes=enabled -Dximagesrc-xdamage=enabled" +X11DISABLEOPTS = "-Dximagesrc=disabled -Dximagesrc-xshm=disabled -Dximagesrc-xfixes=disabled -Dximagesrc-xdamage=disabled" + +QT5WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}" + +PACKAGECONFIG[asm] = "-Dasm=enabled,-Dasm=disabled,nasm-native" +PACKAGECONFIG[bz2] = "-Dbz2=enabled,-Dbz2=disabled,bzip2" +PACKAGECONFIG[cairo] = "-Dcairo=enabled,-Dcairo=disabled,cairo" +PACKAGECONFIG[dv1394] = "-Ddv1394=enabled,-Ddv1394=disabled,libiec61883 libavc1394 libraw1394" +PACKAGECONFIG[flac] = "-Dflac=enabled,-Dflac=disabled,flac" +PACKAGECONFIG[gdk-pixbuf] = "-Dgdk-pixbuf=enabled,-Dgdk-pixbuf=disabled,gdk-pixbuf" +PACKAGECONFIG[gtk] = "-Dgtk3=enabled,-Dgtk3=disabled,gtk+3" +PACKAGECONFIG[gudev] = "-Dv4l2-gudev=enabled,-Dv4l2-gudev=disabled,libgudev" +PACKAGECONFIG[jack] = "-Djack=enabled,-Djack=disabled,jack" +PACKAGECONFIG[jpeg] = "-Djpeg=enabled,-Djpeg=disabled,jpeg" +PACKAGECONFIG[lame] = "-Dlame=enabled,-Dlame=disabled,lame" +PACKAGECONFIG[libpng] = "-Dpng=enabled,-Dpng=disabled,libpng" +PACKAGECONFIG[libv4l2] = "-Dv4l2-libv4l2=enabled,-Dv4l2-libv4l2=disabled,v4l-utils" +PACKAGECONFIG[mpg123] = "-Dmpg123=enabled,-Dmpg123=disabled,mpg123" +PACKAGECONFIG[pulseaudio] = "-Dpulse=enabled,-Dpulse=disabled,pulseaudio" +PACKAGECONFIG[qt5] = "-Dqt5=enabled,-Dqt5=disabled,qtbase qtdeclarative qtbase-native ${QT5WAYLANDDEPENDS}" +PACKAGECONFIG[soup] = "-Dsoup=enabled,-Dsoup=disabled,libsoup-2.4" +PACKAGECONFIG[speex] = "-Dspeex=enabled,-Dspeex=disabled,speex" +PACKAGECONFIG[rpi] = "-Drpicamsrc=enabled,-Drpicamsrc=disabled,userland" +PACKAGECONFIG[taglib] = "-Dtaglib=enabled,-Dtaglib=disabled,taglib" +PACKAGECONFIG[v4l2] = "-Dv4l2=enabled -Dv4l2-probe=true,-Dv4l2=disabled -Dv4l2-probe=false" +PACKAGECONFIG[vpx] = "-Dvpx=enabled,-Dvpx=disabled,libvpx" +PACKAGECONFIG[wavpack] = "-Dwavpack=enabled,-Dwavpack=disabled,wavpack" +PACKAGECONFIG[x11] = "${X11ENABLEOPTS},${X11DISABLEOPTS},${X11DEPENDS}" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Daalib=disabled \ + -Ddirectsound=disabled \ + -Ddv=disabled \ + -Dlibcaca=disabled \ + -Doss=enabled \ + -Doss4=disabled \ + -Dosxaudio=disabled \ + -Dosxvideo=disabled \ + -Dshout2=disabled \ + -Dtwolame=disabled \ + -Dwaveform=disabled \ +" + +FILES:${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.4.5.bb deleted file mode 100644 index 943ab60397..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.4.5.bb +++ /dev/null @@ -1,13 +0,0 @@ -include gstreamer1.0-plugins-good.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \ - file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" - -SRC_URI += "file://0001-gstrtpmp4gpay-set-dafault-value-for-MPEG4-without-co.patch \ - file://decrease_asteriskh263_rank.patch \ -" -SRC_URI[md5sum] = "eaf1a6daf73749bc423feac301d60038" -SRC_URI[sha256sum] = "79b1b5f3f7bcaa8a615202eb5e176121eeb8336960f70687e536ad78dbc7e641" - -S = "${WORKDIR}/gst-plugins-good-${PV}" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb deleted file mode 100644 index 2c0e0efe68..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0-plugins-good.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://common/coverage/coverage-report.pl;beginline=2;endline=17;md5=a4e1830fce078028c8f0974161272607 \ - file://gst/replaygain/rganalysis.c;beginline=1;endline=23;md5=b60ebefd5b2f5a8e0cab6bfee391a5fe" - -S = "${WORKDIR}/git" - -SRCREV = "fd0123800c8c1cf1468c0fa5d592ad0d0d8b4140" - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc new file mode 100644 index 0000000000..e906053ac0 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-packaging.inc @@ -0,0 +1,73 @@ +# This .inc file contains functionality for automatically splitting +# built plugins into individual packages for each plugin. A -meta +# package is also set up that has no files of its own, but contains +# the names of all plugin packages in its RDEPENDS list. +# +# This is mainly used by the gstreamer1.0-plugins-* plugin set recipes, +# but can be used in any recipe that produces GStreamer plugins. + +# Dynamically generate packages for all enabled plugins +PACKAGES_DYNAMIC = "^${PN}-.* ^libgst.*" + +PACKAGESPLITFUNCS:prepend = " split_gstreamer10_packages " +PACKAGESPLITFUNCS:append = " set_gstreamer10_metapkg_rdepends " + +python split_gstreamer10_packages () { + gst_libdir = d.expand('${libdir}/gstreamer-1.0') + postinst = d.getVar('plugin_postinst') + glibdir = d.getVar('libdir') + + # GStreamer libraries + do_split_packages(d, glibdir, r'^lib(.*)\.so\.*', 'lib%s', 'GStreamer 1.0 %s library', extra_depends='', allow_links=True) + # GStreamer plugin shared objects + do_split_packages(d, gst_libdir, r'libgst(.*)\.so$', d.expand('${PN}-%s'), 'GStreamer 1.0 plugin for %s', postinst=postinst, extra_depends='') + # GObject introspection files for GStreamer plugins + do_split_packages(d, glibdir+'/girepository-1.0', r'Gst(.*)-1.0\.typelib$', d.expand('${PN}-%s-typelib'), 'GStreamer 1.0 typelib file for %s', postinst=postinst, extra_depends='') + # Static GStreamer libraries for development + do_split_packages(d, gst_libdir, r'libgst(.*)\.a$', d.expand('${PN}-%s-staticdev'), 'GStreamer 1.0 plugin for %s (static development files)', extra_depends='${PN}-staticdev') +} + +python set_gstreamer10_metapkg_rdepends () { + import os + import oe.utils + + # Go through all generated packages (excluding the main package and + # the -meta package itself) and add them to the -meta package as RDEPENDS. + + pn = d.getVar('PN') + metapkg = pn + '-meta' + d.setVar('ALLOW_EMPTY:' + metapkg, "1") + d.setVar('FILES:' + metapkg, "") + blacklist = [ pn, pn + '-meta' ] + metapkg_rdepends = [] + pkgdest = d.getVar('PKGDEST') + for pkg in oe.utils.packages_filter_out_system(d): + if pkg not in blacklist and pkg not in metapkg_rdepends: + # See if the package is empty by looking at the contents of its PKGDEST subdirectory. + # If this subdirectory is empty, then the package is. + # Empty packages do not get added to the meta package's RDEPENDS + pkgdir = os.path.join(pkgdest, pkg) + if os.path.exists(pkgdir): + dir_contents = os.listdir(pkgdir) or [] + else: + dir_contents = [] + is_empty = len(dir_contents) == 0 + if not is_empty: + metapkg_rdepends.append(pkg) + d.setVar('RDEPENDS:' + metapkg, ' '.join(metapkg_rdepends)) + d.setVar('DESCRIPTION:' + metapkg, pn + ' meta package') +} + +# each plugin-dev depends on PN-dev, plugin-staticdev on PN-staticdev +# so we need them even when empty (like in gst-plugins-good case) +ALLOW_EMPTY:${PN} = "1" +ALLOW_EMPTY:${PN}-dev = "1" +ALLOW_EMPTY:${PN}-staticdev = "1" + +PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib" + +FILES:${PN} = "" +FILES:${PN}-apps = "${bindir}" +FILES:${PN}-glib = "${datadir}/glib-2.0" + +RRECOMMENDS:${PN} += "${PN}-meta" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc deleted file mode 100644 index 63ba316328..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly.inc +++ /dev/null @@ -1,30 +0,0 @@ -require gstreamer1.0-plugins.inc - -LICENSE = "GPLv2+ & LGPLv2.1+ & LGPLv2+" -LICENSE_FLAGS = "commercial" - -DEPENDS += "gstreamer1.0-plugins-base libid3tag" - -inherit gettext - - -PACKAGECONFIG ??= " \ - orc a52dec lame mad mpeg2dec \ - " - -PACKAGECONFIG[a52dec] = "--enable-a52dec,--disable-a52dec,liba52" -PACKAGECONFIG[cdio] = "--enable-cdio,--disable-cdio,libcdio" -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[x264] = "--enable-x264,--disable-x264,x264" - - -EXTRA_OECONF += " \ - --disable-amrnb \ - --disable-amrwb \ - --disable-sidplay \ - --disable-twolame \ - " - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb new file mode 100644 index 0000000000..9b6f80aa89 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.20.0.bb @@ -0,0 +1,46 @@ +require gstreamer1.0-plugins-common.inc + +DESCRIPTION = "'Ugly GStreamer plugins" +HOMEPAGE = "https://gstreamer.freedesktop.org/" +BUGTRACKER = "https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/issues" + +LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ + file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068" + +LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later" +LICENSE_FLAGS = "commercial" + +SRC_URI = " \ + https://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-${PV}.tar.xz \ + " +SRC_URI[sha256sum] = "4e8dcb5d26552f0a4937f6bc6279bd9070f55ca6ae0eaa32d72d264c44001c2e" + +S = "${WORKDIR}/gst-plugins-ugly-${PV}" + +DEPENDS += "gstreamer1.0-plugins-base" + +GST_PLUGIN_SET_HAS_EXAMPLES = "0" + +PACKAGECONFIG ??= " \ + ${GSTREAMER_ORC} \ + gpl a52dec mpeg2dec \ +" + +PACKAGECONFIG[amrnb] = "-Damrnb=enabled,-Damrnb=disabled,opencore-amr" +PACKAGECONFIG[amrwb] = "-Damrwbdec=enabled,-Damrwbdec=disabled,opencore-amr" + +# GPL - only built if gpl option is also enabled! +PACKAGECONFIG[gpl] = "-Dgpl=enabled,-Dgpl=disabled" +PACKAGECONFIG[cdio] = "-Dcdio=enabled,-Dcdio=disabled,libcdio" +PACKAGECONFIG[a52dec] = "-Da52dec=enabled,-Da52dec=disabled,liba52" +PACKAGECONFIG[dvdread] = "-Ddvdread=enabled,-Ddvdread=disabled,libdvdread" +PACKAGECONFIG[mpeg2dec] = "-Dmpeg2dec=enabled,-Dmpeg2dec=disabled,mpeg2dec" +PACKAGECONFIG[x264] = "-Dx264=enabled,-Dx264=disabled,x264" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dsidplay=disabled \ +" + +FILES:${PN}-amrnb += "${datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs" +FILES:${PN}-x264 += "${datadir}/gstreamer-1.0/presets/GstX264Enc.prs" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.5.bb deleted file mode 100644 index 25cb28c060..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.5.bb +++ /dev/null @@ -1,10 +0,0 @@ -include gstreamer1.0-plugins-ugly.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068 " - -SRC_URI[md5sum] = "6954beed7bb9a93e426dee543ff46393" -SRC_URI[sha256sum] = "5cd5e81cf618944f4dc935f1669b2125e8bb2fe9cc7dc8dc15b72237aca49067" - -S = "${WORKDIR}/gst-plugins-ugly-${PV}" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb deleted file mode 100644 index dcf5ffc3c1..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_git.bb +++ /dev/null @@ -1,17 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0-plugins-ugly.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ - file://tests/check/elements/xingmux.c;beginline=1;endline=21;md5=4c771b8af188724855cb99cadd390068 " - -S = "${WORKDIR}/git" - -SRCREV = "06b8ac10cee85c5c304ca320997aa8f44295a66f" - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc deleted file mode 100644 index f1783b768b..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins.inc +++ /dev/null @@ -1,59 +0,0 @@ -SUMMARY = "Plugins for the GStreamer multimedia framework 1.x" -HOMEPAGE = "http://gstreamer.freedesktop.org/" -BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" -SECTION = "multimedia" -DEPENDS = "gstreamer1.0" - -inherit autotools pkgconfig - -GSTREAMER_1_0_DEBUG ?= "--disable-debug" -GSTREAMER_1_0_GIT_BRANCH ?= "master" -EXTRA_OECONF = "--disable-valgrind ${GSTREAMER_1_0_DEBUG} --disable-examples " - -acpaths = "-I ${S}/common/m4 -I ${S}/m4" - -LIBV = "1.0" -require gst-plugins-package.inc - -PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc orc-native" - -export ORCC = "${STAGING_DIR_NATIVE}${bindir}/orcc" - -PACKAGES_DYNAMIC = "^${PN}-.*" - -# apply gstreamer hack after Makefile.in.in in source is replaced by our version from -# ${STAGING_DATADIR_NATIVE}/gettext/po/Makefile.in.in, but before configure is executed -# http://lists.linuxtogo.org/pipermail/openembedded-core/2012-November/032233.html -oe_runconf_prepend() { - if [ -e ${S}/po/Makefile.in.in ]; then - sed -i -e "1a\\" -e 'GETTEXT_PACKAGE = @GETTEXT_PACKAGE@' ${S}/po/Makefile.in.in - fi -} - -SRC_URI = "${@get_gst_srcuri(d)}" - -def get_gst_srcuri(d): - # check if expected prefix is present - prefix = "gstreamer1.0-" - bpn = d.getVar("BPN", True) - if not bpn.startswith(prefix): - bb.fatal('Invalid GStreamer 1.0 plugin package name "%s" : must start with "%s"' % (bpn, prefix)) - - # replaced prefix with "gst-", which is what is used for the tarball and repository filenames - gstpkg_basename = "gst-" + bpn[len(prefix):] - pv = d.getVar("PV", True) - branch = d.getVar("GSTREAMER_1_0_GIT_BRANCH", True) - - if pv == "git": - s = "git://anongit.freedesktop.org/gstreamer/%s;branch=%s" % (gstpkg_basename, branch) - else: - s = "http://gstreamer.freedesktop.org/src/%s/%s-%s.tar.xz" % (gstpkg_basename, gstpkg_basename, pv) - return s - -delete_liblink_m4_file() { - # This m4 file contains nastiness which conflicts with libtool 2.2.2 - rm "${S}/m4/lib-link.m4" || true -} - -do_configure[prefuncs] += " delete_liblink_m4_file " - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.0.bb new file mode 100644 index 0000000000..29d7c55acb --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-python_1.20.0.bb @@ -0,0 +1,30 @@ +SUMMARY = "Python bindings for GStreamer 1.0" +DESCRIPTION = "GStreamer Python binding overrides (complementing the bindings \ +provided by python-gi) " +HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-python/" +SECTION = "multimedia" + +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=c34deae4e395ca07e725ab0076a5f740" + +SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" +SRC_URI[sha256sum] = "8f67bdc5606ba33606c6bc896e89de7dcd8cf4fca459f71389b1b6fe075b5e54" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject" +RDEPENDS:${PN} += "gstreamer1.0 gstreamer1.0-plugins-base python3-pygobject" + +PNREAL = "gst-python" + +S = "${WORKDIR}/${PNREAL}-${PV}" + +EXTRA_OEMESON += "\ + -Dtests=disabled \ + -Dplugin=enabled \ + -Dlibpython-dir=${libdir} \ +" + +# gobject-introspection is mandatory and cannot be configured +REQUIRED_DISTRO_FEATURES = "gobject-introspection-data" +GIR_MESON_OPTION = "" + +inherit meson pkgconfig setuptools3-base upstream-version-is-even gobject-introspection features_check diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc deleted file mode 100644 index 28a9420f85..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server.inc +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "A library on top of GStreamer for building an RTSP server" -SECTION = "multimedia" -LICENSE = "LGPLv2" -HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/" -DEPENDS = "gstreamer1.0 libcgroup gstreamer1.0-plugins-base" - -PNREAL = "gst-rtsp-server" - -SRC_URI = "http://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" - -S = "${WORKDIR}/${PNREAL}-${PV}" - -inherit autotools pkgconfig - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.0.bb new file mode 100644 index 0000000000..be81f87616 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.20.0.bb @@ -0,0 +1,31 @@ +SUMMARY = "A library on top of GStreamer for building an RTSP server" +HOMEPAGE = "http://cgit.freedesktop.org/gstreamer/gst-rtsp-server/" +SECTION = "multimedia" +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770" + +DEPENDS = "gstreamer1.0 gstreamer1.0-plugins-base" + +PNREAL = "gst-rtsp-server" + +SRC_URI = "https://gstreamer.freedesktop.org/src/${PNREAL}/${PNREAL}-${PV}.tar.xz" + +SRC_URI[sha256sum] = "c209f5ed906da713fdd44a8844e909aa6c8af3dfb630259b092cfb77a7755843" + +S = "${WORKDIR}/${PNREAL}-${PV}" + +inherit meson pkgconfig upstream-version-is-even gobject-introspection + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dexamples=disabled \ + -Dtests=disabled \ +" + +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" + +# Starting with 1.8.0 gst-rtsp-server includes dependency-less plugins as well +require gstreamer1.0-plugins-packaging.inc + +CVE_PRODUCT += "gst-rtsp-server" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb deleted file mode 100644 index bb9b42b53f..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb +++ /dev/null @@ -1,6 +0,0 @@ -include gstreamer1.0-rtsp-server.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" - -SRC_URI[md5sum] = "a9f9b8899ec7ab33663cda7627db40d3" -SRC_URI[sha256sum] = "3089254bd31b7c1f1cf2c034a3b3551f92878f9e3cab65cef3a901a04c0f1d37" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.0.bb new file mode 100644 index 0000000000..7ef8ae3138 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.20.0.bb @@ -0,0 +1,53 @@ +SUMMARY = "VA-API support to GStreamer" +HOMEPAGE = "https://gstreamer.freedesktop.org/" +DESCRIPTION = "gstreamer-vaapi consists of a collection of VA-API \ +based plugins for GStreamer and helper libraries: `vaapidecode', \ +`vaapiconvert', and `vaapisink'." + +REALPN = "gstreamer-vaapi" + +LICENSE = "LGPL-2.1-or-later" +LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c" + +SRC_URI = "https://gstreamer.freedesktop.org/src/${REALPN}/${REALPN}-${PV}.tar.xz" + +SRC_URI[sha256sum] = "f79a47346dfd5e585e063e77078e5fc498b06dee895bfcbf47d8863fcac9ea32" + +S = "${WORKDIR}/${REALPN}-${PV}" +DEPENDS = "libva gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-bad" + +inherit meson pkgconfig features_check upstream-version-is-even + +REQUIRED_DISTRO_FEATURES ?= "opengl" + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dexamples=disabled \ + -Dtests=enabled \ +" + +PACKAGES =+ "${PN}-tests" + +# OpenGL packageconfig factored out to make it easy for distros +# and BSP layers to pick either glx, egl, or no GL. By default, +# try detecting X11 first, and if found (with OpenGL), use GLX, +# otherwise try to check if EGL can be used. +PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'glx', \ + bb.utils.contains('DISTRO_FEATURES', 'opengl', 'egl', \ + '', d), d)}" + +PACKAGECONFIG ??= "drm encoders \ + ${PACKAGECONFIG_GL} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'wayland x11', d)}" + +PACKAGECONFIG[drm] = "-Dwith_drm=yes,-Dwith_drm=no,udev libdrm" +PACKAGECONFIG[egl] = "-Dwith_egl=yes,-Dwith_egl=no,virtual/egl" +PACKAGECONFIG[encoders] = "-Dwith_encoders=yes,-Dwith_encoders=no" +PACKAGECONFIG[glx] = "-Dwith_glx=yes,-Dwith_glx=no,virtual/libgl" +PACKAGECONFIG[wayland] = "-Dwith_wayland=yes,-Dwith_wayland=no,wayland-native wayland wayland-protocols" +PACKAGECONFIG[x11] = "-Dwith_x11=yes,-Dwith_x11=no,virtual/libx11 libxrandr libxrender" + +FILES:${PN} += "${libdir}/gstreamer-*/*.so" +FILES:${PN}-dbg += "${libdir}/gstreamer-*/.debug" +FILES:${PN}-dev += "${libdir}/gstreamer-*/*.a" +FILES:${PN}-tests = "${bindir}/*" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc deleted file mode 100644 index be8aa8f9cb..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0.inc +++ /dev/null @@ -1,29 +0,0 @@ -SUMMARY = "GStreamer 1.0 multimedia framework" -DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \ -It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime." -HOMEPAGE = "http://gstreamer.freedesktop.org/" -BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" -SECTION = "multimedia" -LICENSE = "LGPLv2+" -DEPENDS = "glib-2.0 libxml2 bison-native flex-native" - -inherit autotools pkgconfig gettext - -PACKAGECONFIG[debug] = "--enable-debug,--disable-debug" -PACKAGECONFIG[check] = "--enable-check,--disable-check" - -EXTRA_OECONF = "--disable-docbook --disable-gtk-doc \ - --disable-dependency-tracking \ - --disable-examples --disable-tests \ - --disable-valgrind \ - " - -RRECOMMENDS_${PN}_qemux86 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi" -RRECOMMENDS_${PN}_qemux86-64 += "kernel-module-snd-ens1370 kernel-module-snd-rawmidi" - -CACHED_CONFIGUREVARS += "ac_cv_header_valgrind_valgrind_h=no" - -FILES_${PN} += " ${libdir}/gstreamer-1.0/*.so" -FILES_${PN}-dev += " ${libdir}/gstreamer-1.0/*.la ${libdir}/gstreamer-1.0/*.a" -FILES_${PN}-dbg += " ${libdir}/gstreamer-1.0/.debug/ ${libexecdir}/gstreamer-1.0/.debug/" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-Fix-crash-with-gst-inspect.patch deleted file mode 100644 index 94f5cc56e8..0000000000 --- a/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/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch deleted file mode 100644 index 8213c4b8b5..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 81fecd367b016e5ac4fb0c04b84da5c474f30da6 Mon Sep 17 00:00:00 2001 -From: Peter Urbanec <git.user@urbanec.net> -Date: Fri, 27 Feb 2015 01:16:58 +1100 -Subject: [PATCH 1/1] gstinfo: Shorten __FILE__ on all platforms. - -This is useful not only for MSVC, but also with gcc/Linux when doing -cross-compilation builds and out-of-tree builds. - -Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=745213] - -Signed-off-by: Peter Urbanec <git.user@urbanec.net> ---- - gst/gstinfo.c | 11 ++++------- - 1 file changed, 4 insertions(+), 7 deletions(-) - -diff --git a/gst/gstinfo.c b/gst/gstinfo.c -index b2a3005..8b61d09 100644 ---- a/gst/gstinfo.c -+++ b/gst/gstinfo.c -@@ -444,7 +444,6 @@ gst_debug_log (GstDebugCategory * category, GstDebugLevel level, - va_end (var_args); - } - --#ifdef G_OS_WIN32 - /* based on g_basename(), which we can't use because it was deprecated */ - static inline const gchar * - gst_path_basename (const gchar * file_name) -@@ -467,7 +466,6 @@ gst_path_basename (const gchar * file_name) - - return file_name; - } --#endif - - /** - * gst_debug_log_valist: -@@ -497,12 +495,11 @@ gst_debug_log_valist (GstDebugCategory * category, GstDebugLevel level, - g_return_if_fail (function != NULL); - g_return_if_fail (format != NULL); - -- /* The predefined macro __FILE__ is always the exact path given to the -- * compiler with MSVC, which may or may not be the basename. We work -- * around it at runtime to improve the readability. */ --#ifdef G_OS_WIN32 -+ /* The predefined macro __FILE__ can be an absolute path in some build -+ * environments, such as MSVC or out-of-tree cross-compiles. This may -+ * be significantly longer than the filename. We work around it at -+ * runtime to improve the readability. */ - file = gst_path_basename (file); --#endif - - message.message = NULL; - message.format = format; --- -2.3.0 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-respect-the-idententaion-used-in-meson.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-respect-the-idententaion-used-in-meson.patch new file mode 100644 index 0000000000..312c04fbfd --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-tests-respect-the-idententaion-used-in-meson.patch @@ -0,0 +1,36 @@ +From 1eb77a4ea5a3967c688d8f1192f99c605badc7e2 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 11 Apr 2021 19:48:13 +0100 +Subject: [PATCH 1/4] tests: respect the idententaion used in meson + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + subprojects/gstreamer/tests/check/meson.build | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build +index 9c4228b6e4..506606684d 100644 +--- a/subprojects/gstreamer/tests/check/meson.build ++++ b/subprojects/gstreamer/tests/check/meson.build +@@ -146,11 +146,11 @@ foreach t : core_tests + + if not skip_test + exe = executable(test_name, fname, +- c_args : gst_c_args + test_defines, +- cpp_args : gst_c_args + test_defines, +- include_directories : [configinc], +- link_with : link_with_libs, +- dependencies : test_deps + glib_deps + gst_deps, ++ c_args : gst_c_args + test_defines, ++ cpp_args : gst_c_args + test_defines, ++ include_directories : [configinc], ++ link_with : link_with_libs, ++ dependencies : test_deps + glib_deps + gst_deps, + ) + + env = environment() +-- +2.33.1 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch deleted file mode 100644 index 1505cbefcb..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 6914566ed6a89c96973a578aa5ecd01ee68cdcfd Mon Sep 17 00:00:00 2001 -From: Jian <Jian.Li@freescale.com> -Date: Thu, 14 May 2015 15:49:43 +0800 -Subject: [PATCH] basesink: Fix QoS/lateness checking if subclass implements - prepare/prepare_list vfuncs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In basesink functions gst_base_sink_chain_unlocked(), below code is used to -checking if buffer is late before doing prepare call to save some effort: - if (syncable && do_sync) - late = - gst_base_sink_is_too_late (basesink, obj, rstart, rstop, - GST_CLOCK_EARLY, 0, FALSE); - - if (G_UNLIKELY (late)) - goto dropped; - -But this code has problem, it should calculate jitter based on current media -clock, rather than just passing 0. I found it will drop all the frames when -rewind in slow speed, such as -2X. - -https://bugzilla.gnome.org/show_bug.cgi?id=749258 - -Upstream-Status: Backport [1.5.1] ---- - libs/gst/base/gstbasesink.c | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c -index a505695..5fb2d6a 100644 ---- a/libs/gst/base/gstbasesink.c -+++ b/libs/gst/base/gstbasesink.c -@@ -3369,10 +3369,28 @@ gst_base_sink_chain_unlocked (GstBaseSink * basesink, GstPad * pad, - if (G_UNLIKELY (stepped)) - goto dropped; - -- if (syncable && do_sync) -- late = -- gst_base_sink_is_too_late (basesink, obj, rstart, rstop, -- GST_CLOCK_EARLY, 0, FALSE); -+ if (syncable && do_sync) { -+ GstClock *clock; -+ -+ GST_OBJECT_LOCK (basesink); -+ clock = GST_ELEMENT_CLOCK (basesink); -+ if (clock && GST_STATE (basesink) == GST_STATE_PLAYING) { -+ GstClockTime base_time; -+ GstClockTime stime; -+ GstClockTime now; -+ -+ base_time = GST_ELEMENT_CAST (basesink)->base_time; -+ stime = base_time + gst_base_sink_adjust_time (basesink, rstart); -+ now = gst_clock_get_time (clock); -+ GST_OBJECT_UNLOCK (basesink); -+ -+ late = -+ gst_base_sink_is_too_late (basesink, obj, rstart, rstop, -+ GST_CLOCK_EARLY, GST_CLOCK_DIFF (stime, now), FALSE); -+ } else { -+ GST_OBJECT_UNLOCK (basesink); -+ } -+ } - - if (G_UNLIKELY (late)) - goto dropped; --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch new file mode 100644 index 0000000000..d18c19c397 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0002-tests-add-support-for-install-the-tests.patch @@ -0,0 +1,109 @@ +From 62f5bb7bfc2498219df7280e73480d8ed2378ce5 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 11 Apr 2021 19:48:13 +0100 +Subject: [PATCH 2/4] tests: add support for install the tests + +This will provide to run the tests using the gnome-desktop-testing [1] + +[1] https://wiki.gnome.org/Initiatives/GnomeGoals/InstalledTests + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + subprojects/gstreamer/meson.build | 4 ++++ + subprojects/gstreamer/meson_options.txt | 1 + + subprojects/gstreamer/tests/check/meson.build | 22 ++++++++++++++++++- + .../gstreamer/tests/check/template.test.in | 3 +++ + 4 files changed, 29 insertions(+), 1 deletion(-) + create mode 100644 subprojects/gstreamer/tests/check/template.test.in + +diff --git a/subprojects/gstreamer/meson.build b/subprojects/gstreamer/meson.build +index d20fe0040f..b595d8f990 100644 +--- a/subprojects/gstreamer/meson.build ++++ b/subprojects/gstreamer/meson.build +@@ -562,6 +562,10 @@ if bashcomp_dep.found() + endif + endif + ++installed_tests_enabled = get_option('installed_tests') ++installed_tests_metadir = join_paths(datadir, 'installed-tests', meson.project_name()) ++installed_tests_execdir = join_paths(libexecdir, 'installed-tests', meson.project_name()) ++ + plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0') + + pkgconfig = import('pkgconfig') +diff --git a/subprojects/gstreamer/meson_options.txt b/subprojects/gstreamer/meson_options.txt +index 7363bdb7a1..a34ba37dad 100644 +--- a/subprojects/gstreamer/meson_options.txt ++++ b/subprojects/gstreamer/meson_options.txt +@@ -15,6 +15,7 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso + option('memory-alignment', type: 'combo', + choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'], + value: 'malloc') ++option('installed_tests', type : 'boolean', value : false, description : 'Enable installed tests') + + # Feature options + option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries') +diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build +index 506606684d..00a138a568 100644 +--- a/subprojects/gstreamer/tests/check/meson.build ++++ b/subprojects/gstreamer/tests/check/meson.build +@@ -124,10 +124,16 @@ test_defines = [ + '-UG_DISABLE_ASSERT', + '-UG_DISABLE_CAST_CHECKS', + '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"', +- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"', + '-DGST_DISABLE_DEPRECATED', + ] + ++testfile = meson.current_source_dir() + '/meson.build' ++if installed_tests_enabled ++ install_data(testfile, install_dir : installed_tests_metadir, rename : 'testfile') ++ testfile = installed_tests_metadir + '/testfile' ++endif ++test_defines += '-DTESTFILE="@0@"'.format(testfile) ++ + # sanity checking + if get_option('check').disabled() + if get_option('tests').enabled() +@@ -151,6 +157,8 @@ foreach t : core_tests + include_directories : [configinc], + link_with : link_with_libs, + dependencies : test_deps + glib_deps + gst_deps, ++ install_dir: installed_tests_execdir, ++ install: installed_tests_enabled, + ) + + env = environment() +@@ -162,6 +170,18 @@ foreach t : core_tests + env.set('GST_PLUGIN_SCANNER_1_0', gst_scanner_dir + '/gst-plugin-scanner') + env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer') + ++ if installed_tests_enabled ++ test_conf = configuration_data() ++ test_conf.set('installed_tests_dir', join_paths(prefix, installed_tests_execdir)) ++ test_conf.set('program', test_name) ++ configure_file( ++ input: 'template.test.in', ++ output: test_name + '.test', ++ install_dir: installed_tests_metadir, ++ configuration: test_conf ++ ) ++ endif ++ + test(test_name, exe, env: env, timeout : 3 * 60) + endif + endforeach +diff --git a/subprojects/gstreamer/tests/check/template.test.in b/subprojects/gstreamer/tests/check/template.test.in +new file mode 100644 +index 0000000000..f701627f87 +--- /dev/null ++++ b/subprojects/gstreamer/tests/check/template.test.in +@@ -0,0 +1,3 @@ ++[Test] ++Type=session ++Exec=@installed_tests_dir@/@program@ +-- +2.33.1 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch deleted file mode 100755 index d682ee60c4..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 73df2b5c0aea58015788f5a94a3ec65296a688d3 Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Thu, 2 Jul 2015 14:32:21 +0800 -Subject: [PATCH] basesink: Shouldn't drop buffer when sync=false - -Shouldn't drop buffer when sync=false - -Upstream-Status: Accepted - -https://bugzilla.gnome.org/show_bug.cgi?id=751819 ---- - libs/gst/base/gstbasesink.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c -index d44e8fc..cd759ac 100644 ---- a/libs/gst/base/gstbasesink.c -+++ b/libs/gst/base/gstbasesink.c -@@ -3423,7 +3423,7 @@ gst_base_sink_chain_unlocked (GstBaseSink * basesink, GstPad * pad, - if (G_UNLIKELY (stepped)) - goto dropped; - -- if (syncable && do_sync) { -+ if (syncable && do_sync && gst_base_sink_get_sync (basesink)) { - GstClock *clock; - - GST_OBJECT_LOCK (basesink); --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch new file mode 100644 index 0000000000..10a6dcc619 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0003-tests-use-a-dictionaries-for-environment.patch @@ -0,0 +1,50 @@ +From fe830f0f75f3b4b41e3dbef8d4cf6ee4103c9e06 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sat, 24 Apr 2021 10:34:47 +0100 +Subject: [PATCH 3/4] tests: use a dictionaries for environment + +meson environment() can't be passed to configure_file and it is needed for installed_tests, +use a dictionary as this is simplest solution to install the environment. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + subprojects/gstreamer/tests/check/meson.build | 21 ++++++++++++------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build +index 00a138a568..48ec2532f8 100644 +--- a/subprojects/gstreamer/tests/check/meson.build ++++ b/subprojects/gstreamer/tests/check/meson.build +@@ -161,14 +161,19 @@ foreach t : core_tests + install: installed_tests_enabled, + ) + +- env = environment() +- env.set('GST_PLUGIN_PATH_1_0', meson.project_build_root()) +- env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') +- env.set('GST_STATE_IGNORE_ELEMENTS', '') +- env.set('CK_DEFAULT_TIMEOUT', '20') +- env.set('GST_REGISTRY', '@0@/@1@.registry'.format(meson.current_build_dir(), test_name)) +- env.set('GST_PLUGIN_SCANNER_1_0', gst_scanner_dir + '/gst-plugin-scanner') +- env.set('GST_PLUGIN_LOADING_WHITELIST', 'gstreamer') ++ # meson environment object can't be passed to configure_file and ++ # installed tests uses configure_file to install the environment. ++ # use a dictionary as this is the simplest solution ++ # to install the environment. ++ env = { ++ 'GST_PLUGIN_PATH_1_0': meson.project_build_root(), ++ 'GST_PLUGIN_SYSTEM_PATH_1_0': '', ++ 'GST_STATE_IGNORE_ELEMENTS': '', ++ 'CK_DEFAULT_TIMEOUT': '20', ++ 'GST_REGISTRY': '@0@/@1@.registry'.format(meson.current_build_dir(), test_name), ++ 'GST_PLUGIN_SCANNER_1_0': gst_scanner_dir + '/gst-plugin-scanner', ++ 'GST_PLUGIN_LOADING_WHITELIST': 'gstreamer', ++ } + + if installed_tests_enabled + test_conf = configuration_data() +-- +2.33.1 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch new file mode 100644 index 0000000000..efa004f8ce --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0004-tests-add-helper-script-to-run-the-installed_tests.patch @@ -0,0 +1,74 @@ +From 4dcbabebca2ad6f1fdd59ee35a858082e87db7b6 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma <quaresma.jose@gmail.com> +Date: Sun, 2 May 2021 01:58:01 +0100 +Subject: [PATCH 4/4] tests: add helper script to run the installed_tests + +- this is a bash script that will run the installed_tests +with some of the environment variables used in the meson +testing framework. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/789] + +Signed-off-by: Jose Quaresma <quaresma.jose@gmail.com> +--- + subprojects/gstreamer/tests/check/meson.build | 17 +++++++++++++++++ + .../gstreamer/tests/check/template.sh.in | 9 +++++++++ + .../gstreamer/tests/check/template.test.in | 2 +- + 3 files changed, 27 insertions(+), 1 deletion(-) + create mode 100755 subprojects/gstreamer/tests/check/template.sh.in + +diff --git a/subprojects/gstreamer/tests/check/meson.build b/subprojects/gstreamer/tests/check/meson.build +index 48ec2532f8..7dc4990d4e 100644 +--- a/subprojects/gstreamer/tests/check/meson.build ++++ b/subprojects/gstreamer/tests/check/meson.build +@@ -185,6 +185,23 @@ foreach t : core_tests + install_dir: installed_tests_metadir, + configuration: test_conf + ) ++ ++ # All the tests will be deployed on the target machine and ++ # we use the home folder ~ for the registry which will then expand at runtime. ++ # Using the /tmp/gstreamer-1.0/@0@.registry can be problematic as it mostly ++ # is mounted using tmpfs and if the machine crash from some reason we can lost the registry ++ # that is useful for debug propose of the tests itself. ++ env += {'GST_REGISTRY': '~/.cache/gstreamer-1.0/@0@.registry'.format(test_name)} ++ ++ # Set the full path for the test it self. ++ env += {'TEST': '@0@/@1@'.format(join_paths(prefix, installed_tests_execdir), test_name)} ++ ++ configure_file( ++ input : 'template.sh.in', ++ output: test_name + '.sh', ++ install_dir: installed_tests_execdir, ++ configuration : env, ++ ) + endif + + test(test_name, exe, env: env, timeout : 3 * 60) +diff --git a/subprojects/gstreamer/tests/check/template.sh.in b/subprojects/gstreamer/tests/check/template.sh.in +new file mode 100755 +index 0000000000..cf7d31b0ea +--- /dev/null ++++ b/subprojects/gstreamer/tests/check/template.sh.in +@@ -0,0 +1,9 @@ ++#!/bin/sh ++ ++set -ax ++ ++CK_DEFAULT_TIMEOUT="@CK_DEFAULT_TIMEOUT@" ++GST_PLUGIN_LOADING_WHITELIST="@GST_PLUGIN_LOADING_WHITELIST@" ++GST_REGISTRY=@GST_REGISTRY@ ++GST_STATE_IGNORE_ELEMENTS="@GST_STATE_IGNORE_ELEMENTS@" ++exec @TEST@ +diff --git a/subprojects/gstreamer/tests/check/template.test.in b/subprojects/gstreamer/tests/check/template.test.in +index f701627f87..b74ef6ad73 100644 +--- a/subprojects/gstreamer/tests/check/template.test.in ++++ b/subprojects/gstreamer/tests/check/template.test.in +@@ -1,3 +1,3 @@ + [Test] + Type=session +-Exec=@installed_tests_dir@/@program@ ++Exec=@installed_tests_dir@/@program@.sh +-- +2.33.1 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch new file mode 100644 index 0000000000..f51df6d20b --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0005-tests-remove-gstbin-test_watch_for_state_change-test.patch @@ -0,0 +1,107 @@ +From b935abba3d8fa3ea1ce384c08e650afd8c20b78a Mon Sep 17 00:00:00 2001 +From: Claudius Heine <ch@denx.de> +Date: Wed, 2 Feb 2022 13:47:02 +0100 +Subject: [PATCH] tests: remove gstbin:test_watch_for_state_change testcase + +This testcase seems to be flaky, and upstream marked it as such: +https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/778 + +This patch removes the testcase to avoid it interfering with out ptest. + +Signed-off-by: Claudius Heine <ch@denx.de> + +Upstream-Status: Inappropriate [needs proper upstream fix] +--- + tests/check/gst/gstbin.c | 69 ------------------- + 1 file changed, 69 deletions(-) + +diff --git a/tests/check/gst/gstbin.c b/tests/check/gst/gstbin.c +index e366d5fe20..ac29d81474 100644 +--- a/tests/check/gst/gstbin.c ++++ b/tests/check/gst/gstbin.c +@@ -691,74 +691,6 @@ GST_START_TEST (test_message_state_changed_children) + + GST_END_TEST; + +-GST_START_TEST (test_watch_for_state_change) +-{ +- GstElement *src, *sink, *bin; +- GstBus *bus; +- GstStateChangeReturn ret; +- +- bin = gst_element_factory_make ("bin", NULL); +- fail_unless (bin != NULL, "Could not create bin"); +- +- bus = g_object_new (gst_bus_get_type (), NULL); +- gst_object_ref_sink (bus); +- gst_element_set_bus (GST_ELEMENT_CAST (bin), bus); +- +- src = gst_element_factory_make ("fakesrc", NULL); +- fail_if (src == NULL, "Could not create fakesrc"); +- sink = gst_element_factory_make ("fakesink", NULL); +- fail_if (sink == NULL, "Could not create fakesink"); +- +- gst_bin_add (GST_BIN (bin), sink); +- gst_bin_add (GST_BIN (bin), src); +- +- fail_unless (gst_element_link (src, sink), "could not link src and sink"); +- +- /* change state, spawning two times three messages */ +- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED); +- fail_unless (ret == GST_STATE_CHANGE_ASYNC); +- ret = +- gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, +- GST_CLOCK_TIME_NONE); +- fail_unless (ret == GST_STATE_CHANGE_SUCCESS); +- +- pop_state_changed (bus, 6); +- pop_async_done (bus); +- pop_latency (bus); +- +- fail_unless (gst_bus_have_pending (bus) == FALSE, +- "Unexpected messages on bus"); +- +- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING); +- fail_unless (ret == GST_STATE_CHANGE_SUCCESS); +- +- pop_state_changed (bus, 3); +- +- /* this one might return either SUCCESS or ASYNC, likely SUCCESS */ +- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED); +- gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, GST_CLOCK_TIME_NONE); +- +- pop_state_changed (bus, 3); +- if (ret == GST_STATE_CHANGE_ASYNC) { +- pop_async_done (bus); +- pop_latency (bus); +- } +- +- fail_unless (gst_bus_have_pending (bus) == FALSE, +- "Unexpected messages on bus"); +- +- gst_bus_set_flushing (bus, TRUE); +- +- ret = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_NULL); +- fail_unless (ret == GST_STATE_CHANGE_SUCCESS); +- +- /* clean up */ +- gst_object_unref (bus); +- gst_object_unref (bin); +-} +- +-GST_END_TEST; +- + GST_START_TEST (test_state_change_error_message) + { + GstElement *src, *sink, *bin; +@@ -1956,7 +1888,6 @@ gst_bin_suite (void) + tcase_add_test (tc_chain, test_message_state_changed); + tcase_add_test (tc_chain, test_message_state_changed_child); + tcase_add_test (tc_chain, test_message_state_changed_children); +- tcase_add_test (tc_chain, test_watch_for_state_change); + tcase_add_test (tc_chain, test_state_change_error_message); + tcase_add_test (tc_chain, test_add_linked); + tcase_add_test (tc_chain, test_add_self); +-- +2.33.1 + diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch deleted file mode 100755 index f50ce6ff2e..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0/inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 83bed90c306ed3185d48febf6441177d638f7341 Mon Sep 17 00:00:00 2001 -From: Song Bing <b06498@freescale.com> -Date: Wed, 24 Dec 2014 10:13:51 +0800 -Subject: [PATCH] inputselector: sticky events haven't send out when active - track reach EOS - -EOS event hasn't been send to down-element. The resolution is block EOS event -of inactive pad, send the event after the pad actived. - -https://bugzilla.gnome.org/show_bug.cgi?id=740949 - -Upstream-Status: Backport [1.5.1] - -Signed-off-by: Song Bing <b06498@freescale.com> ---- - plugins/elements/gstinputselector.c | 58 ++++++++++++++++++++++++++--------- - plugins/elements/gstinputselector.h | 1 + - 2 files changed, 45 insertions(+), 14 deletions(-) - -diff --git a/plugins/elements/gstinputselector.c b/plugins/elements/gstinputselector.c -index fb50802..4461f7c 100644 ---- a/plugins/elements/gstinputselector.c -+++ b/plugins/elements/gstinputselector.c -@@ -440,6 +440,17 @@ gst_selector_pad_iterate_linked_pads (GstPad * pad, GstObject * parent) - } - - static gboolean -+gst_input_selector_eos_wait (GstInputSelector * self, GstSelectorPad * pad) -+{ -+ while (!self->eos && !self->flushing && !pad->flushing) { -+ /* we can be unlocked here when we are shutting down (flushing) or when we -+ * get unblocked */ -+ GST_INPUT_SELECTOR_WAIT (self); -+ } -+ return self->flushing; -+} -+ -+static gboolean - gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) - { - gboolean res = TRUE; -@@ -486,6 +497,7 @@ gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) - case GST_EVENT_FLUSH_START: - /* Unblock the pad if it's waiting */ - selpad->flushing = TRUE; -+ sel->eos = FALSE; - GST_INPUT_SELECTOR_BROADCAST (sel); - break; - case GST_EVENT_FLUSH_STOP: -@@ -523,21 +535,12 @@ gst_selector_pad_event (GstPad * pad, GstObject * parent, GstEvent * event) - case GST_EVENT_EOS: - selpad->eos = TRUE; - -- if (forward) { -- selpad->eos_sent = TRUE; -- } else { -- GstSelectorPad *active_selpad; -- -- /* If the active sinkpad is in EOS state but EOS -- * was not sent downstream this means that the pad -- * got EOS before it was set as active pad and that -- * the previously active pad got EOS after it was -- * active -- */ -- active_selpad = GST_SELECTOR_PAD (active_sinkpad); -- forward = (active_selpad->eos && !active_selpad->eos_sent); -- active_selpad->eos_sent = TRUE; -+ if (!forward) { -+ /* blocked until active the sind pad or flush */ -+ gst_input_selector_eos_wait (sel, selpad); -+ forward = TRUE; - } -+ selpad->eos_sent = TRUE; - GST_DEBUG_OBJECT (pad, "received EOS"); - break; - case GST_EVENT_GAP:{ -@@ -676,6 +679,12 @@ gst_input_selector_wait_running_time (GstInputSelector * sel, - gst_input_selector_activate_sinkpad (sel, GST_PAD_CAST (selpad)); - active_selpad = GST_SELECTOR_PAD_CAST (active_sinkpad); - -+ if (sel->eos) { -+ GST_DEBUG_OBJECT (sel, "Not waiting because inputselector reach EOS."); -+ GST_INPUT_SELECTOR_UNLOCK (sel); -+ return FALSE; -+ } -+ - if (seg->format != GST_FORMAT_TIME) { - GST_DEBUG_OBJECT (selpad, - "Not waiting because we don't have a TIME segment"); -@@ -971,6 +980,12 @@ gst_selector_pad_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) - GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf))); - - GST_INPUT_SELECTOR_LOCK (sel); -+ if (sel->eos) { -+ GST_DEBUG_OBJECT (pad, "inputselector eos."); -+ GST_INPUT_SELECTOR_UNLOCK (sel); -+ goto eos; -+ } -+ - /* wait or check for flushing */ - if (gst_input_selector_wait (sel, selpad)) { - GST_INPUT_SELECTOR_UNLOCK (sel); -@@ -1151,6 +1166,13 @@ flushing: - res = GST_FLOW_FLUSHING; - goto done; - } -+eos: -+ { -+ GST_DEBUG_OBJECT (pad, "We are eos, discard buffer %p", buf); -+ gst_buffer_unref (buf); -+ res = GST_FLOW_EOS; -+ goto done; -+ } - } - - static void gst_input_selector_dispose (GObject * object); -@@ -1309,6 +1331,7 @@ gst_input_selector_init (GstInputSelector * sel) - g_mutex_init (&sel->lock); - g_cond_init (&sel->cond); - sel->blocked = FALSE; -+ sel->eos = FALSE; - - /* lets give a change for downstream to do something on - * active-pad change before we start pushing new buffers */ -@@ -1377,6 +1400,11 @@ gst_input_selector_set_active_pad (GstInputSelector * self, GstPad * pad) - GST_DEBUG_OBJECT (self, "New active pad is %" GST_PTR_FORMAT, - self->active_sinkpad); - -+ if (old != new && new->eos && !new->eos_sent) { -+ self->eos = TRUE; -+ GST_INPUT_SELECTOR_BROADCAST (self); -+ } -+ - return TRUE; - } - -@@ -1771,6 +1799,7 @@ gst_input_selector_change_state (GstElement * element, - switch (transition) { - case GST_STATE_CHANGE_READY_TO_PAUSED: - GST_INPUT_SELECTOR_LOCK (self); -+ self->eos = FALSE; - self->blocked = FALSE; - self->flushing = FALSE; - GST_INPUT_SELECTOR_UNLOCK (self); -@@ -1779,6 +1808,7 @@ gst_input_selector_change_state (GstElement * element, - /* first unlock before we call the parent state change function, which - * tries to acquire the stream lock when going to ready. */ - GST_INPUT_SELECTOR_LOCK (self); -+ self->eos = TRUE; - self->blocked = FALSE; - self->flushing = TRUE; - GST_INPUT_SELECTOR_BROADCAST (self); -diff --git a/plugins/elements/gstinputselector.h b/plugins/elements/gstinputselector.h -index 96c680f..9bf924f 100644 ---- a/plugins/elements/gstinputselector.h -+++ b/plugins/elements/gstinputselector.h -@@ -77,6 +77,7 @@ struct _GstInputSelector { - GMutex lock; - GCond cond; - gboolean blocked; -+ gboolean eos; - gboolean flushing; - }; - --- -1.7.9.5 - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest b/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest new file mode 100755 index 0000000000..0cfa955f03 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/run-ptest @@ -0,0 +1,2 @@ +#!/usr/bin/env sh +gnome-desktop-testing-runner gstreamer diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb new file mode 100644 index 0000000000..a8954e0eba --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.20.0.bb @@ -0,0 +1,73 @@ +SUMMARY = "GStreamer 1.0 multimedia framework" +DESCRIPTION = "GStreamer is a multimedia framework for encoding and decoding video and sound. \ +It supports a wide range of formats including mp3, ogg, avi, mpeg and quicktime." +HOMEPAGE = "http://gstreamer.freedesktop.org/" +BUGTRACKER = "https://bugzilla.gnome.org/enter_bug.cgi?product=Gstreamer" +SECTION = "multimedia" +LICENSE = "LGPL-2.1-or-later" + +DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native" + +inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome + +LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \ + file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" + +S = "${WORKDIR}/gstreamer-${PV}" + +SRC_URI = "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ + file://run-ptest \ + file://0001-tests-respect-the-idententaion-used-in-meson.patch;striplevel=3 \ + file://0002-tests-add-support-for-install-the-tests.patch;striplevel=3 \ + file://0003-tests-use-a-dictionaries-for-environment.patch;striplevel=3 \ + file://0004-tests-add-helper-script-to-run-the-installed_tests.patch;striplevel=3 \ + file://0005-tests-remove-gstbin-test_watch_for_state_change-test.patch \ + " +SRC_URI[sha256sum] = "edf4bffff85591d4fff7b21bb9ed7f0feabc123ac4a4eff29e73cbce454f9db7" + +PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'tests', '', d)} \ + check \ + debug \ + tools" + +PACKAGECONFIG[debug] = "-Dgst_debug=true,-Dgst_debug=false" +PACKAGECONFIG[tracer-hooks] = "-Dtracer_hooks=true,-Dtracer_hooks=false" +PACKAGECONFIG[coretracers] = "-Dcoretracers=enabled,-Dcoretracers=disabled" +PACKAGECONFIG[check] = "-Dcheck=enabled,-Dcheck=disabled" +PACKAGECONFIG[tests] = "-Dtests=enabled -Dinstalled_tests=true,-Dtests=disabled -Dinstalled_tests=false" +PACKAGECONFIG[unwind] = "-Dlibunwind=enabled,-Dlibunwind=disabled,libunwind" +PACKAGECONFIG[dw] = "-Dlibdw=enabled,-Dlibdw=disabled,elfutils" +PACKAGECONFIG[bash-completion] = "-Dbash-completion=enabled,-Dbash-completion=disabled,bash-completion" +PACKAGECONFIG[tools] = "-Dtools=enabled,-Dtools=disabled" +PACKAGECONFIG[setcap] = "-Dptp-helper-permissions=capabilities,,libcap libcap-native" + +# TODO: put this in a gettext.bbclass patch +def gettext_oemeson(d): + if d.getVar('USE_NLS') == 'no': + return '-Dnls=disabled' + # Remove the NLS bits if USE_NLS is no or INHIBIT_DEFAULT_DEPS is set + if d.getVar('INHIBIT_DEFAULT_DEPS') and not oe.utils.inherits(d, 'cross-canadian'): + return '-Dnls=disabled' + return '-Dnls=enabled' + +EXTRA_OEMESON += " \ + -Ddoc=disabled \ + -Dexamples=disabled \ + -Ddbghelp=disabled \ + ${@gettext_oemeson(d)} \ +" + +GIR_MESON_ENABLE_FLAG = "enabled" +GIR_MESON_DISABLE_FLAG = "disabled" + +PACKAGES += "${PN}-bash-completion" + +# Add the core element plugins to the main package +FILES:${PN} += "${libdir}/gstreamer-1.0/*.so" +FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include" +FILES:${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*" +FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb" + +CVE_PRODUCT = "gstreamer" + +PTEST_BUILD_HOST_FILES = "" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.4.5.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.4.5.bb deleted file mode 100644 index 73a4a9927a..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.4.5.bb +++ /dev/null @@ -1,18 +0,0 @@ -include gstreamer1.0.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ - file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d" - -SRC_URI = " \ - http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ - file://0001-Fix-crash-with-gst-inspect.patch \ - file://0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch \ - file://inputselector-sticky-events-haven-t-send-out-when-ac-1-4-1.patch \ - file://0002-basesink-Fix-QoS-lateness-checking-if-subclass-imple.patch \ - file://0003-basesink-Shouldn-t-drop-buffer-when-sync-false.patch \ -" -SRC_URI[md5sum] = "88a9289c64a4950ebb4f544980234289" -SRC_URI[sha256sum] = "40801aa7f979024526258a0e94707ba42b8ab6f7d2206e56adbc4433155cb0ae" - -S = "${WORKDIR}/gstreamer-${PV}" - diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb deleted file mode 100644 index cb00d319a7..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_git.bb +++ /dev/null @@ -1,18 +0,0 @@ -DEFAULT_PREFERENCE = "-1" - -include gstreamer1.0.inc - -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;branch=master" -S = "${WORKDIR}/git" - -SRCREV = "3b8181a8c550e74acaba4e8c55bdc649fa551dc9" - -do_configure_prepend() { - cd ${S} - ./autogen.sh --noconfigure - cd ${B} -} - |