【文献】
Dzung Hoang,"Unified scaling with adaptive offset for reference frame compression with IBDI",[online],Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,2011年 1月21日,Document: JCTVC-D035_r2, [平成26年12月2日検索], インターネット,URL,http://phenix.int-evry.fr/jct/doc_end_user/documents/4_Daegu/wg11/JCTVC-D035-v3.zip
【文献】
大久保榮監修,「インプレス標準教科書シリーズ 改訂三版H.264/AVC教科書」,日本,株式会社インプレスR&D,2009年 1月 1日,第1版,第169〜180頁,ISBN:978-4-8443-2664-9
【文献】
内藤整(外2名),「超高精細映像メディアの配信技術に関わる最新動向」,映像情報メディア学会技術報告,日本,(社)映像情報メディア学会,2007年12月13日,Vol.31, No.63,第89〜94頁,ISSN:1342-6893
(58)【調査した分野】(Int.Cl.,DB名)
前記ビデオデータを前記第2のビット深度から前記第1のビット深度へ減少させることが、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行することを含む、請求項1に記載の方法。
前記ビデオデータが復号ピクチャを備え、前記ビデオデータを記憶することが、前記復号ピクチャを復号ピクチャバッファに記憶することを含む、請求項1に記載の方法。
前記第1のビット深度で前記ビデオデータを受信することと、内部ビット深度増加(IBDI)プロセス中に、前記ビデオデータをコーディングするより前に前記第1のビット深度を前記第2のビット深度まで増加させることとをさらに備える、請求項1に記載の方法。
前記指示をコーディングすることが、前記指示を含んでいる前記ファイルフォーマットを復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを含む、請求項8に記載の方法。
前記指示をコーディングすることが、前記指示を含んでいる前記記述子を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを含む、請求項8に記載の方法。
前記指示をコーディングすることが、前記指示を含んでいるメディアプレゼンテーション記述(MPD)を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを含む、請求項8に記載の方法。
ディスプレイデバイスの構成に基づいて、出力ビット深度が前記第1のビット深度を含むのか前記第2のビット深度を含むのかを決定することをさらに備える、請求項1に記載の方法。
前記ビデオデータを前記第2のビット深度から前記第1のビット深度へ減少させるために、前記1つまたは複数のプロセッサが、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行するように構成された、請求項16に記載の装置。
前記ビデオデータが復号ピクチャを含み、前記ビデオデータを記憶するために、前記1つまたは複数のプロセッサが、前記復号ピクチャを復号ピクチャバッファに記憶するように構成された、請求項16に記載の装置。
前記1つまたは複数のプロセッサが、前記第1のビット深度で前記ビデオデータを受信することと、内部ビット深度増加(IBDI)プロセス中に、前記ビデオデータをコーディングするより前に前記第1のビット深度を前記第2のビット深度まで増加させることとを行うように構成された、請求項16に記載の装置。
前記指示をコーディングするために、前記1つまたは複数のプロセッサが、前記指示を含んでいる前記ファイルフォーマットを復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを行うように構成された、請求項23に記載の装置。
前記指示をコーディングするために、前記1つまたは複数のプロセッサが、前記指示を含んでいる前記記述子を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを行うように構成された、請求項23に記載の装置。
前記指示をコーディングするために、前記1つまたは複数のプロセッサが、前記指示を含んでいるメディアプレゼンテーション記述(MPD)を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを行うように構成された、請求項23に記載の装置。
前記1つまたは複数のプロセッサは、ディスプレイデバイスの構成に基づいて、出力ビット深度が前記第1のビット深度を含むのか前記第2のビット深度を含むのかを決定するようにさらに構成された、請求項16に記載の装置。
前記ビデオデータを前記第2のビット深度から前記第1のビット深度へ減少させるための手段が、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行するための手段を含む、請求項31に記載の装置。
前記ビデオデータを前記第2のビット深度から前記第1のビット深度へ減少させるために、前記命令が、前記1つまたは複数のプロセッサに、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行させる、請求項35に記載のコンピュータ可読記憶媒体。
実行されたとき、前記1つまたは複数のプロセッサに、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかの指示をコーディングさせる命令をさらに備える、請求項35に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0013】
概して、本開示の技法は、ビデオコーディングに関する。たとえば、ビデオコーダは、内部計算における丸め誤差を低減するために、内部ビット深度増加(IBDI)動作を使用して、コーディングされているサンプルのビット深度を増加させ得る。本開示の技法は、概して、IBDIを使用するときのメモリ利用を管理すること、ならびに出力ビット深度を決定することに関する。すなわち、たとえば、本開示の技法は、いくつかの例では、ビデオデータが参照ビデオデータとして使用されない場合、ビデオデータを復号ピクチャバッファに記憶するより前に、ビデオデータをより高いビット深度からより低いビット深度に丸めることを含む。別の例では、本開示の技法は、増加したビット深度においてビデオデータを出力すべきかどうかを決定することに関する。
【0014】
たとえば、ビット深度は、概して、ビデオデータの所与のサンプルについての情報(たとえば、ピクセルのルーマ値および/またはクロマ値)のビット数を指し得る。IBDIを実行するときには、ビデオコーダは、コーディングされているサンプルのビット深度を第1のビット数(たとえば、「M」ビット)から第2の増加したビット数(たとえば、「N」ビット)に拡張し得る。より大きいビット深度は、内部計算における丸め誤差を低減することを目的とする。たとえば、内部計算を実行するときに算術精度を高めることは、理想的な結果を達成するのを助け得る。増加したビット深度から恩恵を受け得る例示的なプロセスは、特に、動き補償、補間フィルタリング、デブロッキングフィルタリング、および重み付け予測を含み得る。
【0015】
ビデオコーダは、(たとえば、予測コーディングのための参照データとして使用するために)コーディング中に復号ビデオデータを復号ピクチャバッファに記憶し得る。ビデオコーダはまた、出力(たとえば、表示)するより前に復号ビデオデータを復号ピクチャバッファに記憶し得る。(たとえば、IBDIを使用して)増加したビット深度で内部計算を実行するときには、ビデオコーダは、増加したビット深度でビデオデータを記憶し得る。したがって、ビデオコーダは、表示のために復号ピクチャバッファからビデオデータを出力するより前に丸めを実行し得る。
【0016】
増加したビット深度でビデオデータを記憶することは、比較的大量のメモリを消費し得る。しかしながら、復号ピクチャバッファに記憶されたビデオデータ(たとえば、ビデオピクチャ)の一部は、参照データ(たとえば、参照ピクチャ)として使用されないことがある。すなわち、ビデオデータのいくつかのピクチャは、参照データとして使用されないが、それでもなお、(たとえば、表示のために)出力されるより前に復号ピクチャバッファに記憶され得る。さらに、復号ピクチャバッファに記憶されたいくつかのビデオピクチャは、コーディングプロセス中に「参照のために使用されない」としてビデオコーダによってマークされ得る。本開示では、概して、「ピクチャ」、「ビデオピクチャ」、および「参照ピクチャ」に言及するが、本開示の技法は、他のサイズ/構成のビデオデータ(たとえば、ビデオブロック、スライス、タイルなど)に適用可能であることを理解されたい。
【0017】
本開示の態様は、概して、表示のために使用されるビット深度よりも高くなり得る内部ビット深度をビデオコーダにおいて使用するときのメモリ利用を管理することに関する。たとえば、本開示の技法は、ビデオデータが参照データとして使用されるときには第1の増加したビット深度でビデオデータを記憶することと、復号ビデオピクチャが参照ピクチャとして使用されないときには減少したビット深度でビデオデータを記憶することとを含む。すなわち、本開示の技法は、概して、ビデオデータが参照ビデオデータとして使用されないときに、ビデオデータを復号ピクチャバッファに記憶するより前に、ビデオデータを増加したビット深度からより低いビット深度に丸めることに関する。たとえば、本開示の技法は、増加したビット深度をもつ復号化ビデオピクチャを、増加したビット深度に対してより低いビット深度をもつ復号化ビデオピクチャに変換することを含む。
【0018】
概して、より低いビット深度は、ビデオデータが受信された元のビット深度に等しくなり得る。しかしながら、より低いビット深度はまた、(たとえば、出力ビット深度が、増加したビット深度よりも小さい例では)ビデオデータが出力されるビット深度に等しいか、または増加したビット深度よりも低い何らかの他のビット深度に等しくなり得る。さらに、本開示の態様は、ビット深度を低下させるためにビデオデータを丸めることに関して説明するが、本開示の技法は、より一般的に、丸めによるのか、(丸めなしの)切り捨てによるのか、ビット深度を減少させる何らかの他のプロセスによるのかにかかわらず、ビデオデータのサンプルのビット深度を低減することに適用可能であることを理解されたい。
【0019】
本開示の態様はまた、増加したビット深度においてビデオデータを出力すべきなのか、減少したビット深度(たとえば、元のビット深度)においてビデオデータを出力すべきなのかを決定することに関する。いくつかの例では、そのような決定は、(たとえば、ビデオデコーダによって出力される)ビデオデータが出力されるべきビット深度に関連するシグナリングに従って行われ得る。そのようなシグナリングは、たとえば、ビデオデコーダによって復号され得る符号化ビデオデータビットストリーム中に含まれ得る。すなわち、本開示の技法は、ビデオデコーダが、たとえば、(「元の」ビット深度と呼ばれる)ビデオデータが受信されたビット深度に等しい、減少したビット深度でビデオデータを出力すべきなのか、または増加したビット深度(たとえば、IBDIビット深度)でビデオデータを出力すべきなのかをビデオデコーダにシグナリングすることを含む。別の例では、出力ビット深度は、復号ビデオビットストリームの一部としては存在しないが、ビデオデコーダからの復号ビデオデータを提示しているディスプレイの構成によってなど、ビデオデコーダの外部にあるソースから導出される。
【0020】
ビデオコーダは、いくつかの例では、出力ビット深度を決定することを対象とする、本開示のメモリ管理技法を実装し得る。ビデオコーダが元の(より低い)ビット深度においてビデオデータを出力すべきである例では、ビデオコーダは、復号ピクチャが参照ピクチャとして使用されるべきであるときにのみ、復号ピクチャが、増加した(IBDI)ビット深度において記憶され得るように、上記で説明したメモリ管理技法を実装し得る。
【0021】
本開示の態様は、ビデオデータを符号化および/または復号することに関連するメモリ要件を低減し得る。たとえば、内部コーディング演算のために、ビデオデータのビット深度を増加させるためのIBDI技法が使用されるが、ビデオデータは参照のために使用されない例では、本開示の技法は、より少数のビットのデータが記憶されることを可能にする。さらに、本技法は、メモリ帯域幅消費量を低減し得る。たとえば、複数のモジュールが、コーディング中にメモリにアクセスするためにメモリバスを共用し得る。そのような例では、本開示の技法による、より少数のビットをバッファに記憶することは、バッファとビデオコーディングデバイスとの間で転送されるデータの量を減少させ得る。
【0022】
いくつかの例では、メモリ帯域幅を低減することは、モバイル適用例において(たとえば、ビデオコーダがモバイルデバイスに組み込まれる適用例において)有用であり得る。たとえば、上述のように、メモリに対する読取りおよび書込みは、モバイル適用例では比較的限られていることがあるメモリバス帯域幅を消費し得る。その上、メモリに対する読取りおよび書込みは、(たとえば、読取りおよび書込みが、メモリバスおよびメモリに電力供給することをそれぞれ必要とすることを考慮すると)モバイルデバイスによって消費される電力量を増加させ得る。したがって、本開示の技法は、モバイルデバイス、ラップトップコンピュータ、および一定の専用電力供給を有しない他のタイプのデバイスなど、電力制限のあるデバイスにおいて展開され得る。
【0023】
図1は、ビデオコーダにおいてIBDIを使用するときのメモリ利用を管理するための、本開示で説明する技法を利用するように構成され得る、例示的なビデオ符号化および復号システム10を示すブロック図である。
図1の例に示すように、システム10は、宛先デバイス14によって復号するための符号化ビデオを生成するソースデバイス12を含む。ソースデバイス12は、符号化ビデオが必要に応じて宛先デバイス14によってアクセスされ得るように、通信チャネル16を介して符号化ビデオを宛先デバイス14に送信し得るか、あるいは符号化ビデオを記憶媒体34またはファイルサーバ36に記憶し得る。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆるスマートフォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソールなどを含む、多種多様なデバイスのいずれかを備え得る。
【0024】
多くの場合、そのようなデバイスはワイヤレス通信が可能であり得る。したがって、通信チャネル16は、符号化ビデオデータの送信に好適なワイヤレスチャネル、ワイヤードチャネル、またはワイヤレスチャネルとワイヤードチャネルとの組合せを備え得る。たとえば、通信チャネル16は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体、あるいはワイヤレス媒体とワイヤード媒体との任意の組合せを備え得る。通信チャネル16は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信チャネル16は、概して、ワイヤード媒体またはワイヤレス媒体の任意の好適な組合せを含む、ビデオデータをソースデバイス12から宛先デバイス14に送信するのに好適な任意の通信媒体、または様々な通信媒体の集合体を表す。通信チャネル16は、ソースデバイス12から宛先デバイス14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【0025】
本開示の例による、ビデオコーダにおいてIBDIを使用するときのメモリ利用を管理するための、本開示で説明する技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【0026】
図1の例にさらに示すように、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、変調器/復調器(モデム)22と、送信機24とを含む。ソースデバイス12において、ビデオソース18はビデオキャプチャデバイスなどのソースを含み得る。ビデオキャプチャデバイスは、例として、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムのうちの1つまたは複数を含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らず、ビデオ符号化および/または復号機能を含む非ワイヤレスデバイスに適用され得る。ソースデバイス12および宛先デバイス14は、本明細書で説明する技法をサポートすることができるコーディングデバイスの例にすぎない。
【0027】
キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオ情報は、ワイヤレス通信プロトコルなどの通信規格に従ってモデム22によって変調され、送信機24を介して宛先デバイス14に送信され得る。モデム22は、信号変調のために設計された様々なミキサ、フィルタ、増幅器または他の構成要素を含み得る。送信機24は、増幅器、フィルタ、および1つまたは複数のアンテナを含む、データを送信するために設計された回路を含み得る。
【0028】
ビデオエンコーダ20によって符号化された、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成されたビデオはまた、後で消費するために記憶媒体34またはファイルサーバ36に記憶され得る。記憶媒体34は、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。記憶媒体34に記憶された符号化ビデオは、次いで、復号および再生のために宛先デバイス14によってアクセスされ得る。
【0029】
ファイルサーバ36は、符号化ビデオを記憶することと、その符号化ビデオを宛先デバイス14に送信することとが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または符号化ビデオデータを記憶することと、それを宛先デバイスに送信することとが可能な他のタイプのデバイスを含む。ファイルサーバ36は、インターネット接続を含む任意の標準データ接続を通じて宛先デバイス14によってアクセスされ得る。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル(たとえば、Wi−Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバ36からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【0030】
本開示では、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及し得る。ただし、ビデオエンコーダ20は、いくつかのシンタックス要素をビデオデータの様々な符号化部分に関連付けることによって情報をシグナリングし得ることを理解されたい。すなわち、ビデオエンコーダ20は、いくつかのシンタックス要素を、ビデオデータの様々な符号化された部分のヘッダに記憶することによって、出力ビット深度などのデータを「シグナリング」し得る。場合によっては、そのようなシンタックス要素は、ビデオデコーダ30によって受信され、復号されるより前に、符号化され、記憶され得る(たとえば、記憶媒体34またはファイルサーバ36に記憶され得る)。したがって、「シグナリング」という用語は、そのような通信が、リアルタイムまたはほぼリアルタイムで行われるのか、符号化時にシンタックス要素を媒体に記憶し、次いで、この媒体に記憶された後の任意の時間にそのシンタックス要素が復号デバイスによって取り出され得るときに行われ得るなど、ある時間期間にわたって行われるのかにかかわらず、概して、圧縮ビデオデータを復号するためのシンタックスまたは他のデータの通信を指すことがある。
【0031】
宛先デバイス14は、
図1の例では、受信機26と、モデム28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。宛先デバイス14の受信機26はチャネル16を介して情報を受信し、モデム28は、その情報を復調して、ビデオデコーダ30のための復調されたビットストリームを生成する。チャネル16を介して通信される情報は、ビデオデータを復号する際にビデオデコーダ30が使用する、ビデオエンコーダ20によって生成された様々なシンタックス情報を含み得る。そのようなシンタックスはまた、記憶媒体34またはファイルサーバ36に記憶された符号化ビデオデータとともに含まれ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、ビデオデータを符号化または復号することが可能であるそれぞれのエンコーダデコーダ(コーデック)の一部を形成し得る。
【0032】
ディスプレイデバイス32は、宛先デバイス14と一体化されるかまたはその外部にあり得る。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。概して、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
【0033】
ビデオエンコーダ20およびビデオデコーダ30は、現在開発中のHigh Efficiency Video Coding(HEVC)規格などのビデオ圧縮規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格、あるいはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。他の例には、MPEG−2およびITU−T H.263がある。
【0034】
HEVC規格では、ビデオデータのブロックをコーディングユニット(CU)と呼ぶ。概して、CUは、CUがサイズ差異を有しないことを除いて、H.264に従ってコーディングされたマクロブロックと同様の目的を有する。したがって、CUはサブCUに分割され得る。概して、本開示におけるCUへの言及は、ピクチャの最大コーディングユニット(LCU)またはLCUのサブCUを指すことがある。たとえば、ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大のコーディングユニットであるLCUを定義し得る。LCUはサブCUに分割され得、各サブCUはサブCUに分割され得る。ビットストリームのシンタックスデータは、最大CU深さと呼ばれる、LCUが分割され得る最大回数を定義し得る。それに応じて、ビットストリームは最小コーディングユニット(SCU)をも定義し得る。
【0035】
LCUは階層4分木データ構造に関連付けられ得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはLCUに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。
【0036】
分割されないCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分を表し、そのPUの参照サンプルを取り出すためのデータを含む。たとえば、PUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照フレーム、および/または動きベクトルの参照リスト(たとえば、リスト0またはリスト1)を記述し得る。(1つまたは複数の)PUを定義するCUのデータはまた、たとえば、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUがコーディングされないか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかの間で異なり得る。
【0037】
1つまたは複数のPUを有するCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。PUを使用した予測の後に、ビデオエンコーダは、PUに対応するCUの部分の残差値を計算し得る。残差値は変換され、量子化され、走査され得る。TUは、必ずしもPUのサイズに制限されない。したがって、TUは、同じCUの対応するPUよりも大きいことも小さいこともある。いくつかの例では、TUの最大サイズは、対応するCUのサイズであり得る。本開示ではまた、CU、PU、またはTUのいずれかを指すために「ブロック」という用語を使用する。
【0038】
概して、符号化ビデオデータは予測データと残差データとを含み得る。ビデオエンコーダ20は、イントラ予測モードまたはインター予測モード中に予測データを生成し得る。イントラ予測は、概して、あるピクチャのブロック中のピクセル値を、(フレームと呼ばれることもある)同じピクチャの隣接する、前にコーディングされたブロック中の参照サンプルに対して予測することを伴う。インター予測は、概して、あるピクチャのブロック中のピクセル値、たとえば、ルーマおよびクロマ値を、前にコーディングされたピクチャのデータに対して予測することを伴う。
【0039】
イントラ予測またはインター予測の後に、ビデオエンコーダ20はブロックの残差ピクセル値を計算し得る。残差値は、概して、ブロックの予測ピクセル値データと、ブロックの真のピクセル値データとの間の差分に対応する。たとえば、残差値は、コード化ピクセルと予測ピクセルとの間の差分を示すピクセル差分値を含み得る。いくつかの例では、コード化ピクセルは、コーディングされるべきピクセルのブロックに関連し得、予測ピクセルは、コード化ブロックを予測するために使用されるピクセルの1つまたは複数のブロックに関連し得る。
【0040】
ブロックの残差値をさらに圧縮するために、残差値は、(「エネルギー」とも呼ばれる)できるだけ多くのデータをできるだけ少数の係数に構成する変換係数のセットに変換され得る。変換技法は、離散コサイン変換(DCT)プロセスまたは概念的に同様のプロセス、整数変換、ウェーブレット変換、あるいは他のタイプの変換を備え得る。その変換は、ピクセルの残差値を空間領域から変換領域に変換する。変換係数は、元のブロックと通常同じサイズである係数の2次元行列に対応する。言い換えれば、残差データの元のブロック中のピクセルとちょうど同数の変換係数がある。ただし、変換により、変換係数の多くは、0に等しい値を有し得る。
【0041】
ビデオエンコーダ20は、次いで、ビデオデータをさらに圧縮するために変換係数のレベルを量子化し得る。量子化は、概して、相対的に大きい範囲内の値を相対的に小さい範囲中の値にマッピングし、それによって、量子化変換係数を表すために必要とされるデータの量を低減することを伴う。より詳細には、量子化は、量子化中に変換係数に適用される量子化器ステップサイズにインデックス付けされ得る量子化パラメータ(QP)に従って適用され得る。ビデオエンコーダ20は、QPを調整することによって、量子化の程度(たとえば、量子化器ステップサイズ)を変更し得る。
【0042】
量子化の後に、ビデオエンコーダ20は、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。ビデオエンコーダ20は、次いで、データをなお一層圧縮するために、得られたアレイをエントロピー符号化し得る。概して、エントロピーコーディングは、量子化変換係数のシーケンスおよび/または他のシンタックス情報をまとめて圧縮する、1つまたは複数のプロセスを備える。また、たとえば、ΔQP、予測ベクトル、コーディングモード、フィルタ、オフセット、または他の情報など、シンタックス要素は、エントロピーコード化ビットストリーム中に含まれ得る。走査された係数は、次いで、たとえば、コンテンツ適応型可変長コーディング(CAVLC:content adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、または別のエントロピーコーディングプロセスによって、シンタックス情報とともにエントロピーコーディングされる。
【0043】
CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルを符号化するために、あるコンテキストに適用すべきコンテキストモデルを選択し得る。コンテキストは、たとえば、隣接値が非0であるか否かに関係し得る。ビデオエンコーダ20はまた、適応走査を実行するときに生成される有効係数フラグおよび最後係数フラグなど、シンタックス要素をエントロピー符号化し得る。
【0044】
ビデオデコーダ30によって実行されるビデオ復号プロセスは、概して、ビデオエンコーダ20によって実行される符号化技法とは逆の技法を含み得る。概して逆であるが、ビデオデコーダ30は、場合によっては、ビデオエンコーダ20によって実行される技法と同様の技法を実行し得る。言い換えれば、ビデオデコーダ30は、ビデオエンコーダ20によって実行されるプロセスと実質的に同様のプロセスを実行し得る。ビデオデコーダ30はまた、ビデオエンコーダ20に関して説明したデータを含む受信したビットストリーム中に含まれているシンタックス要素または他のデータに依拠し得る。
【0045】
いくつかの例では、ビデオエンコーダ20は、ビデオデータを復号するときに使用され得るいくつかのパラメータセットを生成し得、ビデオデコーダ30はそれらのパラメータセットを受信し得る。たとえば、H.264/AVC(Advanced Video Coding)規格では、コード化ビデオセグメントは、ビデオテレフォニー、ストレージ、ブロードキャスト、またはストリーミングなどの適用例に対処する「ネットワークフレンドリーな」ビデオ表現を与えるNALユニットに編成される。NALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと非VCL NALユニットとにカテゴリー分類され得る。VCLユニットは、コア圧縮エンジンを含み得、ブロック、マクロブロック、および/またはスライスレベルのデータを含み得る。他のNALユニットは非VCL NALユニットであり得る。いくつかの例では、通常は1次コード化ピクチャとして提示される、1つの時間インスタンス中のコード化ピクチャは、1つまたは複数のNALユニットを含み得るアクセスユニット中に含まれ得る。
【0046】
非VCL NALユニットは、特に、パラメータセットNALユニットおよびSEI NALユニットを含み得る。パラメータセットは、(シーケンスパラメータセット(SPS)中の)シーケンスレベルヘッダ情報と、(ピクチャパラメータセット(PPS)中の)まれに変化するピクチャレベルヘッダ情報とを含んでいることがある。パラメータセット(たとえば、PPSおよびSPS)がある場合、まれに変化する情報をシーケンスごとまたはピクチャごとに繰り返す必要はなく、したがってコーディング効率が改善され得る。さらに、パラメータセットの使用は重要なヘッダ情報の帯域外送信を可能にし、誤り耐性のための冗長送信の必要を回避し得る。帯域外送信の例では、SEI NALユニットなど、他のNALユニットとは異なるチャネル上でパラメータセットNALユニットが送信され得る。
【0047】
補足エンハンスメント情報(SEI)は、VCL NALユニットからのコード化ピクチャサンプルを復号するためには必要でないが、復号、表示、誤り耐性、および他の目的に関係するプロセスを支援し得る情報を含んでいることがある。SEIメッセージは、非VCL NALユニット中に含まれていることがある。SEIメッセージは、一部の標準規格の規範的部分であり、したがって、常に標準準拠デコーダ実装のために必須であるとは限らない。SEIメッセージは、シーケンスレベルのSEIメッセージまたはピクチャレベルのSEIメッセージであり得る。SVCの例ではスケーラビリティ情報SEIメッセージ、MVCではビュースケーラビリティ情報SEIメッセージなど、SEIメッセージ中に何らかのシーケンスレベル情報が含まれていることがある。
【0048】
さらに、ビデオデコーダ30は、いくつかの例では、あるメディアフォーマットを実装する規格に準拠し得る。たとえば、ISOベースメディアファイルフォーマットは、メディアの交換、管理、編集、およびプレゼンテーションを可能にする、フレキシブルで拡張可能なフォーマットにおけるプレゼンテーションのための時限メディア情報を含んでいるように設計される。ISOベースメディアファイルフォーマット(ISO/IEC14496−12:2004)は、時間ベースメディアファイルのための一般的な構造を定義するMPEG−4 Part12において規定されている。ベースフォーマットは、H.264/MPEG−4 AVCビデオ圧縮をサポートするために定義されたAdvanced Video Coding(AVC)ファイルフォーマット(ISO/IEC14496−15)、AVCファイルフォーマットの拡張である3GPPファイルフォーマット、SVCファイルフォーマット、およびMVCファイルフォーマットなど、ファミリー中の他のファイルフォーマットに対する基準として使用され得る。
【0049】
概して、ISOベースメディアファイルフォーマットは、オーディオビジュアルプレゼンテーションなどのメディアデータの時限シーケンスのためのタイミング、構造、およびメディア情報を含んでいる。ファイル構造はオブジェクト指向であり得る。すなわち、ファイルは、極めて簡単に基本オブジェクトに分解され得、オブジェクトの構造はそれらのタイプから暗示され得る。ISOベースメディアファイルフォーマットに準拠するファイルは、「ボックス」と呼ばれる一連のオブジェクトとして形成され得る。データは、概してボックス中に含まれており、一般に、ファイル内に他のデータはない。したがって、「ボックス」は、一意のタイプ識別子と長さとによって定義されるオブジェクト指向ビルディングブロックである。
【0050】
別の例では、MPEG−4 part15としても知られるAVCファイルフォーマットは、ISOベースメディアファイルフォーマットの拡張である。AVCファイルフォーマットでは、ビデオサンプルは、AVCDecoderConfigurationRecordならびに同じアクセスユニットのNALユニットを含んでいる「AVCSample」中に含まれている。AVCDecoderConfigurationRecordはまた、パラメータセットのみを含んでいる「AVCParameterSample」中に含まれていることがある。AVCDecoderConfigurationRecordのシンタックスは以下を含み得る。
【数1】
【0051】
上記の例では、AVCDecoderConfigurationRecordは、いくつかのプロファイルおよびレベル関係の要素を含んでいる。多くのビデオコーディング規格の場合と同様に、H.264/AVCは、誤りのないビットストリームのシンタックスと、セマンティクスと、復号プロセスとを定義し、そのいずれかは特定のプロファイルまたはレベルに準拠する。H.264/AVCはエンコーダを指定しないが、エンコーダは、生成されたビットストリームがデコーダの規格に準拠することを保証することを課される。ビデオコーディング規格のコンテキストでは、「プロファイル」は、アルゴリズム、機能、またはツール、およびそれらに適用される制約のサブセットに対応する。たとえば、H.264規格によって定義される「プロファイル」は、H.264規格によって指定されたビットストリームシンタックス全体のサブセットである。「レベル」は、たとえば、ピクチャの解像度、ビットレート、およびマクロブロック(MB)処理レートに関係するデコーダメモリおよび計算など、デコーダリソース消費の制限に対応する。プロファイルはprofile_idc(プロファイルインジケータ)値でシグナリングされ得、レベルはlevel_idc(レベルインジケータ)値でシグナリングされ得る。
【0052】
H.264/AVC規格は、たとえば、所与のプロファイルのシンタックスによって課される限界内で、復号されたピクチャの指定されたサイズなど、ビットストリーム中のシンタックス要素がとる値に応じて、エンコーダおよびデコーダのパフォーマンスの大きい変動を必要とする可能性が依然としてあることを認識している。H.264/AVC規格は、多くの適用例において、特定のプロファイル内でシンタックスのすべての仮定的使用を処理することが可能なデコーダを実装することが実際的でもなく、経済的でもないことをさらに認識している。したがって、H.264/AVC規格は、ビットストリーム中のシンタックス要素の値に課された制約の指定されたセットとして「レベル」を定義している。これらの制約は、値に関する単純な限界であり得る。代替的に、これらの制約は、値の演算の組合せ(たとえば、ピクチャの幅×ピクチャの高さ×毎秒復号されるピクチャの数)に関する制約の形態をとり得る。H.264/AVC規格は、個々の実装形態が、サポートされるプロファイルごとに異なるレベルをサポートし得ることをさらに規定している。
【0053】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30はまた、MPEG−2規格などの他のプロプライエタリ規格または業界規格に従って動作し得る。MPEG−2システム仕様には、デジタル送信または記憶に好適な単一のデータストリームを形成するために、圧縮マルチメディアデータストリーム(たとえば、ビデオおよびオーディオストリーム)が他のデータとともにどのように多重化され得るかが記載されている。MPEG−2システムの最新仕様は、「Information Technology - Generic Coding of Moving Pictures and Associated Audio: Systems, Recommendation H.222.0; International Organization for Standardization, ISO/IEC JTC1/SC29/WG11; Coding of Moving Pictures and Associated Audio」(2006年5月)において規定されている。
【0054】
背景として、MPEG−2によれば、エレメンタリストリームは、プログラムの単一のデジタル的にコード化された(場合によってはMPEG圧縮された)構成要素である。たとえば、プログラムのコード化ビデオまたはオーディオ部分はエレメンタリストリームであり得る。エレメンタリストリームは、プログラムストリームまたはトランスポートストリームに多重化される前に、パケット化エレメンタリストリーム(PES)に変換され得る。同じプログラム内では、1つのエレメンタリストリームに属するPESパケットを他のものと区別するためにstream_idが使用され得る。
【0055】
プログラムストリームは、概して、1つまたは複数の関連するエレメンタリストリームを含んでおり、一般に、可変長のパケットを含んでいる。さらに、プログラムストリームは、概して、寄与しているエレメンタリストリームから導出され、いわゆる「パック」に編成される、PESパケットを含む。パックは、パックヘッダと、オプションのシステムヘッダと、寄与しているエレメンタリストリームのいずれかから取られる任意の数のPESパケットとを任意の順序で含む。システムヘッダは、含まれるとき、最大データレート、寄与しているビデオおよびオーディオエレメンタリストリームの数、ならびにタイミング情報など、プログラムストリームの特性の概要を含んでいることがある。ビデオデコーダ30などのデコーダは、デコーダがプログラムストリームを復号することが可能であるかどうかを決定するために、システムヘッダ中に含まれている情報を使用し得る。
【0056】
トランスポートストリームは、潜在的に誤りを起こしやすいチャネルを介したいくつかのプログラムの同時配信を目的とする。トランスポートストリームは、誤りに対する感受性を低減する、比較的短いトランスポートパケットの連続を備える。トランスポートストリームは、誤り耐性と、多くの同時プログラムを搬送する能力とを与えるが、それはまた、プログラムストリームよりも高度なマルチプレクスを含み得、作成することおよびデマルチプレクスすることがより困難であり得る。
【0057】
1つのエレメンタリストリームのデータを含んでいるトランスポートパケットを、他のエレメンタリストリームのデータを搬送しているものと区別するために、13ビットパケット識別子(PID)フィールドが使用され得る。プログラム固有情報は、プログラムと構成要素エレメンタリストリームとの間の関係を指定し得る。基本プログラムマップテーブル(PMT)は、MPEG−2システム仕様内で指定されている多くの記述子のうちのいくつかで装飾され得る。例として、PMTが、PID33をもつビデオと、PID57をもつ英語のオーディオと、PID60をもつ中国語のオーディオとを含んでいる、番号3をもつプログラムを含むと仮定する。PMTは、2つ以上のプログラムを含み得る。
【0058】
PMTに関連する記述子は、一般に、プログラムまたはそれの構成要素エレメンタリストリームに関するさらなる情報を搬送する。記述子は、ビデオ符号化パラメータ、オーディオ符号化パラメータ、言語識別情報、パンアンドスキャン情報、限定アクセス詳細、著作権情報などを含む。放送事業者または他のユーザは、必要な場合、追加のプライベート記述子を定義し得る。
【0059】
プログラムストリームマップ(PSM)は、プログラムストリーム中のエレメンタリストリーム、および互いとのそれらの関係の説明を与え得る。トランスポートストリームにおいて搬送されるとき、PSMは変更されないことがある。PSMは、stream_id値が0xBCであるときにPESパケットとして存在する。プログラム関連付けテーブル(PAT)は、それのプログラムマップテーブル(PMT)を含んでいるトランスポートパケットのPID値とともに、トランスポートストリーム中で利用可能なすべてのプログラムの完全なリストを与える。上述の同じ例を使用して、プログラム番号3のエレメンタリストリームを指定するPMTはPID1001を有し得、別のPMTは別のPID1002を有し得る。
【0060】
AVC(たとえば、ITU−T Rec.H.264|ISO/IEC14496−10)ビデオストリームでは、AVCビデオ記述子は、AVCビデオストリームのSPS中に含まれるプロファイルおよびレベルパラメータに関するなど、関連するAVCビデオストリームのコーディングパラメータを識別するための基本情報を与える。
【0061】
たとえば、AVCビデオ記述子は、AVCビデオストリーム中のAVC静止ピクチャの存在とAVC24時間ピクチャの存在とをシグナリングし得る。そのような記述子がPMTまたはPSM(存在する場合)中に含まれていない場合、AVCビデオストリームは、AVC静止ピクチャとAVC24時間ピクチャとを含んでいないことがある。例示的なAVCビデオ記述子は、以下の例示的な表1中に含まれている。
【表1】
【0062】
ビデオエンコーダ20および/またはビデオデコーダ30はまた、MPEG指定のHTTPベース動的適応ストリーミング(DASH:Dynamic Adaptive Streaming based on HTTP)に準拠し得る。DASHでは、マニフェストファイル、すなわち、サービスの表現を記述するMPD(メディアプレゼンテーション記述子)がある。たとえば、MPDは、コーディング特性およびレンダリング特性、適応セット、MPDが対応するプロファイル、テキストタイプ情報、カメラアングル情報、レーティング情報、トリックモード情報(たとえば、時間サブシーケンスを含む表現を示す情報)、および/または(たとえば、再生中のメディアコンテンツ中へのターゲット広告挿入のための)リモート期間を取り出すための情報など、含まれた表現の特性を全体的に記述するデータを含み得る。
【0063】
各表現は、ヘッダデータと、メディアデータの1つまたは複数のセグメントとを含み得る。ヘッダデータは、存在するとき、セグメントの特性、たとえば、ランダムアクセスポイントの時間ロケーション、セグメント内のランダムアクセスポイントへのバイトオフセット、セグメントのユニフォームリソースロケータ(URL)、またはセグメントの他の態様を記述し得る。追加または代替として、そのような特性はMPD内に完全に含まれ得る。各セグメントは1つまたは複数のコード化ビデオサンプルを含み得、コード化ビデオサンプルの各々はビデオデータのピクチャまたはスライスを含み得る。セグメントのコード化ビデオサンプルの各々は、同様の特性、たとえば、高さ、幅、および帯域幅要件を有し得る。セグメントの各々は、一意のユニフォームリソース識別子(URI)、たとえば、ユニフォームリソースロケータ(URL)に関連し得る。したがって、セグメントの各々は、DASHなどのストリーミングネットワークプロトコルを使用して独立に取出し可能であり得る。このようにして、(ビデオデコーダ30などのビデオデコーダを含み得る)宛先デバイスは、HTTP Get要求を使用してセグメントを取り出し得る。
【0064】
図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと統合され得、また、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットはITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0065】
ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
【0066】
本開示の態様によれば、以下の
図3および
図4に関してより詳細に説明するように、ビデオエンコーダ20および/またはビデオデコーダ30は、出力ビット深度よりも高い内部ビット深度を使用するときにメモリ利用管理を実行し得る。すなわち、内部ビット深度は、概して、ビデオエンコーダ20および/またはビデオデコーダ30の内部の計算のために使用されるビット深度を指す。例示的な内部計算は、特に、動き補償、補間フィルタリング、デブロッキングフィルタリング、および重み付け予測を含む。出力ビット深度は、概して、ビデオエンコーダ20および/またはビデオデコーダ30から送信されるビット深度を指す。たとえば、ビデオデコーダ30に関して、出力ビット深度は、提示のためにディスプレイデバイス32に送られるサンプル(たとえば、ピクセルのルーマ値および/またはクロマ値)のビット深度である。
【0067】
たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、復号ピクチャが参照ピクチャとして使用されるとき、第1の増加したビット深度でビデオデータを記憶し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、復号ピクチャが参照ピクチャとして使用されないとき、減少したビット深度(たとえば、元のビット深度)で復号ピクチャを記憶し得る。すなわち、ビデオエンコーダ20および/またはビデオデコーダ30は、復号ピクチャが参照ピクチャとして使用されない場合、ビデオデータを復号ピクチャバッファに記憶するより前に、ビデオデータを増加したビット深度からより低いビット深度に丸め得る。
【0068】
さらに、本開示の態様によれば、ビデオエンコーダ20は、出力フォーマットに関するいくつかの指示(たとえば、シンタックス要素など)をビデオデコーダ30に与え得、ビデオデコーダ30は、それらの指示を復号し得る。たとえば、本開示の態様はまた、ビデオデータがビデオデコーダ30によって出力されるべきビット深度に関連するシグナリングに関する。たとえば、ビデオエンコーダ20は、ビデオデコーダ30が、ビデオエンコーダ20またはビデオデコーダ30によってビデオデータが受信された元のビット深度でピクチャを出力すべきなのか、増加したビット深度(たとえば、IBDIビット深度)でピクチャを出力すべきなのかを示すシンタックス要素を符号化し得、ビデオデコーダ30は、それらのシンタックス要素を復号し得る。
【0069】
そのようなシグナリングは、たとえば、SPS、PPS、または他のパラメータセット、あるいは1つまたは複数のSEIメッセージ中で与えられ得る。別の例では、そのようなシグナリングは、(たとえば、ISOベースメディアファイルフォーマットの拡張として)ファイルフォーマット中で与えられるか、またはプロファイルおよびレベル情報を含んでいるサンプル中で与えられ得る。別の例では、MPEG−2システムにおいて、そのようなシグナリングは記述子中で与えられ得る。別の例では、動的適応ストリーミングオーバーHTTP(DASH:Dynamic Adaptive Streaming over HTTP)環境において、そのようなシグナリングはメディアプレゼンテーション記述(MPD)ファイル中で与えられ得る。別の例では、そのようなシグナリングは、たとえば、遠隔制御を通して出力ビット深度を決定するディスプレイデバイスによって使用され得る。
【0070】
図2は、ビデオコーディングにおける例示的なIBDI動作を示すブロック図である。
図2に関して説明する動作について、概して、ビデオコーダ38によって実行されるものとして説明するが、そのような動作は、以下でより詳細に説明するように、ビデオエンコーダ20および/またはビデオデコーダ30によって実行され得ることを理解されたい。
【0071】
図2の例では、ビデオコーダ38はMビットソースデータ33を受信する。ソースデータ33は、たとえば、深度が「M」ビットのサンプル(たとえば、ピクセル値)を有するピクチャを含み得、「M」は正値である。一例では、ソースデータ33は、8ビット深度をもつサンプルを有するピクチャを含み得るが、他のビット深度も使用され得る。
【0072】
ソースデータ33を受信すると、ビデオコーダ38はソースデータ33のビット深度を増加させ得る。たとえば、
図2の例に示すように、ビデオコーダ38は、ソースデータ33のビット深度をN−Mビットだけ増加させるために、ソースデータ22に対して右シフト演算(<<)を実行し得、「N」は「M」よりも大きい(34)。Mが8ビットであり、Nが10のビットである例では、ビデオコーダ38は、ソースデータ33を2ビットだけ拡張するために右シフト演算を実行し得る。
【0073】
ソースデータ33のビット深度を増加させた後に、ビデオコーダ38はNビットコーディング演算を実行し得る(35)。たとえば、ビデオコーダ38は、増加したビット深度を使用して、イントラピクチャ予測を実行するか、1つまたは複数の補間フィルタを適用するか、1つまたは複数のデブロッキングフィルタを適用するか、1つまたは複数の空間変換を適用するか、または他のプロセスを実行し得る。(たとえば、ビデオコーダ38の内部の)内部計算のために比較的より高い(増加した)ビット深度を使用することは、高精度内部プロセス(HAIP:High Accuracy Internal Process)と呼ばれることもある。HAIPを適用することによって、内部プロセスの精度はN−Mビットだけ増加される。より大きいビット深度は、内部計算における丸め誤差を低減するのを助け得る。たとえば、内部計算(たとえば、デジタルフィルタリングなど)を実行するときに算術精度を高めることは、理想的な結果を達成するのを助け得る。いくつかの例では、ビデオコーダ38は、元のMビットソースデータ33を使用していくつかの演算を実行し、Nビットのビット増加したデータを使用して他の演算を実行するように構成され得る。
【0074】
ビデオコーダ38は、次いで、データを出力するより前に、得られたデータに対して丸め演算(切り捨て)を実行し得る。たとえば、ビデオコーダ38は、ビット増加したデータを元のMビット深度まで丸め得る(36)。したがって、ビデオコーダ38はMビット出力データ37を出力し得る。出力データ37は、(たとえば、出力データ37がビデオエンコーダからのものであるときには)符号化ビットストリームであり得るか、または(たとえば、出力データ37がビデオデコーダからのものであるときには)復号ピクチャであり得る。
【0075】
図3は、ビデオコーダにおいてIBDIを使用するときのメモリ利用を管理するための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。
図3のいくつかの構成要素は、概念的な目的のために単一の構成要素に関して図示および説明されることがあるが、1つまたは複数の機能ユニットを含み得ることを理解されたい。さらに、
図3のいくつかの構成要素は、単一の構成要素に関して図示および説明されることがあるが、そのような構成要素は、物理的に1つまたは2つ以上の個別および/または一体型ユニットから構成され得る。
【0076】
図3に示すように、ビデオエンコーダ20は、符号化されるべきビデオピクチャ内の現在ビデオブロックを受信する。
図3の例では、ビデオエンコーダ20は、モード選択ユニット40と、IBDIモジュール41A、41B、および41C(総称して、IBDIモジュール41)と、動き推定ユニット42と、動き補償ユニット44と、参照ピクチャメモリ64と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピーコーディングユニット56とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするデブロッキングフィルタ(
図3に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタリングすることになる。
【0077】
符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオピクチャまたはスライスを受信する。ピクチャまたはスライスは複数のビデオブロックに分割され得る。いくつかの例では、IBDIモジュール41Aは、コーディングされるべき受信したビデオピクチャまたはスライスの受信したサンプル(たとえば、ピクセル)のビット深度を増加させ得る。たとえば、
図2に関して上記で説明したように、IBDIモジュール41Aは、受信したサンプルのビット深度を増加させるために右シフト演算を実行し得る。一例では、説明のために、受信したビデオデータがビット深度8を有する(たとえば、ビデオデータの各サンプルが8ビットのデータを含む)と仮定する。この例では、IBDIモジュール41Aは、(たとえば、ビデオデータの各サンプルが10ビットのデータを含むように)サンプルのビット深度を10まで増加させるために右シフト演算を実行し得る。別の例では、IBDIモジュール41Aは、サンプルのビット深度を12まで増加させるために右シフト演算を実行し得る。他の変形形態も可能である。
【0078】
図3に示した例では、IBDIモジュール41Aは、ビデオエンコーダ20のすべての演算がビット深度増加されるように、ビデオエンコーダ20の相対入力に配置される。ただし、いくつかの例では、IBDIは、ビデオエンコーダ20に関連する演算のサブセットのみに適用され得ることを理解されたい。たとえば、IBDIモジュール41Aは、ビデオエンコーダ20内の演算(たとえば、動き推定ユニット42、動き補償ユニット44、イントラ予測ユニット46、変換ユニット52、量子化ユニット54、逆量子化ユニット58、逆変換ユニット60、デブロッキングフィルタまたは他のフィルタ(図示せず)、あるいはビデオエンコーダ20の他のユニットに関連する演算)のすべてまたはいずれかのサブセットのためにIBDIを実行し得る。
【0079】
動き推定ユニット42および動き補償ユニット44は、1つまたは複数の参照ピクチャ中の1つまたは複数のブロックに対する受信したビデオブロックのインター予測コーディングを実行する。すなわち、動き推定ユニット42は、異なる時間インスタンスの1つまたは複数の参照ピクチャ中の1つまたは複数のブロックに対する受信したビデオブロックのインター予測コーディング、たとえば、同じビューの1つまたは複数の参照ピクチャを使用した動き推定を実行し得る。さらに、動き推定ユニット42は、同じ時間インスタンスの1つまたは複数の参照ピクチャ中の1つまたは複数のブロックに対する受信したビデオブロックのインター予測コーディング、たとえば、異なるビューの1つまたは複数の参照ピクチャを使用した動き視差を実行し得る。
【0080】
イントラ予測ユニット46は、空間圧縮を行うために、コーディングされるべきブロックと同じピクチャまたはスライス中の1つまたは複数の隣接ブロックに対する受信したビデオブロックのイントラ予測コーディングを実行し得る。モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの1つを選択し得、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に与え、参照ピクチャ中で使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に与える。
【0081】
動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在ピクチャ(または他のコード化ユニット)内でコーディングされている現在ブロックに対する予測参照ピクチャ(または他のコード化ユニット)内の予測ブロックの変位を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。動きベクトルはまた、マクロブロックのパーティションの変位を示し得る。動き補償は、動き推定ユニット42によって決定された動きベクトル(または変位ベクトル)に基づいて予測ブロックをフェッチまたは生成することを伴い得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。
【0082】
動き推定ユニット42は、ビデオブロックを参照ピクチャメモリ64中の参照ピクチャのビデオブロックと比較することによってインターコード化ピクチャのビデオブロックの動きベクトルを計算し得る。動き補償ユニット44はまた、参照ピクチャ、たとえば、IフレームまたはPフレームのサブ整数ピクセルを補間し得る。ITU−T H.264規格では、参照ピクチャの「リスト」、たとえば、リスト0およびリスト1に言及している。リスト0は、現在ピクチャよりも前の表示順序を有する参照ピクチャを含むが、リスト1は、現在ピクチャよりも後の表示順序を有する参照ピクチャを含む。他のコーディング方式では、単一のリストが維持され得る。
【0083】
動き推定ユニット42は、参照ピクチャメモリ64からの1つまたは複数の参照ピクチャのブロックを現在ピクチャ、たとえば、PピクチャまたはBピクチャの符号化されるべきブロックと比較する。参照ピクチャメモリ64中の参照ピクチャがサブ整数ピクセルの値を含むとき、動き推定ユニット42によって計算される動きベクトルは参照ピクチャのサブ整数ピクセルロケーションに対応するサンプルを参照し得る。動き推定ユニット42は、計算された動きベクトルをエントロピーコーディングユニット56と動き補償ユニット44とに送る。動きベクトルによって識別される参照ピクチャブロックは予測ブロックと呼ばれることがある。動き補償ユニット44は、参照ピクチャの予測ブロックの残差誤差値を計算する。
【0084】
変換ユニット52は、離散コサイン変換(DCT)、整数変換、または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換ユニット52は、概念的にDCTと同様である、H.264規格によって定義される変換など、他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換ユニット52は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。
【0085】
量子化ユニット54は、ビットレートをさらに低減するために残差変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。たとえば、量子化は、概して、相対的に大きい範囲内の値を相対的に小さい範囲中の値にマッピングし、それによって、量子化変換係数を表すために必要とされるデータの量を低減することを伴う。ビデオエンコーダは、あらかじめ定義されたアルゴリズムに従って量子化パラメータ(QP)を適用することによって変換係数を量子化し得る。ビデオエンコーダは、QPを調整することによって、変換係数値に適用される量子化の程度を変更し得る。
【0086】
量子化の後、エントロピーコーディングユニット56が量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット56は、コンテンツ適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、または別のエントロピーコーディング技法を実行し得る。エントロピーコーディングユニット56によるエントロピーコーディングの後、符号化ビデオは、別のデバイスに送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。コンテキスト適応型バイナリ算術コーディング(CABAC)の場合、コンテキストは隣接マクロブロックに基づき得る。
【0087】
場合によっては、エントロピーコーディングユニット56またはビデオエンコーダ20の別のユニットは、エントロピーコーディングに加えて他のコーディング機能を実行するように構成され得る。たとえば、エントロピーコーディングユニット56はマクロブロックおよびパーティションのCBP値を決定するように構成され得る。また、場合によっては、エントロピーコーディングユニット56は、マクロブロックまたはそれのパーティション中の係数のランレングスコーディングを実行し得る。特に、エントロピーコーディングユニット56は、マクロブロックまたはパーティション中の変換係数を走査するためにジグザグ走査または他の走査パターンを適用し、さらなる圧縮のためにゼロのランを符号化し得る。エントロピーコーディングユニット56はまた、符号化ビデオビットストリーム中での送信のために適切なシンタックス要素を用いてヘッダ情報を構成し得る。
【0088】
エントロピーコーディングより前に、IBDIモジュール41Bは、サンプル値を(たとえば、IBDIモジュール41Aによって増加された)増加したビット深度から元のビット深度に丸め得る。すなわち、増加したビット深度を使用して内部演算を実行した後に、IBDIモジュール41Bは、ビデオデータがビデオエンコーダ20から出力されるより前に、ビデオデータを元のビット深度(すなわち、データがビデオエンコーダ20によって受信されたビット深度)、または何らかの他の比較的より低いビット深度に戻し得る。
【0089】
逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つまたは複数の補間フィルタを適用して、動き推定において使用するサブ整数ピクセル値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオピクチャ中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
【0090】
いくつかの例では、本開示の態様によれば、IBDIモジュール41Cは、IBDIを使用するときのメモリ利用を管理するのを助け得る。たとえば、再構成されたブロックを参照ピクチャメモリ64に記憶するより前に、IBDIモジュール41Cは、データが参照データとして実際に使用されるかどうかを決定し得る。本開示の態様によれば、IBDIモジュール41Cは、参照データとして使用されるビデオデータを改変しないことがある。そうではなく、再構成されたピクチャは、IBDI(増加した)ビット深度で参照ピクチャメモリ64に記憶され得る。対照的に、IBDIモジュール41Cは、参照ピクチャとして使用されないピクチャのサンプルを丸め得る。すなわち、IBDIモジュール41Cは、復号ピクチャを参照ピクチャメモリ64に記憶するより前に、復号ピクチャのビット深度を減少させ得る。このようにして、参照ピクチャメモリ64に記憶されたデータの少なくとも一部が、低減されたビット深度で記憶され得るので、ビデオエンコーダ20は、IBDIを使用するとき、いくらかのメモリ消費量節約を達成し得る。
【0091】
さらに、本開示のいくつかの態様によれば、ビデオエンコーダ20は、以下で説明するビデオデコーダ30などのビデオデコーダに、出力フォーマットに関するいくつかの指示を与え得る。たとえば、ビデオエンコーダ20は、ビデオデコーダが、ビデオデータが受信されたビット深度で復号ピクチャを出力すべきなのか、増加したビット深度(たとえば、IBDIビット深度)で復号ピクチャを出力すべきなのかを示すシンタックス要素を符号化し得る。そのようなシグナリングは、たとえば、SPS、PPS、または他のパラメータセット、あるいはSEIメッセージ中で与えられ得る。別の例では、そのようなシグナリングは、(たとえば、ISOベースメディアファイルフォーマットの拡張として)ファイルフォーマット中で与えられるか、またはプロファイルおよびレベル情報を含んでいるサンプル中で与えられ得る。別の例では、MPEG−2システムにおいて、そのようなシグナリングは記述子中で与えられ得る。別の例では、動的適応ストリーミングオーバーHTTP(DASH)環境において、そのようなシグナリングはメディアプレゼンテーション記述(MPD)ファイル中で与えられ得る。
【0092】
IBDIモジュール41は、ビット深度を増加させることを担当するモジュール41Aと、出力するより前にビット深度を切り捨てることを担当するモジュール41Bと、参照ピクチャメモリ63に記憶するより前にビット深度を切り捨てることを担当するモジュール41Cとがある別々のモジュールとして示されているが、そのようなIBDIモジュール41は、高度に統合され、および/または単一のモジュールに組み込まれ得ることを理解されたい。さらに、説明のために個別モジュールとして示されているが、IBDIモジュール41は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得ることを理解されたい。
【0093】
図4は、本開示の技法を実行し得るビデオデコーダ30の一例を示すブロック図である。
図4の例では、ビデオデコーダ30は、エントロピー復号ユニット130と、IBDIモジュール131Aおよび131B(総称的に、IBDIモジュール131)と、動き補償ユニット132と、イントラ予測ユニット134と、逆量子化ユニット136と、逆変換ユニット138と、参照ピクチャメモリ142と、加算器140とを含む。
【0094】
エントロピー復号ユニット130は、受信したビットストリームをエントロピー復号し得る。たとえば、エントロピー復号ユニット130は、直列化された変換係数を受信し、変換係数を逆走査して変換係数の2次元アレイを生成し得る。
【0095】
IBDIモジュール131Aは、エントロピー復号されたサンプルのビット深度を増加させ得る。たとえば、
図2および
図3に関して上記で説明したように、IBDIモジュール131Aは、受信したサンプルのビット深度を増加させるために右シフト演算を実行し得る。一例では、説明のために、受信したビデオデータ(符号化ビットストリームからの変換係数、動きベクトルなど)がビット深度8を有する(たとえば、ビデオデータの各サンプルが8ビットのデータを含む)と仮定する。この例では、IBDIモジュール131Aは、サンプルのビット深度を10まで増加させるために右シフト演算を実行し得る。別の例では、IBDIモジュール131Aは、サンプルのビット深度を12まで増加させるために右シフト演算を実行し得る。他の変形形態も可能である。
【0096】
動き補償ユニット132は、エントロピー復号ユニット130から受信した動きベクトルに基づいて予測データを生成し得る。動き補償ユニット132は、ビットストリーム中で受信した動きベクトルを使用して、参照ピクチャメモリ142中の参照ピクチャ中の予測ブロックを識別し得る。イントラ予測ユニット134は、ビットストリーム中で受信したイントラ予測モードを使用して、空間的に隣接するブロックから予測ブロックを形成し得る。逆量子化ユニット136は、ビットストリーム中で与えられ、エントロピー復号ユニット130によって復号された量子化ブロック係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。
【0097】
逆変換ユニット158は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。動き補償ユニット132は動き補償ブロックを生成し、場合によっては、補間フィルタに基づいて補間を実行する。サブピクセル精度をもつ動き推定に使用されるべき補間フィルタの識別子は、シンタックス要素中に含まれ得る。動き補償ユニット132は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルのための補間値を計算し得る。動き補償ユニット132は、受信したシンタックス情報に従って、ビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
【0098】
動き補償ユニット132は、シンタックス情報のいくつかを使用して、符号化ビデオシーケンスの(1つまたは複数の)ピクチャを符号化するために使用されるマクロブロックのサイズと、符号化ビデオシーケンスのピクチャの各マクロブロックがどのように区分されるのかを記述するパーティション情報と、各パーティションがどのように符号化されるのかを示すモードと、各インター符号化マクロブロックまたはパーティションのための1つまたは複数の参照ピクチャ(またはリスト)と、符号化ビデオシーケンスを復号するための他の情報とを決定する。
【0099】
加算器140は、残差ブロックを、動き補償ユニット132またはイントラ予測ユニットによって生成される対応する予測ブロックと加算して、復号ブロックを形成する。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタリングするためにデブロッキングフィルタも適用され得る。復号されたビデオブロックは、次いで、参照ピクチャメモリ142に記憶され、参照ピクチャメモリ142は、参照ブロックを後続の動き補償に与え、また、(
図1のディスプレイデバイス32などの)ディスプレイデバイス上での提示のために復号ビデオを生成する。
【0100】
本開示の態様によれば、IBDIモジュール131Bは、IBDIを使用するときのメモリ利用を管理するのを助け得る。たとえば、復号ピクチャを参照ピクチャメモリ142に記憶するより前に、ビデオデコーダ30は、ピクチャが、たとえば、他の予測されたピクセル値を復号するための参照ピクチャとして使用されるかどうかを決定し得る。本開示の態様によれば、IBDIモジュール131Bは、参照ピクチャとして使用されるピクチャを改変しないことがある。そうではなく、ビデオデコーダ30は、IBDI(増加した)ビット深度で復号ピクチャを参照ピクチャメモリ142に記憶し得る。すなわち、上記の
図2で図示および説明したIBDI例に関して、ビデオデコーダ30は、「N」ビット深度を用いて復号ピクチャを参照ピクチャメモリ142に記憶し得る。
【0101】
対照的に、IBDIモジュール131Bは、参照ピクチャとして使用されない復号ピクチャのサンプルを丸め得る。たとえば、いくつかのピクチャ(たとえば、いくつかのBフレームなど)は参照ピクチャとして使用されないことがある。その上、いくつかの事例では、ビデオデコーダ30は、いくつかのピクチャを「参照のために使用されない」とマークし得る。たとえば、ピクチャが復号されたが、まだ表示されておらず、参照ピクチャとして使用されない場合、そのピクチャは、参照のために使用されないとマークされ得る。したがって、ピクチャが参照データとして使用されないとき、IBDIモジュール131Bは、復号ピクチャを参照ピクチャメモリ142に記憶するより前に、復号ピクチャのビット深度を減少させ得る。すなわち、IBDIモジュール131Bは、参照ピクチャとして使用されない復号ピクチャを、増加したビット深度から元のより低いビット深度に変換し得る。たとえば、IBDIモジュール131Bは、初めに、参照ピクチャとして使用されない復号ピクチャをより低いビット深度において参照ピクチャメモリ142に記憶し得る。IBDIモジュールはまた、増加したビット深度で最初に記憶されたが、もはや参照ピクチャとして使用されない復号ピクチャをより低いビット深度に変換し得る。このようにして、参照ピクチャメモリ142に記憶されたデータの少なくとも一部が、増加したビット深度に対してより低いビット深度で記憶され得るので、ビデオデコーダ30は、IBDIを使用するとき、いくらかのメモリ消費量節約を達成し得る。
【0102】
本開示のいくつかの態様によれば、ビデオデコーダ30は、ピクチャが参照ピクチャとして使用されるかどうかにかかわらず、元のビット深度(たとえば、非IBDIビット深度)でピクチャを維持し得る。この変更IBDIプロセスによれば、ビデオデコーダ30は、ピクチャが、動き補償など、いくつかのプロセスのために使用されるときにビット深度を増加させ得る。すなわち、たとえば、ビデオデコーダ30は、サブピクセル補間、逆量子化、逆変換、および最終再構成など、内部復号プロセスにおいて比較的より高精度の計算を実行し得る。しかしながら、IBDIモジュール131Bは、次いで、メモリ帯域幅消費量を低減するために、復号ピクチャを参照ピクチャメモリ142に記憶するより前に、(参照ピクチャとして使用されるピクチャを含む)すべての復号ピクチャのビット深度を減少させ得る。
【0103】
いくつかの事例では、ビデオデコーダ30は、データ(たとえば、受信した符号化ビットストリーム)が受信されたビット深度に対して、増加したビット深度で復号ピクチャを出力し得る。増加したビット深度データを出力することは、そのようなより高いビット深度データを扱うことが可能であるデコーダおよびディスプレイに比較的より良いビデオ品質および/またはオーディオ品質を与え得る。
【0104】
本開示の態様によれば、ビデオデコーダ30は、受信した出力ビット深度インジケータに基づいて、増加したビット深度(たとえば、IBDIビット深度)で復号ピクチャを出力すべきなのか、元のビット深度(たとえば、符号化ビットストリームが受信されたビット深度)で復号ピクチャを出力すべきなのかを決定し得る。たとえば、ビデオデコーダ30は、出力ビット深度を示すいくつかのシンタックス要素を受信し、復号し、復号されたシンタックス要素に従って(たとえば、参照ピクチャメモリ142からの)復号ピクチャを出力し得る。
【0105】
一例では、出力ビット深度インジケータは、SPS、PPS、または他のパラメータセット、SEIメッセージ、および/または他のメッセージ中に含まれ得る。たとえば、ビデオデコーダ30は、SPSまたはSEIメッセージ中で、元のビット深度(たとえば、コード化ビデオデータが受信されたビット深度)で復号ピクチャを出力すべきなのか、増加したビット深度(たとえば、IBDIビット深度)で復号ピクチャを出力すべきなのかを示すフラグ(たとえば、display_IBDI_depth_flag)を受信し得る。ディスプレイビット深度フラグが0に設定された場合、ビデオデコーダ30は元のビット深度で復号ピクチャを出力し得、ディスプレイフラグが1に設定された場合、ビデオデコーダ30は増加したビット深度で復号ピクチャを出力し得る(またはその逆も同様である)。いくつかの例では、ディスプレイビット深度フラグは、IBDIプロセスが有効である(たとえば、bitDepthIncreasedシンタックス要素が0よりも大きく、IBDIが有効であることを示す)ときにのみ設定され得る。
【0106】
本開示の態様によれば、ビデオデコーダ30は、様々なファクタに基づいて、ディスプレイビット深度フラグを変更するための軽量トランスコーディング技法を実装し得る。たとえば、(
図1に示したディスプレイデバイス32などの)ディスプレイが、元のビット深度(たとえば、8ビット深度)を有するピクチャのみを表示することが可能である場合、ビデオデコーダ30は、ディスプレイビット深度フラグの元の値にかかわらず、ディスプレイビット深度フラグを0に再設定し得る。すなわち、ビデオデコーダ30は、ディスプレイが、増加したビット深度で復号ピクチャを提示することが可能でない場合、ディスプレイビット深度フラグを値1から値0に再設定し得る。
【0107】
他の例では、フラグがパラメータセットまたは他のメッセージ中に含まれるのではなく、フラグは、特定のコーディング規格に関連する設定可能なパラメータであり得る。たとえば、新生HEVC規格に関して、displayIBDIDepthFlagパラメータが復号プロセスにおいて使用され得る。この例では、パラメータは、ディスプレイビット深度フラグがパラメータセット(たとえば、SPSまたはPPS)中に含まれるのか、他のメッセージ(たとえば、SEIメッセージ)中に含まれるのかにかかわらず、システム仕様においてシグナリングされ得る。
【0108】
他の例では、出力ビット深度インジケータは、(たとえば、ISOベースメディアファイルフォーマットの拡張として)ファイルフォーマット中に含まれ得る。たとえば、出力ビット深度インジケータは、プロファイルおよびレベル情報を含んでいるサンプル中に含まれ得る。一例では、説明のために、出力ビット深度インジケータは、
図1に関して上記で説明したAVCファイルフォーマットと同じAVCDecoderConfigurationRecordを共用し得る。しかしながら、本開示の態様によれば、ファイルフォーマットは、以下のフォーマットに従って変更され得る。
【数2】
【0109】
この例では、ゼロ(0)に等しいdisplayIBDIDepthは、IBDIがビットストリーム中で使用されないこと、または出力信号(たとえば、ビデオデコーダ30からの復号ピクチャ)が、より低い非IBDIビット深度(たとえば、Mビット)を使用することのいずれかを示す。代替的に、1に等しいdisplayIBDIDepthは、IBDIが使用されること、および出力信号が、増加したビット深度を用いて表示されるべきであることを示し得る。本開示のいくつかの態様によれば、ディスプレイビット深度フラグ(たとえば、display_IBDI_depth_flag)がSPS(または、いくつかの例では、SEIメッセージ)中に存在するとき、displayIBDIDepthはdisplay_IBDI_depth_flagに等しく設定される。上記に示した例では、IBDI_bit_depth_luma_minus8plus8は、表示のために使用されるべきビット深度(N)を示し得る。すなわち、IBDI_bit_depth_luma_minus8+8は(N)に等しくなり、(N)は、bitDepthIncreasedと組み合わせられたビット深度(M)に等しくなり得る。
【0110】
上記の例は、説明のために与えたものにすぎず、他の例も可能であることを理解されたい。たとえば、上記で説明したAVCDecoderConfigurationRecordは、HEVCDecoderConfigurationRecordにリネームされ得るが、新生HEVCファイルフォーマットにおいて、AVCファイルフォーマットにおけるAVCDecoderConfigurationRecordと同じ役割を果たし得る。
【0111】
別の例では、出力ビット深度インジケータは、MPEG−2記述子などの記述子中に含まれ得る。たとえば、HEVC MPEG−2システム設計は、上記で説明したように、AVCのシステム設計と同様であり得る。すなわち、HEVC MPEG−2は、以下の表2に示す変更を用いて、HEVCビットストリームを記述するためにAVCビデオ記述子を再利用し得る。
【表2】
【0112】
表2の例では、0に等しいdisplay_IBDI_depthは、IBDIがビットストリーム中で使用されないこと、または表示されるべき出力信号(たとえば、ビデオデコーダ30からの復号ピクチャ)が、より低い非IBDIビット深度(たとえば、Mビット)を使用することのいずれかを示し得る。代替的に、1に等しいdisplay_IBDI_depthは、IBDIが使用されること、および出力信号が、増加したビット深度(たとえば、Nビット、ただし、NはMよりも大きい)を用いて表示されるべきであることを示し得る。display_IBDI_depth_flagがSPS中に存在するとき、display_IBDI_depthはdisplay_IBDI_depth_flagに等しく設定され得る。さらに、上記に示した例では、IBDI_bit_depth_minus8plus8は、表示のために使用されるべきビット深度(N)を示し得る。すなわち、IBDI_bit_depth_minus8+8は(N)に等しくなり、(N)は、bitDepthIncreasedと組み合わせられたビット深度(M)に等しくなり得る。表2に示す例は説明のために与えたものにすぎないことを理解されたい。すなわち、別の例では、記述子は、同様のシンタックス要素を有するHEVC記述子(または別のコーディング規格に対応する記述子)と呼ばれることもある。
【0113】
さらに別の例では、出力ビット深度インジケータは、(たとえば、DASH環境において)MPDファイル中に含まれ得る。たとえば、上述のように、MPDは、復号されるべき利用可能なビデオデータの様々な表現を記述し得る。たとえば、MPDは、上述のように、コーディング特性およびレンダリング特性、適応セット、MPDが対応するプロファイル、ならびに様々な他の情報など、含まれた表現の特性を全体に記述するデータを含み得る。
【0114】
本開示の態様によれば、出力ビット深度は、カプセル化(たとえば、ビデオデコーダ30への送信のためのパッケージング)のときにコンテンツを与えることを担当するサーバによって決定され得る。すなわち、たとえば、サービスプロバイダは、あるコンテンツの表示のために追加のビット深度は必要でないと決定し得る。そのような場合、サービスプロバイダは、(たとえば、MPD中に)表現がIBDIビット深度で表示されるべきでないことを示すIBDIフラグを設定し得る。代替的に、サービスプロバイダは、追加のビット深度が、特定の表現のデータを表示するために使用され得ることを決定し得、それに応じて、ディスプレイビット深度インジケータを設定し得る。例示的なMPDを以下の表3に示す。
【表3-1】
【表3-2】
【表3-3】
【0115】
上述のように、@IBDIDepth要素が存在するとき、その要素は、HEVC表現(または別のコーディング規格の表現)がIBDIDepthの増加したビット深度(Nビット)を用いて表示されるべきであることを示すために使用され得る。その要素が存在しないとき、表現は、通常のビット深度(Mビット)を用いて表示されるべきである。@IBDIDepthの値は、ビットストリームのSPS(またはSEIメッセージ)中で示されているように、Mビット深度+bitDepthIncreasedに等しくなり得る。
【0116】
いくつかの例では、上述のように、復号ピクチャが参照ピクチャとして使用されるかどうかにかかわらず、参照ピクチャメモリ142に記憶されているすべての復号ピクチャの丸めを含む変更IBDIプロセスが使用され得る。そのような例では、第1のIBDIプロセスを使用すべきなのか、第2の変更IBDIプロセスを使用すべきなのかを示すための追加のインジケータ(たとえば、フラグ)が実装され得る。そのようなインジケータは、上記で説明したように、SPS、SEIメッセージなど中に与えられ得る。たとえば、インジケータが真である場合、変更IBDIプロセスが一連のピクチャのために使用され得る。代替的に、インジケータが偽である場合、現在IBDIプロセスが一連のピクチャのために使用され得る。
【0117】
上記で説明した出力ビット深度インジケータについて、概して、ビデオデコーダ30に関して説明するが、そのようなインジケータは、1つまたは複数のデバイスによって生成および/または送信され得ることを理解されたい。たとえば、上記で説明したディスプレイビット深度インジケータは、ビデオエンコーダ20(
図1および
図2)、(上記のDASH例に関して説明したように)コンテンツを与えるためのサーバまたは他の構成要素、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどを含む、様々なビデオコーダによって生成され得る。
【0118】
本開示の態様によれば、ビデオデコーダ30は、出力ビット深度インジケータを受信し、受信した出力ビット深度インジケータに基づいて、増加したビット深度で復号ピクチャを出力すべきなのか、元のビット深度で復号ピクチャを出力すべきなのかを決定し得る。ビデオデコーダ30が、増加したビット深度において復号ピクチャを出力する例では、IBDIモジュール131Bは、復号ピクチャを参照ピクチャメモリ142に記憶するより前に、復号ピクチャを改変しないことがある。すなわち、上述のように、IBDIが実装されるとき、IBDIモジュール131Aは、いくつかの内部コーディング演算を実行するより前に、ビデオデータのビット深度を増加させ得る。ビデオデコーダ30が、増加したビット深度において復号ピクチャを出力するとき、IBDIモジュール131Bは、復号ピクチャを参照ピクチャメモリ142に記憶するより前に、ビデオデータのビット深度を丸めないことがある。したがって、ビデオデコーダ30は、増加したビット深度において(たとえば、ディスプレイデバイス32(
図1)などのディスプレイにおける提示のために)参照ピクチャメモリ142からの復号ピクチャを出力し得る。
【0119】
代替的に、ビデオデコーダ30が非IBDIビット深度において復号ピクチャを出力する例では、IBDIモジュール131Bは、復号ピクチャを参照ピクチャメモリ142に記憶するときに、本開示で説明する技法を実装し得る。すなわち、いくつかの例では、IBDIモジュール131Bは、参照ピクチャとして使用されるピクチャのサンプルを改変しないことがある。そうではなく、ビデオデコーダ30は、IBDI(増加した)ビット深度で復号ピクチャを参照ピクチャメモリ142に記憶し得る。対照的に、本開示の態様によれば、IBDIモジュール131Bは、参照ピクチャとして使用されないピクチャのサンプルを丸め得る。
【0120】
IBDIモジュール131は別々のモジュールとして示されているが、そのようなIBDIモジュール131は、高度に統合され、および/または単一のモジュールに組み込まれ得ることを理解されたい。さらに、説明のために個別モジュールとして示されているが、IBDIモジュール131は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得ることを理解されたい。
【0121】
図5は、ビデオコーディングに関連する動作を実行するときにビット深度を増加させることを示すブロック図である。
図5に示す例について、概して、ビデオコーダによって実行されるものとして説明する。いくつかの例では、
図5の技法は、上記で説明したビデオエンコーダ20(
図1および
図2)またはビデオデコーダ30(
図1および
図3)によって行われ得ることを理解されたい。他の例では、
図5の技法は、様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコーディングユニットなどによって実行され得る。
【0122】
図5に示す例では、ビデオコーダは、上記で説明したものなどのIBDIプロセスを使用して、増加したビット深度でビデオデータに対して1つまたは複数のビデオコーディング演算を実行する(160)。たとえば、ビデオコーダは、ビット深度8を有するビデオデータの1つまたは複数のサンプルを受信し得、ビット深度を8から10、12、または別のより高いビット深度に増加させ得る。ビデオコーダは、フレーム内予測を実行すること、(サブピクセル補間を含む)1つまたは複数の補間フィルタを適用すること、1つまたは複数のデブロッキングフィルタを適用すること、1つまたは複数の空間変換(または逆変換)を適用すること、量子化を実行すること、または他のプロセスを実行することなど、増加したビット深度を使用してビデオデータに対して演算を実行し得る。
【0123】
ビデオコーダはまた、増加したビット深度でビデオデータ、すなわち、復号ピクチャを出力すべきかどうかを決定する(162)。本開示の態様によれば、ビデオコーダは、たとえば、受信した出力ビット深度インジケータに基づいて、そのような決定を行い得る。上記で説明したように、インジケータは、SPS、SEIメッセージなど中に含まれている出力ディスプレイビット深度フラグを含み得る。他の例では、インジケータは、(たとえば、ISOベースメディアファイルフォーマットの拡張として)ファイルフォーマット、プロファイルおよびレベル情報を含んでいるサンプル中で与えられる1つまたは複数のシンタックス要素、記述子(たとえば、MPEG−2記述子)、または(たとえば、DASH環境において)MPDファイル中で与えられ得る。さらに他の例では、ディスプレイデバイス(たとえば、
図1に示したディスプレイデバイス32)など、ビデオコーダの外部にあるデバイスは、たとえば、遠隔制御を通して出力ビット深度を決定し得る。
【0124】
図5に示す例では、ビデオコーダが、増加したビット深度でビデオデータを出力すべきである場合(たとえば、ステップ162のYESブランチ)、ビデオコーダは、増加したビット深度でビデオデータを(たとえば、復号ピクチャバッファに)記憶する(164)。ビデオコーダが、増加したビット深度でビデオデータを出力すべきでない場合(たとえば、ステップ162のNOブランチ)、ビデオコーダは、ビデオデータが参照データとして使用されるかどうかを決定する(166)。本開示の態様によれば、ビデオデータが参照データとして使用される場合(たとえば、166のYESブランチ)、ビデオコーダは、増加したビット深度でビデオデータを記憶する(164)。
【0125】
ビデオデータが参照データとして使用されない場合(たとえば、166のNOブランチ)、ビデオコーダは、ビデオデータのビット深度を低減する(168)。たとえば、いくつかのピクチャ(たとえば、いくつかのBフレームなど)は参照ピクチャとして使用されないことがある。その上、いくつかの事例では、ビデオコーダは、あるビデオデータを「参照のために使用されない」とマークし得る。そのような例では、ビデオコーダは、ビット深度をIBID動作のために使用される増加したビット深度から元のビット深度に低減し得る。ビデオコーダは、次いで、減少したビット深度でビデオデータを記憶する(170)。
【0126】
図5に示す例は、ビデオデータを符号化および/または復号することに関連するメモリ要件を低減し得る。たとえば、
図5の例に示す技法は、より少数のビットのデータが記憶されることを可能にし得、これは、メモリ要件ならびにメモリ帯域幅消費量を低減し得る。
【0127】
図5に示すステップは一例として与えたものにすぎないことを理解されたい。すなわち、本開示のいくつかの態様によれば、ビデオコーダは、ビデオデータが参照として使用されるかどうかにかかわらず、元のビット深度(たとえば、非IBDIビット深度)でビデオデータを維持し得る。この変更IBDIプロセスによれば、ビデオコーダは、ビデオデータがいくつかのプロセス(たとえば、動き補償、サブピクセル補間、量子化、変換、および再構成に関連する内部コーディングプロセス)のために使用されるときにビット深度を増加させ得るが、次いで、メモリ帯域幅消費量を低減するために、ビデオデータを記憶するより前に、すべての復号ビデオデータのビット深度を減少させ得る。
【0128】
さらに、
図5の方法のステップは、必ずしも
図5に示す順序で実行される必要があるとは限らず、より少数の、追加の、または代替のステップが実行され得る。たとえば、メモリ利用管理を対象とする本開示の態様(たとえば、ステップ166〜168)は、上記で説明したように、出力ビット深度を決定することを対象とする本開示の態様(たとえば、ステップ162)とは無関係に実行され得る。
【0129】
その上、例によっては、本明細書で説明した技法のうちのいずれかの、いくつかの行為またはイベントは、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明した行為またはイベントが、本方法の実施のために必要であるとは限らない)ことをも理解されたい。さらに、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して、同時に実行され得る。
【0130】
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。
【0131】
このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0132】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【0133】
ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【0134】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)などの1つまたは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中に十分に実装され得る。
【0135】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【0136】
本開示の様々な態様について説明した。これらおよび他の態様は以下の特許請求の範囲内に入る。
以下に、本願の出願当初請求項に記載された発明を付記する。
[C1]
ビデオデータをコーディングする方法であって、
ビデオデータを出力するための第1のビット深度と、前記ビデオデータをコーディングするための第2のビット深度とを決定することであって、前記第1のビット深度が前記第2のビット深度よりも小さい、決定することと、
前記ビデオデータが、他のビデオデータをコーディングするときに参照データとして使用されるかどうかを決定することと、
前記決定に基づいて、前記ビデオデータが参照データとして使用されないときには前記第1のビット深度で前記ビデオデータを記憶し、前記ビデオデータが参照データとして使用されるときには前記第2のビット深度で前記ビデオデータを記憶することと
を備える方法。
[C2]
記憶することは、前記ビデオデータが参照データとして使用されないときに前記ビデオデータを前記第2のビット深度から前記第1のビット深度に変換することを含む、上記C1に記載の方法。
[C3]
前記ビデオデータを変換することが、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行することを含む、上記C2に記載の方法。
[C4]
前記ビデオデータが復号ピクチャを備え、前記ビデオデータを記憶することが、前記復号ピクチャを復号ピクチャバッファに記憶することを含む、上記C1に記載の方法。
[C5]
前記第1のビット深度で前記ビデオデータを受信することと、内部ビット深度増加(IBDI)プロセス中に、前記ビデオデータをコーディングするより前に前記第1のビット深度を前記第2のビット深度まで増加させることとをさらに備える、上記C1に記載の方法。
[C6]
前記ビデオデータをコーディングすることが、前記ビデオデータに対して高精度内部プロセス(HAIP)を実行することを含む、上記C1に記載の方法。
[C7]
前記第1のビット深度が8ビットであり、前記第2のビット深度が10ビットに等しいかまたはそれよりも大きい、上記C1に記載の方法。
[C8]
前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかの指示を符号化することをさらに備える、上記C1に記載の方法。
[C9]
前記指示を符号化することが、ビデオデータの符号化ビットストリーム中のシーケンスパラメータセット(SPS)および補足エンハンスメント情報(SEI)メッセージのうちの1つ中に前記指示を含めることを含む、上記C8に記載の方法。
[C10]
出力ビット深度が前記第2のビット深度に等しいかどうかの、ファイルフォーマットおよび記述子のうちの1つ中の指示をコーディングすることをさらに備える、上記C1に記載の方法。
[C11]
前記指示が出力ビット深度の指示を含む、上記C10に記載の方法。
[C12]
前記ファイルフォーマットが、ISOベースメディアファイルフォーマットおよびトランスポートストリームフォーマットのうちの1つを含む、上記C10に記載の方法。
[C13]
前記記述子が、HTTPベース動的適応ストリーミング(DASH)メディアプレゼンテーション記述(MPD)記述子を含む、上記C10に記載の方法。
[C14]
前記指示をコーディングすることが、前記指示を含んでいる前記ファイルフォーマットを復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを含む、上記C10に記載の方法。
[C15]
前記指示をコーディングすることが、前記指示を含んでいる前記記述子を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを含む、上記C10に記載の方法。
[C16]
前記指示をコーディングすることが、前記指示を含んでいるメディアプレゼンテーション記述(MPD)を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを含む、上記C10に記載の方法。
[C17]
ディスプレイデバイスの構成に基づいて、出力ビット深度が前記第1のビット深度を含むのか前記第2のビット深度を含むのかを決定することをさらに備える、上記C1に記載の方法。
[C18]
ビデオデータをコーディングするための装置であって、
ビデオデータを出力するための第1のビット深度と、前記ビデオデータをコーディングするための第2のビット深度とを決定することであって、前記第1のビット深度が前記第2のビット深度よりも小さい、決定することと、
前記ビデオデータが、他のビデオデータをコーディングするときに参照データとして使用されるかどうかを決定することと、
前記決定に基づいて、前記ビデオデータが参照データとして使用されないときには前記第1のビット深度で前記ビデオデータを記憶し、前記ビデオデータが参照データとして使用されるときには前記第2のビット深度で前記ビデオデータを記憶することと
を行うように構成された1つまたは複数のプロセッサを備える、装置。
[C19]
前記ビデオデータを記憶するために、前記1つまたは複数のプロセッサは、前記ビデオデータが参照データとして使用されないときに前記ビデオデータを前記第2のビット深度から前記第1のビット深度に変換するように構成された、上記C18に記載の装置。
[C20]
前記ビデオデータを変換するために、前記1つまたは複数のプロセッサが、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行するように構成された、上記C19に記載の装置。
[C21]
前記ビデオデータが復号ピクチャを含み、前記ビデオデータを記憶するために、前記1つまたは複数のプロセッサが、前記復号ピクチャを復号ピクチャバッファに記憶するように構成された、上記C18に記載の装置。
[C22]
前記1つまたは複数のプロセッサが、前記第1のビット深度で前記ビデオデータを受信することと、内部ビット深度増加(IBDI)プロセス中に、前記ビデオデータをコーディングするより前に前記第1のビット深度を前記第2のビット深度まで増加させることとを行うように構成された、上記C18に記載の装置。
[C23]
前記ビデオデータをコーディングするために、前記1つまたは複数のプロセッサが、前記ビデオデータに対して高精度内部プロセス(HAIP)を実行するように構成された、上記C18に記載の装置。
[C24]
前記第1のビット深度が8ビットであり、前記第2のビット深度が10ビットに等しいかまたはそれよりも大きい、上記C18に記載の装置。
[C25]
前記1つまたは複数のプロセッサが、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかの指示を符号化するようにさらに構成された、上記C18に記載の装置。
[C26]
前記指示を符号化するために、前記1つまたは複数のプロセッサが、ビデオデータの符号化ビットストリーム中のシーケンスパラメータセット(SPS)および補足エンハンスメント情報(SEI)メッセージのうちの1つ中に前記指示を含めるように構成された、上記C25に記載の装置。
[C27]
前記1つまたは複数のプロセッサは、出力ビット深度が前記第2のビット深度に等しいかどうかの、ファイルフォーマットおよび記述子のうちの1つ中の指示をコーディングするようにさらに構成された、上記C18に記載の装置。
[C28]
前記指示が出力ビット深度の指示を含む、上記C27に記載の装置。
[C29]
前記ファイルフォーマットが、ISOベースメディアファイルフォーマットおよびトランスポートストリームフォーマットのうちの1つを含む、上記C27に記載の装置。
[C30]
前記記述子が、HTTPベース動的適応ストリーミング(DASH)メディアプレゼンテーション記述(MPD)記述子を含む、上記C27に記載の装置。
[C31]
前記指示をコーディングするために、前記1つまたは複数のプロセッサが、前記指示を含んでいる前記ファイルフォーマットを復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを行うように構成された、上記C27に記載の装置。
[C32]
前記指示をコーディングするために、前記1つまたは複数のプロセッサが、前記指示を含んでいる前記記述子を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを行うように構成された、上記C27に記載の装置。
[C33]
前記指示をコーディングするために、前記1つまたは複数のプロセッサが、前記指示を含んでいるメディアプレゼンテーション記述(MPD)を復号することと、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかを決定することとを行うように構成された、上記C27に記載の装置。
[C34]
前記1つまたは複数のプロセッサは、ディスプレイデバイスの構成に基づいて、出力ビット深度が前記第1のビット深度を含むのか前記第2のビット深度を含むのかを決定するようにさらに構成された、上記C18に記載の装置。
[C35]
ビデオデータをコーディングするための装置であって、
ビデオデータを出力するための第1のビット深度と、前記ビデオデータをコーディングするための第2のビット深度とを決定するための手段であって、前記第1のビット深度が前記第2のビット深度よりも小さい、決定するための手段と、
前記ビデオデータが、他のビデオデータをコーディングするときに参照データとして使用されるかどうかを決定するための手段と、
前記決定に基づいて、前記ビデオデータが参照データとして使用されないときには前記第1のビット深度で前記ビデオデータを記憶し、前記ビデオデータが参照データとして使用されるときには前記第2のビット深度で前記ビデオデータを記憶するための手段と
を備える装置。
[C36]
記憶するための手段は、前記ビデオデータが参照データとして使用されないときに前記ビデオデータを前記第2のビット深度から前記第1のビット深度に変換するための手段を含む、上記C35に記載の装置。
[C37]
前記ビデオデータを変換するための手段が、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行するための手段を含む、上記C36に記載の装置。
[C38]
前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかの指示を前記ビデオデータの符号化ビットストリーム中に含めるための手段をさらに備える、上記C35に記載の装置。
[C39]
出力ビット深度が前記第2のビット深度に等しいかどうかの、ファイルフォーマットおよび記述子のうちの1つ中の指示をコーディングするための手段をさらに備える、上記C35に記載の装置。
[C40]
実行されたとき、1つまたは複数のプロセッサに、
ビデオデータを出力するための第1のビット深度と、前記ビデオデータをコーディングするための第2のビット深度とを決定することであって、前記第1のビット深度が前記第2のビット深度よりも小さい、決定することと、
前記ビデオデータが、他のビデオデータをコーディングするときに参照データとして使用されるかどうかを決定することと、
前記決定に基づいて、前記ビデオデータが参照データとして使用されないときには前記第1のビット深度で前記ビデオデータを記憶し、前記ビデオデータが参照データとして使用されるときには前記第2のビット深度で前記ビデオデータを記憶することと
を行わせる命令を記憶した、コンピュータ可読記憶媒体。
[C41]
前記ビデオデータを記憶するために、前記命令は、前記1つまたは複数のプロセッサに、前記ビデオデータが参照データとして使用されないときに前記ビデオデータを前記第2のビット深度から前記第1のビット深度に変換させる、上記C40に記載のコンピュータ可読記憶媒体。
[C42]
前記ビデオデータを変換するために、前記命令が、前記1つまたは複数のプロセッサに、前記第2のビット深度を前記第1のビット深度に変換するためにビットシフト演算を前記ビデオデータに対して実行させる、上記C41に記載のコンピュータ可読記憶媒体。
[C43]
実行されたとき、前記1つまたは複数のプロセッサに、前記第1のビット深度および前記第2のビット深度のうちのいずれにおいて前記ビデオデータを表示すべきかの指示を前記ビデオデータの符号化ビットストリーム中に含めさせる命令をさらに備える、上記C40に記載のコンピュータ可読記憶媒体。
[C44]
実行されたとき、前記1つまたは複数のプロセッサに、出力ビット深度が前記第2のビット深度に等しいかどうかの、ファイルフォーマットおよび記述子のうちの1つ中の指示をコーディングさせる命令をさらに備える、上記C40に記載のコンピュータ可読記憶媒体。