音声ファイルから動画ファイルを生成する(57) - Quick Sync Video

公開:2014-03-16 15:45
更新:2017-09-22 05:40
カテゴリ:media foundation,音声動画出力プログラム,audio,c++,windows,windows api

Intel Quick Sync Video (QSV)を有効にするにはどうすればよいか調べたら、Sandy Bridgeから搭載されているQSVエンコーダは内蔵GPU(HD3000)にくっついているものらしい。内蔵GPUが無効な状態ではQSVは利用できないらしい。私はとりあえずデュアルモニタ環境でPCを利用している。そしてGPUは外付けのGTX650Ti Boostを使用している。モニターは両方ともGTX650Tiに接続している。通常のBIOS設定だと外付けGPUを指すと内蔵GPUは無効となる。そのためQSVが利用できないと推測する。

そうするとQSVを使用するためには内蔵GPUと外付けGPUを共存させるか、内蔵GPU単独で使用しなければならない。外付けGPUと内蔵GPUの速度差は明らかなので、内蔵GPU単独使用などありえない。 共存させる方法を調べたら、BIOSで内蔵GPUを常時ONにすると両方使用できるようなので、それをセットしてみた。そしてモニタの片側を内蔵GPUに接続し起動してみたところ普通にマルチGPUでWindows8.1が起動した。Windows 8+最新Intel Graphics ドライバで外付GPU+内蔵GPUの共存が可能らしい。

この状態でAviUtil+QSVEncを使用し、QSVが認識されるか確認したところ普通に認識していた。

エンコードも正常にできたので問題はなさそうである。内蔵GPUのドライバの制限により、内蔵GPUがプライマリディスプレイアダプタでないとQSVが使用できないとの情報もあったが、私の環境では外付けGPUがプライマリになっていても特別問題なく動作している。しかしこのNVidia + IntelのデュアルGPU環境はなんとも不思議な感じだ。ウィンドウを移動してウィンドウを跨ってもちゃんと双方のディスプレイで表示される。

この状態で私のアプリでもSinkWriterが自動的にQSVエンコーダを利用していないか確認してみた。残念ながらソフトウェアエンコーダを使用していた。何か実装上でなにか不足しているものがあるか、もしくは明示的にQSVエンコーダMFTを使用しないといけないのかもしれない。QSVエンコーダMFTはIntel Media SDKのドキュメントによるとサンプル版っぽい記述がされているので、ひょっとするとそもそも利用上の制限があるのかもしれない。もう少し詳しく調べる必要があるね。Intel Media SDKもインストールしてみることにしよう。