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