dav2dの紹介:AV2ビデオコーデックへの道を切り拓く
dav2dの紹介:AV2ビデオコーデックへの道を切り拓く
ビデオエンジニアリングの世界におけるモットーはシンプルです。誰もがデコードできるようになるまで、コーデックは真に存在しているとは言えません。仕様書が設計図を提供しますが、新しい標準の実際の有用性は、ユーザーが実際にコンテンツを視聴できるようにするための、利用可能な高性能な実装に依存します。
AV2仕様の公式リリースに伴い、VideoLANは、次世代のロイヤリティフリービデオを大衆に届けるために設計された、高速でポータブル、かつオープンソースのデコーダーであるdav2dを発表しました。開発を早期に開始することで、VideoLANはAV1の初期段階で発生したボトルネックを回避し、専用のハードウェアアクセラレーションが普及するずっと前に、AV2を実用的なものにすることを目指しています。
The Challenge of AV2
AV2の課題
AV2は、Alliance for Open Media (AOM) によるロイヤリティフリーコーデックであるAV1の後継です。AV1の成功に基づき、AV2は圧縮効率の限界をさらに押し広げるため、予測、変換、エントロピー符号化、フィルタリング、およびクロマ処理にわたる一連の新しいコーディングツールを導入しています。
初期の評価では、AV2はAV1と比較して圧縮効率が約25%向上しており、ケースによってはさらに大きな利得が見られることもあります。しかし、この効率性は、大幅な計算コストを伴います。Jean-Baptiste Kempf氏によると、AV2のデコードはAV1のデコードよりも約5倍複雑です。
今日のハードウェアでは、この複雑さにより、集中的かつアーキテクチャ固有の最適化なしには、リアルタイムのソフトウェアデコードはほぼ不可能です。これこそが、仕様が完全に安定するずっと前にdav2dの開発が始まった理由です。コーデックが展開される瞬間に、ソフトウェアエコシステムが準備できていることを確実にするためです。
Lessons from dav1d
dav1dからの教訓
dav2dの戦略は、最も広く展開されているAV1ソフトウェアデコーダーであるdav1dから得られた経験を直接反映しています。AV1が最初に策定されていた際、AOMコミュニティ内では議論がありました。一部のメンバーは、リファレンスデコーダーと最終的なハードウェア実装があれば十分だと考えていました。VideoLANはそれに反対し、ハードウェアサポートが一般的になるずっと前に、ブラウザ、オペレーティングシステム、およびメディアプレーヤーがプロダクション品質のソフトウェアデコーダーを必要とすると主張しました。
歴史はVideoLANが正しかったことを証明しました。dav1dは多くの開発者にとってのリファレンス実装となり、現在はVLC, FFmpeg, Chrome, Firefox, Safari, and Androidに統合されています。
AV2に同じ哲学を適用することで、VideoLANは、コミュニティに対して、すぐに構築、ベンチマーク、および統合できるツールを提供しています。Hacker Newsのディスカッションで一人のコミュニティメンバーが指摘したように、フィールド実装は、エンコードされたバイトを解釈するための具体的な方法を提供するため、事実上の仕様(de facto specification)となることがよくあります。
Technical Architecture and Performance
技術的アーキテクチャとパフォーマンス
AV2はAV1と多くの概念を共有しているため、dav2dはゼロから構築されるわけではありません。スレッドリング、SIMD構成、ポータビリティ、およびAPI設計へのアプローチを含め、dav1dのアーキテクチャ基盤を継承しています。
Current Implementation Status
現在の実装状況
dav2dのツリーは、すでにAVM v15に対して機能が完備されており、8ビットおよび10ビットのデコードを両立してサポートしています。実装済みの主要なコンポーネントは以下の通りです:
- Bitstream parsing and header handling
- エントロピーデコーディングとCDF handling
- Intra and inter prediction
- Transforms and Wiener filtering
- Deblocking and CDEF
- Film grain synthesis
Optimization Strategy
最適化戦略
5xの複雑さの増加に対抗するため、VideoLANは階層的な最適化戦略を採用しています。検証用のクリーンなC実装から始まり、最も重要な「hot paths」に対してアーキテクチャ固有のアセンブリ言語による最適化を行います。
- x86: 逆変換サイズ、CCTX、およびdeblock pathsのためのAVX2コードの実装。
- ARM: エントロピーデコーディング、SAD、およびモーション関連機能のためのAArch64 NEON最適化、およびarm32への初期段階の作業。
- RISC-V: 既存のintra predictionおよびmotion compensationアセンブリの適応。
The Role of checkasm
checkasmの役割
dav2dにおけるdav1dの初期段階と比較して最も大きな利点の一つは、checkasmです。このフレームワークを使用すると、開発者は最適化されたアセンブリ実装を、そのC言語の等価物と比較してリアルタイムで検証およびベンチマークすることができます。このインフラストラクチャにより、最適化プロセスがより迅速かつ安全になり、パフォーマンスの向上を性能の正確さ(correctness)正確さ(correctness)を犠牲にすることはないようになります。
The Open Source Mandate
オープンソースの責務
BSD-style licenseの下で開発されているdav2dは、初日からオープンソースです。このアプローチは、メディア技術の健全な展開に不可欠であると考えられており、仕様の独立した検証およびエコシステム全体のための共通の基盤を提供します。
SisvelやDolbyとの間でAV1が直面した課題を引用し、特許プールに関する潜在的な問題について懸念を表明する観察者もいますが、dav2dの焦点はコーデックの技術的な実現可能性にあります。高性能でオープンな実装を提供することで、VideoLANは、法的な状況に関わらず、業界が独占的な標準に対する実行可能な代替案を持つことを確実にします。
Looking Ahead
今後の展望
プロダクション品質のdav2dの開発ロードマップは長いものです。今後の作業には、進化し続けるAV2仕様の追跡、高ビット深度のパフォーマンス向上、メモリ使用量の削減、およびスレッドリングモデルの精査が必要となります。 However, with the dav1d eraのツールと経験がすでに手元にあるため、dav2dは、最初のAV2対応チップが市場に登場するずっと前に、dav2dはAV2をグローバルな視聴者に向けて実用的なものにするために位置づけられています。
Sources
- HNDav2d