メインコンテンツまでスキップ

3.1.2. Skippable Frames (スキップ可能フレーム)

+==============+============+===========+
|| Magic_Number | Frame_Size | User_Data |
+==============+============+===========+
|| 4 bytes | 4 bytes | n bytes |
+--------------+------------+-----------+

表 19: スキップ可能フレーム

スキップ可能フレームを使用すると、ユーザー定義のメタデータを連結されたフレームのストリームに挿入できます。

この仕様で定義されているスキップ可能フレームは、[LZ4] のスキップ可能フレームと互換性があります。

互換性のあるデコーダーの観点から、スキップ可能フレームは単にスキップされ、その内容は無視され、スキップ可能フレームの後でデコードが再開されます。

スキップ可能フレームは、連結されたフレームストリームに透かしを追加したり、あらゆる種類のトラッキング情報 (単なる汎用一意識別子 (UUID) であっても) を埋め込むために使用できることに注意する必要があります。このような可能性に警戒しているユーザーは、連結されたフレームストリームをスキャンして、分析または削除のためにそのようなフレームを検出しようとする必要があります。

フィールドの説明

Magic_Number (マジックナンバー)

サイズ: 4 バイト、リトルエンディアン形式
: 0x184D2A5?、つまり 0x184D2A50 から 0x184D2A5F までのいずれかの値

16 個の値すべてが有効にスキップ可能フレームを識別します。この仕様は、スキップ可能フレームの特定のマーキング方法を詳述していません。

マジックナンバー範囲:

  • 最小値: 0x184D2A50
  • 最大値: 0x184D2A5F
  • 合計: 16 個の有効なマジックナンバー

Frame_Size (フレームサイズ)

サイズ: 4 バイト、リトルエンディアン形式、符号なし 32 ビット
意味: 後続の User_Data のサイズ (バイト単位) (マジックナンバーとサイズフィールド自体を含まない)

これは、User_Data が (2^32 - 1) バイトより大きくできないことを意味します。

最大 User_Data サイズ: 4,294,967,295 バイト (約 4 GB)

User_Data (ユーザーデータ)

サイズ: 可変 (Frame_Size によって指定)
コンテンツ: 任意のデータ

このフィールドは何でもかまいません。データはデコーダーによってスキップされます。

使用シナリオ

1. メタデータの埋め込み

  • バージョン情報
  • 作成タイムスタンプ
  • 作成者情報
  • ライセンスデータ

2. 透かしとトラッキング

  • UUID 埋め込み
  • ソーストラッキング
  • 配布チャネル識別

3. アプリケーション固有データ

  • カスタムヘッダー
  • アプリケーション構成
  • 拡張情報

互換性に関する注意

デコーダーの動作

仕様に準拠したデコーダーは次のことを行う必要があります:

  1. マジックナンバーを認識: 0x184D2A5? 範囲内のマジックナンバーを検出
  2. サイズを読み取る: Frame_Size フィールドを解析
  3. データをスキップ: Frame_Size バイトの User_Data をスキップ
  4. デコードを続行: スキップ可能フレームの後で処理を続行

エンコーダーの推奨事項

エンコーダーは次のことができます:

  1. 任意の配置: フレームストリーム内の任意の位置にスキップ可能フレームを挿入
  2. 複数のフレーム: 複数のスキップ可能フレームを挿入
  3. カスタムマーキング: 内部マーキングに 16 個のマジックナンバーのいずれかを使用

セキュリティに関する考慮事項

プライバシーの問題

スキップ可能フレームは次のために使用される可能性があります:

  • データフローのトラッキング
  • 隠し情報の埋め込み
  • データソースの識別

推奨措置

プライバシーを懸念するユーザー向け:

  1. スキャン検出: 入力ストリームをスキャンしてスキップ可能フレームを検出
  2. コンテンツ分析: User_Data のコンテンツを調査
  3. 選択的削除: 必要に応じてスキップ可能フレームを削除
  4. ログ記録: 監査のために検出されたスキップ可能フレームを記録

UUID の埋め込み

Magic_Number: 0x184D2A50
Frame_Size: 16 (0x10000000, リトルエンディアン)
User_Data: [16 バイト UUID]

タイムスタンプの埋め込み

Magic_Number: 0x184D2A51
Frame_Size: 8
User_Data: [8 バイト Unix タイムスタンプ]

LZ4 との互換性

スキップ可能フレーム形式は LZ4 と互換性があり、次のことが可能です:

  • フォーマット間のツール相互運用性
  • 統一されたメタデータ処理
  • 簡素化されたデコーダー実装

注意: スキップ可能フレームは解凍データのコンテンツに影響せず、ストリームのメタデータにのみ影響します。