<html><head></head><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px"><div id="yui_3_16_0_ym19_1_1499769933559_14254"><span id="yui_3_16_0_ym19_1_1499769933559_14751">More precisely, in gstavviddec.c there are the following lines:</span></div><div id="yui_3_16_0_ym19_1_1499769933559_14254"><span><br></span></div><div id="yui_3_16_0_ym19_1_1499769933559_14273">    query = gst_query_new_latency ();</div><div id="yui_3_16_0_ym19_1_1499769933559_14274">    is_live = FALSE;</div><div id="yui_3_16_0_ym19_1_1499769933559_14275">    /* Check if upstream is live. If it isn't we can enable frame based</div><div id="yui_3_16_0_ym19_1_1499769933559_14276">     * threading, which is adding latency */</div><div id="yui_3_16_0_ym19_1_1499769933559_14277">    if (gst_pad_peer_query (GST_VIDEO_DECODER_SINK_PAD (ffmpegdec), query)) {</div><div id="yui_3_16_0_ym19_1_1499769933559_14278">      gst_query_parse_latency (query, &is_live, NULL, NULL);</div><div id="yui_3_16_0_ym19_1_1499769933559_14279">    }</div><div id="yui_3_16_0_ym19_1_1499769933559_14280">    gst_query_unref (query);</div><div id="yui_3_16_0_ym19_1_1499769933559_14281"><br id="yui_3_16_0_ym19_1_1499769933559_14282"></div><div id="yui_3_16_0_ym19_1_1499769933559_14283">    if (is_live)</div><div id="yui_3_16_0_ym19_1_1499769933559_14284">      ffmpegdec->context->thread_type = FF_THREAD_SLICE;</div><div id="yui_3_16_0_ym19_1_1499769933559_14285">    else</div><div id="yui_3_16_0_ym19_1_1499769933559_14254"></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286">      ffmpegdec->context->thread_type = FF_THREAD_SLICE | FF_THREAD_FRAME;</div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286">Then, latency is introduced depending on "is_live" property, checked by the query. Now, I don't understand how to set the "is_live" property in the code of my receiver. I tried with:</div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><pre id="yui_3_16_0_ym19_1_1499769933559_14524">  GstPad* pad_decoder_sink = gst_element_get_static_pad (data.video_decoder, "sink");
  GstQuery *query;
  query = gst_query_new_latency ();
  if (gst_pad_peer_query (pad_decoder, query)) {
     gst_query_set_latency (query, TRUE,  0, 0);        
  }</pre><pre id="yui_3_16_0_ym19_1_1499769933559_14524">gst_object_unref (pad_decoder_sink);  </pre><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><span style="font-family: "Courier New"; white-space: pre-wrap;"><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><span id="yui_3_16_0_ym19_1_1499769933559_14809" style="font-family: "Courier New"; white-space: pre-wrap;">The </span> <span id="yui_3_16_0_ym19_1_1499769933559_14755" style="font-family: "Courier New"; white-space: pre-wrap;">gst_query_set_latency() function is called, but </span>gst_query_parse_latency (query, &is_live, NULL, NULL) inside gstavviddec.c returns FALSE for "is_live".  <br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286">Why? How can I set that property?</div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div><div dir="ltr" id="yui_3_16_0_ym19_1_1499769933559_14286"><br></div> <div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"> <div style="font-family: Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 13px;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 16px;"> <div dir="ltr"><font size="2" face="Arial"> Il Martedì 11 Luglio 2017 12:57, "Lijia (George Lee, Euler)" <george.lee@huawei.com> ha scritto:<br></font></div>  <br><br> <div class="y_msg_container"><div id="yiv1838736994"><style>#yiv1838736994 #yiv1838736994 --
 
 _filtered #yiv1838736994 {font-family:Helvetica;panose-1:2 11 6 4 2 2 2 2 2 4;}
 _filtered #yiv1838736994 {font-family:宋体;panose-1:2 1 6 0 3 1 1 1 1 1;}
 _filtered #yiv1838736994 {panose-1:2 4 5 3 5 4 6 3 2 4;}
 _filtered #yiv1838736994 {font-family:Calibri;panose-1:2 15 5 2 2 2 4 3 2 4;}
 _filtered #yiv1838736994 {panose-1:2 1 6 0 3 1 1 1 1 1;}
 _filtered #yiv1838736994 {panose-1:2 11 5 3 2 2 4 2 2 4;}
 _filtered #yiv1838736994 {panose-1:2 11 5 3 2 2 4 2 2 4;}
#yiv1838736994  
#yiv1838736994 p.yiv1838736994MsoNormal, #yiv1838736994 li.yiv1838736994MsoNormal, #yiv1838736994 div.yiv1838736994MsoNormal
        {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:宋体;}
#yiv1838736994 a:link, #yiv1838736994 span.yiv1838736994MsoHyperlink
        {color:blue;text-decoration:underline;}
#yiv1838736994 a:visited, #yiv1838736994 span.yiv1838736994MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
#yiv1838736994 p.yiv1838736994msonormal, #yiv1838736994 li.yiv1838736994msonormal, #yiv1838736994 div.yiv1838736994msonormal
        {margin-right:0cm;margin-left:0cm;font-size:12.0pt;font-family:宋体;}
#yiv1838736994 p.yiv1838736994msochpdefault, #yiv1838736994 li.yiv1838736994msochpdefault, #yiv1838736994 div.yiv1838736994msochpdefault
        {margin-right:0cm;margin-left:0cm;font-size:12.0pt;font-family:宋体;}
#yiv1838736994 span.yiv1838736994msohyperlink
        {}
#yiv1838736994 span.yiv1838736994msohyperlinkfollowed
        {}
#yiv1838736994 span.yiv1838736994emailstyle17
        {}
#yiv1838736994 p.yiv1838736994msonormal1, #yiv1838736994 li.yiv1838736994msonormal1, #yiv1838736994 div.yiv1838736994msonormal1
        {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:宋体;}
#yiv1838736994 span.yiv1838736994msohyperlink1
        {color:#0563C1;text-decoration:underline;}
#yiv1838736994 span.yiv1838736994msohyperlinkfollowed1
        {color:#954F72;text-decoration:underline;}
#yiv1838736994 span.yiv1838736994emailstyle171
        {color:#1F497D;}
#yiv1838736994 p.yiv1838736994msochpdefault1, #yiv1838736994 li.yiv1838736994msochpdefault1, #yiv1838736994 div.yiv1838736994msochpdefault1
        {margin-right:0cm;margin-left:0cm;font-size:10.0pt;font-family:宋体;}
#yiv1838736994 span.yiv1838736994EmailStyle27
        {color:#1F497D;}
#yiv1838736994 .yiv1838736994MsoChpDefault
        {font-size:10.0pt;}
 _filtered #yiv1838736994 {margin:72.0pt 90.0pt 72.0pt 90.0pt;}
#yiv1838736994 div.yiv1838736994WordSection1
        {}
#yiv1838736994 </style><div>
<div class="yiv1838736994WordSection1">
<div class="yiv1838736994MsoNormal"><span lang="EN-US" style="font-size:10.5pt;">This option is-live instructs GST h264 decoder element to perform low latency mode for Live event, thus this option takes role of key configuration
 of pipeline behavior in response to real-time decoding. In my opinion it should not be removed but more elaborate description is also needed to avoid misleading programmer.</span></div> 
<div class="yiv1838736994MsoNormal"><span lang="EN-US" style="font-size:10.5pt;">  </span></div> 
<div class="yiv1838736994MsoNormal"><span lang="EN-US" style="font-size:10.5pt;">George</span></div> 
<div>
<div class="yiv1838736994MsoNormal" style="text-align:justify;text-justify:inter-ideograph;"><span lang="EN-US" style="font-size:10.5pt;"> </span></div> 
</div>
<div class="yiv1838736994MsoNormal"><span lang="EN-US" style="font-size:10.5pt;">  </span></div> 
<div class="yiv1838736994yqt3449175588" id="yiv1838736994yqt77783"><div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm;">
<div class="yiv1838736994MsoNormal"><b><span style="font-size:11.0pt;">发件人<span lang="EN-US">:</span></span></b><span lang="EN-US" style="font-size:11.0pt;"> gstreamer-devel [mailto:gstreamer-devel-bounces@lists.freedesktop.org]
</span><b><span style="font-size:11.0pt;">代表 </span>
</b><span lang="EN-US" style="font-size:11.0pt;">paolo perotinus<br clear="none">
</span><b><span style="font-size:11.0pt;">发送时间<span lang="EN-US">:</span></span></b><span lang="EN-US" style="font-size:11.0pt;"> 2017</span><span style="font-size:11.0pt;">年<span lang="EN-US">7</span>月<span lang="EN-US">11</span>日<span lang="EN-US">
 18:50<br clear="none">
</span><b>收件人<span lang="EN-US">:</span></b><span lang="EN-US"> Discussion of the development of and with GStreamer <gstreamer-devel@lists.freedesktop.org><br clear="none">
</span><b>主题<span lang="EN-US">:</span></b><span lang="EN-US"> Re: </span>答复<span lang="EN-US">: How to reduce avdec_h264 latency</span></span></div> 
</div>
</div>
<div class="yiv1838736994MsoNormal"><span lang="EN-US">  </span></div> 
<div>
<div id="yiv1838736994yui_3_16_0_ym19_1_1499769933559_3103">
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.0pt;">I just solved the problem (thanks to Tim-Philipp Muller) by setting is-live=1 on the receiver. The latency was added  in
 gstavviddec.c (check the line with: "gst_query_parse_latency (query, &is_live, NULL, NULL);" ).</span></div> 
</div>
<div id="yiv1838736994yui_3_16_0_ym19_1_1499769933559_3103">
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.0pt;">However I think that this option (is-live) can appear too generic and misleading, and should be removed/changed.</span></div> 
</div>
<div id="yiv1838736994yui_3_16_0_ym19_1_1499769933559_3103">
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.0pt;">What do you think about?</span></div> 
</div>
<div>
<div class="yiv1838736994MsoNormal" style="margin-bottom:12.0pt;background:white;"><span lang="EN-US" style="font-size:10.0pt;">  </span></div> 
</div>
<div>
<div>
<div>
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.0pt;">Il Martedì 11 Luglio 2017 12:40, "Lijia (George Lee, Euler)" <<a rel="nofollow" shape="rect" ymailto="mailto:george.lee@huawei.com" target="_blank" href="mailto:george.lee@huawei.com">george.lee@huawei.com</a>>
 ha scritto:</span><span lang="EN-US" style=""></span></div> 
</div>
<div class="yiv1838736994MsoNormal" style="margin-bottom:12.0pt;background:white;"><span lang="EN-US" style="">  </span></div> 
<div>
<div id="yiv1838736994">
<div>
<div>
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.5pt;">Pls take a bit of time to delve into system –level thread scheduling in attempt to find clue to long latency in plugin implementation.
 As per experience excluding bitstream encoding option, in many situations we often can find negative impact brought by threading scheduling over Linux. Even though bitstream has been encoded very well for low-latency use-case such as removal of B-frame/sub-frame
 processing (parallel pipeline), implicit threading scheduling defect is hard to find.
</span><span lang="EN-US" style=""></span></div> 
</div>
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.5pt;"> </span><span lang="EN-US" style=""></span></div> 
</div>
<div>
<div class="yiv1838736994MsoNormal" style="text-align:justify;text-justify:inter-ideograph;background:white;">
<span lang="EN-US" style="font-size:10.5pt;">Best Regards,</span><span lang="EN-US" style=""></span></div> 
<div class="yiv1838736994MsoNormal" style="text-align:justify;text-justify:inter-ideograph;background:white;">
<span lang="EN-US" style="font-size:10.5pt;"> </span><span lang="EN-US" style=""></span></div> 
<div class="yiv1838736994MsoNormal" style="text-align:justify;text-justify:inter-ideograph;background:white;">
<span lang="EN-US" style="font-size:10.5pt;">George Lee
</span><span lang="EN-US" style=""></span></div> 
</div>
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.5pt;"> </span><span lang="EN-US" style=""></span></div> 
</div>
<div id="yiv1838736994yqt02283">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm;">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><b><span style="font-size:11.0pt;color:black;">发件人</span></b><b><span lang="EN-US" style="font-size:11.0pt;">:</span></b><span lang="EN-US" style="font-size:11.0pt;">
 gstreamer-devel [<a rel="nofollow" shape="rect" ymailto="mailto:gstreamer-devel-bounces@lists.freedesktop.org" target="_blank" href="mailto:gstreamer-devel-bounces@lists.freedesktop.org">mailto:gstreamer-devel-bounces@lists.freedesktop.org</a>]
</span><b><span style="font-size:11.0pt;color:black;">代表</span></b><b><span style="font-size:11.0pt;">
</span></b><span lang="EN-US" style="font-size:11.0pt;">paolo perotinus<br clear="none">
</span><b><span style="font-size:11.0pt;color:black;">发送时间</span></b><b><span lang="EN-US" style="font-size:11.0pt;">:</span></b><span lang="EN-US" style="font-size:11.0pt;">
 2017</span><span style="font-size:11.0pt;color:black;">年</span><span lang="EN-US" style="font-size:11.0pt;">7</span><span style="font-size:11.0pt;color:black;">月</span><span lang="EN-US" style="font-size:11.0pt;">11</span><span style="font-size:11.0pt;color:black;">日</span><span lang="EN-US" style="font-size:11.0pt;">
 17:45<br clear="none">
</span><b><span style="font-size:11.0pt;color:black;">收件人</span></b><b><span lang="EN-US" style="font-size:11.0pt;">:</span></b><span lang="EN-US" style="font-size:11.0pt;">
 Discussion of the development of and with GStreamer <<a rel="nofollow" shape="rect" ymailto="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>><br clear="none">
</span><b><span style="font-size:11.0pt;color:black;">主题</span></b><b><span lang="EN-US" style="font-size:11.0pt;">:</span></b><span lang="EN-US" style="font-size:11.0pt;">
 Re: How to reduce avdec_h264 latency</span><span lang="EN-US" style=""></span></div> 
</div>
</div>
</div>
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style=""> </span></div> 
</div>
<div>
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2872">
<div style="margin-bottom:12.0pt;">
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.0pt;"> </span><span lang="EN-US" style=""></span></div> 
</div>
</div>
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2871">
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2870">
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2869">
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2902">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="font-size:10.0pt;">Il Martedì 11 Luglio 2017 1:06, Olivier Crête <<a rel="nofollow" shape="rect" ymailto="mailto:olivier.crete@collabora.com" target="_blank" href="mailto:olivier.crete@collabora.com">olivier.crete@collabora.com</a>>
 ha scritto:</span><span lang="EN-US" style=""></span></div> 
</div>
</div>
<div style="margin-bottom:12.0pt;">
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style=""> </span></div> 
</div>
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2868">
<div id="yiv1838736994yui_3_16_0_ym19_1_1499766131585_2867">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="">> Hi,
<br clear="none">
<br clear="none">
> The only way to do that is to create a stream with no B-frames, for example using the H. 264 baseline profile.
<br clear="none">
<br clear="none">
> Olivier </span></div> 
</div>
<div id="yiv1838736994yqtfd45815">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style=""> </span></div> 
</div>
</div>
<div id="yiv1838736994yqtfd45815">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="">Hi Olivier,</span></div> 
</div>
</div>
<div id="yiv1838736994yqtfd45815">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style=""> </span></div> 
</div>
</div>
<div id="yiv1838736994yqtfd45815">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="">The stream is already coded with no B-frames (zerolatency tune in ffmpeg) but I still have that latency in avdec_h264...</span></div> 
</div>
</div>
<div id="yiv1838736994yqtfd45815">
<div>
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style=""> </span></div> 
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="yiv1838736994yqt10139">
<div class="yiv1838736994MsoNormal" style="background:white;"><span lang="EN-US" style="">_______________________________________________<br clear="none">
gstreamer-devel mailing list<br clear="none">
<a rel="nofollow" shape="rect" ymailto="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br clear="none">
<a rel="nofollow" shape="rect" target="_blank" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></span></div> 
</div>
<div class="yiv1838736994MsoNormal" style="margin-bottom:12.0pt;background:white;"><span lang="EN-US" style="">  </span></div> 
</div>
</div>
</div>
</div>
</div></div>
</div>
</div></div><div class="yqt3449175588" id="yqt91772">_______________________________________________<br clear="none">gstreamer-devel mailing list<br clear="none"><a shape="rect" ymailto="mailto:gstreamer-devel@lists.freedesktop.org" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br clear="none"><a shape="rect" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br clear="none"></div><br><br></div>  </div> </div>  </div></div></body></html>