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
This commit is contained in:
Vineeth T M 2014-09-16 16:46:07 +05:30 committed by Sebastian Dröge
parent 90ccd8212a
commit 89b9313e20
2 changed files with 15 additions and 7 deletions

View file

@ -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);

View file

@ -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