Video decoder performance and QoS
Tim Müller
tim at centricular.com
Wed Jan 4 10:07:02 UTC 2017
On Wed, 2017-01-04 at 11:25 +0800, Yi-Lung Tsai wrote:
> Our team currently develop an HEVC decode library and want to
> integrate it into GStreamer pipeline.
> Unfortunately we encounter a performance issue.
>
> We test a video with frame rate 29.97.
> In our test-bed, the HEVC library could process video stream under
> FPS 33~34 on average.
> This performance seems enough on the target machine.
>
> Then we develop a video decoder plugin to leverage our HEVC library.
> The performance is measured in "playbin" with "fpsdisplaysink".
> FPS message is shown every 500ms.
> From the beginning, FPS value is around 29.8~30.1.
> After two seconds, the FPS starts declining and never goes back to
> 20.
>
> There is a drop mechanism in "gst_video_decoder_clip_and_push_buf".
> I guess this issue is related to QoS.
You could first check if that's actually the case.
There might be other reasons for poor performance (e.g. additional
frame copies/allocations or such).
Or fpsdisplaysink's text rendering being slow (use text-overlay=false).
Most sinks (not fpsdisplaysink though) have a "qos" property, which
will be true by default for most video sinks and false for most other
sinks.
You could try e.g.
... ! fpsdisplaysink text-overlay=false video-sink="fakesink"
(^^^ measures pure decoder throughput)
... ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true
max-lateness=20000000"
(^^^ like above but syncing to the clock and configure more like a
videosink, but without QoS enabled)
... ! fpsdisplaysink text-overlay=false video-sink="fakesink sync=true
max-lateness=20000000 qos=true"
(^^^ like above but syncing to the clock and configure more like a
videosink, with QoS enabled)
Cheers
-Tim
--
Tim Müller, Centricular Ltd - http://www.centricular.com
More information about the gstreamer-devel
mailing list