[Bug 776491] multiqueue: Update buffering level based on the lowest value

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Feb 1 03:34:33 UTC 2017


https://bugzilla.gnome.org/show_bug.cgi?id=776491

--- Comment #8 from HoonHee Lee <hoonh83.lee at gmail.com> ---
Created attachment 344675
  --> https://bugzilla.gnome.org/attachment.cgi?id=344675&action=edit
Add log for GST

Hello Edward Hervey.

Thanks for your comments.

You are right.
srcresult can be switched to GST_FLOW_OK by GST_EVENT_RECONFIGURE.
=====================================================================
gst_multi_queue_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{  
  switch (GST_EVENT_TYPE (event)) {
    case GST_EVENT_RECONFIGURE:
      GST_MULTI_QUEUE_MUTEX_LOCK (mq);
      if (sq->srcresult == GST_FLOW_NOT_LINKED) {
        sq->srcresult = GST_FLOW_OK;
        g_cond_signal (&sq->turn);
      }
  ...
}
=====================================================================


For your better understanding, I want to show some logs for MQ and decodebin3.
Actually, I added some logs for debug.


I switched audio track from 2nd to 1st.
(multiqueue0:src_1 ==> multiqueue0:src_0)
After track is changed, we expect that srcresult of multiqueue0:src_1 is
not-linked but, it still ok. Thus, we missed the opportunity to post buffering
message even if singlequeue0 and singlequeue2 are full.
==========================================================================
0:00:40.856890106 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2665:handle_stream_switch:<decodebin3-0>^[[00m ##### Add an
idle probe slot(multiqueue0:src_1)
0:00:40.856956565 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2374:reassign_slot:<multiqueue0:src_1>^[[00m ##### Unlinking
from decoder 0x7fcc18042930
0:00:40.857018106 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2408:reassign_slot:<multiqueue0:src_1>^[[00m ##### Assigning
output to slot 0x7fcc1403cce0
'de164b257930960e29a470f6f526103a3e4bd64d14f30d2f226470756af34104/src_2:1/00000100'
0:00:40.857067472 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2289:idle_reconfigure:<multiqueue0:src_0>^[[00m ##### output :
0x7fcc0c001e50, slot (multiqueue0:src_0)
0:00:40.857128665 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2166:reconfigure_output_stream:<decodebin3-0>^[[00m #####
Reusing existing decoder. Re-linking pad (multiqueue0:src_0) to decoder
(avdec_aac0:sink)
0:00:40.857180932 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:2562:gst_multi_queue_src_event:<multiqueue0>^[[00m ##### Got
reconfigure event on SingleQueue 0, result: ok

0:00:40.857271950 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
0, oq->buffering_level: 1001244, mq->high_watermark: 100000, srcresult: ok
0:00:40.857308341 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
1, oq->buffering_level: 0, mq->high_watermark: 100000, srcresult: ok
0:00:40.857327418 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
2, oq->buffering_level: 906666, mq->high_watermark: 100000, srcresult: ok
0:00:40.857343096 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1194:update_buffering_by_minimum:<multiqueue0>^[[00m #####
min_level: 0, percent: 0
...
0:00:40.977973727 ^[[334m 1641^[[00m 0x7fcc28003000 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
0, oq->buffering_level: 1000533, mq->high_watermark: 100000, srcresult: ok
0:00:40.978006387 ^[[334m 1641^[[00m 0x7fcc28003000 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
1, oq->buffering_level: 0, mq->high_watermark: 100000, srcresult: ok
0:00:40.978020714 ^[[334m 1641^[[00m 0x7fcc28003000 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
2, oq->buffering_level: 918666, mq->high_watermark: 100000, srcresult: ok
0:00:40.978043957 ^[[334m 1641^[[00m 0x7fcc28003000 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1194:update_buffering_by_minimum:<multiqueue0>^[[00m #####
min_level: 0, percent: 0
==========================================================================


I switched audio track from 1st to 2nd.
(multiqueue0:src_0 ==> multiqueue0:src_1)
After track is changed, we expect that srcresult of multiqueue0:src_0 is
not-linked but, it is ok. Also, we could miss the chance the post buffering
message until srcresult of multiqueue0:src_0 switches to not-linked. 
===========================================================================
0:00:41.007352954 ^[[334m 1641^[[00m      0x24e90a0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2665:handle_stream_switch:<decodebin3-0>^[[00m ##### Add an
idle probe slot(multiqueue0:src_0)
0:00:41.468253076 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2374:reassign_slot:<multiqueue0:src_0>^[[00m ##### Unlinking
from decoder 0x7fcc18042930
0:00:41.468326478 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2408:reassign_slot:<multiqueue0:src_0>^[[00m ##### Assigning
output to slot 0x7fcc18040af0
'de164b257930960e29a470f6f526103a3e4bd64d14f30d2f226470756af34104/src_1:1/00000100'
0:00:41.468370636 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2289:idle_reconfigure:<multiqueue0:src_1>^[[00m ##### output :
0x7fcc0c001e50, slot (multiqueue0:src_1)
0:00:41.468403311 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          decodebin3
gstdecodebin3.c:2166:reconfigure_output_stream:<decodebin3-0>^[[00m #####
Reusing existing decoder. Re-linking pad (multiqueue0:src_1) to decoder
(avdec_aac0:sink)
0:00:41.468429217 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:2562:gst_multi_queue_src_event:<multiqueue0>^[[00m ##### Got
reconfigure event on SingleQueue 1, result: ok
0:00:41.468531981 ^[[334m 1641^[[00m 0x7fcc1403cb70 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
0, oq->buffering_level: 1000533, mq->high_watermark: 100000, srcresult: ok
0:00:41.468559055 ^[[334m 1641^[[00m 0x7fcc1403cb70 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
1, oq->buffering_level: 0, mq->high_watermark: 100000, srcresult: ok
0:00:41.468577293 ^[[334m 1641^[[00m 0x7fcc1403cb70 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
2, oq->buffering_level: 934666, mq->high_watermark: 100000, srcresult: ok
0:00:41.468615526 ^[[334m 1641^[[00m 0x7fcc1403cb70 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1194:update_buffering_by_minimum:<multiqueue0>^[[00m #####
min_level: 0, percent: 0
0:00:41.468688566 ^[[334m 1641^[[00m 0x7fcc2004ba30 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
0, oq->buffering_level: 1000533, mq->high_watermark: 100000, srcresult: ok
0:00:41.468716409 ^[[334m 1641^[[00m 0x7fcc2004ba30 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
1, oq->buffering_level: 0, mq->high_watermark: 100000, srcresult: ok
0:00:41.468736625 ^[[334m 1641^[[00m 0x7fcc2004ba30 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
2, oq->buffering_level: 933333, mq->high_watermark: 100000, srcresult: ok
...
0:00:41.469435035 ^[[334m 1641^[[00m      0x2454400 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
0, oq->buffering_level: 1000533, mq->high_watermark: 100000, srcresult: ok
0:00:41.469470879 ^[[334m 1641^[[00m      0x2454400 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
1, oq->buffering_level: 1422, mq->high_watermark: 100000, srcresult: ok
0:00:41.469490929 ^[[334m 1641^[[00m      0x2454400 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
2, oq->buffering_level: 933333, mq->high_watermark: 100000, srcresult: ok
0:00:41.469509451 ^[[334m 1641^[[00m      0x2454400 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1194:update_buffering_by_minimum:<multiqueue0>^[[00m #####
min_level: 1422, percent: 1
0:00:41.469543301 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:2008:gst_multi_queue_loop:<multiqueue0>^[[00m ##### SingleQueue
0 : Changed from active to non-active
0:00:41.469600167 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
0, oq->buffering_level: 1000000, mq->high_watermark: 100000, srcresult:
not-linked
0:00:41.469625011 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
1, oq->buffering_level: 1422, mq->high_watermark: 100000, srcresult: ok
0:00:41.469664259 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1185:update_buffering_by_minimum:<multiqueue0>^[[00m ##### sq:
2, oq->buffering_level: 933333, mq->high_watermark: 100000, srcresult: ok
0:00:41.469684401 ^[[334m 1641^[[00m 0x7fcc18010ad0 ^[[33;01mWARN   ^[[00m
^[[00m          multiqueue
gstmultiqueue.c:1194:update_buffering_by_minimum:<multiqueue0>^[[00m #####
min_level: 1422, percent: 1
0:00:41.470932369 ^[[334m 1641^[[00m 0x7fcc2004ba30 ^[[33;01mWARN   ^[[00m
^[[00m 
===========================================================================

I attached the log and dot graph.

Please consider my comment and review.



Thanks.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list