[gst-devel] decodebin2 manipulation of multiqueue
Wim Taymans
wim.taymans at gmail.com
Tue Oct 20 20:55:13 CEST 2009
On Tue, 2009-10-20 at 10:10 -0700, Conrad Cooke wrote:
Thanks for the patch but this issue has been fixed already. Newest
decodebin2 does not set an upper limit on time anymore, just bytes.
Wim
> I recently debugged an issue where playback was failing for certain mpeg-4 container files. Turned out to be hitting a limitation placed on multiqueue.
> This is a result of how the file was encoded. While it is a legal containerised media file, there is a large difference between audio and video timestamps.
> It is the purpose of multiqueue to realign the audio and video bins, I believe.
>
> multiqueue has various parameters which determine how much difference there can be between video and audio.
> >From gst-inspect:
> name : The name of the object
> flags: readable, writable
> String. Default: null Current: "multiqueue0"
> extra-size-bytes : Amount of data the queues can grow if one of them is empty (bytes, 0=disable)
> flags: readable, writable
> Unsigned Integer. Range: 0 - 4294967295 Default: 10485760 Current: 10485760
> extra-size-buffers : Amount of buffers the queues can grow if one of them is empty (0=disable)
> flags: readable, writable
> Unsigned Integer. Range: 0 - 4294967295 Default: 5 Current: 5
> extra-size-time : Amount of time the queues can grow if one of them is empty (in ns, 0=disable)
> flags: readable, writable
> Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 3000000000 Current: 3000000000
> max-size-bytes : Max. amount of data in the queue (bytes, 0=disable)
> flags: readable, writable
> Unsigned Integer. Range: 0 - 4294967295 Default: 10485760 Current: 10485760
> max-size-buffers : Max. number of buffers in the queue (0=disable)
> flags: readable, writable
> Unsigned Integer. Range: 0 - 4294967295 Default: 5 Current: 5
> max-size-time : Max. amount of data in the queue (in ns, 0=disable)
> flags: readable, writable
> Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 2000000000 Current: 2000000000
>
> Seems the last three properties are not implemented but were intended to support 'poorly encoded media'
>
> The three supported properties are set to their defaults on construction of the multiqueue. They are also set twice by decodebin, once when a group is created (gst_decode_group_new) and once when its pads are exposed (gst_decode_group_expose)
> The second case set the values to
>
> "max-size-bytes", 2 * 1024 * 1024,
> "max-size-time", 2 * GST_SECOND,
> "max-size-buffers", 5, NULL;
>
> It seems for some media, there is a greater than 2 second difference betwee audio and video, so I chnged max-size-time to be 50 seconds.
>
> My questions are
> Why is decodebin2 directly modifying this component at all ?
> Why is a 2 second maximum imposed - is the only real limitation is the maximum memory that can be used ?
>
> Here is my change:
>
> component: gst-plugins-base-0.10.21
>
> file: gstdecodebin2 line 1983
>
> if (group->multiqueue) {
> /* update runtime limits. At runtime, we try to keep the amount of buffers
> * in the queues as low as possible (but at least 5 buffers). */
> g_object_set (G_OBJECT (group->multiqueue),
> "max-size-bytes", 2 * 1024 * 1024,
> "max-size-time", 50 * GST_SECOND, "max-size-buffers", 5, NULL);
> /* we can now disconnect any overrun signal, which is used to expose the
> * group. */
> if (group->overrunsig) {
> GST_LOG ("Disconnecting overrun");
> g_signal_handler_disconnect (group->multiqueue, group->overrunsig);
> group->overrunsig = 0;
> }
> }
>
>
> Best Wishes,
>
> Conrad Cooke
> ------------------------------------------------------------------------------
> Come build with us! The BlackBerry(R) Developer Conference in SF, CA
> is the only developer event you need to attend this year. Jumpstart your
> developing skills, take BlackBerry mobile applications to market and stay
> ahead of the curve. Join us from November 9 - 12, 2009. Register now!
> http://p.sf.net/sfu/devconference
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
More information about the gstreamer-devel
mailing list