Dav2d
(jbkempf.com)- dav2d は、VideoLAN コミュニティが開発する AV2 向けの高速デコーダで、アプリ・ブラウザ・オペレーティングシステムでそのまま使える実装を目指している
- AV2 は AV1 の後継となるロイヤリティフリーのコーデックで、約 25% の効率改善が観測されている一方、デコードの複雑さは AV1 の約 5 倍に達する
- dav1d が AV1 普及初期に高速ソフトウェアデコーダの役割を果たしたように、dav2d もプロダクション品質のデコーダを仕様策定の初期段階から準備している
- 現在のツリーでは AVM v15 デコーダを機能的に完成させており、8 ビット・10 ビットをサポートし、正確性・適合性・最適化に注力している
- x86 AVX2、ARM NEON、初期の RISC-V 対応と checkasm による検証を通じて、アーキテクチャごとの最適化を高速かつ安全に進めている
dav2d の目的と背景
- dav2d は VideoLAN コミュニティのメンバーが開発する、新しい AV2 コーデック向け高速デコーダである
- リポジトリは数週間前に公開され、AV2 が最初の公式仕様リリースを出したタイミングに合わせて、プロジェクトの目的と現状が公開された
- dav2d は AV1 デコーダである dav1d の延長線上にある
- 目標は、実際のアプリケーション、メディアプレーヤー、ブラウザ、テストツール、オペレーティングシステムで使える小型で高速、移植性が高く正確なデコーダを提供することにある
- 「コーデックは、誰もがデコードできるようになるまでは実在しない」という考え方に基づき、仕様だけでなく、ビルド・テスト・ベンチマーク・統合可能な実装が重要になる
AV2 とデコード難易度
- AV2 は Alliance for Open Media の最新のロイヤリティフリー動画コーデックであり、AV1 の後継である
- AV2 の仕様は公開されている
- AV1 は 2018 年に確定し、ブラウザ、モバイル機器、オペレーティングシステム、テレビ、ストリーミングサービス、動画アプリケーションに広く展開された動画コーデックとなった
- AV2 は予測、変換、エントロピー符号化、フィルタリング、クロマ処理全般に新しい符号化ツールを導入し、圧縮効率の改善をさらに進めている
- テスト条件によって差はあるものの、AV1 比で約 25% の改善が一般的に観測され、一部の評価ではさらに大きな改善も示されている
- AV2 のデコードは AV1 よりおおむね 5 倍複雑であり、現在のハードウェアでソフトウェアだけによるリアルタイムデコードを行うには、アーキテクチャ別の最適化が必要になる
- この複雑さのため、dav2d の開発は仕様の安定化を待たずに早期に開始された
dav1d から dav2d へ続く流れ
- dav2d の出発点には、dav1d 初期の経験がある
- AV1 確定当時は、専用ハードウェアデコードが十分に速く、十分に多くのデバイスへ普及するとは限らなかったため、高速ソフトウェアデコーダが必要だった
- 当時、AOM コミュニティの一部はハードウェア実装とリファレンスデコーダで十分だと考えていたが、ブラウザ・メディアプレーヤー・オペレーティングシステム・モバイル機器には、専用ハードウェア普及前からプロダクション品質のデコーダが必要だった
- その後、AOM 自身が初期開発の一部を支援し、Alliance の一部メンバーも作業に加わって dav1d が誕生した
- 高速ソフトウェアデコーダの必要性は予想以上に大きく、dav1d は現在もっとも広く配布されている AV1 ソフトウェアデコーダとなっている
- dav1d は VLC、FFmpeg、mpv、Firefox、Chrome、Safari、Android、Windows、Linux、および多くのアプリケーションやプラットフォームで使われている
- dav1d は AV1 の展開、テスト、最適化を行う多くの開発者にとって、リファレンス AV1 デコーダ実装としても利用されている
- dav1d の歩みは Introducing dav1d、the road to the first release、First release、dav1d 1.2、1.5 “Sonic” にまとめられている
- AV2 では、同じ役割をさらに早い段階から準備している
現在の実装状況
- 現在の dav2d ツリーでは AVM v15 デコーダを機能的に完成させており、8 ビットと 10 ビットの両方のデコードをサポートしている
- コーデックの主要コンポーネントの大半は実装済みで、最適化段階に入っている
- ビットストリーム解析
- フレームおよびシーケンスヘッダ
- エントロピーデコードと CDF 処理
- イントラ予測
- インター予測と参照モーションベクトル
- 変換
- CCTX と CfL
- デブロッキング
- CDEF
- Wiener フィルタリング
- フィルムグレイン合成
- AV2 エコシステムはまだ初期段階だが、dav2d はすでに動作するデコーダであり、空の発表用リポジトリの域を超えている
- 現在の作業のかなりの部分は、正確性、適合性、最適化、プラットフォーム対応に集中している
- dav2d が急速に進展した背景には、dav1d で蓄積されたスレッディング、SIMD 構成、テスト、移植性、API 設計の経験がある
- AV2 には相当量の新規デコーダコードが必要だが、dav1d 開発過程で得られた経験の多くは dav2d に直接適用されている
性能最適化と検証
- x86 では、複数の逆変換サイズに対する AVX2 コードが投入されており、CCTX、deblock、intra prediction、CfL 関連パスの作業も進行中である
- ARM では、AArch64 NEON の作業がエントロピーデコード、SAD、イントラ予測、パレット予測、DC 予測器、smooth 予測器、モーション関連関数に適用されている
- arm32 向けの作業も一部始まっている
- RISC-V 向け作業は初期段階で、既存のイントラ予測およびモーション補償アセンブリを再有効化して調整する方向で進んでいる
- 最適化の流れは dav1d と似ている
- まずクリーンな C 実装を作る
- 検証インフラを構築する
- 重要なホットパスにアーキテクチャ別の最適化コードを追加する
- dav1d 開発中に作られた checkasm は、最適化実装を C 実装と比較して検証し、ベンチマークするためのフレームワークである
- dav2d はこのインフラを初日から活用しており、dav1d の同様の段階よりも速く進展している
- 現在のツリーには、逆変換、モーション補償、フィルムグレイン、CfL、参照モーションベクトルコードに対する checkasm カバレッジが含まれている
オープンソース開発方式と次の段階
- dav2d は dav1d と同様に オープンソースプロジェクトとして開発されている
- デコーダは dav1d と同じ BSD スタイルライセンスで配布されており、オープンソースアプリケーションにも独自アプリケーションにも統合しやすい
- VideoLAN プロジェクトの多くと同様に、開発は初日から公開で進められている
- Repository: https://code.videolan.org/videolan/dav2d
- Issues: https://code.videolan.org/videolan/dav2d/-/issues
- Merge Requests: https://code.videolan.org/videolan/dav2d/-/merge_requests
- 公開実装は、相互運用性、仕様の独立した検証、より容易な実験、そしてエコシステム向けの共通基盤を提供する
- 今後も AV2 仕様への追従、適合性改善、テストカバレッジ拡張、x86 と ARM の追加最適化、RISC-V 向け作業が必要になる
- 高ビット深度での性能改善、スレッディング改善、メモリ使用量削減、今後のリリース準備も残されている
- dav1d がハードウェア対応の一般化前に AV1 を実用的なものにしたように、dav2d も AV2 で同じ役割を目指している
1件のコメント
Hacker Newsの意見
Too Many Requests
アーカイブ版はこちらで見られる:
https://web.archive.org/web/20260531130034/https://jbkempf.com/blog/2026/dav2d/
https://archive.md/ln5UE
Too Many Requestsが表示され、ファイル所有者が短期帯域幅制限を超過し、1日あたり 160000回のアクション制限 を超えるというメッセージが出るAV1ソフトウェアデコード もすでにかなり重いのに、AV2デコードのベンチマークは次に本当に興味深い、あるいは恐ろしい見ものになりそうだ
OBS録画やエンコード作業用PCに補助カードとして挿して使うこともできた
AV2をサポートする次世代製品群でも同じような選択肢が出てくるといいし、最近は映像制作やストリーミングがとても一般的なので、なおさら必要に思える
コーデック仕様は、実地で開発されたデコーダが少なくとも1つ存在して初めて完成したと見なせる。つまり 参照実装 + 1実装 が必要で、実地実装が事実上の仕様になることも多い
90年代に子どもだった頃、MPEG1仕様を読んで複雑なシステムを定義する方法に目を開かされた
メディア符号化標準では、ほとんどの時間がエンコード済みバイト列をどう解釈するかに費やされていて、それが天才的だと感じた
デコードは記述的に定義すればよく、エンコードは規範的に縛る必要がない
創造性はエンコード側で発揮できるが、エンコードされたバイト列を共通に理解する方法は必ず提供しなければならない
HNハグ・オブ・デス が起きたようだ
サイズを 25%削減すること が、AV1ハードウェアデコーダを持つすべての機器を事実上時代遅れにするほどの価値があるのかはよく分からない。AV2デコードはそれらの機器には重すぎるだろうし
YouTubeには数百種類の形式バリエーションがある:
https://gist.github.com/MartinEesmaa/2f4b261cb90a47e9c41ba115a011a4aa
AV1ハードウェアデコード対応機器は少ないとはいえ、すぐに時代遅れにはならないだろう
https://www.youtube.com/watch?v=XqZsoesa55w
その追加の25%には価値が出てくる
何かが時代遅れになるわけではない。AV1は長く残るだろうし、YouTubeはいまでも古い機器をサポートするためにH.264エンコードを提供している
また HNハグ・オブ・デス が来たようで、429エラーが出る
Dave2Dの話かと思った
ブログがHNハグ・オブ・デスを受けたようだ
Actioning this file would cause "jbkempf.com//blog/2026/dav2d/" to exceed the per-day file actions limit of 160000 actions, try again laterと表示されるが、どこかにミラーはないだろうか?https://web.archive.org/web/20260531115337/https://jbkempf.com/blog/2026/dav2d/
AV1比で約 25%改善 という話と、AV2デコードがAV1よりおよそ 5倍複雑 という話が、それぞれ何を意味しているのか、また相互に比較可能なのかがよく分からない
AV1で10Mbps必要な画質を、AV2では8Mbpsで得られるという意味だ
ただし、その25%の利得のために計算能力が5倍必要になる
関連記事: The AV2 Video Standard Has Released (Final v1.0 Specification)
https://news.ycombinator.com/item?id=48340910