GNOME Bugzilla – Bug 705092
queue element not respecting limits set.
Last modified: 2013-07-29 17:29:58 UTC
I'm using a queue in my pipeline. Here is the code for initialisation: pipeline->audio_queue = gst_element_factory_make("queue", "audio-queue"); g_object_set(G_OBJECT(pipeline->audio_queue), "max-size-buffers", (guint64) 4294967295, "max-size-bytes", (guint64) 4294967295, "max-size-time", (guint64) 18446744073709551615, "silent", TRUE, NULL); Essentially I want to have an unbounded queue. However, my app freezes at arbitrary times and here is the last thing in my gst log: 0:01:40.216687870 2626 0x12d6000 LOG queue_dataflow gstqueue.c:911:gst_queue_chain:<audio-queue> received buffer 0x1497040 of size 170, time 0:01:14.215022575, duration 99:99:99.999999999 0:01:40.219442742 2626 0x12d6000 DEBUG queue_dataflow gstqueue.c:945:gst_queue_chain:<audio-queue> queue is full, waiting for free space 0:01:40.221701636 2626 0x12d6000 LOG queue_dataflow gstqueue.c:950:gst_queue_chain:<audio-queue> (audio-queue:sink) wait for DEL: 3 of 0-4294967295 buffers, 938 of 0-10485760 bytes, 14209851041 of 0-1000000000 ns, 3 items I believe the "of" values signify the current limits and that are set for the queue. I do not see how it can say it accepts between 0 and 1 seconds of buffered data, when I have used the maximum allowed value?
I tested with queue2. Changing only queue to queue2 in the gst_element_factory_call and here is what I get: 0:00:55.499902096 2770 0x1d12490 LOG queue2_dataflow gstqueue2.c:2362:gst_queue2_chain:<audio-queue> received buffer 0x1ec2148 of size 384, time 0:00:24.422970115, duration 99:99:99.999999999 0:00:55.502365978 2770 0x1d12490 DEBUG queue2_dataflow gstqueue2.c:1520:gst_queue2_wait_free_space:<audio-queue> queue is full, waiting for free space 0:00:55.506544778 2770 0x1d12490 LOG queue2_dataflow gstqueue2.c:1523:gst_queue2_wait_free_space:<audio-queue> (audio-queue:sink) wait for DEL: 1 of 4294967295 buffers, 384 of 2097152 bytes, 13732250582 of 2000000000 ns, 1 items Makes no sense.
gst-inspect-1.0 queue: max-size-buffers : Max. number of buffers in the queue (0=disable) flags: readable, writable Unsigned Integer. Range: 0 - 4294967295 Default: 200 max-size-bytes : Max. amount of data in the queue (bytes, 0=disable) flags: readable, writable Unsigned Integer. Range: 0 - 4294967295 Default: 10485760 max-size-time : Max. amount of data in the queue (in ns, 0=disable) flags: readable, writable Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 1000000000 Note max-size-buffers and max-size-bytes are both plain integers, only max-size-time is a 64-bit integer. And 0 is the value to use if you want to disable the limit. So please try: g_object_set (audio_queue, "max-size-buffers", 0, "max-size-bytes", 0, "max-size-time", (guint64) 0, NULL);