Video decoder performance and QoS
Bruce Tsai
wagamama.tsai at gmail.com
Tue Jan 10 09:16:11 UTC 2017
Thanks for the QoS opinion.
I found enlarging queue size could fit my needs and I will improve from this direction.
I also took a look at “playsink”.
The function “gen_video_chain” creates a queue for video samples and set “max-size-buffers” to 3.
And “gen_audio_chain” does not set any limits on audio queue.
I think “max-size-buffers=3” is too small for video samples.
--
Yi-Lung (Bruce) Tsai
wagamama.tsai at gmail.com
> On Jan 6, 2017, at 5:53 PM, Tim Müller <tim at centricular.com> wrote:
>
> Hi,
>
>>> ... ! fpsdisplaysink text-overlay=false video-sink="fakesink
>>> sync=true
>>> max-lateness=20000000"
>>>
>>
>> In this case, average fps could also exceed 30 to the end.
>>>
>>>
>>> ... ! fpsdisplaysink text-overlay=false video-sink="fakesink
>>> sync=true
>>> max-lateness=20000000 qos=true"
>>>
>>
>> In this case, the measure result is unstable.
>> Sometimes average fps ranges from 27 to 30.
>> But sometimes average fps is down to around 20.
>>> (^^^ like above but syncing to the clock and configure more like a
>>> videosink, with QoS enabled)
>>>
>>>
>> Here is also an interesting found.
>> In case 3 above, there is no help if the "max-size-buffers" of queue
>> between decoder and video sink is set to 60.
>> But in my real playback pipeline, average fps would be 29.8~30.1 if
>> "max-size-buffers" is set to 60 as well.
>
> Mind that the lowest max-* limit wins, so if you decode an large video
> then the byte size might easily kick in (e.g. 10MB =~ a few frames @
> 1080p).
>
> I don't know why it would behave differently though.
>
> It might also be interesting to look at what QoS events basesink sends
> exactly - how much frames are late, etc.
>
>
>> According to testing results with "fakesink" above, the key point
>> would be QoS.
>> However, in my real playback, enlarging max size of queue seems an
>> option to get better performance.
>
> A queue between decoder and videosink is certainly a good idea.
>
>
>> Is turning QoS a good option?
>
> It depends a bit on your device/environment. The goal is to recover
> when decoding/rendering are too slow for a short time for some reason.
> If you don't need that then you can disable QoS of course. The sink
> will still throw away and not render buffers that are way too late in
> that case.
>
> Cheers
> -Tim
>
> --
> Tim Müller, Centricular Ltd - http://www.centricular.com
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170110/c6cc1a32/attachment.html>
More information about the gstreamer-devel
mailing list