diff -Nru gst-plugins-base0.10-0.10.36/debian/changelog gst-plugins-base0.10-0.10.36/debian/changelog --- gst-plugins-base0.10-0.10.36/debian/changelog 2012-09-24 15:20:30.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/changelog 2012-12-06 13:25:10.000000000 +0000 @@ -1,3 +1,10 @@ +gst-plugins-base0.10 (0.10.36-1+ti1.6.7.1+1) precise; urgency=low + + * Refreshed TI patches based on commit c779786a + * Updated GStreamer symbols according to TI patches + + -- Olivier Naudan Thu, 06 Dec 2012 12:47:01 +0000 + gst-plugins-base0.10 (0.10.36-1+ti1.6.6.1+1) precise; urgency=low * Refreshed TI patches based on commit fad32193 diff -Nru gst-plugins-base0.10-0.10.36/debian/libgstreamer-plugins-base.symbols gst-plugins-base0.10-0.10.36/debian/libgstreamer-plugins-base.symbols --- gst-plugins-base0.10-0.10.36/debian/libgstreamer-plugins-base.symbols 2012-09-24 15:20:30.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/libgstreamer-plugins-base.symbols 2012-12-06 13:25:10.000000000 +0000 @@ -1,7 +1,7 @@ libgstapp-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# * Build-Depends-Package: libgstreamer-plugins-base0.10-dev - gst_buffer_get_video_crop@Base 0.10.36-1+ti1.6.6.1+1 - gst_buffer_set_video_crop@Base 0.10.36-1+ti1.6.6.1+1 + gst_buffer_get_video_crop@Base 0.10.36-1+ti1.6.7.1+1 + gst_buffer_set_video_crop@Base 0.10.36-1+ti1.6.7.1+1 gst_app_buffer_get_type@Base 0.10.22 gst_app_buffer_new@Base 0.10.22 gst_app_sink_get_caps@Base 0.10.22 @@ -895,8 +895,8 @@ gst_vorbis_tag_add@Base 0.10.0 libgstvideo-0.10.so.0 libgstreamer-plugins-base0.10-0 #MINVER# * Build-Depends-Package: libgstreamer-plugins-base0.10-dev - gst_buffer_get_video_crop@Base 0.10.36-1+ti1.6.6.1+1 - gst_buffer_set_video_crop@Base 0.10.36-1+ti1.6.6.1+1 + gst_buffer_get_video_crop@Base 0.10.36-1+ti1.6.7.1+1 + gst_buffer_set_video_crop@Base 0.10.36-1+ti1.6.7.1+1 gst_video_buffer_get_overlay_composition@Base 0.10.36 gst_video_buffer_set_overlay_composition@Base 0.10.36 gst_video_calculate_display_ratio@Base 0.10.7 diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0042-stridetransform-fix-makefile-for-non-ARM-targets.patch gst-plugins-base0.10-0.10.36/debian/patches/0042-stridetransform-fix-makefile-for-non-ARM-targets.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0042-stridetransform-fix-makefile-for-non-ARM-targets.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0042-stridetransform-fix-makefile-for-non-ARM-targets.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,37 @@ +From e4a9ff80fd8330bebecb38047af0904c06abaa96 Mon Sep 17 00:00:00 2001 +From: Ricardo Salveti +Date: Thu, 4 Oct 2012 16:31:47 +0100 +Subject: [PATCH] stridetransform: fix makefile for non ARM targets + +--- + gst/stride/Makefile.am | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/gst/stride/Makefile.am b/gst/stride/Makefile.am +index 3b466de..566eeb2 100644 +--- a/gst/stride/Makefile.am ++++ b/gst/stride/Makefile.am +@@ -1,10 +1,18 @@ + plugin_LTLIBRARIES = libgststridetransform.la + ++ARM_FILES=armv7.s ++ ++if HAVE_CPU_ARM ++ARCH_FILES = $(ARM_FILES) ++else ++ARCH_FILES = ++endif ++ + libgststridetransform_la_SOURCES = \ + gststridetransform.c \ + convert.c \ +- armv7.s \ +- plugin.c ++ plugin.c \ ++ $(ARCH_FILES) + + libgststridetransform_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) + libgststridetransform_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0043-textoverlay-heed-crop-event-values-when-placing-subt.patch gst-plugins-base0.10-0.10.36/debian/patches/0043-textoverlay-heed-crop-event-values-when-placing-subt.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0043-textoverlay-heed-crop-event-values-when-placing-subt.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0043-textoverlay-heed-crop-event-values-when-placing-subt.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,108 @@ +From b31404f105d1d5ebfca02ffb71f5227367787333 Mon Sep 17 00:00:00 2001 +From: Vincent Penquerc'h +Date: Wed, 10 Oct 2012 16:16:54 +0100 +Subject: [PATCH] textoverlay: heed crop event values when placing subtitles + +Since we can receive data at a larger resolution that what +will be visible, we need to use the cropped values to decide +where to draw subtitles. +--- + ext/pango/gsttextoverlay.c | 37 +++++++++++++++++++++++++++++++++++++ + ext/pango/gsttextoverlay.h | 5 +++++ + 2 files changed, 42 insertions(+) + +diff --git a/ext/pango/gsttextoverlay.c b/ext/pango/gsttextoverlay.c +index 823b207..4dc9895 100644 +--- a/ext/pango/gsttextoverlay.c ++++ b/ext/pango/gsttextoverlay.c +@@ -699,6 +699,11 @@ gst_text_overlay_init (GstTextOverlay * overlay, GstTextOverlayClass * klass) + overlay->fps_n = 0; + overlay->fps_d = 1; + ++ overlay->crop_top = 0; ++ overlay->crop_left = 0; ++ overlay->crop_width = 0; ++ overlay->crop_height = 0; ++ + overlay->text_buffer = NULL; + overlay->text_linked = FALSE; + overlay->cond = g_cond_new (); +@@ -798,6 +803,17 @@ gst_text_overlay_setcaps (GstPad * pad, GstCaps * caps) + if (fps + && gst_video_format_parse_caps_strided (caps, &overlay->format, + &overlay->width, &overlay->height, &overlay->rowstride)) { ++ ++ /* If we got a crop event, use these values instead of the ones from ++ the caps, which are uncropped. ++ FIXME: We get the crop event before caps are set. I am suspicious ++ of whether this is actually correct, and the following would not ++ be needed if events were received after caps are set. */ ++ if (overlay->crop_width > 0) ++ overlay->width = overlay->crop_width; ++ if (overlay->crop_height > 0) ++ overlay->height = overlay->crop_height; ++ + ret = gst_pad_set_caps (overlay->srcpad, caps); + } + +@@ -1217,6 +1233,7 @@ gst_text_overlay_get_pos (GstTextOverlay * overlay, gint * xpos, gint * ypos) + *xpos = 0; + } + *xpos += overlay->deltax; ++ *xpos += overlay->crop_left; + + if (overlay->use_vertical_render) + valign = GST_TEXT_OVERLAY_VALIGN_TOP; +@@ -1245,6 +1262,7 @@ gst_text_overlay_get_pos (GstTextOverlay * overlay, gint * xpos, gint * ypos) + break; + } + *ypos += overlay->deltay; ++ *ypos += overlay->crop_top; + } + + static inline void +@@ -1865,6 +1883,25 @@ gst_text_overlay_video_event (GstPad * pad, GstEvent * event) + ret = gst_pad_event_default (pad, event); + break; + } ++ case GST_EVENT_CROP: ++ { ++ gint top, left, width, height; ++ GST_OBJECT_LOCK (overlay); ++ gst_event_parse_crop (event, &top, &left, &width, &height); ++ GST_INFO_OBJECT (overlay, "Crop: %d %d %d %d", top, left, width, height); ++ if (width < 0) ++ width = overlay->width - left; ++ if (height < 0) ++ height = overlay->height - top; ++ overlay->crop_top = top; ++ overlay->crop_left = left; ++ overlay->crop_width = width; ++ overlay->crop_height = height; ++ overlay->width = width; ++ overlay->height = width; ++ GST_OBJECT_UNLOCK (overlay); ++ break; ++ } + case GST_EVENT_EOS: + GST_OBJECT_LOCK (overlay); + GST_INFO_OBJECT (overlay, "video EOS"); +diff --git a/ext/pango/gsttextoverlay.h b/ext/pango/gsttextoverlay.h +index 0895286..554f667 100644 +--- a/ext/pango/gsttextoverlay.h ++++ b/ext/pango/gsttextoverlay.h +@@ -128,6 +128,11 @@ struct _GstTextOverlay { + GstTextOverlayWrapMode wrap_mode; + GstTextOverlayLineAlign line_align; + ++ gint crop_top; ++ gint crop_left; ++ gint crop_width; ++ gint crop_height; ++ + gint xpad; + gint ypad; + gint deltax; +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0044-xvimagesink-Handle-the-cropping-event-and-attached-o.patch gst-plugins-base0.10-0.10.36/debian/patches/0044-xvimagesink-Handle-the-cropping-event-and-attached-o.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0044-xvimagesink-Handle-the-cropping-event-and-attached-o.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0044-xvimagesink-Handle-the-cropping-event-and-attached-o.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,162 @@ +From b603b2e4d5fcc780e925f553f481baca87e317e9 Mon Sep 17 00:00:00 2001 +From: Thibault Saunier +Date: Thu, 18 Oct 2012 15:47:03 -0300 +Subject: [PATCH] xvimagesink: Handle the cropping event and attached on + buffer struct + +--- + sys/xvimage/xvimagesink.c | 63 ++++++++++++++++++++++++++++++++++++++++++--- + sys/xvimage/xvimagesink.h | 5 ++++ + 2 files changed, 64 insertions(+), 4 deletions(-) + +diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c +index 8a7913b..21a2ef3 100644 +--- a/sys/xvimage/xvimagesink.c ++++ b/sys/xvimage/xvimagesink.c +@@ -787,8 +787,10 @@ static gboolean + gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + GstXvImageBuffer * xvimage) + { ++ GstVideoCrop *crop; + GstVideoRectangle result; + gboolean draw_border = FALSE; ++ gint disp_x, disp_y, disp_width, disp_height; + + /* We take the flow_lock. If expose is in there we don't want to run + concurrently from the data flow thread */ +@@ -852,6 +854,19 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + xvimagesink->redraw_border = FALSE; + } + ++ crop = xvimagesink->crop_rect; ++ if (crop == NULL) { ++ disp_x = xvimagesink->disp_x; ++ disp_y = xvimagesink->disp_y; ++ disp_width = xvimagesink->disp_width; ++ disp_height = xvimagesink->disp_height; ++ } else { ++ disp_x = xvimagesink->disp_x + gst_video_crop_left (crop); ++ disp_y = xvimagesink->disp_y + gst_video_crop_top (crop); ++ disp_width = gst_video_crop_width (crop); ++ disp_height = gst_video_crop_height (crop); ++ } ++ + /* We scale to the window's geometry */ + #ifdef HAVE_XSHM + if (xvimagesink->xcontext->use_xshm) { +@@ -865,8 +880,7 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + xvimagesink->xcontext->xv_port_id, + xvimagesink->xwindow->win, + xvimagesink->xwindow->gc, xvimage->xvimage, +- xvimagesink->disp_x, xvimagesink->disp_y, +- xvimagesink->disp_width, xvimagesink->disp_height, ++ disp_x, disp_y, disp_width, disp_height, + result.x, result.y, result.w, result.h, FALSE); + } else + #endif /* HAVE_XSHM */ +@@ -875,8 +889,7 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + xvimagesink->xcontext->xv_port_id, + xvimagesink->xwindow->win, + xvimagesink->xwindow->gc, xvimage->xvimage, +- xvimagesink->disp_x, xvimagesink->disp_y, +- xvimagesink->disp_width, xvimagesink->disp_height, ++ disp_x, disp_y, disp_width, disp_height, + result.x, result.y, result.w, result.h); + } + +@@ -2375,6 +2388,14 @@ gst_xvimagesink_show_frame (GstVideoSink * vsink, GstBuffer * buf) + + xvimagesink = GST_XVIMAGESINK (vsink); + ++ if (gst_buffer_get_video_crop (buf)) { ++ if (xvimagesink->crop_rect) ++ gst_video_crop_unref (xvimagesink->crop_rect); ++ ++ xvimagesink->crop_rect = ++ gst_video_crop_ref (gst_buffer_get_video_crop (buf)); ++ } ++ + /* If this buffer has been allocated using our buffer management we simply + put the ximage which is in the PRIVATE pointer */ + if (GST_IS_XVIMAGE_BUFFER (buf)) { +@@ -2456,6 +2477,33 @@ gst_xvimagesink_event (GstBaseSink * sink, GstEvent * event) + } + break; + } ++ case GST_EVENT_CROP:{ ++ GstStructure *structure; ++ GstMessage *message; ++ gint left, top, width, height; ++ ++ gst_event_parse_crop (event, &top, &left, &width, &height); ++ GST_DEBUG_OBJECT (sink, "Got crop event: %d %d %d %d", top, left, width, ++ height); ++ if (width < 0) { ++ width = GST_VIDEO_SINK_WIDTH (xvimagesink) - left; ++ } ++ if (height < 0) { ++ height = GST_VIDEO_SINK_HEIGHT (xvimagesink) - top; ++ } ++ ++ if (xvimagesink->crop_rect) ++ gst_video_crop_unref (xvimagesink->crop_rect); ++ xvimagesink->crop_rect = gst_video_crop_new (top, left, width, height); ++ ++ structure = gst_structure_new ("video-size-crop", "width", G_TYPE_INT, ++ width, "height", G_TYPE_INT, height, NULL); ++ message = gst_message_new_application (GST_OBJECT (xvimagesink), ++ structure); ++ gst_bus_post (gst_element_get_bus (GST_ELEMENT (xvimagesink)), message); ++ ++ break; ++ } + default: + break; + } +@@ -3451,6 +3499,11 @@ gst_xvimagesink_reset (GstXvImageSink * xvimagesink) + xvimagesink->have_render_rect = FALSE; + + gst_xvimagesink_xcontext_clear (xvimagesink); ++ ++ if (xvimagesink->crop_rect) { ++ gst_video_crop_unref (xvimagesink->crop_rect); ++ xvimagesink->crop_rect = NULL; ++ } + } + + /* Finalize is called only once, dispose can be called multiple times. +@@ -3533,6 +3586,8 @@ gst_xvimagesink_init (GstXvImageSink * xvimagesink, + */ + xvimagesink->colorkey = (8 << 16) | (8 << 8) | 16; + xvimagesink->draw_borders = TRUE; ++ ++ xvimagesink->crop_rect = NULL; + } + + static void +diff --git a/sys/xvimage/xvimagesink.h b/sys/xvimage/xvimagesink.h +index f3d0a99..fdbe4f9 100644 +--- a/sys/xvimage/xvimagesink.h ++++ b/sys/xvimage/xvimagesink.h +@@ -42,6 +42,8 @@ + #include + #include + ++#include ++ + G_BEGIN_DECLS + + #define GST_TYPE_XVIMAGESINK \ +@@ -269,6 +271,9 @@ struct _GstXvImageSink { + /* size of incoming video, used as the size for XvImage */ + guint video_width, video_height; + ++ /* Size to be croped */ ++ GstVideoCrop *crop_rect; ++ + /* display sizes, used for clipping the image */ + gint disp_x, disp_y; + gint disp_width, disp_height; +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0045-playsink-Add-a-colorspace-converter.patch gst-plugins-base0.10-0.10.36/debian/patches/0045-playsink-Add-a-colorspace-converter.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0045-playsink-Add-a-colorspace-converter.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0045-playsink-Add-a-colorspace-converter.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,63 @@ +From 021686dda22e30ccdf073deac80d9e9250f54de6 Mon Sep 17 00:00:00 2001 +From: Thibault Saunier +Date: Fri, 19 Oct 2012 17:39:22 -0300 +Subject: [PATCH] playsink: Add a colorspace converter + +In case the user sets a sink that doesn't handle NV12, it is needed. +--- + gst/playback/gstplaysink.c | 17 ++++++++--------- + 1 file changed, 8 insertions(+), 9 deletions(-) + +diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c +index adf8a9e..94847d4 100644 +--- a/gst/playback/gstplaysink.c ++++ b/gst/playback/gstplaysink.c +@@ -479,14 +479,11 @@ gst_play_sink_class_init (GstPlaySinkClass * klass) + + gst_element_class_add_static_pad_template (gstelement_klass, + &audiorawtemplate); +- gst_element_class_add_static_pad_template (gstelement_klass, +- &audiotemplate); ++ gst_element_class_add_static_pad_template (gstelement_klass, &audiotemplate); + gst_element_class_add_static_pad_template (gstelement_klass, + &videorawtemplate); +- gst_element_class_add_static_pad_template (gstelement_klass, +- &videotemplate); +- gst_element_class_add_static_pad_template (gstelement_klass, +- &texttemplate); ++ gst_element_class_add_static_pad_template (gstelement_klass, &videotemplate); ++ gst_element_class_add_static_pad_template (gstelement_klass, &texttemplate); + gst_element_class_set_details_simple (gstelement_klass, "Player Sink", + "Generic/Bin/Sink", + "Convenience sink for multiple streams", +@@ -1340,7 +1337,9 @@ gen_video_chain (GstPlaySink * playsink, gboolean raw, gboolean async) + + if (raw && !(playsink->flags & GST_PLAY_FLAG_NATIVE_VIDEO)) { + GST_DEBUG_OBJECT (playsink, "creating stridetransform"); +- chain->conv = gst_element_factory_make ("stridetransform", "vconv"); ++ chain->conv = ++ gst_parse_bin_from_description ("ffmpegcolorspace ! stridetransform", ++ TRUE, NULL); + if (chain->conv == NULL) { + post_missing_element_message (playsink, "stridetransform"); + GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN, +@@ -3050,14 +3049,14 @@ caps_notify_cb (GstPad * pad, GParamSpec * unused, GstPlaySink * playsink) + + if (pad == playsink->audio_pad) { + raw = is_raw_pad (pad); +- reconfigure = (!!playsink->audio_pad_raw != !!raw) ++ reconfigure = (! !playsink->audio_pad_raw != ! !raw) + && playsink->audiochain; + GST_DEBUG_OBJECT (pad, + "Audio caps changed: raw %d reconfigure %d caps %" GST_PTR_FORMAT, raw, + reconfigure, caps); + } else if (pad == playsink->video_pad) { + raw = is_raw_pad (pad); +- reconfigure = (!!playsink->video_pad_raw != !!raw) ++ reconfigure = (! !playsink->video_pad_raw != ! !raw) + && playsink->videochain; + GST_DEBUG_OBJECT (pad, + "Video caps changed: raw %d reconfigure %d caps %" GST_PTR_FORMAT, raw, +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0046-xvimagesink-don-t-use-deprecated-XKeycodeToKeysym.patch gst-plugins-base0.10-0.10.36/debian/patches/0046-xvimagesink-don-t-use-deprecated-XKeycodeToKeysym.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0046-xvimagesink-don-t-use-deprecated-XKeycodeToKeysym.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0046-xvimagesink-don-t-use-deprecated-XKeycodeToKeysym.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,71 @@ +From 5eac2e936544f7a2d6e4f20a14204fdbebb2abfc Mon Sep 17 00:00:00 2001 +From: "Oleksij Rempel (Alexey Fisher)" +Date: Mon, 5 Mar 2012 11:09:12 +0100 +Subject: [PATCH] xvimagesink: don't use deprecated XKeycodeToKeysym + +https://bugzilla.gnome.org/show_bug.cgi?id=671299 + +Signed-off-by: Oleksij Rempel (Alexey Fisher) +--- + sys/xvimage/xvimagesink.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c +index 21a2ef3..b210358 100644 +--- a/sys/xvimage/xvimagesink.c ++++ b/sys/xvimage/xvimagesink.c +@@ -129,6 +129,9 @@ + + #include "gst/glib-compat-private.h" + ++/* for XkbKeycodeToKeysym */ ++#include ++ + GST_DEBUG_CATEGORY_STATIC (gst_debug_xvimagesink); + #define GST_CAT_DEFAULT gst_debug_xvimagesink + GST_DEBUG_CATEGORY_STATIC (GST_CAT_PERFORMANCE); +@@ -1243,6 +1246,7 @@ gst_xvimagesink_handle_xevents (GstXvImageSink * xvimagesink) + KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask, + &e)) { + KeySym keysym; ++ const char *key_str = NULL; + + /* We lock only for the X function call */ + g_mutex_unlock (xvimagesink->x_lock); +@@ -1269,24 +1273,20 @@ gst_xvimagesink_handle_xevents (GstXvImageSink * xvimagesink) + case KeyRelease: + /* Key pressed/released over our window. We send upstream + events for interactivity/navigation */ +- GST_DEBUG ("xvimagesink key %d pressed over window at %d,%d", +- e.xkey.keycode, e.xkey.x, e.xkey.y); + g_mutex_lock (xvimagesink->x_lock); +- keysym = XKeycodeToKeysym (xvimagesink->xcontext->disp, +- e.xkey.keycode, 0); +- g_mutex_unlock (xvimagesink->x_lock); ++ keysym = XkbKeycodeToKeysym (xvimagesink->xcontext->disp, ++ e.xkey.keycode, 0, 0); + if (keysym != NoSymbol) { +- char *key_str = NULL; +- +- g_mutex_lock (xvimagesink->x_lock); + key_str = XKeysymToString (keysym); +- g_mutex_unlock (xvimagesink->x_lock); +- gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink), +- e.type == KeyPress ? "key-press" : "key-release", key_str); + } else { +- gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink), +- e.type == KeyPress ? "key-press" : "key-release", "unknown"); ++ key_str = "unknown"; + } ++ g_mutex_unlock (xvimagesink->x_lock); ++ GST_DEBUG_OBJECT (xvimagesink, ++ "key %d pressed over window at %d,%d (%s)", ++ e.xkey.keycode, e.xkey.x, e.xkey.y, key_str); ++ gst_navigation_send_key_event (GST_NAVIGATION (xvimagesink), ++ e.type == KeyPress ? "key-press" : "key-release", key_str); + break; + default: + GST_DEBUG ("xvimagesink unhandled X event (%d)", e.type); +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0047-streamsynchronizer-do-not-leak-EOS-events.patch gst-plugins-base0.10-0.10.36/debian/patches/0047-streamsynchronizer-do-not-leak-EOS-events.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0047-streamsynchronizer-do-not-leak-EOS-events.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0047-streamsynchronizer-do-not-leak-EOS-events.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,24 @@ +From 278832696be574e2f3406a44c76e396386031a87 Mon Sep 17 00:00:00 2001 +From: Mark Nauwelaerts +Date: Thu, 6 Sep 2012 15:03:49 +0200 +Subject: [PATCH] streamsynchronizer: do not leak EOS events + +--- + gst/playback/gststreamsynchronizer.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c +index 8b80a6b..a5377eb 100644 +--- a/gst/playback/gststreamsynchronizer.c ++++ b/gst/playback/gststreamsynchronizer.c +@@ -539,6 +539,7 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstEvent * event) + } + } + gst_object_unref (srcpad); ++ gst_event_unref (event); + goto done; + break; + } +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0048-streamsynchronizer-Unblock-streams-on-FLUSH_START-ev.patch gst-plugins-base0.10-0.10.36/debian/patches/0048-streamsynchronizer-Unblock-streams-on-FLUSH_START-ev.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0048-streamsynchronizer-Unblock-streams-on-FLUSH_START-ev.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0048-streamsynchronizer-Unblock-streams-on-FLUSH_START-ev.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,136 @@ +From 44188a1cb290f1272df3e13bc42c440bdd1423c2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= +Date: Fri, 27 Jul 2012 12:58:40 +0200 +Subject: [PATCH] streamsynchronizer: Unblock streams on FLUSH_START events + +--- + gst/playback/gststreamsynchronizer.c | 39 +++++++++++++++++++++++++--------- + gst/playback/gststreamsynchronizer.h | 1 - + 2 files changed, 29 insertions(+), 11 deletions(-) + +diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c +index a5377eb..f22ab4b 100644 +--- a/gst/playback/gststreamsynchronizer.c ++++ b/gst/playback/gststreamsynchronizer.c +@@ -77,6 +77,8 @@ typedef struct + gboolean seen_data; + + gint64 running_time_diff; ++ ++ GCond *stream_finish_cond; + } GstStream; + + /* Must be called with lock! */ +@@ -344,7 +346,10 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstEvent * event) + GST_DEBUG_OBJECT (self, "New group start time: %" GST_TIME_FORMAT, + GST_TIME_ARGS (self->group_start_time)); + +- g_cond_broadcast (self->stream_finish_cond); ++ for (l = self->streams; l; l = l->next) { ++ GstStream *ostream = l->data; ++ g_cond_broadcast (ostream->stream_finish_cond); ++ } + } + } + GST_STREAM_SYNCHRONIZER_UNLOCK (self); +@@ -367,7 +372,7 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstEvent * event) + if (stream) { + if (stream->wait) { + GST_DEBUG_OBJECT (pad, "Stream %d is waiting", stream->stream_number); +- g_cond_wait (self->stream_finish_cond, self->lock); ++ g_cond_wait (stream->stream_finish_cond, self->lock); + stream = gst_pad_get_element_private (pad); + if (stream) + stream->wait = FALSE; +@@ -454,6 +459,18 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstEvent * event) + GST_STREAM_SYNCHRONIZER_UNLOCK (self); + break; + } ++ case GST_EVENT_FLUSH_START:{ ++ GstStream *stream; ++ ++ GST_STREAM_SYNCHRONIZER_LOCK (self); ++ stream = gst_pad_get_element_private (pad); ++ if (stream) { ++ GST_DEBUG_OBJECT (pad, "Flushing streams"); ++ g_cond_broadcast (stream->stream_finish_cond); ++ } ++ GST_STREAM_SYNCHRONIZER_UNLOCK (self); ++ break; ++ } + case GST_EVENT_FLUSH_STOP:{ + GstStream *stream; + +@@ -726,6 +743,7 @@ gst_stream_synchronizer_request_new_pad (GstElement * element, + stream = g_slice_new0 (GstStream); + stream->transform = self; + stream->stream_number = self->current_stream_number; ++ stream->stream_finish_cond = g_cond_new (); + + tmp = g_strdup_printf ("sink_%d", self->current_stream_number); + stream->sinkpad = gst_pad_new_from_static_template (&sinktemplate, tmp); +@@ -828,6 +846,7 @@ gst_stream_synchronizer_release_stream (GstStreamSynchronizer * self, + self->group_start_time = MAX (self->group_start_time, stop_running_time); + } + ++ g_cond_free (stream->stream_finish_cond); + g_slice_free (GstStream, stream); + + /* NOTE: In theory we have to check here if all streams +@@ -879,13 +898,19 @@ gst_stream_synchronizer_change_state (GstElement * element, + case GST_STATE_CHANGE_PAUSED_TO_PLAYING: + GST_DEBUG_OBJECT (self, "State change PAUSED->PLAYING"); + break; +- case GST_STATE_CHANGE_PAUSED_TO_READY: ++ case GST_STATE_CHANGE_PAUSED_TO_READY:{ ++ GList *l; ++ + GST_DEBUG_OBJECT (self, "State change READY->NULL"); + + GST_STREAM_SYNCHRONIZER_LOCK (self); +- g_cond_broadcast (self->stream_finish_cond); ++ for (l = self->streams; l; l = l->next) { ++ GstStream *ostream = l->data; ++ g_cond_broadcast (ostream->stream_finish_cond); ++ } + self->shutdown = TRUE; + GST_STREAM_SYNCHRONIZER_UNLOCK (self); ++ } + default: + break; + } +@@ -950,11 +975,6 @@ gst_stream_synchronizer_finalize (GObject * object) + self->lock = NULL; + } + +- if (self->stream_finish_cond) { +- g_cond_free (self->stream_finish_cond); +- self->stream_finish_cond = NULL; +- } +- + G_OBJECT_CLASS (parent_class)->finalize (object); + } + +@@ -964,7 +984,6 @@ gst_stream_synchronizer_init (GstStreamSynchronizer * self, + GstStreamSynchronizerClass * klass) + { + self->lock = g_mutex_new (); +- self->stream_finish_cond = g_cond_new (); + } + + static void +diff --git a/gst/playback/gststreamsynchronizer.h b/gst/playback/gststreamsynchronizer.h +index e2379ae..32b6c69 100644 +--- a/gst/playback/gststreamsynchronizer.h ++++ b/gst/playback/gststreamsynchronizer.h +@@ -46,7 +46,6 @@ struct _GstStreamSynchronizer + + /* < private > */ + GMutex *lock; +- GCond *stream_finish_cond; + gboolean shutdown; + + GList *streams; +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0049-streamsynchronizer-Don-t-wait-on-non-time-streams.patch gst-plugins-base0.10-0.10.36/debian/patches/0049-streamsynchronizer-Don-t-wait-on-non-time-streams.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0049-streamsynchronizer-Don-t-wait-on-non-time-streams.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0049-streamsynchronizer-Don-t-wait-on-non-time-streams.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,30 @@ +From cef29f4da5e46ef695ee12fb9838de8c76bbd7f5 Mon Sep 17 00:00:00 2001 +From: Edward Hervey +Date: Tue, 11 Sep 2012 16:27:24 +0200 +Subject: [PATCH] streamsynchronizer: Don't wait on non-time streams + +streams with non-TIME segments will not have timestamps ... +... and therefore will never unblock the other streams. + +Fixes blocking issue when using playbin suburi feature +--- + gst/playback/gststreamsynchronizer.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c +index f22ab4b..64dbdf8 100644 +--- a/gst/playback/gststreamsynchronizer.c ++++ b/gst/playback/gststreamsynchronizer.c +@@ -455,6 +455,9 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstEvent * event) + GST_WARNING_OBJECT (pad, "Non-TIME segment: %s", + gst_format_get_name (format)); + gst_segment_init (&stream->segment, GST_FORMAT_UNDEFINED); ++ /* Since this stream is not time-based, we mark it so that ++ * other streams don't wait forever on it */ ++ stream->wait = TRUE; + } + GST_STREAM_SYNCHRONIZER_UNLOCK (self); + break; +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0050-decodebin2-Increase-the-default-queue-even-more-than.patch gst-plugins-base0.10-0.10.36/debian/patches/0050-decodebin2-Increase-the-default-queue-even-more-than.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0050-decodebin2-Increase-the-default-queue-even-more-than.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0050-decodebin2-Increase-the-default-queue-even-more-than.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,26 @@ +From e757feeec0d866c18429a81e78fedf63ac3b6886 Mon Sep 17 00:00:00 2001 +From: Vincent Penquerc'h +Date: Wed, 14 Nov 2012 10:52:47 +0000 +Subject: [PATCH] decodebin2: Increase the default queue even more than more + +for some sad wmv sample that wedges on seeking otherwise. +--- + gst/playback/gstdecodebin2.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c +index 12c8861..4f1e027 100644 +--- a/gst/playback/gstdecodebin2.c ++++ b/gst/playback/gstdecodebin2.c +@@ -234,7 +234,7 @@ enum + + /* whan playing, keep a max of 2MB of data but try to keep the number of buffers + * as low as possible (try to aim for 5 buffers) */ +-#define AUTO_PLAY_SIZE_BYTES 8 * 1024 * 1024 ++#define AUTO_PLAY_SIZE_BYTES 12 * 1024 * 1024 + #define AUTO_PLAY_SIZE_BUFFERS 5 + #define AUTO_PLAY_SIZE_TIME 0 + +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0051-xvimagesink-fix-display-of-cropped-buffers-from-duca.patch gst-plugins-base0.10-0.10.36/debian/patches/0051-xvimagesink-fix-display-of-cropped-buffers-from-duca.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0051-xvimagesink-fix-display-of-cropped-buffers-from-duca.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0051-xvimagesink-fix-display-of-cropped-buffers-from-duca.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,74 @@ +From 5be0fb0fe0348cba8687cb43cc4aefb92a2e8385 Mon Sep 17 00:00:00 2001 +From: Vincent Penquerc'h +Date: Fri, 23 Nov 2012 13:33:17 +0000 +Subject: [PATCH] xvimagesink: fix display of cropped buffers from ducati + +I suspect this is needed to work around some bug in the lower +layers (X or drivers), but do not know X enough to tell. +--- + sys/xvimage/xvimagesink.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c +index b210358..b1a6b1d 100644 +--- a/sys/xvimage/xvimagesink.c ++++ b/sys/xvimage/xvimagesink.c +@@ -861,14 +861,12 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + if (crop == NULL) { + disp_x = xvimagesink->disp_x; + disp_y = xvimagesink->disp_y; +- disp_width = xvimagesink->disp_width; +- disp_height = xvimagesink->disp_height; + } else { + disp_x = xvimagesink->disp_x + gst_video_crop_left (crop); + disp_y = xvimagesink->disp_y + gst_video_crop_top (crop); +- disp_width = gst_video_crop_width (crop); +- disp_height = gst_video_crop_height (crop); + } ++ disp_width = xvimagesink->disp_width; ++ disp_height = xvimagesink->disp_height; + + /* We scale to the window's geometry */ + #ifdef HAVE_XSHM +@@ -884,7 +882,7 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + xvimagesink->xwindow->win, + xvimagesink->xwindow->gc, xvimage->xvimage, + disp_x, disp_y, disp_width, disp_height, +- result.x, result.y, result.w, result.h, FALSE); ++ 0, 0, disp_width, disp_height, FALSE); + } else + #endif /* HAVE_XSHM */ + { +@@ -892,8 +890,7 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, + xvimagesink->xcontext->xv_port_id, + xvimagesink->xwindow->win, + xvimagesink->xwindow->gc, xvimage->xvimage, +- disp_x, disp_y, disp_width, disp_height, +- result.x, result.y, result.w, result.h); ++ disp_x, disp_y, disp_width, disp_height, 0, 0, disp_width, disp_height); + } + + XSync (xvimagesink->xcontext->disp, FALSE); +@@ -2492,10 +2489,19 @@ gst_xvimagesink_event (GstBaseSink * sink, GstEvent * event) + height = GST_VIDEO_SINK_HEIGHT (xvimagesink) - top; + } + ++ g_mutex_lock (xvimagesink->flow_lock); ++ g_mutex_lock (xvimagesink->x_lock); ++ + if (xvimagesink->crop_rect) + gst_video_crop_unref (xvimagesink->crop_rect); + xvimagesink->crop_rect = gst_video_crop_new (top, left, width, height); + ++ XResizeWindow (xvimagesink->xcontext->disp, xvimagesink->xwindow->win, ++ width, height); ++ ++ g_mutex_unlock (xvimagesink->x_lock); ++ g_mutex_unlock (xvimagesink->flow_lock); ++ + structure = gst_structure_new ("video-size-crop", "width", G_TYPE_INT, + width, "height", G_TYPE_INT, height, NULL); + message = gst_message_new_application (GST_OBJECT (xvimagesink), +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/0052-playsink-remove-obsolete-stridetransform.patch gst-plugins-base0.10-0.10.36/debian/patches/0052-playsink-remove-obsolete-stridetransform.patch --- gst-plugins-base0.10-0.10.36/debian/patches/0052-playsink-remove-obsolete-stridetransform.patch 1970-01-01 00:00:00.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/0052-playsink-remove-obsolete-stridetransform.patch 2012-12-06 12:46:56.000000000 +0000 @@ -0,0 +1,42 @@ +From c779786a365a040d775fb26082fa573099f42dd1 Mon Sep 17 00:00:00 2001 +From: Vincent Penquerc'h +Date: Wed, 5 Dec 2012 15:22:01 +0000 +Subject: [PATCH] playsink: remove obsolete stridetransform + +This should not be needed anymore now that -strided caps are obsolete. + +This also fixes an issue where at least some of the ARM versions of +copying routines are not copying all the necessary bytes when the +number of bytes to copy is not a multiple of 8, leaving a band of +corrupted data on the right of some frames. +--- + gst/playback/gstplaysink.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c +index 94847d4..a82a387 100644 +--- a/gst/playback/gstplaysink.c ++++ b/gst/playback/gstplaysink.c +@@ -1336,15 +1336,13 @@ gen_video_chain (GstPlaySink * playsink, gboolean raw, gboolean async) + } + + if (raw && !(playsink->flags & GST_PLAY_FLAG_NATIVE_VIDEO)) { +- GST_DEBUG_OBJECT (playsink, "creating stridetransform"); +- chain->conv = +- gst_parse_bin_from_description ("ffmpegcolorspace ! stridetransform", +- TRUE, NULL); ++ GST_DEBUG_OBJECT (playsink, "creating ffmpegcolorspace"); ++ chain->conv = gst_element_factory_make ("ffmpegcolorspace", "vconv"); + if (chain->conv == NULL) { +- post_missing_element_message (playsink, "stridetransform"); ++ post_missing_element_message (playsink, "ffmpegcolorspace"); + GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN, + (_("Missing element '%s' - check your GStreamer installation."), +- "stridetransform"), ("video rendering might fail")); ++ "ffmpegcolorspace"), ("video rendering might fail")); + } else { + gst_bin_add (bin, chain->conv); + if (prev) { +-- +1.7.9.5 + diff -Nru gst-plugins-base0.10-0.10.36/debian/patches/series gst-plugins-base0.10-0.10.36/debian/patches/series --- gst-plugins-base0.10-0.10.36/debian/patches/series 2012-09-24 14:16:41.000000000 +0000 +++ gst-plugins-base0.10-0.10.36/debian/patches/series 2012-12-06 12:46:56.000000000 +0000 @@ -39,6 +39,17 @@ 0039-stridetransform-move-semantic-code-out-of-assert-lik.patch 0040-stridetransform-log-relevant-values-when-size-check-.patch 0041-typefind-give-less-weight-to-H.263-streams-when-few-.patch +0042-stridetransform-fix-makefile-for-non-ARM-targets.patch +0043-textoverlay-heed-crop-event-values-when-placing-subt.patch +0044-xvimagesink-Handle-the-cropping-event-and-attached-o.patch +0045-playsink-Add-a-colorspace-converter.patch +0046-xvimagesink-don-t-use-deprecated-XKeycodeToKeysym.patch +0047-streamsynchronizer-do-not-leak-EOS-events.patch +0048-streamsynchronizer-Unblock-streams-on-FLUSH_START-ev.patch +0049-streamsynchronizer-Don-t-wait-on-non-time-streams.patch +0050-decodebin2-Increase-the-default-queue-even-more-than.patch +0051-xvimagesink-fix-display-of-cropped-buffers-from-duca.patch +0052-playsink-remove-obsolete-stridetransform.patch 0500-Disable-unit-tests-to-avoid-issue-when-building-with.patch 10_gnome-vfs-dav-url.patch 99_ltmain_as-needed.patch