2026-08-16

週次オープンソース:OxideAV の週、MPEG-2 のレート制御から H.266 の正誤表まで

約 520 コミットで、そのほぼすべてが一か所に入った。OxideAV メディアフレームワークが約 475 を占め、50 を超えるクレートに 分散していた。テーマはコーデックをまたいで共通していた。 エンコーダは規格自身のバッファモデルと適合性ストリームで測られ、 デコーダは公式スイートと一致するまで、あるいは仕様のほうが 間違っていると分かるまで照合された。

oxideav-mpeg12video:規格どおりのレート制御

oxideav-mpeg12video (24 コミット、今週最多のリポジトリ)は、MPEG-1/MPEG-2 エンコーダを 「正しいストリームを出す」段階から、規格のデコーダバッファモデルに 照らして検証されたストリームを出す段階へ進めた:

  • 厳密な Annex C の VBV モデルと、ストリーム全体の CBR 検証器。 そのうえで MPEG-2 の GOP、MPEG-1 のシーケンス、フィールド符号化 シーケンスそれぞれの CBR レート制御;
  • MPEG-2 のフィールドピクチャ:表示順のフィールド組み立て器 付きの I/P/B フィールド符号化。続いて、マクロブロックごとの フレーム/フィールド予測、フィールド DCT、デュアルプライムを持つ フレームピクチャと、適応的な 16×8 動き補償;
  • MPEG-1 の D ピクチャ、DC 成分だけのピクチャタイプ;
  • 実行時のエンコーダ登録と、DCT/IDCT 向けのプラットフォーム 決定的なコサインテーブル。

自前で符号化したコーパスは 17 ストリームに増え、追加された CBR と フィールド符号化のストリームは外部デコーダでブラックボックス検証 された。

oxideav-av1 と oxideav-avif:一つのデコーダ、二つの形式

oxideav-av1 (19 コミット)は、エンコーダの「election」を足し続けた。 ツールを使う価値があるかをストリームごとに判断する仕組みだ。 今週は三つ:量子化行列(セグメントごとのレベルを含む)。 superres(縮小幅のキーフレームから始め、セグメント化・ ピラミッド・テンポラルラダー・空間 SVC の各ドライバへ広げ、拡大後の サイズでのループリストレーションとも組み合わせた)。そして クロマ点と AR タップのフィッティングを含むフィルムグレインの パラメータ推定。ラウンドごとに新しいストリームを適合性コーパスに 固定し、122 から 133 になった。

oxideav-avif (18 コミット)はその真上に乗っている。今週最初のコミットで、 oxideav-av1 のレジストリデコーダを通した本物のピクセルデコードが 戻った。続いて 10/12 ビットの経路をエンドツーエンドで通した: 色域(primaries)、グリッド、アルファ、AVIS の画像シーケンス、 ゲインマップの適用、そして深度とフォーマットの全組み合わせでの ピクセルから AVIF へのエンコーダ。外部エンコーダのファイルも、 その深度のまま厳密にデコードできる。

oxideav-h266:適合性、そして仕様の正誤二つ

oxideav-h266 (19 コミット)は、自前のストリームの符号化から JVET 適合性スイート のデコードへ移り、トリアージのスコアカードがその変化を追っている。 ラウンド 440 では 0 合格/8 不一致/26 デコード不能/22 エラー。 ラウンド 443 では 1/14/33/8 になった:デシンク系の失敗が 消え、CodingToolsSets_A_2 が初めて完全にバイト一致でデコード できるストリームになった。その過程の修正は、ISP とデュアルツリー CTB-128 の変換ユニット、CCLM の近傍範囲、クロマのデブロッキング QP、複数 TB への分割、ローカルデュアルツリー(SCIPU)、DMVR の サブブロックサイズに及んだ。

コミットのうち二つは、公開された V4 仕様に対する正誤だ。 §8.7.4.3 の LFNST 行列は転置して印刷されており、§8.7.4.5 の 32 点 DST-VII/DCT-VIII のサブテーブルは 16..31 行ではなくカーネルの右上 ブロックだった。どちらも適合性トリアージの中で見つかった。

oxideav-fbx:ブレンドシェイプとコンストレイント

oxideav-fbx (16 コミット)はシーンの意味論に深く入った。完全なブレンド シェイプ(静的な DeformPercent、複数ターゲットのモーフ アニメーション、ジオメトリごとに一つのデフォーマ)、Constraint 文法の完全な往復、InheritType によるワールド変換の積、そして デコード時に強制する型付きの軸規約が入った。デコード先の共有 3D モデルである oxideav-mesh3d 0.0.5 の、新しいテクスチャ参照と ノードウェイトの面も取り込んだ。

オーディオ:公式スイートと古い形式

オーディオのクレートは主に適合性の作業だった:

  • oxideav-aac には ISO/IEC 14496-26 の適合性ハーネス(ER-LD、CCE、SBR-CRC)と、 BSAC デコーダ(算術デコーダ、レイヤ構造、ブロック全体の デコード)が入った。
  • oxideav-wma は、 ベンダのビットストリームのデコード経路をエンドツーエンドで 作った。スーパーフレームのヘッダから VLC テーブル、帯域分割、 mid/side の逆変換を経て PCM まで。ブラックボックスの SNR フィットで検証している。
  • oxideav-mp2 は ISO/IEC 13818-3 のマルチチャンネル拡張を追加し、公式の 13818-4 適合性ストリームを一通り検証する。
  • トラッカー形式では、oxideav-s3m が自前の 2 オペレータ OPL2 FM 合成で AdLib の楽器を鳴らす ようになり、oxideav-mod は SoundTracker 2.6/IceTracker のモジュールを読めるように なった。

今週その他

  • oxideav-h264: PAFF/MBAFF の co-located 導出が完成し、手元の JVT 適合性 ストリーム四本すべてがバイト一致でデコードできる。エンコーダには B フレームのレート制御が入った。
  • oxideav-vp9: フォーマットの全組み合わせ(4:4:4、4:2:2、10/12 ビット)での 非可逆エンコード、既定の GOP 経路としての連鎖 P フレーム、 レジストリ統合。oxideav-openexr は PIZ と DWAA/DWAB をデコード・エンコードの両方で追加した。 oxideav-svq は SVQ3 の I フレームを 299/300 ピクセル一致でデコードする。
  • oxideav-embroidery は 0.0.2 をリリース。Husqvarna HUS/VIP を ArchiveLib GL ビットストリーム上で完全にデコード・エンコードするようになり、 oxideav-core にデマルチプレクサとベクタデコーダとして組み込まれる。
  • purecrypto v0.7.0 は、ツールキットの多くをアロケータなしで使えるように した:ML-DSA と SLH-DSA の鍵生成・署名・検証、XMSS/XMSS^MT の 検証、単一木の LMS、RSA(PKCS#1 v1.5、PSS、OAEP)、固定曲線の EC プリミティブ、AEZ。秘密に依存する経路の定数時間の穴も塞いだ。
  • catcard には、 コンパイル時にコインを選べるチェーンレジストリと、割り当てられた USB ID(0x39F2:0x0401)が入った。その隣で coldcard-firmware-archive が新しく始まった:公式に署名された Coldcard の .dfu イメージ 124 個(Mk3/4/5 と Q1)を、Coinkite が公開する SHA-256 マニフェストで検証して収めたもので、研究と再現性のための ミラーだ。

来週

OxideAV の適合性作業は、スコアカードが指す方向へ続く:H.266 は JVET スイートのさらに多くを、オーディオコーデックはさらに多くの 公式ストリームを。catcard には USB ID ができたので、次はそれに 見合うトランスポートだ。