diff options
author | Vineeth T M <vineeth.tm@samsung.com> | 2014-09-16 16:46:07 +0530 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-09-16 14:50:59 +0300 |
commit | 89b9313e200b8de8d34241a1119340af84f518c1 (patch) | |
tree | c11bb3941f37c57226eba2718a1f661d06e2aca4 /ext | |
parent | 90ccd8212ae786f7f55bb8795e0020fa35afc576 (diff) |
gdkpixbufdec: modify wrong packetized mode logic
packetized mode is being set when framerate is being set
which is not correct. Changing the same by checking the
input segement format. If input segment is in TIME it is
Packetized, and if it is in BYTES it is not.
https://bugzilla.gnome.org/show_bug.cgi?id=736252
Diffstat (limited to 'ext')
-rw-r--r-- | ext/gdk_pixbuf/gstgdkpixbufdec.c | 13 | ||||
-rw-r--r-- | ext/gdk_pixbuf/gstgdkpixbufdec.h | 9 |
2 files changed, 15 insertions, 7 deletions
diff --git a/ext/gdk_pixbuf/gstgdkpixbufdec.c b/ext/gdk_pixbuf/gstgdkpixbufdec.c index eb56d77c4..02e780ce0 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufdec.c +++ b/ext/gdk_pixbuf/gstgdkpixbufdec.c @@ -215,6 +215,7 @@ gst_gdk_pixbuf_dec_init (GstGdkPixbufDec * filter) filter->last_timestamp = GST_CLOCK_TIME_NONE; filter->pixbuf_loader = NULL; + filter->packetized = FALSE; } static gboolean @@ -427,12 +428,20 @@ gst_gdk_pixbuf_dec_sink_event (GstPad * pad, GstObject * parent, pixbuf->pending_events = NULL; /* Fall through */ case GST_EVENT_SEGMENT: + { + const GstSegment *segment; + gst_event_parse_segment (event, &segment); + if (segment->format == GST_FORMAT_BYTES) + pixbuf->packetized = FALSE; + else + pixbuf->packetized = TRUE; if (pixbuf->pixbuf_loader != NULL) { gdk_pixbuf_loader_close (pixbuf->pixbuf_loader, NULL); g_object_unref (G_OBJECT (pixbuf->pixbuf_loader)); pixbuf->pixbuf_loader = NULL; } break; + } default: break; } @@ -482,9 +491,7 @@ gst_gdk_pixbuf_dec_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) &error)) goto error; - /* packetised mode? *//* FIXME: shouln't this be fps_d != 0, since 0/1 - * might be packetised mode but variable framerate */ - if (filter->in_fps_n != 0) { + if (filter->packetized == TRUE) { gdk_pixbuf_loader_close (filter->pixbuf_loader, NULL); ret = gst_gdk_pixbuf_dec_flush (filter); g_object_unref (filter->pixbuf_loader); diff --git a/ext/gdk_pixbuf/gstgdkpixbufdec.h b/ext/gdk_pixbuf/gstgdkpixbufdec.h index 832a30b41..4b12f48f0 100644 --- a/ext/gdk_pixbuf/gstgdkpixbufdec.h +++ b/ext/gdk_pixbuf/gstgdkpixbufdec.h @@ -47,14 +47,15 @@ struct _GstGdkPixbufDec GstPad *sinkpad, *srcpad; - GstClockTime last_timestamp; - GdkPixbufLoader *pixbuf_loader; + GstClockTime last_timestamp; + GdkPixbufLoader *pixbuf_loader; gint in_fps_n, in_fps_d; - GstVideoInfo info; + GstVideoInfo info; GstBufferPool *pool; - GList *pending_events; + GList *pending_events; + gboolean packetized; }; struct _GstGdkPixbufDecClass |