DXVAを使ったGPU動画再生支援機能

 
DXVAを使ったGPU動画再生支援機能
 
MPC HomeCinemaとGOMPlayerのGPU動画再生支援機能の利用
(2009.07.03作成, 10.01.02更新)
DXVA(DirectX Video Acceleration、DirectX ビデオアクセラレータ)は、DirectShow
 の下でビデオレンダリングをアクセラレーションする為のMicrosoft 標準の新しい API
 (Application Program Interface)。
最近、NVIDIAのGeForceには「Pure Video HD」、ATIのRadeonには「AVIVO HD」という
  グラフィックチップGPUの動画再生支援機能が搭載されている。H.264やVC-1などの
  圧縮動画のデコード以外にも、GeForceは走査線ズレの低減、Radeonは鮮やかな発
  色となめらかな階調表現を支援すると云う。
  なお、DXVAの対象となるファイル形式はMPEG2, H.264, VC-1のみとなっている。
DXVAを使ったGPUの動画再生支援機能の利用が可能な無料プレイヤーには、MPC
  HomeCinema GOMPlayerがあるのだが、市販のPowerDVDを使っての検討
  以外の報告は少ない。
 なお、Flash Playerは10.1ベータ版からDXVAに対応しており、高画質のFLV5(即ち
  MPEG-4 AVC/H.264)をWeb上でスムースに再生する事が可能になると云う。
そこで今回、GeForce9600GT搭載PCで各種動画ファイルを再生した時の各種プレイヤ
  ーのCPU使用率を検討してみた。
  マシン環境は、Intel Core 2 Quad Q6600(2.40GHz)、DDR2(PC2-6400)2GBx2、
   GeForce9600GT(VRAM 512MB、Drive v182.50)
   Windows Vista HomePremium(SP2)で実行した。
   光学ドライブは、I-O DATAのBD&HD DVDコンポドライブBRD-SH6B(LG電子のGGW
   -H20N)を使用した。
 「Windows Media Player12とffdshowのDXVA機能は、→こちらを参照。
 
 I.メディアプレイヤーの環境設定
  I-1) MPC HomeCinema :今回はv1.2.908.0を使用
    「表示」メニュー/「オプション」の「内部フィルタ」項目の「変換フィルタ」で、
    試験目的に応じて、該当フィルタのチェック/未チェックを行った。
     なお、ソースフィルタのMatroskaとMP4/MOVは別の理由(こちらを参照)から外し
         て使用している。
    「表示」メニュー/「オプション」の「外部フィルタ」項目で「フィルタの追加」から、
     H.264/AVCデコーダとして利用可能な筆者のシステムにインストールされている
     3種類のデコーダを登録。
      (1)CoreAVC Video Decoderは、v1.5.0.0(Aug 4 2007..)を使用。DXVAの利用は
        不可(こちらの記事を参照)。
      (2)ffdshowは、tryouts revision2975(May 28 2009..)を使用。現バージョンでは
        DXVAの利用は不可。
      (3)CyberLink H.264/AVC Decoder(PDVD8)は、PowerDVD8 Ultra b8.0.2217に
        含まれるデコーダを使用。
     又、VC-1動画の映像デコーダWMVideo Decoder DMOとMPEG2動画の映像デコ
        ーダCyberLink Video/SP Decoder(PDVD8) (いずれも DXVA Checkerでは
        DXVAに対応)も登録した。
    各々「優先する」として試験目的に応じて、該当フィルタのチェック/未チェックを行った。
    フィルタの「プロパティ」の設定
     フィルタ部分をダブルクリックするか、再生中に「再生」メニューの「フィルタ」から
      選択して表示する。
      内蔵のH264/AVCフィルタは、何故かv1.2では「DXVA有効」をチェックする項目
        が無い。グラボがグレー表示となっており解せない。
      外部フィルタ「ffdshow」は、DXVA設定の項目は無し。
      外部フィルタ「PDVD8」は、「Use DxVA」にチェックを確認。
<参考>DXVA対応インストール済みDSデコーダ ページ表示
 
  I-2) GOMPlayer :今回はv2.1.17.4710を使用
    「環境設定」メニュー/「フィルタ」の「カスタマイズ」タブで「フィルタの追加」から、
      H.264/AVCデコーダとしてCyberLink H.264/AVC Decoder(PDVD8)
      MPEG2動画の映像デコーダとしてCyberLink Video/SP Decoder(PDVD8)
      VC-1動画の映像デコーダとしてWMVideo Decoder DMO
     を登録し、各々「最優先使用」とした。
    「環境設定」メニュー/「フィルタ」の「停止ファイル」タブで、
     試験目的に応じて、「高速再生モードで再生する(内蔵ビデオフィルタを使用しな
     い」をチェック/未チェックした。
   なお、「フィルタ」タブでMP4 Video(.mp4)を、「コーデック」タブでH264を解除した。
 
  I-3) PowerDVD8 Ultra:今回はb8.0.2217を使用。
    「設定」メニューの「ビデオ」で、「ハードウェアアクセラレーション...」を確認。
  I-4) WinDVD8 for I-O DATA :今回は8.0B09.597を使用。
    「セットアップ..」メニューの「ビデオ」で、「ハードウェアデコード..」を確認。
  I-5) Windows Media Player 11
    「ツール」メニューの「オプション」/「パフォーマンス」で、「WMVファイルのDirectX
     ビデオアクセラレータ..」を確認。
  I-6) VLC media player 0.99もKMPlayer 2.9.4.1433も、「DXVA」や「ハードウェア
     アクセラレーション」に該当する設定箇所は見当たらない?
     例えばKMPlayerは外部デコーダの登録は可能だが、H.264/AVCデコーダとし
       てCyberLink H.264/AVC Decoder(PDVD8)を借用しても再生出来ない。
     従って、スプリッタ/コーデック 関連は初期設定のままとした。
 
 II.グラフィックボードのDXVA対応規格
   GPUは、GeForce9600GT(VRAM 512MB、Drive v182.50) を使用した。
     DXVA Checkerここから入手)によるDXVA対応状況の解析は、以下の通り。
     MPEG2, VC1, WMV9, H.264を DXVA2でサポートしているのが確認出来る。
 
 III.各種ファイル再生時の各種プレヤーのCPU使用率
    下記の各種ファイルを再生時の各種プレヤーのCPU使用率を比較表示した。
    なお成績の「CPU使用率」は平均値あたりを、「CPU使用率の履歴」はQuadのうち
     中間と思われるCPUの履歴を表示 した。
  III-1) H.264_AC3.m2tsファイルの再生
    素材:Panasonic製のビデオカメラ HDC-SD9のHGモードで撮影してHD Writerでム
        ーブしたMPEG2-TSファイル
        
H.264_AC3.m2ts[映像:H.264/AVC(High@L4.0)、解像度:1920x1080、29.97fps、
         8.0Mbps]

    成績
      MPC HomeCinema 1.2各種フィルタをデコーダとした場合の成績は最上段の通り
      DXVAの利用が可能な内蔵 H264/AVC(DXVA) 及び外部 PDVD8を使用すると、
      WinDVD8 for I-O DATAやPowerDVD8 Ultraと同様にCPU利用率は激減した。  
     その他のプレイヤー
      GOMPlayerも「環境設定」/「フィルタ」の「カスタマイズ」で外部 PDVD8を追加
        して、「停止フィルタ」で「高速再生モードで再生する」にチェックを入れれば、
        35%位(一番CPU使用率が高い)から 26%位へ減少する事は可能だが、
        GPU再生支援効果とは考えにくい。
     コメント
      MPC HomeCinema 1.2は、GPUの動画再生支援機能を利用してCPU負荷を軽減
        させる事が可能な貴重な無料のメディアプレイヤーだ。
 
  III-2) H.264_AAC.mp4ファイルの再生
    素材:SANYO製のムービーカメラ Xacti DMX-HD1000のFull-HDモードで撮影した
        MPEG-4 AVC/H.264ファイル
        H.264_aac.mp4[映像:H.264/AVC(Main@L4.0)、解像度:1920x1080、59.94fps、
        11.7Mbps]
    成績
      MPC HomeCinema 1.2に各種フィルタをデコーダとした場合の成績は最上段の通り
      DXVAの利用が可能な外部 PDVD8を使用すると、PowerDVD8 Ultraと同様にCPU
      利用率は激減した。
      その他のプレイヤー
       GOMPlayerも外部 PDVD8を追加して「高速再生モード...」を有効にすれば、30%
        位(一番CPU使用率が高い)から22%位へ減少したが、GPU動画再生支援効果
        とは言えないであろう。
     コメント
       MPC HomeCinema 1.2は、このファイルの再生にDXVAが可能な内蔵 H264/AVC
        (DXVA)を使用出来なかったが、外部 PDVD8を利用して
CPU負荷を軽減させる
        事が可能だった。
       WinDVD8 for I-O DATAは期待に反して、このファイルの再生では動画再生支援
        機能を利用出来なかった。
       QuickTimeは想像した程CPUを使用していないが、何故再生が極端に重いのか?
 
  III-3) MPEG2_AAC.tsファイルの再生
    
素材:地デジ邦画番組をPT1で録画したMPEG2-TSファイル
         MPEG2_AAC.ts[映像:MPEG2(Main@High)、解像度:1920x1080、29.97fps、
        12.0Mbps]
    成績
      GOMPlayerのCPU使用率は 24%と高値で、PowerDVD8 UltraのCPU使用率は 6
       %と低値を示した。
      MPC HomeCinemaでは映像デコーダに内蔵のMPEG-2 Videoを使用した場合は
       その中間値だったが、外部のCyberLink Video/SP Decoder(PDVD8)を借用した
       場合はPowerDVD8 Ultra と同様にCPU利用率は減少した。
      GOMPlayerも外部 PDVD8を借用して「高速再生モード...」を有効にすれば、24%位
       (一番CPU使用率が高い)から 7%位へ明らかに減少した。
     コメント
      PowerDVD8 Ultra以外のプレイヤーが、MPEG2圧縮型MPEG2-TSファイルの再生
       にGPUの動画再生支援機能を利用しているのか判然としないが、
      MPC HomeCinemaとGOMPlayerでは、外部CyberLinkのPDVD8を使用すれば明ら
      かにCPU負荷を軽減させる効果が示された。
  III-4) WMV9_WMA9.wmvファイルの再生
    素材:WMV9_WMA9.wmv[映像:VC-1(AP@L3)、解像度:1920x1080、29.97fps、8.0
        Mbps]ファイル
    成績
      Windows Media Player 11のオプション/パフォーマンスで「WMVファイルのDirectXビ
       デオアクセラレータを有効にする」を未チェックとチェックした場合を比較すると、
       CPU使用率は 25%から約半分の 12%に減少した。
      MPC HomeCinemaのオプション/内部フィルタで「VC1(DXVA)」にチェックし、「VC1(
       FFmpeg)」のチェックを外して再生すると、CPU使用率は 16%と約 2/3に減少した。
       外部 WMVideo Decoder DMOを借用した場合は 18〜25%で改善効果は認められ
       なかった。
      一方、GOMPlayerは外部 WMVideo Decoder DMOを借用して「高速再生モード...」を
        有効にすると、21%位から 12%位へと明らかに減少した。
      なお、PowerDVD8 UltraはWMVファイルを再生すると、設定/ビデオの「ハードウェア
        アクセラレーション機能を有効にする」のチェックが外れて再生されてしまう。
     コメント
      CV-1ファイルの再生にGeForce9600GTのCPU負荷軽減効果は、H.264圧縮ファイ
        ルのように明瞭な成績は得られなかった。
      MPC HomeCinema による再生では、映像のデコーダに内蔵の CV1(DXVA)を使用し
        た場合のCPU使用率は約 16%とやや減少したが、
        VC-1をMP@HLに、ビットレートを 4Mbpsや2Mbpsに変更しても同様にCPU使用率
        を減少させる効果は不明瞭だった。
      GPU動画再生支援機能対応アプリケーションの定番となっているPowerDVD8 Ultra
        は、実はGeForceではVC-1動画には未対応だったのだ(こちらの記事を参照)。
        グラボをGeForceからRadeonにして検討する必要があるのかも知れない?    
 
 IV.まとめ
   GPU動画再生支援機能によるCPU負荷軽減効果の有無
    GPUはGeForce9600GTを使用。要に応じて適切な設定が行われている場合
 
動画素材
 メディアプレイヤー
H.264_AC3
.m2ts
H.264_AAC
.mp4
MPEG2_AAC
.ts
WMV9_WMA9
.wmv
 MPC HomeCinema

内蔵H264/AVC(DXVA)
又は、外部 PDVD8

外部 PDVD8

外部 PDVD8

内蔵VC1(DXVA)
 GOMPlayer
×
×

外部 PDVD8
+高速再生モード

外部WMVideo
Decoder DMO
+高速再生モード
 VLC media player
×
×
×

独自デコーダ
 KMPlayer
×
×
×
×
 WinDVD8 for I-O
 DATA

独自デコーダ
×
-

独自デコーダ
 PowerDVD8 Ultra

独自デコーダ

独自デコーダ

独自デコーダ
×
    MPC HomeCinema 1.2は、無料のGPU動画再生支援対応アプリケーションとし
     て特異な存在だが、定番のPowerDVD8 Ultraと同じく GeForce9600GTではWMV
     (VC-1)動画に対しては未対応?だった。
    GOMPlayer 2.1.17は、H.264圧縮動画のGPU動画再生支援に対応していないが、
     VC-1動画にはWindows Media Playerと同等のCPU負荷軽減効果があった。
    VLC media player 0.99とKMPlayer 2.9.4.1433は、GPUの動画再生支援機能を
     利用する術を見いだせなかった。
   今回は DirectShowデコーダの映像描画能について言及していないが、信頼できる
    CyberLink社のPDVD8を借用する限りでは問題はなかった。と云うよりも・・・
    MPC HomeCinemaH.264_AC3.m2tsファイルを再生する場合においては、
     内蔵のH264/AVC(DXVA)は描画が上手く出来ず、ノイズの多い映像となってしまう。
     一方、外部 PDVD8を借用すればインターレース様描画もノイズも見られず映像は
      麗になる(「Full HD画質H.264/AVC圧縮動画の再生とデコーダの優劣」を参照)

追記1(2010.01.02)
 Windows Media Player12のGPU動画再生支援機能
   →Windows Media Player12とffdshowのDXVA機能として独立しました。


| Kenのムービー計画へ >動画狂コーナーへ |