bootlin / libva-v4l2-request

LibVA implementation for the Linux Video4Linux2 Request API
Other
76 stars 59 forks source link

Failed to decode mpeg4 (x264) video #27

Open choryuidentify opened 4 years ago

choryuidentify commented 4 years ago

Hello!

I'm using Orange Pi Plus 2 with Arch Linux (mainline 5.3.7-1-ARCH). I've install libva-v4l2-request-git package. and run vainfo, it display correct information.

vainfo: VA-API version: 1.5 (libva 2.5.0)
vainfo: Driver version: v4l2-request
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointVLD

so, I've trying decode MPEG4 video using VLC. Video is this file and got this error (verbose log)

main debug: looking for hw decoder module matching "vaapi": 3 candidates
vaapi_drm error: profile(3) is not supported
main debug: no hw decoder modules matched

and I trying v4l2-request-test, mpeg2 is ok (log), but h264 is failed (log)

h264 preset is disabled some unknown reason, so I've turn on h264 using export CFLAGS=-DV4L2_PIX_FMT_H264_SLICE=1

How can I resolve this problem? and It's have schedule for support GStreamer? I'm trying to porting OpenAuto to Sunxi boards. Thanks!

luusl commented 4 years ago

I have a similar setup (Orange Pi PC running on 5.3.8-1-ARCH) with the same libva-v4l2-request-git package package installed but a different error.

$ vainfo
vainfo: VA-API version: 1.5 (libva 2.5.0)
vainfo: Driver version: v4l2-request
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointVLD

But when running v4l2-request-test I get an error "Unable to open DRM node: No such file or directory".

$ ./v4l2-request-test
Config:
 Video path: /dev/video0
 Media path: /dev/media0
 DRM path: /dev/dri/card0
 DRM driver: sun4i-drm
 Slices path: data/bbb-mpeg2
 Slices filename format: slice-%d.dump
 FPS: 0

Preset:
 Name: bbb-mpeg2
 Description: big_buck_bunny_480p_MPEG2_MP2_25fps_1800K.MPG
 License: Creative Commons Attribution 3.0
 Attribution: Blender Foundation | www.blender.org
 Width: 854
 Height: 480
 Frames count: 25
 Format: MPEG2

Media device driver: cedrus
Unable to open DRM node: No such file or directory

(Hopefully) relevant part from kernel boot.

$ journalctl -b | grep -iE 'drm | sun4i | hdmi | disp'
Nov 05 11:51:47 kernel: sun4i-drm display-engine: bound 1100000.mixer (ops sun8i_mixer_ops [sun8i_mixer])
Nov 05 11:51:47 kernel: sun4i-drm display-engine: bound 1c0c000.lcd-controller (ops sun4i_tcon_ops [sun4i_tcon])
Nov 05 11:51:47 kernel: sun8i-dw-hdmi 1ee0000.hdmi: Detected HDMI TX controller v1.32a with HDCP (sun8i_dw_hdmi_phy)
Nov 05 11:51:47 kernel: sun8i-dw-hdmi 1ee0000.hdmi: registered DesignWare HDMI I2C bus driver
Nov 05 11:51:47 kernel: sun4i-drm display-engine: bound 1ee0000.hdmi (ops sun8i_dw_hdmi_ops [sun8i_drm_hdmi])
Nov 05 11:51:48 kernel: [drm] Initialized sun4i-drm 1.0.0 20150629 for display-engine on minor 0
Nov 05 11:51:48 kernel: sun4i-drm display-engine: fb0: sun4i-drmdrmfb frame buffer device
choryuidentify commented 4 years ago

@luusl did you add 'video' group on your user account?

luusl commented 4 years ago

@choryuidentify Yes, I'm in the video group. Same result when running with sudo.

luusl commented 4 years ago

OK, the problem with me was apparently that I had an X server running, after quitting it I ran into the same problem as @choryuidentify.