rtsp vaapiparse_h264 not being used

Michael Olbrich m.olbrich at pengutronix.de
Wed Jul 1 01:04:55 PDT 2015


On Tue, Jun 30, 2015 at 06:21:44PM +0000, Spruyt, Randy wrote:
> H.264 webcam is sending an RTSP H.264 byte-stream with NAL alignment. I'd expect the playbin to use the vaapiparse_h264 element to turn this into a format the decoder can use, but we get this. The vaapiparse_h264 element works fine, as does the vaapidecode, h264parse and avdec_h264, etc.
> 
> 
> dev at dev-laptop:~$ gst-launch-1.0 playbin uri=rtsp://192.168.232.63/axis-media/media.amp<http://192.168.232.63/axis-media/media.amp>
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Progress: (open) Opening Stream
> Progress: (connect) Connecting to rtsp://192.168.232.63/axis-media/media.amp<http://192.168.232.63/axis-media/media.amp>
> Progress: (open) Retrieving server options
> Progress: (open) Retrieving media info
> Progress: (request) SETUP stream 0
> Progress: (open) Opened Stream
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> Progress: (request) Sending PLAY request
> Progress: (request) Sending PLAY request
> Progress: (request) Sent PLAY request
> libva info: VA-API version 0.38.0
> libva info: va_getDriverName() returns 0
> libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
> libva info: Found init function __vaDriverInit_0_38
> libva info: va_openDriver() returns 0
> Got context from element 'vaapidecode': gst.vaapi.Display=context, display=(GstVaapiDisplay)NULL;
> Missing element: H.264 (Baseline Profile) decoder
> WARNING: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: No decoder available for type 'video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)1280, height=(int)720, framerate=(fraction)0/1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, profile=(string)baseline, level=(string)4.1'.
> Additional debug info:
> gsturidecodebin.c(939): unknown_type_cb (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0
> ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0: Your GStreamer installation is missing a plug-in.
> Additional debug info:
> gsturidecodebin.c(1006): no_more_pads_full (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0:
> no suitable plugins found:
> gstdecodebin2.c(4330): gst_decode_bin_expose (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
> no suitable plugins found:
> Element vaapidecodebin0 does not accept capsElement vaapidecode0 does not accept caps
> 
> Execution ended after 0:00:00.223165701
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> Freeing pipeline ...
> dev at dev-laptop:~$

I think I've seen this before. From what I can tell, what happens is this:

- playbin adds a parser to the pipeline which can produce alignment=nal and alignment=au
- playbin tries to add vaapidecode
  - the parser and vaapidecode negotiate alignment=nal (this is supported by vaapidecode)
  - vaapidecode reject the first frame because it does not support
    profile=baseline (I've seen this at least on a i5-4570S)
- playbin tries to add avdec_h264
  - this fails because the parser caps are already fixed to alignment=nal

-> no decoder found.

At least that was what it looked like to me. I did not have the time to
look at it in more detail.

Regards,
Michael


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


More information about the gstreamer-devel mailing list