Overlay without major performance hit?

Michael Tyson michael at tyson.id.au
Sat Mar 15 00:12:35 PDT 2014


Hello,

I’m trying to use cairooverlay to add some content to live video frames displayed on a Raspberry Pi.

I’ve not been able to get video frames to appear onscreen while drawing from udpsrc, so I did some testing using get-inspect and a file-based test video:

gst-launch-1.0 filesrc location=big_buck_bunny_720p_H264_AAC_25fps_3400K.MP4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! cairooverlay ! autovideoconvert ! eglglessink

I discovered that including cairooverlay in the video pipeline introduces a massive performance hit at 720p: The video playback goes from the video’s native framerate to about 1 or 2 frames per second. I guess cairooverlay doesn’t work with the zero-copy stuff happening between omxh264dec and eglglessink.

Curious about using appsrc and videomixer instead, I tried another pipeline, using videotestsrc (in place of appsrc) and a videomixer:

gst-launch-1.0 filesrc location=big_buck_bunny_720p_H264_AAC_25fps_3400K.MP4 ! qtdemux ! h264parse ! omxh264dec ! autovideoconvert ! videomixer name=mix !  eglglessink sync=false videotestsrc ! mix.

The same thing happened: Frame rate dropped below usable values.

I’m wondering: Is there any way, using the Gstreamer framework, that one can achieve acceptable frame rates while applying an overlay?

Cheers,
Michael



More information about the gstreamer-devel mailing list