🤖

Apple HEVC Stereo Video Profileの解釈

2024/08/25に公開

1. 目的

Apple HEVC Stereo Video Profile文書(https://developer.apple.com/av-foundation/HEVC-Stereo-Video-Profile.pdf) は、Apple HEVC Stereo Video Profileに関する詳細な内容のみを記述しているため、周辺知識がない場合は理解が難しいです。
したがって、Apple HEVC Stereo Video Profile文書を理解するためのさまざまな背景知識を説明し、それに基づいてApple HEVC Stereo Video Profile文書の内容を要約して説明します。

2. 背景知識

この部分では、Apple HEVC Stereo Video Profileの概要を理解するために必要な前提知識を説明します。

2.1. Profileとは何ですか?なぜ必要なのでしょうか?

Profileとは、特定のビデオコーディング技術や形式の機能と制約を定義するセットを指します。
Video Profileは、ビデオコンテンツをエンコードおよびデコードするために必要な要件と規則を明確にし、さまざまなデバイスとプラットフォーム間の互換性を保証するために定義されています。

  • 互換性保証: さまざまなデバイスとプラットフォーム間のビデオ再生の互換性を保証します。特定のプロファイルに従ってエンコードされたビデオは、そのプロファイルをサポートするデバイスで再生可能です。
  • 最適化: 特定の用途(例: ストリーミング、放送、保存など)に応じて、ビデオ品質、圧縮効率、および帯域幅要件を最適化します。
  • 機能定義: ビデオコーデックの機能(例: 解像度、フレームレート、色深度など)を定義し、制作者と開発者がどの機能を使用できるかを明確にします。
  • 標準化: 業界標準を設定し、さまざまなメーカーと開発者が同じ基準に従うようにします。
    専門家および消費者ワークフロー: 特定のプロファイルは、専門的な作業フローや消費者向けアプリケーションに合わせて設計され、必要な機能と性能を提供します。

これらの目的により、ビデオプロファイルはビデオコンテンツの品質と効率を向上させる重要な役割を果たします。

これに基づくと、Apple HEVC Stereo Video Profileは、Appleの Stereo Videoを制作または再生するための最適化されたビデオ処理方法を提供するために定義されています。

2.2. HEVCとMV-HEVCとは何ですか?

Apple HEVC Stereo Video Profile文書を確認する際、HEVCとMultiView HEVC(MV-HEVC)という用語が出てきます。
HEVC(High Efficiency Video Coding)は、H264コーデックが登場した後、圧縮効率をさらに高める目的で新たに開発された次世代コーデックです。H265とも呼ばれます。

MV-HEVC(Multiview High Efficiency Video Coding)は、複数の視点のビデオを効率的に圧縮するために開発されたビデオコーディング標準です。

以下はMV-HEVCの主な特徴です:

  • 複数の視点のサポート: 異なるカメラアングルから撮影されたビデオを同時に処理し、3Dビデオやバーチャルリアリティコンテンツに適しています。
  • 効率的な圧縮: 既存のHEVC(High Efficiency Video Coding)よりも高い圧縮効率を提供し、帯域幅を節約しながら高画質を維持します。
  • 改善された品質: 様々な視点を提供し、深みと没入感を高め、ユーザーが望む視点を選択できる柔軟性を提供します。
  • 互換性: 既存のビデオコーディング技術との互換性が高く、さまざまなデバイスやプラットフォームで簡単に統合できます。
  • リアルタイム処理: リアルタイム放送やストリーミングに最適化されており、遅延なく高品質のビデオを提供できます。

3. Apple HEVC Stereo Video Profileの紹介

左目と右目に立体ビデオビューを提供する機能は、より豊かなユーザー体験を提供します。
Stereoビデオ(「3Dビデオ」とも呼ばれます)は、ユーザーの左目に1つの画像を提供し、ユーザーの右目に別の画像(一般的に左目に提供される画像に関連する)を提供することで、次のように定義された立体視効果を生成します。

両目の視覚的刺激を組み合わせて脳で受け入れることにより、深さを感じることができる認識; 両眼視。

この文書では、HEVC仕様や用語を使用してStereoビューを持つビデオに関する高度に集中したプロファイルを説明します。
このプロファイルは、ファイルの作成者とファイルの読み取り側の相互運用性を最大化する明確な目標を提供することに焦点を当てています。
このようにエンコードされた立体ビューが含まれるビデオトラックは、QuickTime Movie(mov)ファイルおよびMPEG-4(mp4)ファイルの形式で保存できます。

参考文献:
[QTFF] QuickTime File Format Specification (QTFF), 2016
[HEVC] ISO/IEC 23008-2:2020 “High efficiency video coding” or ITU-R H.265:2021 “High efficiency video coding”
[ISOBMFF] ISO/IEC 14496-12:2020(E) ISO Base Media File Format
[ISONALU] ISO/IEC 14496-15:2019(E) “Carriage of network abstraction layer (NAL) unit structured video in the ISO base media file format”

4. Apple HEVC Stereo Video Profileの詳細

4.1. ビデオとトラックに関する制約

ビデオトラックには、基本(または主)目のビュー層と補助目のビュー層が両方含まれている必要があります。
基本目用レイヤーは左目または右目用ビューのいずれかです。
補助目用レイヤーは反対側の目のビューです。
つまり、基本目が左目であれば補助目は右目であり、基本目が右目であれば補助目は左目になります。

HEVCをサポートしているがMV-HEVCをサポートしていない動画プレーヤーでは、ビデオトラックを基本レイヤーに該当する単一ビューとしてデコードできる必要があります。
言い換えれば、Apple HEVC Stereo Video Profileに従って制作された動画をMV-HEVCコーデックはサポートせず、HEVCコーデックのみをサポートするプレーヤーで再生すると、基本レイヤー(例えば左目用レイヤー)の動画として再生される必要があります。

4.2. Sample Description / Sample Entryの制約

  • コーデックタイプは'hvc1'である必要があります。
  • トラックの各ビデオサンプルには左目と右目のビューが両方含まれている必要があります。
  • 基本目は左目または右目のいずれかになり、補助目はその反対側の目になります。
  • HEVCデコーダ構成レコード('hvcC')とL-HEVC De-Recordの両方が存在する必要があります。
    • HEVCデコーダ構成レコード('hvcC')は基本Stereoビュー層の構成を伝えます。
    • L-HEVCデコーダ構成レコード('lhvC')は補助Stereoビュー層の構成を伝えます。
  • 基本および補助Stereoレイヤーの構成は、左Stereo目と右Stereo目に対する割り当てを除き、すべての特性で同一でなければなりません。ここではこれを「同質性」と呼びます。
  • MV-HEVCをサポートしないプレーヤーは基本レイヤーをデコードできる必要があります。
  • 高ダイナミックレンジ信号(HDR信号またはHDRメタデータとも呼ばれる)は、左目ビューと右目ビューの両方で同一でなければなりません。
  • レイヤープロファイル
    • 基本レイヤーはMainまたはMain10プロファイルである必要があります。
    • 補助レイヤーは基本レイヤーと同じプロファイルである必要があります。つまり、両レイヤーはMainまたはMain10でなければなりません。
  • 左右のStereo目ビューをサポートするために、Stereo目の割り当てとnuh_layer_id値に関するバインディングのみが異なり、残りは同一のSPS(Sequence Parameter Set)ペアとPPS(Picture Parameter Set)ペアを持っています。(変数の詳細については説明を省略)
  • 全体のシーケンスのビデオパラメータセット(VPS)は、このシーケンスでnuh_layer_id値を識別します。
  • HEVCデコーダ構成レコード('hvcC')は基本Stereo目に該当する次のパラメータセットを含む必要があります。(変数の詳細については説明を省略)
  • L-HEVCデコーダ構成レコード('lhvC')は補助Stereo目に該当する次のパラメータセットを含む必要があります。(変数の詳細については説明を省略)

4.3. ビデオフレームサンプルに関する制約

  • ビデオトラックのすべてのビデオフレームはHEVC互換の基本レイヤーNALユニットシーケンスと補助Stereo目レイヤーNALユニットシーケンスを含む必要があります。
    フレームタイプと参照体系は基本レイヤーと補助レイヤー間で異なりますが、依存情報は同じに保たれます。
  • すべてのビデオフレームの2つのレイヤーは、すべて同じフレームタイプと依存構造を持つ必要があります。
    これはトラックに対するサンプルテーブルが1つしかなく、読者がその単一のサンプルテーブルの依存情報セットを使用してランダムアクセスやあらゆる種類のtrick再生(数倍速の早い再生)中にデコードすべきフレームを決定する必要があるためです。
  • すべての基本レイヤーNALユニットはnuh_layer_id 0を持つ必要があります。
  • すべての2次StereoレイヤーNALユニットはVPSおよびvps_extensionに指定された2次目nuh_layer_idと同じnuh_layer_idを持つ必要があります。
  • 基本レイヤーNALユニットのすべてのビデオスライスは基本レイヤーPPS ID(0)で設定されたslice_pic_parameter_set_idを持つ必要があります。
  • 2次Stereoビュー層NALユニットのすべてのビデオスライスは2次目レイヤーPPS IDで設定されたslice_pic_parameter_set_idを持つ必要があります。

4.4. デコーダ構成およびサンプルダイアグラム

MovieファイルのAtomに関する解釈例ダイアグラムを示しています。
ダイアグラムに含まれる詳細な変数名についての説明は省略します。

4.5ファイル形式ブランド

このプロファイルを遵守するトラックが含まれたmovファイル及びmp4ファイルは、ファイルタイプブランドatomに特定の補助ブランドを含めてこれを表示する必要はありませんが、そうするのに制限はありません。

4.6.付録A ‑ 左及び右表示ID設定

Stereo左目およびStereo右目に該当する二つのイメージは、left_view_id[0]およびright_view_id[0]構文要素を使用してthree_dimensional_reference_displays_info SEIで保管されます。
HEVC仕様は、ビデオパラメータセット(VPS)拡張の関連要素を指定するのに十分な詳細を提供しますが、明確でない場合があります。
この付録では、左目および右目の階層のnuh_layer_id値からleft_view_id[0]およびright_view_id[0]の関連値へのマッピングを説明します。
設定方法に利用される変数の詳細を省略します。

VideogLabo

Discussion