Intel/VA-APIを動かす時のメモ


vainfoを叩いた時に下記のように出ていればVA-APIのインストールはされています。

$ vainfo 
(略)
vainfo: VA-API version: 1.4 (libva 2.4.1)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.4.0
vainfo: Supported profile and entrypoints
     VAProfileMPEG2Simple            :	VAEntrypointVLD
     VAProfileMPEG2Simple            :	VAEntrypointEncSlice
     VAProfileMPEG2Main              :	VAEntrypointVLD
     VAProfileMPEG2Main              :	VAEntrypointEncSlice
(略)

どうやら/usr/lib64/driにドライバがあるっぽい。

# ls -lah /usr/lib64/dri/
(略)
-rwxr-xr-x.   1 root root  13M  1月  6 10:39 i965_dri.so
-rwxr-xr-x.   1 root root  977  3月 21 20:52 i965_drv_video.la
-rwxr-xr-x.   1 root root  14M  3月 21 20:52 i965_drv_video.so
(略)

実際i965_drv_video.soをリネームするとvainfoがエラーになるし、下記のようにffmpegでエンコードしようとしてもエラーで動かなくなる。

$ vainfo 
error: XDG_RUNTIME_DIR not set in the environment.
error: can't connect to X server!
libva info: VA-API version 1.4.1
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

$ ffmpeg -y \
  -hwaccel vaapi -hwaccel_output_format vaapi   \
  -i input.mpg -c:v h264_vaapi /tmp/encout.mkv

(略)
[AVHWDeviceContext @ 0x11350c0] Failed to initialise VAAPI connection: -1 (unknown libva error).
Device creation failed: -5.
[mpeg2video @ 0x1121500] No device available for decoder: device type vaapi needed for codec mpeg2video.

ffmpegは下記のようにレンダを指定する事もできる。

-hwaccel_device /dev/dri/renderD128

mpvでエラーが出る

再生はされるが、下記のエラーが出る場合があります(詳細なエラーを出すためLIBVA_TRACE=1としてます) ただ、再生はできます。ハードウェア支援が使えてるのかよくわからないですが…。

$ export LIBVA_TRACE=1
$ mpv -vo gpu -hwdec=vaapi test.mkv
 (+) Video --vid=1 (*) (hevc 1920x1080 29.970fps)
 (+) Audio --aid=1 (*) (aac 2ch 48000Hz)
[vaapi] libva: Open file 1 failed (Permission denied)
[vaapi] libva: va_getDriverName() failed with unknown libva error,driver_name=(null)

アンシャープマスク

unsharp=lc:1.5