After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 705092 - queue element not respecting limits set.
queue element not respecting limits set.
Status: RESOLVED INVALID
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
1.0.8
Other Linux
: Normal major
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2013-07-29 17:19 UTC by lorddoskias
Modified: 2013-07-29 17:29 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description lorddoskias 2013-07-29 17:19:06 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?
Comment 1 lorddoskias 2013-07-29 17:28:00 UTC
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.
Comment 2 Tim-Philipp Müller 2013-07-29 17:29:58 UTC
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);