「Windows 10」の「AV1」ハードウェアデコードが可能に…… 対応ビデオカード(GPU)が必須。まだ無くても困ることはない。
窓の杜の記事である。今は数年ぶりの映像フォーマット過渡期に入りつつある。
AOMedia Video 1がWindowsでのハードウェアデコードに対応したらしい。
まあ、対応しているハードウェアが、最新のGPU(ビデオカード)やSoCに限られるので、これを利用できる人は今のところ少ない。
しかも、エンコードにはまだ対応していない。エンコードの方が数段処理に必要な推測(理論)工程が多いので当然ではある。
だから、すぐにこれが欲しいと思う必要もないだろう。
映像フォーマットによほど思い入れがある人なんて少ないと思うが、そういう人は、
来年にはMPEG-I Part.3-H.266/VVC(Versatile Video Coding)のハードウェアライセンス供給(現在はソフトコーデックの仕様のみ)も始まる予定なので、それが出て様子を見てから、GPUの入れ替えなどを考えてもよいかもしれない。まだ、AV1もデコードしか出来ないのだから。
半導体の進化がまだ毎年確実に進むなら、1年~2年以内にAV1エンコード機能もGPUでサポートするようになるだろう。但し、これもまたあくまでこれから登場する最新のGPUがサポートするのであって、今既存の製品がサポート出来るようになることはない。即ち、最新の動画符号化に関するアクセラレーションを求め続けるなら、ある程度先を見据えて買い時を考えた方が良いと言うことになる。
ネットの動画を再生する程度なら、そこまで考えなくても、当分H.264やVP8/9も併用されるだろうから、心配は要らないが……。
一応、何故ドライバー等のアップデートで対応しないのかを書いておく。
元々、GPGPU(nVIDIA CUDAやOpenCL)を使えばCPUの負荷を殆ど無くして、AV1のデコードなら出来るGPUも沢山存在するだろう。もちろん、GPGPU向けのコーデックを誰かが開発する必要があるのだが、デコードはGPU側のFP32演算性能がそれなりにあれば出来るだろう。
しかし、それはあくまで、汎用処理(ソフトウェア処理)であって、例えば他の3Dや2D演算が重なっていると、どちらかの処理能力が犠牲になるだろう。また、本来ハードウェアデコーダーやエンコーダーは汎用に比べて消費電力が低く、処理が高速なのが売りだが、GPUの性能がギリギリか、少し低ければフルパワーで処理しても十分な性能に達しない可能性が出てくる。発熱も大きくなり電力も喰うだろうし、本末転倒な話になる。
じゃあ、対応出来そうなものだけでもそれをすればと思うだろうが、それは販売促進上の理由や、それをするためのフロー制御をある理由から排除しているケースもあり出来ない場合も多いのだ。
昔と違って、今はGPGPUベースではなく、固定のエンコーダーやデコーダーに一部の追加パラメーターの処理だけ、汎用シェーダー任せにする方式をとっていることが多い。
2005年頃から2012年頃迄は、ドライバー側でGPGPU定義を実装し見かけ上ハードウェアベースに見せて処理させたり、またはプログラマブルフロー制御だけを実装するものもあった。しかし、最近はデコーダーやエンコーダーに使う演算のレベルも複雑化していき、さらにエンコード世代交代も数年に1度で、派生するバリエーション符号化技術もなくなった。その結果、そういう制御を持たせる意味が無くなった。むしろそういう制御を持たせると、電力面でも、セキュリティ面でも、買替えサイクルという点でも、メーカーにメリットがないためだ。
特に、nVIDIAではよく見つかるが、脆弱性がGPUにも見つかることが増えているため、必要以上に拡張性を持たしたり、ドライバソフトウェア機能を拡張することは避けているケースが多いのである。
ちなみにドライバベースというのは、ドライバー側にGPUエンコードやデコードのためのVideo及びAudio Codecを内蔵し、シェーダー処理させるためのパターンだ。
フロー制御というのは、ハードウェアのシステムファームウェアにリソースパラメーターの閾値や設定値を登録しておく方法だ。
簡単に言えば、AV1で解像度が1920×1080ドット、30fpsのSDR動画、12Mbpsの場合、ビデオメモリはこれだけを利用し、シェーダークラスターの何番にどういう処理を与えるぐらいのパラメーターを与えておく訳だ。もちろんこれは、先にメーカー側で十分な動作を確認して割り当てられる。
3D処理など他の作業と同時になると、エンコーダーやデコーダーを専用に実装するより、パフォーマンスが落ちることがあるが、フロー(流れ……メモリーの利用状況やGPUリソースの割当て)を逐次ソフトウェアで割り込みチェックし続ける必要がなく、フロー制御回路に任せてしまえば、確実に処理が行われる。
これは、先に書いたように3D演算などで特別GPUを沢山喰う処理と重ならなければ、システムファームの置き換えだけで、最新のエンコードやデコードもサポート出来るが、一方で汎用部にプログラマブルファームで優先度を上げて割り込むため、不正なコードでファームを書き換えたり、映像だと見せかけて、危険な処理をバイパスさせる方法が見つかると、それが特別権限で透過する恐れがある(ウィルス対策でもヒットしない)。だから、今は殆ど使われないはずである。これは、ドライバで処理する場合でも同様の問題が起きる恐れがある。
また、これをやると、それでも古いまま使う人が多いハードの買替えサイクルが鈍る上に、昔と違って同じような符号化アルゴリズムでDivXとか、Xvidとか、VC-1とWMV9の違いとか、MPEG4の派生が沢山出てくる時代でもなくなり、世代交代時には既に古いGPUでは演算が追いつかない可能性もあるという理由もあって、今ではスタンドアロンの組込向け製品(インターネットに繋がらないカメラや専用編集機など)を除けば、殆ど使われないはずだ。
尚、一応書いておくとH.265やAV1、今後登場するMPEG-I H.266/VVCの規格には、Reserve(予約)定義も多少あり、その部分に対して将来的に汎用シェーダーで支えるぐらいのフローは持っている製品はあるだろう。
このような理由があり、以前は、後からドライバベースやファーム(フロー)ベースで簡単にサポート追加されるケースもあったが、今は最新のビデオカードやiGPU以外では例え汎用シェーダーに余裕があってもサポートしない製品が多いのだ。
<蛇足-AV1だから何でも綺麗に高画質とは限らないから注意>
ついでのついでに書いておくと、対応外だから、高画質に再生出来ずガッカリだよということも今はまだないだろう。多くの場合は、デフォルトがVP9かH.264のはずだし、そもそも、よほど解像度やビットレートが高いなどいくつか条件がないとAV1だから圧倒的な画質になるという訳でもないはずだからだ。
あくまで、ある条件の中で扱うなら、コンテンツベンダーにとってAV1は画質をあまり落とさず、ロイヤリティも掛からず魅力的というだけである。
一定の解像度ビットレート以下だと粒子化の品質は上がらないケースも最近は結構ある。ぱっと見の差は容量の減少もそれほどないか増えてしまって、その上、求める性能はデコードでx倍(数倍単位)、エンコードで1x倍(10倍単位)なんてのは本当によくあることだ。
特に、エンコード初心者だと画質が良いという噂を聞いてフォーマットを使って増えちゃったという話は良く聞く。
これは、映像のフレームに対して、複数の推測(量子)符号化を掛けていることの意味をちゃんと理解していないからであり、その映像フォーマットに対する画質の記事を書いている人も、説明が足りていないからかもしれない。
映像のエンコード/デコード機能の進化を、凄く簡単に書くと、犯人のモンタージュ写真や目撃者の証言を作ることなんかが、似ている。これは、符号化に使われる複数のアルゴリズムを時間軸のフレームに重ねて画質の破断を減らしているという点が、目撃者が証言する人数による確度の向上という部分と似通っているからだ。まあ、連想ゲームでも良いのだが、この方が分かり易いだろう。
目撃者の証言というのは、Aさん1人より、AさんBさんCさんが別々の角度(印象)からそのシーンを覚えておけば、実際の犯人に近いモンタージュが書け、犯人がどういう行動を取ったかという詳細な状況に繋がるという考え方が不可逆映像圧縮の高性能化と同じような雰囲気だと思えば分かり易い。1人から聞けば1回で終わるが実際に覚えている内容は乏しいだろう。もしかしたら、咄嗟過ぎて服の色とか思い出せない場合も有り得る。
10人から情報を集めると、その時に何があったか、どんな犯人でどこに逃げたかといった情報の質は上がるがそれを纏めるのに時間や手間は掛かる。それを高画質と言われる映像の符号化と置き換えると良い。
元の映像を簡便で大まかな情報(簡略化したおおよそこんな感じという情報)に置き換えるのが、不可逆エンコード(保存、録画、変換する際の映像処理工程)。その情報のいくつかを元に、元の状態を推定するのが不可逆デコード(再生した映像)である。
不可逆なので、全く同じ状態に戻ることは無くあくまで推定となる。犯人を捜すのと違う点があるとすれば、映像の圧縮は、推測に使う情報量がより少なくなり、且つ推測される情報が元の情報に近い状態になるほど、高性能ということにある。だから、より高度な映像圧縮は、複数の方向から推測のための情報をより正確に近づくように保存しなければいけない。
ここで大事なのは、元々の情報量(解像度など)が少ない情報の場合は、覚えた人を10人を20人に(アルゴリズムをいくつも重ねて)増やしたところで証言(画質)は殆ど変わらない。むしろ、重なる証言が増える割に有用な新しい証言は少ないなら、情報量を減らすという観点から見ると逆効果になる。
下手をすると低解像度や低ビットレートだと、規格の古い5人ベースのエンコードと、同じ画質なのにデータ量増えてしまうということだ。
凄く大きな画像やビットレートが大きいものだと、人数(処理する工程)が多いほど緻密な画質を維持することが出来る。犯人はここにほくろがあったとか……言ってくれる人がいるわけだ。映像として向きを確認するなら、どっち方向に向かっていたとか、仲間が車でというのも分かるかもしれない。
但し、処理には相応の時間が掛かり、みんなの証言から集めた工程の検証なども増えていく訳だ。
これは即ち、最先端の映像形式、音声形式だから、他の古い符号化よりどんな場合でも高画質になるわけではないということだ。
逆に、情報量が十分以上にある映像では、ある一定のビットレートまでであれば、綺麗な状態を維持出来ることを意味している。
即ち、あらゆる条件で絶対に上と言うことにはならない。
だから、すぐにこれが必要だと思う必要もない。再生にはデコーダーが絶対に必要で、ネットコンテンツは概ねAV1になったよ。と言われるようになるまで、待っても良いわけだ。
そもそもIrisを除けば、RADEON RX6000シリーズとGeforce RTX 3000シリーズな訳で、デコーダーとして魅力的とは言い難い。
この記事へのコメント