playbin3: hardware sink elements no longer working

Sachs Jürgen juergen.sachs at metz-ce.de
Fri Aug 12 13:59:36 UTC 2022


When using _playbin3_ instead of _playbin_ the pipeline with our hardware sink elements no longer setup properly. This has worked perfectly with playbin for a number of years

I get an error message like:

ERROR Your GStreamer installation is missing a plug-in. for http://192.168.0.252/media/streams/format/1280x720x30-avc.mp4.mp4

ERROR debug information: ../../../../../../Media/GST-1.0/gstreamer/subprojects/gst-plugins-base/gst/playback/gstparsebin.c(3543): gst_parse_bin_expose (): /GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3-0/GstDecodebin3:decodebin3-0/GstParseBin:parsebin0:

no suitable plugins found:

Missing parser: MPEG-4 AAC (audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)119056e500, rate=(int)48000, channels=(int)2)

Missing parser: H.264 (High Profile) (video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)3.1, profile=(string)high, codec_data=(buffer)0164001fffe100196764001facd9405005bb016c80000003008000001e078c18cb01000668ebe3cb22c0, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1, coded-picture-structure=(string)frame, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true)

Background

We are working on an SOC with integrated hardware decoders for audio and video. This decoders are fed directly with "video/x-h264..." or "audio/mpeg..." (and other "encoded" media formats). So we have created sink elements with respective sink caps. The elements are classified as "Sink/Video/Hardware" rsp. "Sink/Audio/Hardware". Obviously "playbin3" is looking for "Decoders" for this stream caps that are not found (We have removed the SW decoders for all caps that are supported by our hardware from the GStreamer packages)

I also have tried to classify my Sinks as "Decoder". In this case they are built in the pipeline (in decodebin3), but the pipeline remains paused. And there are an unused pipes from decodebin3 (see attachment)

Can anybody give a hint, how to handle such special sink elements ("decoder-sinks") correctly with playbin3? Do I really need to split the sinks into "decoder" and separate "sink" communicating with "hardware buffers". This would be bad hack, because the underlaying libraries from SOC vendor needs directly to push encoded data.

Thanks for any hint
/Juergen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20220812/47c1ba6a/attachment.htm>


More information about the gstreamer-devel mailing list