diff options
Diffstat (limited to 'meta/recipes-multimedia/gstreamer')
32 files changed, 740 insertions, 82 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-huffyuvdec-check-width-more-completely-avoid-out-of-.patch b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-huffyuvdec-check-width-more-completely-avoid-out-of-.patch deleted file mode 100644 index 6b60d163fb..0000000000 --- a/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/0001-huffyuvdec-check-width-more-completely-avoid-out-of-.patch +++ /dev/null @@ -1,30 +0,0 @@ -gst-ffmpeg: huffyuvdec: check width more completely, avoid out of array - accesses - -Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind - -Upstream-Status: Backport - -Signed-off-by: Michael Niedermayer <michaelni@gmx.at> ---- - libavcodec/huffyuv.c | 5 ++++- - 1 files changed, 4 insertions(+), 1 deletions(-) - -diff --git a/libavcodec/huffyuv.c b/libavcodec/huffyuv.c -index 6e88114..ca5bcd8 100644 ---- a/gst-libs/ext/libav/libavcodec/huffyuv.c -+++ b/gst-libs/ext/libav/libavcodec/huffyuv.c -@@ -526,6 +526,10 @@ s->bgr32=1; - assert(0); - } - -+ if (s->predictor == MEDIAN && avctx->pix_fmt == AV_PIX_FMT_YUV422P && avctx->width%4) { -+ av_log(avctx, AV_LOG_ERROR, "width must be a multiple of 4 this colorspace and predictor\n"); -+ return AVERROR_INVALIDDATA; -+ } - alloc_temp(s); - - // av_log(NULL, AV_LOG_DEBUG, "pred:%d bpp:%d hbpp:%d il:%d\n", s->predictor, s->bitstream_bpp, avctx->bits_per_coded_sample, s->interlaced); --- -1.7.5.4 - diff --git a/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/libav-9.patch b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/libav-9.patch index 9055b341dc..1860752202 100644 --- a/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/libav-9.patch +++ b/meta/recipes-multimedia/gstreamer/gst-ffmpeg-0.10.13/libav-9.patch @@ -111,7 +111,7 @@ diff -uNr gst-ffmpeg-0.10.13.orig/ext/ffmpeg/gstffmpegcodecmap.c gst-ffmpeg-0.10 #include <gst/gst.h> #ifdef HAVE_FFMPEG_UNINSTALLED #include <avcodec.h> -+#include <channel_layout.h>> ++#include <channel_layout.h> #else #include <libavcodec/avcodec.h> +#include <libavutil/channel_layout.h> diff --git a/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb b/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb index 30e5deb1f9..b5c838f9ea 100644 --- a/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb +++ b/meta/recipes-multimedia/gstreamer/gst-ffmpeg_0.10.13.bb @@ -12,9 +12,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ file://gst-libs/ext/libav/COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" LICENSE_FLAGS = "commercial" HOMEPAGE = "http://www.gstreamer.net/" -DEPENDS = "gstreamer gst-plugins-base zlib bzip2 yasm-native" +DEPENDS = "gstreamer gst-plugins-base zlib bzip2 yasm-native libpostproc" -inherit autotools pkgconfig +inherit autotools-brokensep pkgconfig SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2 \ file://lower-rank.diff \ @@ -46,7 +46,6 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2 \ file://0001-avcodec-rpza-Perform-pointer-advance-and-checks-befo.patch \ file://gst-ffmpeg-CVE-2013-0855.patch \ file://0001-qdm2dec-fix-buffer-overflow.patch \ - file://0001-huffyuvdec-check-width-more-completely-avoid-out-of-.patch \ file://0001-smackerdec-Check-that-the-last-indexes-are-within-th.patch \ file://0001-avcodec-dsputil-fix-signedness-in-sizeof-comparissio.patch \ file://0001-error-concealment-initialize-block-index.patch \ @@ -57,7 +56,7 @@ SRC_URI = "http://gstreamer.freedesktop.org/src/${BPN}/${BPN}-${PV}.tar.bz2 \ file://0001-h264-skip-error-concealment-when-SPS-and-slices-are-.patch \ file://0001-avcodec-smc-fix-off-by-1-error.patch \ file://0002-avcodec-mjpegdec-check-bits-per-pixel-for-changes-si.patch \ - ${@bb.utils.contains('PACKAGECONFIG', 'libav9', 'file://libav-9.patch', '', d)} \ + file://libav-9.patch \ " SRC_URI[md5sum] = "7f5beacaf1312db2db30a026b36888c4" @@ -84,7 +83,6 @@ EXTRA_OECONF = "${FFMPEG_EXTRA_CONFIGURE_COMMON}" PACKAGECONFIG ??= "external-libav" PACKAGECONFIG[external-libav] = "--with-system-ffmpeg,,libav" PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" -PACKAGECONFIG[libav9] = ",,," FILES_${PN} += "${libdir}/gstreamer-0.10/*.so" FILES_${PN}-dbg += "${libdir}/gstreamer-0.10/.debug" diff --git a/meta/recipes-multimedia/gstreamer/gst-fluendo-mp3_0.10.19.bb b/meta/recipes-multimedia/gstreamer/gst-fluendo-mp3_0.10.31.bb index 9e68288844..1e2cd2a4ab 100644 --- a/meta/recipes-multimedia/gstreamer/gst-fluendo-mp3_0.10.19.bb +++ b/meta/recipes-multimedia/gstreamer/gst-fluendo-mp3_0.10.31.bb @@ -6,9 +6,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=259a43dd1c9854b71fc396f74699f4d2" LICENSE_FLAGS = "commercial" GSTREAMER_DEBUG ?= "--disable-debug" -EXTRA_OECONF += "${GSTREAMER_DEBUG}" +EXTRA_OECONF += "${GSTREAMER_DEBUG} --with-gstreamer-api=0.10" acpaths = "-I ${S}/common/m4 -I ${S}/m4" -SRC_URI[md5sum] = "5d95a9a216dd15bc5c00c9414061115c" -SRC_URI[sha256sum] = "30c79d24d8926f75dd4ef0f572942ce155ad541734b36a95591b9c0524dcc0f3" +SRC_URI[md5sum] = "adf0390f3416bb72f91c358528be0c38" +SRC_URI[sha256sum] = "dae0d0559a4e159c0dd92b7e18de059a5783f8d038904c7de4ca6393f7d55c7d" diff --git a/meta/recipes-multimedia/gstreamer/gst-fluendo-mpegdemux_0.10.72.bb b/meta/recipes-multimedia/gstreamer/gst-fluendo-mpegdemux_0.10.85.bb index f79015403b..7bba41a341 100644 --- a/meta/recipes-multimedia/gstreamer/gst-fluendo-mpegdemux_0.10.72.bb +++ b/meta/recipes-multimedia/gstreamer/gst-fluendo-mpegdemux_0.10.85.bb @@ -1,6 +1,6 @@ require gst-fluendo.inc -SUMMARY = "Fluendo closed-format mpeg video GStreamer plug-in" +SUMMARY = "Fluendo MPEG Transport Stream and Program Stream demuxer for GStreamer" LICENSE = "MPLv1.1" LIC_FILES_CHKSUM = "file://COPYING;md5=be282f1c3cc9a98cc0dc5c2b25dfc510 \ file://src/gstmpegdemux.h;beginline=1;endline=19;md5=a9e90033f59897b91664d9f2a2ff01dd" @@ -8,5 +8,5 @@ LICENSE_FLAGS = "commercial" acpaths = "-I ${S}/common/m4 -I ${S}/m4" -SRC_URI[md5sum] = "df726579404af65b9536428661ab4322" -SRC_URI[sha256sum] = "a9784bc16352d0fb73de81b9c17142609e8bede46f6d9b881fc3d19673954abf" +SRC_URI[md5sum] = "7c4fb993f80b9ae631b11897733f0970" +SRC_URI[sha256sum] = "df04c91cc8e5d9a892c2492ed989974b4547beaa2a3647649e85113317897424" diff --git a/meta/recipes-multimedia/gstreamer/gst-fluendo.inc b/meta/recipes-multimedia/gstreamer/gst-fluendo.inc index feaf1c7c62..7a77d624f2 100644 --- a/meta/recipes-multimedia/gstreamer/gst-fluendo.inc +++ b/meta/recipes-multimedia/gstreamer/gst-fluendo.inc @@ -1,7 +1,7 @@ SUMMARY = "Fluendo closed-format GStreamer plug-in" SECTION = "multimedia" -HOMEPAGE = "http://www.fluendo.com/resources/source-plugins.php" -DEPENDS = "gstreamer zlib" +HOMEPAGE = "https://core.fluendo.com/gstreamer/trac/wiki" +DEPENDS = "gstreamer gst-plugins-base zlib" inherit autotools pkgconfig 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 new file mode 100644 index 0000000000..712d46daa0 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-player/Add-error-signal-emission-for-missing-plugins.patch @@ -0,0 +1,252 @@ +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 new file mode 100644 index 0000000000..783c42ad70 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-player/Fix-pause-play.patch @@ -0,0 +1,107 @@ +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 new file mode 100644 index 0000000000..7bf1b034b3 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-player/filechooser.patch @@ -0,0 +1,54 @@ +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/gst-player.desktop b/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop new file mode 100644 index 0000000000..9fd207b384 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-player/gst-player.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Media Player +Comment=Basic media player +Icon=audio-player +TryExec=gtk-play +Exec=gtk-play +StartupNotify=true +Terminal=false +Type=Application +Categories=GTK;AudioVideo; diff --git a/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch b/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch new file mode 100644 index 0000000000..2cd18bbc95 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-player/gtk2.patch @@ -0,0 +1,71 @@ +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 new file mode 100644 index 0000000000..54cfbbc927 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gst-player_git.bb @@ -0,0 +1,38 @@ +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 + +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-good_0.10.31.bb b/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.31.bb index 495bb17649..af18281715 100644 --- a/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.31.bb +++ b/meta/recipes-multimedia/gstreamer/gst-plugins-good_0.10.31.bb @@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ PR = "r8" -PACKAGECONFIG ?= "jpeg \ +PACKAGECONFIG ?= "jpeg v4l \ ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \ ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)} \ " @@ -16,7 +16,9 @@ PACKAGECONFIG[jack] = "--enable-jack,--disable-jack,jack" PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg,jpeg" PACKAGECONFIG[wavpack] = "--enable-wavpack,--disable-wavpack,wavpack" PACKAGECONFIG[gdkpixbuf] = "--enable-gdk_pixbuf,--disable-gdk_pixbuf,gdk-pixbuf" -PACKAGECONFIG[v4l] = "--with-libv4l2,--without-libv4l2,libv4l" +PACKAGECONFIG[v4l] = "--enable-gst_v4l2 --with-gudev,--disable-gst_v4l2 --without-gudev,udev" +# sub-feature of v4l, but control separately since libv4l is not part of oe-core +PACKAGECONFIG[libv4l] = "--with-libv4l2,--without-libv4l2,libv4l" PACKAGECONFIG[bzip2] = "--enable-bz2,--disable-bz2,bzip2" PACKAGECONFIG[orc] = "--enable-orc,--disable-orc,orc" PACKAGECONFIG[x11] = "--enable-x,--disable-x,virtual/libx11 libxfixes libxdamage" @@ -42,3 +44,4 @@ SRC_URI[md5sum] = "24f98a294a2b521e1b29412bdadae2e6" SRC_URI[sha256sum] = "7e27840e40a7932ef2dc032d7201f9f41afcaf0b437daf5d1d44dc96d9e35ac6" FILES_${PN}-gconfelements += "${sysconfdir}/gconf/schemas/gstreamer-0.10.schemas" +FILES_${PN}-equalizer += "${datadir}/gstreamer-0.10/presets/*.prs" diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc b/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc index 7bb567866f..cb1be06d09 100644 --- a/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc +++ b/meta/recipes-multimedia/gstreamer/gst-plugins-package.inc @@ -7,7 +7,7 @@ python split_gstreamer10_packages () { 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=d.expand('${PN}')) + 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')) } @@ -40,8 +40,7 @@ python set_metapkg_rdepends () { d.setVar('DESCRIPTION_' + metapkg, pn + ' meta package') } -# metapkg has runtime dependency on PN -# each plugin depends on PN, plugin-dev on PN-dev, plugin-staticdev on PN-staticdev +# 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" @@ -51,8 +50,9 @@ PACKAGES += "${PN}-apps ${PN}-meta ${PN}-glib" FILES_${PN}-apps = "${bindir}" RDEPENDS_${PN}-apps += "perl" +RRECOMMENDS_${PN} += "${PN}-meta" -FILES_${PN} = "${datadir}/gstreamer-${LIBV}" +FILES_${PN} = "" FILES_${PN}-dbg += "${libdir}/gstreamer-${LIBV}/.debug" FILES_${PN}-glib = "${datadir}/glib-2.0" diff --git a/meta/recipes-multimedia/gstreamer/gst-plugins.inc b/meta/recipes-multimedia/gstreamer/gst-plugins.inc index 26976092d6..c852c53fa9 100644 --- a/meta/recipes-multimedia/gstreamer/gst-plugins.inc +++ b/meta/recipes-multimedia/gstreamer/gst-plugins.inc @@ -19,10 +19,10 @@ require gst-plugins-package.inc 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 +# ${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() { +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 -} +} diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.5.bb index 8bba8312bc..11b1cfb08d 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_1.4.5.bb @@ -3,7 +3,7 @@ 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=df1087a33b5cafe5e70b3452aac81515 \ + 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 \ @@ -13,12 +13,14 @@ SRC_URI = " \ http://gstreamer.freedesktop.org/src/gst-libav/gst-libav-${PV}.tar.xz \ file://0001-Disable-yasm-for-libav-when-disable-yasm.patch \ " -SRC_URI[md5sum] = "ea2d636c24d7c5ae123967ef22e37c07" -SRC_URI[sha256sum] = "fc125521187fa84f3210269a0eecc51f8a856802f1ca4bb251f118dab90c5a9d" +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}" + ${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 index b0e6b2ecb8..bf1b87e6de 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-libav_git.bb @@ -18,7 +18,8 @@ SRCREV = "127202d6f65584891dabf92be031f0d170b0e7f1" LIBAV_EXTRA_CONFIGURE_COMMON_ARG = "--target-os=linux \ --cc='${CC}' --as='${CC}' --ld='${CC}' --nm='${NM}' --ar='${AR}' \ - ${GSTREAMER_1_0_DEBUG}" + ${GSTREAMER_1_0_DEBUG} \ + --cross-prefix='${HOST_PREFIX}'" do_configure_prepend() { cd ${S} diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb index 931a7fcc96..99c84668ef 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-omx_git.bb @@ -6,12 +6,17 @@ 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 \ - file://0001-omx-fixed-type-error-in-printf-call.patch \ + 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 = "a2db76b048db278ef0aa798e106b7594264e06c0" +SRCREV_gst-omx = "a2db76b048db278ef0aa798e106b7594264e06c0" +SRCREV_common = "5edcd857b2107cd8b78c16232dd10877513ec157" + +SRCREV_FORMAT = "gst-omx" do_configure_prepend() { cd ${S} diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc index dab0bf54a6..e2752af612 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad.inc @@ -9,7 +9,7 @@ S = "${WORKDIR}/gst-plugins-bad-${PV}" SRC_URI += "file://configure-allow-to-disable-libssh2.patch \ " -inherit gettext +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 @@ -49,7 +49,7 @@ 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,bluez4" +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" @@ -80,6 +80,7 @@ EXTRA_OECONF += " \ --disable-apple_media \ --disable-avc \ --disable-chromaprint \ + --disable-cocoa \ --disable-daala \ --disable-dc1394 \ --disable-direct3d \ @@ -126,6 +127,7 @@ EXTRA_OECONF += " \ --disable-xvid \ --disable-zbar \ ${GSTREAMER_1_0_ORC} \ + ${@bb.utils.contains("TUNE_FEATURES", "mx32", "--disable-yadif", "", d)} \ " ARM_INSTRUCTION_SET = "arm" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb index f0116c08a1..59065de811 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.4.5.bb @@ -7,7 +7,8 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=73a5855a8119deb017f5f13cf327095d \ SRC_URI += "file://0001-gl-do-not-check-for-GL-GLU-EGL-GLES2-libs-if-disable.patch" -SRC_URI[md5sum] = "20cb190b18dc63017326321cdb7c91e5" -SRC_URI[sha256sum] = "0268db2faaf0bb22e5b709a11633abbca4f3d289b1f513bb262d0bf3f53e19ae" +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 index 75859f9a89..309505f7db 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_git.bb @@ -11,7 +11,6 @@ S = "${WORKDIR}/git" SRCREV = "6e5db57d2446a753aaa76bee268e1f95600b14ce" -PACKAGECONFIG[bluez] = "--enable-bluez,--disable-bluez,bluez4" PACKAGECONFIG[sbc] = "--enable-sbc,--disable-sbc,sbc" PACKAGECONFIG[hls] = "--enable-hls,--disable-hls,gnutls" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc index 972ff18160..06eac67be7 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base.inc @@ -35,6 +35,6 @@ EXTRA_OECONF += " \ ${GSTREAMER_1_0_ORC} \ " -FILES_${PN} += "${datadir}/gst-plugins-base" +FILES_${MLPREFIX}libgsttag-1.0 += "${datadir}/gst-plugins-base/1.0/license-translations.dict" CACHED_CONFIGUREVARS_append_i586 = " ac_cv_header_emmintrin_h=no ac_cv_header_xmmintrin_h=no" 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 new file mode 100644 index 0000000000..51fdc7e177 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/taglist-not-send-to-down-stream-if-all-the-frame-cor.patch @@ -0,0 +1,57 @@ +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_1.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb index 0db42cec94..11cf8b4fde 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base_1.4.5.bb @@ -7,8 +7,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \ 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 \ " -SRC_URI[md5sum] = "a825628225bd0a58c0df87cdd2a5db91" -SRC_URI[sha256sum] = "aea9e25be6691bd3cc0785d005b2b5d70ce313a2c897901680a3f7e7cab5a499" +SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e" +SRC_URI[sha256sum] = "77bd8199e7a312d3d71de9b7ddf761a3b78560a2c2a80829d0815ca39cbd551d" + S = "${WORKDIR}/gst-plugins-base-${PV}" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc index b33ab2b705..37217f004d 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good.inc @@ -55,3 +55,4 @@ EXTRA_OECONF += " \ ${GSTREAMER_1_0_ORC} \ " +FILES_${PN}-equalizer += "${datadir}/gstreamer-1.0/presets/*.prs" 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 new file mode 100755 index 0000000000..7f94f50760 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good/decrease_asteriskh263_rank.patch @@ -0,0 +1,25 @@ +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.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.4.5.bb index 441dd51e39..943ab60397 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.4.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-good_1.4.5.bb @@ -5,8 +5,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \ 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] = "eb3a3296b2f6009def1f5a09590ce767" -SRC_URI[sha256sum] = "8559d4270065b30ed5c49b826e1b7a3a2bd5ee9a340ae745a2ae3f9718e4c637" -S = "${WORKDIR}/gst-plugins-good-${PV}" +SRC_URI[md5sum] = "eaf1a6daf73749bc423feac301d60038" +SRC_URI[sha256sum] = "79b1b5f3f7bcaa8a615202eb5e176121eeb8336960f70687e536ad78dbc7e641" +S = "${WORKDIR}/gst-plugins-good-${PV}" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.5.bb index 6d63ba62d4..25cb28c060 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-ugly_1.4.5.bb @@ -2,7 +2,9 @@ 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] = "316974af949ca4654efee704a0164076" -SRC_URI[sha256sum] = "25440435ac4ed795d213f2420a0e7355e4a2e2e76d1f9d020b2073f815e8b071" + +SRC_URI[md5sum] = "6954beed7bb9a93e426dee543ff46393" +SRC_URI[sha256sum] = "5cd5e81cf618944f4dc935f1669b2125e8bb2fe9cc7dc8dc15b72237aca49067" + S = "${WORKDIR}/gst-plugins-ugly-${PV}" diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.1.bb deleted file mode 100644 index 1f34be0e8f..0000000000 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.1.bb +++ /dev/null @@ -1,6 +0,0 @@ -include gstreamer1.0-rtsp-server.inc - -LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d" - -SRC_URI[md5sum] = "e39f8643eb363611c342d87088a29aa0" -SRC_URI[sha256sum] = "10aeacc774e99d81607aeb2748c0a1c6736425b8ae3a9caf8db3cd0c4a08d06e" 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 new file mode 100644 index 0000000000..bb9b42b53f --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-rtsp-server_1.4.5.bb @@ -0,0 +1,6 @@ +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/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch new file mode 100644 index 0000000000..8213c4b8b5 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch @@ -0,0 +1,55 @@ +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_1.4.1.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.4.5.bb index 56fc4f2083..0a2ce86343 100644 --- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.4.1.bb +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.4.5.bb @@ -6,8 +6,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=6762ed442b3822387a51c92d928ead0d \ SRC_URI = " \ http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.xz \ file://0001-Fix-crash-with-gst-inspect.patch \ + file://0001-gstinfo-Shorten-__FILE__-on-all-platforms.patch \ " -SRC_URI[md5sum] = "bd0938d680d657249b885162f310702d" -SRC_URI[sha256sum] = "5638f75003282135815c0077d491da11e9a884ad91d4ba6ab3cc78bae0fb452e" +SRC_URI[md5sum] = "88a9289c64a4950ebb4f544980234289" +SRC_URI[sha256sum] = "40801aa7f979024526258a0e94707ba42b8ab6f7d2206e56adbc4433155cb0ae" + S = "${WORKDIR}/gstreamer-${PV}" |