ハードウェアアクセラレーションを有効にする。 Linux MINT 18 ubuntu 16.04LTS

Linux MINT 18、ubuntu 16.04LTS でVDPAU(ハードウェア再生支援)を有効にする:3日後削除

さらに追記;2017/02/10

本日付のGPUドライバの刷新で、動作が非常によくなりました。VDPAUなどは有効にしています。

追記の追記:2017/01

4Kモニターに変更してからいろいろテストしました。結論をいえば、ハードウェアアクセラレーションを無効にしてソフトウェアデコードしたほうがよい。ドライバそのものが遅すぎる気がします。RADEONの話です。他のGPUの方は違う印象だと思います。
もどしました。

当方の今日の環境:AMD RADEON R7 360

末尾参照。VA-APIとの比較(以下、過去稿、記録のため削除せず)


試した範囲でいえば、VDPAU>VA-APIです。後者は厳しい処理で目視でわかる程度にコマ落ちします。したがって、当面、mesa-vdpau ドライバを導入します。HW支援が選べるアプリケーションでは、VDPAUを明示的に指定して用いることにしました。

追記:削除しました。テストしている範囲ではうまくいっていました。
mint 18で試して、メインのubuntu16.04にも導入し、 メインから結局削除。mint18には残しておきます。


当方の環境ではデフォルト状態がベストということなのかなと。悔しくなんかないんだからね。テストしたのはmpvのみです。多少のCPU負荷に目をつぶれば、HWアクセラレーションを効かせない設定にしておけばいいだけともいいますね。


これまで通り、HW支援を効かせたい場合はデフォルトでVA-APIを選択することにしました。実験環境のmint18の方ではVDPAUでしばらく試行錯誤しながら様子をみてみることにしました。よくよく考えてみれば、VDPAUの必要性はとりあえずないので、デフォルトの状態が一番なのかな、と。

ただし、ffmpegでは「Supported hwaccels: vdpau」なのが少々。

ドライバを導入します。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

sudo apt-get install mesa-vdpau-drivers vdpauinfo


再起動

※ドライバの削除は次のコマンドでよいと思います(私は結局削除しました)

sudo apt remove mesa-vdpau-drivers vdpau-driver-all vdpauinfo
テストします。
mpv --vo=vaapi *OP*
mpv --vo=vdpau *OP*
mpv --vo=opengl *OP*
mpv --vo=opengl-hq *OP*
mpv --vo=xv *OP*

*OP*というのは、x264ファイルです。数秒動画だとCPU負荷がわからないので1分以上のファイルを選んだほうがいいですね。いろいろな種類のファイルも試したほうがいいかもしれません。コンテナ、コーデックなど変えてみたりしながら。
mpvのconfigの設定は済ませていることが前提です。リンク先サンプルはHW支援をオフにしています。hwdec=vdpauなどに書き換えて使ってみてください。


定義ファイル作成がうざったいなら、コマンドラインで指定してテストでもよいです。こんなかんじ。1行です。

mpv --vo=opengl --hwdec=vdpau --hwdec-codecs=h264,vc1,wmv3,mpeg1video,mpeg2video *OP*

H.264のテストなので、以下がシンプルで等価。たぶん。
mpv --vo=opengl --hwdec=vdpau --hwdec-codecs=h264 *OP*



テストします。 (configに設定を書いています)
mpv *OP*
   cplayer: Auto-loading profile 'vo.opengl-hq'
   cplayer: Playing: DOPx264.mp4
   cplayer:  (+) Video --vid=1 (*) (h264)
   cplayer:  (+) Audio --aid=1 --alang=jpn (*) (flac)
   cplayer: AO: [alsa] 48000Hz stereo 2ch s32
        vd: Using hardware decoding (vdpau).
   cplayer: VO: [opengl-hq] 1920x1080 vdpau
  term-msg: FPS: 23.976
statusline: AV: 00:01:31.000 / 00:01:31.009 (99%) A-V:  0.000 Cache:  0s+0KB
[-----------------------------------------------------------------------------------------------+-]
   cplayer:
   cplayer:
   cplayer: Exiting... (End of file)

目視レベルで、支援なしと比較して、CPU稼働率はけっこう少なくなります。効果あり。いまのところ安定しています。

サポートされているコーデックをいまさら確認します。グラフィックカードにも依存します。以前のubuntuであればもう少し設定がめんどうでした。サポートdecodeerが表示されている=vdpauが有効。(有効でない場合は、数行のエラーメッセージで終わりです。昔と違って何も設定はいらないのでしょう。)

vdpauinfo

display: :0   screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0

Video surface:

name   width height types
-------------------------------------------
420    16384 16384  NV12 YV12
422    16384 16384  UYVY YUYV
444    16384 16384  Y8U8V8A8 V8U8Y8A8

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                          --- not supported ---
MPEG2_SIMPLE                    3  9216  2048  1152
MPEG2_MAIN                      3  9216  2048  1152
H264_BASELINE                  41  9216  2048  1152
H264_MAIN                      41  9216  2048  1152
H264_HIGH                      41  9216  2048  1152
VC1_SIMPLE                      1  9216  2048  1152
VC1_MAIN                        2  9216  2048  1152
VC1_ADVANCED                    4  9216  2048  1152
MPEG4_PART2_SP                  3  9216  2048  1152
MPEG4_PART2_ASP                 5  9216  2048  1152

DIVX4_QMOBILE                  --- not supported ---
DIVX4_MOBILE                   --- not supported ---
DIVX4_HOME_THEATER             --- not supported ---
DIVX4_HD_1080P                 --- not supported ---
DIVX5_QMOBILE                  --- not supported ---
DIVX5_MOBILE                   --- not supported ---
DIVX5_HOME_THEATER             --- not supported ---
DIVX5_HD_1080P                 --- not supported ---
H264_CONSTRAINED_BASELINE      --- not supported ---
H264_EXTENDED                  --- not supported ---
H264_PROGRESSIVE_HIGH          --- not supported ---
H264_CONSTRAINED_HIGH          --- not supported ---
H264_HIGH_444_PREDICTIVE       --- not supported ---
HEVC_MAIN                      --- not supported ---
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8
R8G8B8A8         16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8
R10G10B10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8
B10G10R10A2      16384 16384    y  NV12 YV12 UYVY YUYV Y8U8V8A8 V8U8Y8A8 A8I8 I8A8

Bitmap surface:

name              width height
------------------------------
B8G8R8A8         16384 16384
R8G8B8A8         16384 16384
R10G10B10A2      16384 16384
B10G10R10A2      16384 16384
A8               16384 16384

Video mixer:

feature name                    sup
------------------------------------
DEINTERLACE_TEMPORAL             y
DEINTERLACE_TEMPORAL_SPATIAL     -
INVERSE_TELECINE                 -
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         -
HIGH QUALITY SCALING - L1        -
HIGH QUALITY SCALING - L2        -
HIGH QUALITY SCALING - L3        -
HIGH QUALITY SCALING - L4        -
HIGH QUALITY SCALING - L5        -
HIGH QUALITY SCALING - L6        -
HIGH QUALITY SCALING - L7        -
HIGH QUALITY SCALING - L8        -
HIGH QUALITY SCALING - L9        -

parameter name                  sup      min      max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH              y        48     2048
VIDEO_SURFACE_HEIGHT             y        48     1152
CHROMA_TYPE                      y
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y
CSC_MATRIX                       y
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y
LUMA_KEY_MAX_LUMA                y

AMD RADEON R7 360

(2016-06-01)。今回のドライバ(VDPAU MESA)を組み込まないデフォルト状態では、次のようになっていました。VA-APIです。ubuntu16.04LTSです。 mint18がリリースされる前ですから、厳密な比較ではありません。
libva info: VA-API version 0.39.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_0_39
libva info: va_openDriver() returns 0
   cplayer: AO: [pulse] 48000Hz 5.1 6ch s32
        vd: Using hardware decoding (vaapi).
   cplayer: VO: [opengl-hq] 1920x1080 vaapi
  term-msg: FPS: 23.976
VDPAU関連を組み込まない状態:VAAPIが有効でHWアクセルが効いているかんじがします。ffmpegでは効かない(ffmpegはvdpau必須)。
-sudo apt install libvdpau-va-gl1