<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Thanks for the QoS opinion.<div class="">I found enlarging queue size could fit my needs and I will improve from this direction.</div><div class=""><br class=""></div><div class="">I also took a look at “playsink”.</div><div class="">The function “gen_video_chain” creates a queue for video samples and set “max-size-buffers” to 3.</div><div class="">And “gen_audio_chain” does not set any limits on audio queue.</div><div class="">I think “max-size-buffers=3” is too small for video samples.</div><div class=""><br class=""></div><div class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">--</div><div class="">Yi-Lung (Bruce) Tsai</div><div class=""><a href="mailto:wagamama.tsai@gmail.com" class="">wagamama.tsai@gmail.com</a></div><div class=""><br class=""></div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Jan 6, 2017, at 5:53 PM, Tim Müller <<a href="mailto:tim@centricular.com" class="">tim@centricular.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Hi,<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class=""> ... ! fpsdisplaysink text-overlay=false video-sink="fakesink<br class="">sync=true<br class="">max-lateness=20000000"<br class=""><br class=""></blockquote><br class="">In this case, average fps could also exceed 30 to the end. <br class=""><blockquote type="cite" class=""><br class=""><br class=""> ... ! fpsdisplaysink text-overlay=false video-sink="fakesink<br class="">sync=true<br class="">max-lateness=20000000 qos=true"<br class=""><br class=""></blockquote><br class="">In this case, the measure result is unstable.<br class="">Sometimes average fps ranges from 27 to 30.<br class="">But sometimes average fps is down to around 20. <br class=""><blockquote type="cite" class="">(^^^ like above but syncing to the clock and configure more like a<br class="">videosink, with QoS enabled)<br class=""><br class=""><br class=""></blockquote>Here is also an interesting found.<br class="">In case 3 above, there is no help if the "max-size-buffers" of queue<br class="">between decoder and video sink is set to 60.<br class="">But in my real playback pipeline, average fps would be 29.8~30.1 if<br class="">"max-size-buffers" is set to 60 as well.<br class=""></blockquote><br class="">Mind that the lowest max-* limit wins, so if you decode an large video<br class="">then the byte size might easily kick in (e.g. 10MB =~ a few frames @<br class="">1080p).<br class=""><br class="">I don't know why it would behave differently though.<br class=""><br class="">It might also be interesting to look at what QoS events basesink sends<br class="">exactly - how much frames are late, etc.<br class=""><br class=""><br class=""><blockquote type="cite" class="">According to testing results with "fakesink" above, the key point<br class="">would be QoS.<br class="">However, in my real playback, enlarging max size of queue seems an<br class="">option to get better performance.<br class=""></blockquote><br class="">A queue between decoder and videosink is certainly a good idea.<br class=""><br class=""><br class=""><blockquote type="cite" class="">Is turning QoS a good option?<br class=""></blockquote><br class="">It depends a bit on your device/environment. The goal is to recover<br class="">when decoding/rendering are too slow for a short time for some reason.<br class="">If you don't need that then you can disable QoS of course. The sink<br class="">will still throw away and not render buffers that are way too late in<br class="">that case.<br class=""><br class="">Cheers<br class=""> -Tim<br class=""><br class="">-- <br class="">Tim Müller, Centricular Ltd - <a href="http://www.centricular.com" class="">http://www.centricular.com</a><br class="">_______________________________________________<br class="">gstreamer-devel mailing list<br class=""><a href="mailto:gstreamer-devel@lists.freedesktop.org" class="">gstreamer-devel@lists.freedesktop.org</a><br class="">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel<br class=""></div></div></blockquote></div><br class=""></div></body></html>