VDPAU
この記事では Video Decode and Presentation API for Unix (VDPAU) をセットアップする方法について説明します。
ハードウェアサポート
ドライバ | チップセット |
---|---|
nvidia-drivers | GeForce 8 (2. Generation) PureVideo HD 以降。対応しているカードの完全な一覧については/usr/share/doc/nvidia-drivers-<version>/html/supportedchips.html を参照してください。 |
S3 | Chrome 430 GT 以降 |
Radeon | r300 以降でサポートが利用可能です。 |
インストール
make.conf
Portage は、各パッケージで VDPAU のサポートを有効化するためのグローバル USE フラグである vdpau を認知しています。この USE フラグを有効化することで x11-libs/libvdpau が自動的に取り込まれるでしょう:
USE="vdpau"
上の USE フラグを追加したら、変更を反映するためにシステムを更新してください:
root #
emerge --ask --changed-use --deep @world
USE フラグ
libvdpau の USE フラグは:
USE flags for x11-libs/libvdpau VDPAU wrapper and trace libraries
doc
|
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally |
dri
|
Enable direct rendering: used for accelerated 3D and some 2D, like DMA |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
AMD/Radeon に固有の手順
mplayer、vlc、vdpauinfo などのアプリケーションはデフォルトで、libvdpau ライブラリを利用して VDPAU 固有の機能呼び出しを行います。そのとき、このライブラリは適切なバックエンドドライバを動的にロードします。
これを書いている時点で、どのバックエンドドライバをロードする必要があるか自動的に決定する機構は、確立されていません。現時点で libvdpau は NVIDIA バックエンドドライバをロードするようにハードコードされています[1]。つまり、VDPAU は Radeon カードでは正常に動作しないでしょう。この挙動を変更するための唯一可能な方法は、正しいバックエンドドライバを手動で指定することです。
まず、対象ハードウェアに関連付けられたドライバの名前を見つける必要があります (ここでは vdpau USE フラグが有効化され、システムが正常に更新されていると仮定します)。名前を見つけるための一つの方法は、Xorg のログファイルを確認することです:
user $
grep -i vdpau /var/log/Xorg.0.log
(II) RADEON(0): [DRI2] VDPAU driver: r300
出力中に VDPAU ドライバが適切に初期化されているかが表示されるでしょう (上の出力サンプルでは、(II) の 2 文字で始まる行にあります)。バックエンドドライバの名前も明示されているはずです (出力サンプルでは r300)。
これで VDPAU_DRIVER 環境変数を使ってバックエンドドライバの名前を手動で指定できます。これを行うには、次の行を ~/.bashrc ファイルに追加する必要があります (グラフィカル環境を実行しようとしているユーザのデフォルトシェルが Bash の場合)。上のサンプルケースでは次の行のようにすればよいでしょう:
export VDPAU_DRIVER=r300
これで x11-misc/vdpauinfo がエラーメッセージではなく、現在の VDPAU 設定についての情報を表示するようになるはずです。
user $
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 2048 2048 NV12 YV12 422 2048 2048 NV12 YV12 444 2048 2048 NV12 YV12 Y8U8V8A8 V8U8Y8A8 Decoder capabilities: name level macbs width height ------------------------------------------- MPEG1 16 16384 2048 2048 MPEG2_SIMPLE 16 16384 2048 2048 MPEG2_MAIN 16 16384 2048 2048 ...
AMD GPU がプライマリ GPU ではない場合は、VDPAU を使用できるアプリケーションに対して
DRI_PRIME=1
変数も設定するべきです。追加のソフトウェア
- x11-misc/vdpauinfo: VDPAU がサポートされているかどうかを表示します。
- VDPAU は VAAPI バックエンドとして使用することができます。
NVIDIA に固有の手順
プロプライエタリドライバを使用すれば vdpau は特に設定しなくても動作しますが、nouveau ドライバではファームウェアが必要になります:
root #
emerge nvidia-firmware
設定
VDPAU を利用できるようにするために、プログラムの設定ファイルを修正する必要しなくてはならない場合があります。
mplayer
利用可能な VDPAU ビデオコーデックを検出してください:
user $
mplayer -vc help | grep --color vdpau
それらを mplayer 設定ファイルに追加してください:
[vo.vdpau]
vc=ffh264vdpau,ffodivxvdpau,ffmpeg12vdpau,
vc
行の末尾のコンマは重要です! これは、VDPAU ドライバが失敗した場合に他の動画出力メソッドにフォールバックするよう MPlayer に伝えます。関連項目
- AMDGPU — AMD Radeon およびその他の GPU のためのオープンソースグラフィックスドライバです。
- AMDGPU-PRO — the next generation closed source graphics component that operates on top of the open source AMDGPU drivers for newer AMD/ATI Radeon graphics cards.
- VAAPI — provides access to graphics hardware (GPU) acceleration for video processing.
- Vulkan — a next-generation graphics API created by The Khronos Group.
- Xorg/Hardware 3D acceleration guide — GentooのXorgでDRMを使用して3Dアクセラレーションを動作させるためのガイドです。