添付の図面を参照して、1または複数の実施形態または実施例を説明する。特定の設定および構成が説明されるが、これは例示のみを目的とされていることが理解されるべきである。当業者は、本説明の精神および範囲から逸脱することなく他の設定および構成が使用され得ることを理解するだろう。当業者には、本明細書において説明される技術および/または構成が、本明細書において説明される以外の他の種々のシステムおよびアプリケーションにおいても使用され得ることが明らかであろう。
以下の説明は、例えばシステムオンチップ(SoC)アーキテクチャなどのアーキテクチャで実現され得る様々な実施例を明らかにするが、本明細書において説明される技術および/または構成の実施例は特定のアーキテクチャおよび/またはコンピューティングシステムに制限されず、同様の目的で任意のアーキテクチャおよび/またはコンピューティングシステムで実装され得る。例えば、例えば多数の集積回路(IC)チップおよび/またはパッケージ、および/または、様々なコンピューティングデバイス、および/またはセットトップボックス、スマートフォン、その他などの消費者電子(CE)デバイスを使用する様々なアーキテクチャが、本明細書において説明される技術および/または構成を実装し得る。さらに、以下の説明は、ロジック実装、システムコンポーネントのタイプおよび相互関係、ロジック区分/統合の選択、その他など多数の具体的な詳細を明らかにするかもしれないが、特許請求される主題は、そのような特定の詳細なしでも実施され得る。他の例においては、本明細書において開示される素材を曖昧にしないよう、例えば制御構造および完全なソフトウェア命令シーケンスなど何らかの素材が詳細には示されていないかもしれない。
本明細書において開示される素材は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの何らかの組み合わせにより実装され得る。本明細書において開示される素材は、1または複数のプロセッサによって読み取られ実行され得る、マシン可読媒体に格納された命令としても実装され得る。マシン可読媒体は、マシン(例えば、コンピューティングデバイス)により読み取り可能な形態で情報を格納または送信するための何らかの媒体および/またはメカニズムを含み得る。例えば、マシン可読媒体は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、電子、光、音響、または他の形態の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号など)、およびその他を含み得る。
本明細書において「一実施例」、「実施例」、「例示的な実施例」、その他について言及した場合、その説明される実施例が、特定の特徴、構造、または特性を含み得ることを示すが、あらゆる実施形態がその特定の特徴、構造、または特性を必ずしも含まないかもしれない。さらに、そのようなフレーズは、必ずしも同じ実施例について言及しているとは限らない。さらに、特定の特徴、構造、または特性が実施形態に関連して説明された場合、本明細書において明示的に説明されていようとされていなかろうと、他の実施例に関連してそのような特徴、構造、または特性を実現することは当業者の知識の範囲に含まれるものである。
複数のスケーラブルビデオコーディングシステム、装置、物品および方法が以下で記述される。複数のスケーラブルビデオコーディングシステムにおいて、空間スケーラビリティ、一次的スケーラビリティ、クオリティスケーラビリティ、ビット深度スケーラビリティおよびその他を含むいくつかの種類のスケーラビリティをサポートすべく、マルチレイヤコーディングが用いられる。本開示に従って、スケーラブルビデオコーディングの効率、および/または、複数のスケーラブルビデオコーディングシステムにおける柔軟性を増加させるべく、多様なインターレイヤの動きデータ継承スキームが用いられうる。さまざまな実施例において、インターレイヤの動きデータ継承は、例えば、スケーラブルビデオコーディングにおけるインターレイヤ予測を可能にすべく、ビデオコーデック、ビデオエンコーダ、ビデオプロセッサ、メディアプロセッサ、またはその他のうち1または複数により使用されうる。
以下において、インターレイヤの動きデータ継承を含むビデオコーディングに関するシステム、装置、物品及び方法が説明される。
上述したように、高効率ビデオコーディング(HEVC)はスケーラブルビデオコーディング(SVC)拡張を含むことが期待される。HECV SVCビットストリームは、様々な空間解像度、フレームレート、品質、ビット深度およびその他でのソースビデオコンテンツを表すいくつかのサブセットビットストリームを含んでよい。次に、ベースレイヤ(BL)及び少なくとも1つのエンハンスメントレイヤ(EL)を一般的に含むマルチレイヤコーディング構造を用いてスケーラビリティが実現されてよく、これはより低いレイヤ映像(例えばBL映像)から、または同一レイヤにおいて既にコーディングされた映像から、ELに属する予測単位(PU)などの映像の部分、または映像が予測されることを可能にしうる。そのような技術は、現代のビデオサービス環境における複数のネットワーク及び複数のデバイスの不均一性に対処しうる。例えば、SVCビットストリームは、いくつかのサブセットビットストリームを含んでよい。サブセットビットストリーム自身はデコードされてよく、その結果、複数のサブストリームは、異なる解像度、フレームレート、品質、ビット深度およびその他を有するソースビデオコンテンツを表しうる。よって、多様なネットワーク及び複数のデバイスにおいて、例えば、帯域幅または複数のデバイス制限に基づいて、異なるビデオ品質が実現されうる。
以下でより詳細に説明されるように、動きデータは、ビデオコーダ(例えばエンコーダまたはデコーダ)を介して、ビデオデータの参照レイヤ(すなわちベースレイヤまたはより低いレベルのエンハンスメントレイヤ)で特定されうる。動きデータに基づいて、または部分的に基づいて、動き補償はエンハンスメントレイヤ(すなわち、参照レイヤの上位レイヤでの任意のエンハンスメントレイヤ)において実行されうる。これにより、エンハンスメントレイヤでの動き補償は単純化されてよく、計算資源が節約されうる。いくつかの実施例において、動き補償はエンコーダで実行されてよく、ビットストリームはエンハンスメントレイヤでの動き補償に部分的に基づいてエンコードされてよい。他の実施例において、動き補償はデコーダで実行されてよく、例えばディスプレイデバイスを介しての表示のために、エンハンスメントレイヤ出力フレームがエンハンスメントレイヤでの動き補償に部分的に基づいて生成されてよい。
本明細書で用いられるように、「コーダ」という用語は、エンコーダおよび/またはデコーダを指し得る。同様に、本明細書で用いられるように「コーディング」という用語は、エンコーダを介してビデオエンコードを実行すること、および/または、デコーダを介してビデオデコードを実行することを指し得る。例えば、ビデオエンコーダおよびビデオデコーダは両方とも、ビデオデータのコーディングが可能な複数のコーダの複数の例であり得る。加えて、本明細書で用いられるように、「コーデック」という用語は、エンコーダおよび/またはデコーダを実装し得る、例えば、ソフトウェア、ファームウェア、および/またはハードウェアの任意の組み合わせなど、任意の処理、プログラム、または複数の動作のセットを指し得る。さらに、本明細書で用いられるように、「動きデータ」というフレーズは、これに限定されるものではないが、1または複数の動きベクトル、参照インデックスおよび/またはインターディレクションを含むインター予測に関連付けられる任意のタイプのデータを指し得る。
図1は、本開示の少なくともいくつかの実施例に従って構成された、例示的なスケーラブルビデオコーディング(SVC)のコーディングシステム100を示す。一般的に、システム100は、スケーラブルビデオコーディングを実行する方法が実装されたコンピュータを提供しうる。さまざまな実施例において、システム100は、ビデオの圧縮及び復元を実行し(undertake)、かつ/または、例えば、高効率ビデオコーディング(HEVC)規格(ISO/IEC JTC/SC29/WG11及びITU-T SG16 WP3「High efficiency video coding(HEVC) text specification draft 8」(JCTVC−J1003_d7)、2012年7月を参照)及びその任意のスケーラブルビデオコーディング(SVC)拡張などの1または複数の規格または仕様に係るビデオコーデックを実装しうる。システム100および/または他の複数のシステム、複数のスキームまたは複数の処理は本明細書でHEVC規格のSVC拡張の文脈で記述されうるが、本開示はいかなる特定のビデオエンコード規格または仕様、あるいはその拡張にも限定されない。
HEVC規格は、次に複数のコーディング単位(CU)に分割されうる映像に対し、最大コーディング単位(LCU)を指定する。複数のコーディング単位は、可変サイズを有する矩形ブロックの形状をとる。それぞれのLCU内で、4本木ベースの分割手法がCU分割パターンを指定しうる。HECVはさらに、与えられるCUが予測及び変換のためにそれぞれ、どのように分割されるかを指定しうる変換単位(TU)及び予測単位(PU)を定義する。CUは、全体として1つの輝度(luma)コーディングブロック(CB)及び2つのクロマCBを、関連するシンタックスとともに含んでよい。PUは、64×64サンプルから4×4サンプルのサイズ範囲の複数の予測ブロック(PB)にさらに分割されてよい。本明細書で用いられるように、「ブロック」という用語は、ビデオ映像の任意のパーティションまたはサブパーティションを指してよい。例えば、ブロックはPU、PB、TU、CUまたはCB、またはその他を指してよい。
図示されるように、システム100は、エンコーダサブシステム101を備えてよい。エンコーダサブシステム101は、レイヤ0またはベースレイヤ(BL)エンコーダ102、レイヤ1または第1エンハンスメントレイヤ(EL)エンコーダ104、及びレイヤ2または第2ELエンコーダ106を含む多くのビデオエンコーダを有してよい。システム100はさらに、レイヤ0(BL)デコーダ108、レイヤ1(EL)デコーダ110、及びレイヤ2(EL)デコーダ112を含むデコーダサブシステム103の複数の対応ビデオデコーダを有してよい。一般的に、BLはHEVCに互換性を有してコーディングされうる。Nに等しいレイヤアイデンティフィケーション(ID)を有するELをコーディングする場合に、例えば、複数のSVCコーディングスキームは、Nより小さいレイヤIDを有する全てのコーディングレイヤを、複数のインターレイヤ予測スキームでの使用に提供することで、より低いレイヤ映像(例えばBL内または1または複数の、より低いレイヤEL)から、或いは、同一EL内で既にコーディングされた複数の映像から、特定のELに属する映像が予測されうる。
本開示に従い、以下でより詳細に説明されるように、ELエンコーダ104および106のいずれか一方または両方は、限定されるものではないが、動き補償を実行するエンコーダ102または104のいずれか一方から取得される1または複数の動きベクトル、参照インデックス、および/または、インターディレクションなどの動きデータを使用してよい。例えば、いくつかの実施例において、エンコーダ104は、エンコーダ102から取得される動きデータ114の少なくとも一部を用いて動き補償を実行しうる。さらに、いくつかの実施例において、エンコーダ106は、エンコーダ102および/またはエンコーダ104からそれぞれ取得される動きデータ114および/または動きデータ118の少なくとも一部を用いて動き補償を実行しうる。
本明細書で用いられるように、「インターレイヤ予測」という用語は、より低いレイヤ映像の1または複数の対応ブロック(例えばBLまたはより低いELレイヤ映像の1または複数のPU)に関連付けられた動きデータの少なくとも一部を用いて、予測単位(PU)などのELブロックの一部分に対してインター予測を実行する間に動き補償を実行することを指す。ELインター予測において継承された動きデータを用いることは、コーディングシステムがさまざまなELブロックに対して別個の動きデータを提供する代わりに動きデータを再利用することを可能にすることで、システム100などのSVCシステムの圧縮効率及びコーディング柔軟性を向上しうる。さまざまな実施例において、本開示に従い、インターレイヤ予測は、一時的、空間、ビット深度、および/または質的スケーラブルなビデオコーディングアプリケーションの任意の組み合わせにおいて適用されうる。
説明されるように、ELは、動き補償を実行するべく、継承された動きデータを使用しうる。さらに説明されるように、動きデータは、BLまたはより低いレベルのEL(または両方)からELで受信されうる。本明細書で用いられるように、「参照レイヤ」(RL)という用語は、動き補償を実行すべく動きデータを受信及び使用するELに対して動きデータを提供しうるBLまたはELのいずれか一方を指す。一般的に、動き補償を実行するべく動きデータを受信及び使用するELは、「ターゲットEL」または単純にELとみなされうる。
エンコーダ102、104および106の1つまたは複数を使用することで、エンコーダサブシステム101は、別個のビットストリームをエントロピーエンコーダ124に提供しうる。エントロピーエンコーダ124は次に、スケーラブルビデオコンテンツにおける複数のレイヤを含む、圧縮ビットストリーム126をデコーダサブシステム103のエントロピデコーダ128に提供しうる。本開示に従い、さらに以下でより詳細に説明されるように、ELデコーダ110および112のいずれか一方または両方は、ビデオデータをデコードする場合に、デコーダ108または110のいずれか一方から取得される動きデータを使用して、インター予測を実行してよい。例えば、いくつかの実施例において、デコーダ110は、デコーダ108から取得される動きデータ130を用いて動き補償を実行しうる。さらに、いくつかの実施例において、デコーダ112は、デコーダ108および/またはデコーダ110のいずれか一方または両方からそれぞれ取得される動きデータ130および/または動きデータ132を用いて動き補償を実行しうる。
図1では、システム100がスケーラブルビデオコンテンツの3つのレイヤと、サブシステム101における3つのエンコーダ及びサブシステム103における3つのデコーダの対応する複数のセットと、を使用するよう図示されているが、本開示に従って、任意の数のスケーラブルビデオコーディングレイヤと、対応するエンコーダ及びデコーダとが利用されてよい。さらに、本開示は、図1に示された特定のコンポーネント、および/または、システム100の様々なコンポーネントが構成された態様には限定されない。
さらに、エンコーダサブシステム101は、例えばビデオコンテンツサーバシステムを含むコンテンツプロバイダシステムに関連し得る、および/またはそれにより提供され得ること、並びに、ビットストリーム126は、図1に描かれていない複数の送受信機、アンテナ、ネットワークシステム、およびその他など様々な通信コンポーネントおよび/またはシステムによりデコーダサブシステム103へと伝送または伝達され得ることが理解されよう。またデコーダサブシステム103は、図1に描かれていない複数の送受信機、アンテナ、ネットワークシステム、およびその他などの様々な通信コンポーネントおよび/またはシステムを介してビットストリーム126を受信するコンピューティングデバイス(例えば、デスクトップ型コンピュータ、ラップトップコンピュータ、タブレット型コンピュータ、携帯電話、またはその他)などのクライアントシステムに関連し得ることも理解されよう。よって、さまざまな実施例において、エンコーダサブシステム101及びデコーダサブシステム103は、一緒にまたは相互に独立に実装されてよい。さらに、本明細書で説明される複数のシステム、装置、及び方法はEL映像のPUなどのブロックに対してインターレイヤ予測を実行することを指しうるが、本開示はこの点に関して限定されず、インターレイヤ予測は、本明細書で説明されるように、例えばPUのPBサブパーティションまたは他の任意のブロックを含むEL映像の任意のパーティションに対して実行されてよい。
図2は、本開示の少なくともいくつかの実施例に従って構成された、例示的なSVCエンコードシステム200を示す。示されるように、システム200は、BLエンコーダ202及びELエンコーダ204を備えてよい。BLエンコーダ202及びELエンコーダ204は、一例においてシステム100のエンコーダ102及びエンコーダ104にそれぞれ対応しうる。システム200は、例えば、ベースレイヤエンコーダ及びエンハンスメントレイヤエンコーダなど、2つのSVCコーディングレイヤに対応する2つのエンコーダ202および204だけを備えてよいが、本開示に従って、図2に描かれたものに加え、任意の数のSVCコーディングレイヤと、対応するエンコーダとが利用されてよい。例えば、複数の追加のエンハンスメントレイヤに対応する追加の複数のエンコーダがシステム200に備えられてよく、エンコーダ204に関し以下で説明されるのと同様の態様でエンコーダ202とインタラクトしてよい。例えば、説明の明確性の目的でBLエンコーダ202及びELエンコーダ204に関して説明されているが、システム200は、本明細書で説明されるように、参照レイヤ及びエンハンスメントレイヤに関連付けられた任意の参照レイヤエンコーダ及びエンハンスメントレイヤエンコーダを備えてよい。一般的に、参照レイヤエンコーダは、(示されるように)ベースレイヤに対するエンコーダであってよく、或いは、ELエンコーダ204に関連付けられたエンハンスメントレイヤより低いレベルの任意のエンハンスメントレイヤに対するエンコーダであってよい。
示されるように、BLエンコーダ202はBL入力フレーム208を受信してよく、ELエンコーダ204はEL入力フレーム206を受信してよい。一般的に、入力フレーム208はビデオデータ250のBLに関連付けられてよく、EL入力フレーム206はビデオデータのEL(ターゲットELなど)に関連付けられてよい。他の実施例において、ビデオデータ250は、説明されるように、参照レイヤ及びエンハンスメントレイヤを含んでよい。
システム200を使用してSVCコーディングを実行する場合に、EL入力フレーム206の少なくともいくつかのブロックは、BLエンコーダ202により処理されるに従ってBL入力フレーム208の1または複数のブロックから、或いは、ELエンコーダ204により既にエンコードされた、同一のエンハンスメントレイヤにおける他の複数の映像から、ELエンコーダ204によって予測されうる。以下でより詳細に説明されるように、システム200を用いてインターレイヤ予測動作を実行する場合に、EL入力フレーム206の1または複数のブロックは、BLエンコーダ202から継承されBLエンコーダ202によって提供された動きデータ210の少なくとも一部を用いて、動き補償されうる。さまざまな実施例において、動きデータ210は、1または複数の動きベクトル、参照インデックス、および/またはインターディレクション、またはその他を含んでよい。さらに、本明細書で説明されるように、EL動き補償を実行するための、継承された動きデータの使用は、スライス、映像またはレイヤレベルで適用されてよい。
動きデータ210は、変換及び量子化モジュール212、逆変換及び量子化モジュール214、インループフィルタリングモジュール216、参照バッファ218、動き補償モジュール220または動き推定モジュール222、またはその他を含みうるコーディングループを用いたBL入力フレーム208の処理に基づいて特定されてよい。図2に示されるように、動きデータ210は、動き推定モジュール222から取得されうる。いくつかの実施例において、BLエンコーダ202は、イントラ予測モジュール224をさらに含んでよい。モジュール212、214、216、218、220および224の機能は、本技術分野においてよく理解され、本明細書では詳細には何ら説明されない。
示されるように、ELエンコーダ204では、BLエンコーダ202により提供される動きデータ210は、動き補償モジュール226で受信されてよく、また、コーディングループを用いてEL入力フレーム206の複数のブロックに対して動き補償を実行するべく、少なくとも一部が用いられてよい。コーディングループは、変換及び量子化モジュール228、逆変換及び逆量子化モジュール230、参照バッファ234または動き補償モジュール226、またはその他を含んでよい。ELエンコーダ204は、さらにイントラ予測モジュール238を含んでよい。モジュール228、230、233および234の機能は、本技術分野においてよく理解され、本明細書では詳細には何ら説明されない。示されるように、本開示に従って、ELエンコーダ204は、EL入力フレーム206の複数のブロックに対して動き補償を実行するべく、動きデータ210を用いてよい。例えば、ELエンコーダ204は、EL入力フレーム206の複数のブロックに対して動き補償を実行するために、動き推定モジュール236を使用するよりもむしろ、動きデータ210を使用してよい。例えば、ELエンコーダ204は、動きデータ210の少なくとも一部に基づいて、ビデオデータ250のエンハンスメントレイヤのブロックに対し、動き補償モジュール226において動き補償を実行してよい。理解されるように、動き補償は、多数のEL入力フレーム(EL入力フレーム206など)の任意の数のブロックに対し実行されてよい。
さまざまな実施例において、BLエンコーダ202及びELエンコーダ204のいずれか一方または両方は、BL入力フレーム208の少なくともいくつか、及び、EL入力フレーム206の少なくともいくつかのそれぞれのコーディング残差に対応する圧縮係数をエントロピーエンコーダモジュール240に提供しうる。エントロピーエンコーダモジュール240は、複数の残差の可逆圧縮を実行してよく(例えばContext−adaptive binary arithmetic coding(CABAC)を介して)、システム200から出力されるときに複数のエンコード残差を含む多重SVCビットストリーム242を提供してよい。さらに、以下でより詳細に説明されるように、ビットストリーム242は、与えられるELブロックに対して動き補償を実行するべく、継承された動きデータを使用するか否かを指定する、フラグなどのインジケータを含んでよい。以下でより詳細に説明されるように、そのようなインジケータの値に応じて、デコードシステムは、本明細書で説明されるように、継承される動きデータを用いてインターレイヤ予測を実行してもよいし、実行しなくてもよい。さらに、以下でより詳細に説明されるように、ビットストリーム242は、ベースレイヤ(例えば参照レイヤ)及びエンハンスメントレイヤの間の空間スケーラビリティに関連付けられる倍率(scaling factor)を含んでよい。そのような倍率の値に応じて、デコードシステムは、空間スケーラビリティを補償すべく、動きデータ(例えば動きベクトルまたはその他)をスケーリングしてよい。
説明されるように、ビデオデータ250の参照レイヤ(示された例におけるベースレイヤ)に関連付けられた動きデータ210が特定されてよく、ビデオデータ250のエンハンスメントレイヤのブロックに対する動き補償が動きデータ210の少なくとも一部に基づいて実行されてよい。本明細書でさらに説明されるように、いくつかの実施例においては、動きデータ210を特定するべく、エンハンスメントレイヤのブロックに関連する参照レイヤのコロケートブロックが特定されうる。いくつかの実施例においては、参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティがイネーブルされる。また、コロケートブロックの特定がエンハンスメントレイヤのブロックの左上位置、中心位置、または右下位置の少なくとも1つを用いてコロケートブロックを特定することを含みうるように、エンハンスメントレイヤ映像サイズは参照レイヤ映像サイズより大きくてよい。さらに、動き補償の実行に先立って、動きデータ210は、動きデータ210の1または複数の動きベクトルに対して倍率を適用することにより、スケーリングされてよい。倍率は、本明細書でさらに説明されるように、事前に定義されるか、適応性であってよい。さらに、示されるように、ビットストリーム242は、実行された動き補償の少なくとも一部に基づいてエンコードされてよい。
図3は、本開示の少なくともいくつかの実施例に従って構成された、例示的なSVCデコードシステム300を示す。システム300は、例えば、システム100のデコーダ108及びデコーダ110にそれぞれ対応しうるBLデコーダ302及びターゲットELデコーダ304を備える。システム300は2つのSVCコーディングレイヤに対応する2つのデコーダ302および304だけを含むが、本開示に従って、図3に描かれたものに加え、任意の数のSVCコーディングレイヤと、対応するデコーダとが利用されてよい。例えば、追加のエンハンスメントレイヤに対応する追加の複数のデコーダがシステム300に備えられてよく、ELデコーダ304に関して以下で説明されるのと同様の態様でBLデコーダ302とインタラクトしてよい。例えば、説明の明確性の目的でBLデコーダ302及びELデコーダ304に関して説明されているが、システム300は、本明細書で説明される参照レイヤ及びエンハンスメントレイヤに関連付けられた任意の参照レイヤデコーダ及びエンハンスメントレイヤデコーダを備えてよい。一般的に、参照レイヤデコーダは、(示されるように)ベースレイヤに対するデコーダであってよく、或いは、ELデコーダ304に関連付けられたエンハンスメントレイヤより低いレベルの任意のエンハンスメントレイヤに対するデコーダであってよい。
システム300を使用してSVCコーディングを実行する場合に、EL出力フレーム306の様々なブロックは、BLデコーダ302により処理されるに従ってBL出力フレーム308のブロックから、或いは、ELデコーダ304により既にデコードされた、同一のELにおける他の複数の映像から、ELデコーダ304によってインター予測されうる。以下でより詳細に説明されるように、EL出力フレーム306における複数のブロックのそのようなインター予測は、BLデコーダ302により提供される動きデータ310を用いてよい。動きデータ310は、BLデコーダ302のインター予測モジュール316(例えば動き推定モジュールを有する)から取得されうる。BLデコーダ302はさらに、逆変換及び量子化モジュール314、イントラ予測モジュール312および/またはインループフィルタリングモジュール318を含んでよい。
以下でより詳細に説明されるように、動きデータ310は、ELデコーダ304のインター予測モジュール324に提供されてよい。ELデコーダ304はさらに、逆変換及び量子化モジュール322、イントラ予測モジュール320及びインループフィルタリングモジュール326を含んでよい。インターレイヤ予測を実行するべく操作される場合に、ELデコーダ304は、インター予測モジュール324(例えば動き補償モジュールを有する)及び継承される動きデータ310を用いて、EL出力フレーム306の様々なブロックの画素データを再構成してよい。さらに、ELデコーダ304は、ビットストリーム301において提供されるインジケータの値に基づいてそうしてよい。ここで、ビットストリーム301は、図1のビットストリーム126、図2のビットストリーム242またはその他に対応する。例えば、ビットストリーム201は、動き補償を実行するか否かを指定するインジケータ(例えばビットストリームフラグ)を含んでよい。ビットストリームはインジケータを特定すべくアクセスされてよく、動き補償が実行されるべきとインジケータが指定する場合には、インター予測モジュール324は、動きデータ310の少なくとも一部に基づいて、ビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償を実行してよい。
説明されるように、ビデオデータ(すなわちビットストリーム301に関連付けられたビデオデータ)の参照レイヤ(示された例におけるベースレイヤ)に関連付けられた動きデータ310が特定されてよく、ビデオデータのエンハンスメントレイヤのブロックに対する動き補償が動きデータ310の少なくとも一部に基づいて実行されてよい。本明細書でさらに説明されるように、いくつかの実施例においては、動きデータ310を特定するべく、エンハンスメントレイヤのブロックに関連する参照レイヤのコロケートブロックが特定されうる。いくつかの実施例においては、参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティがイネーブルされる。また、コロケートブロックの特定がエンハンスメントレイヤのブロックの左上位置、中心位置、または右下位置の少なくとも1つを用いてコロケートブロックを特定することを含みうるように、エンハンスメントレイヤ映像サイズは参照レイヤ映像サイズより大きくてよい。さらに、動き補償の実行に先立って、動きデータ310は、動きデータ310の1または複数の動きベクトルに対して倍率を適用することにより、スケーリングされてよい。倍率は、本明細書でさらに説明されるように、事前に定義されるか、適応性であってよい。いくつかの実施例において、倍率はビットストリーム301に含まれてよい。他の実施例において、倍率はシステム300により特定されてよい。さらに、示されるように、EL出力フレーム306は、動き補償の少なくとも一部に基づいて生成されてよい。
本明細書で説明される本システムの様々なコンポーネントは、ソフトウェア、ファームウェアおよび/またはハードウェア、および/またはそれらの組み合わせに実装されてよい。例えば、システム300の様々なコンポーネントは、例えばスマートフォンなどのコンピューティングシステムにおいて見られるようにコンピューティングシステムオンチップ(SoC)のハードウェアにより少なくとも部分的に提供され得る。対応する図に描かれていない追加コンポーネントを、本明細書で説明される複数のシステムが含みうることを当業者は理解しうる。例えば、システム100、200および300は、明確性のために図1,2及び3において描かれていないビットストリームマルチプレクサまたはデマルチプレクサモジュールなどの追加コンポーネントを含んでよい。
図11は、本開示の少なくともいくつかの実施例に従って構成された、例示的なビデオコーディング処理1100を説明するフローチャートである。示される実施例において、処理1100は、ブロック1102および/または1104の1または複数によって図示されるように、1または複数の動作、機能またはアクションを含んでよい。非限定的な例として、処理1100は、例示的なビデオコーディングシステム200またはビデオコーディングシステム200に関して本明細書で説明される。図示されるように、処理1100はエンコードを対象とするが、説明されるコンセプトおよび/または動作は、一般的にデコードを含むコーディングに対して同一の、または同様の態様で適用されうる。
処理1100は、スケーラブルビデオコーディングを実行する、コンピュータ実装された方法として利用されうる。処理1100は、動作1102の「ビデオデータの参照レイヤに関連する動きデータを特定する」で開始し、ビデオデータの参照レイヤに関連付けられた動きデータが特定されうる。例えば、動きデータ210はBLエンコーダ202で特定されてよく、または、動きデータ310はBLデコーダ302で特定されてよい。説明されるように、動きデータは、例えば、1または複数の動きベクトル、参照インデックスおよび/またはインターディレクションを含んでよい。さらに説明されるように、参照レイヤは、ベースレイヤまたは、ターゲットエンハンスメントレイヤ(すなわち動きデータが転送されるエンハンスメントレイヤ)より低いレベルであるエンハンスメントレイヤであってよい。
処理は動作1102から動作1104の「動きデータの少なくとも一部に基づいてビデオデータにおけるエンハンスメントレイヤのブロックに対する動き補償を実行する」に続いてよく、動きデータの少なくとも一部に基づいて、ビデオデータにおけるエンハンスメントレイヤのブロックに対する動き補償が実行されうる。例えば、ELエンコーダ204は、動きデータ210の少なくとも一部に基づいて動き補償を実行してよく、または、ELデコーダ304は動きデータ310の少なくとも一部に基づいて動き補償を実行してよい。本明細書でさらに説明されるように、コロケートブロックがエンハンスメントレイヤのブロックに関連付けられるように、参照レイヤのコロケートブロックが特定されうる。本明細書でさらに説明されるように、動き補償の実行に先立って、倍率が動きデータに適用されうる。
一般的に、処理1100は、エンハンスメントレイヤの任意の数のブロックに対し、および/または、データの任意の数のフレームまたはその他に対し、直列にまたは並列して、任意の回数、反復されうる。結果としての動き補償は、例えば、ビットストリームをエンコードするのに用いられてよく、或いは、ディスプレイデバイスを介しての表示のための1または複数のエンハンスメントレイヤフレームを生成するのに用いられてよい。処理1100に関連するいくつかの追加のおよび/または代替の詳細は、本明細書で、特に以下の図12に関して説明される1または複数の実施例で示されてよい。
図4は、本開示の少なくともいくつかの実施例に従って構成された、例示的な処理400を説明するフロー図を示す。処理400は、図4のブロック401、402、404、406、408および410の1または複数により図示されるように、1または複数の動作、機能またはアクションを含んでよい。処理400は、スケーラブルビデオコーディング処理の少なくとも一部を形成しうる。本明細書で説明されるように、処理400またはその複数の部分は、実行されてスケーラブルビデオエンコード処理の少なくとも一部を形成しうるが、非限定的な例として、処理400は、図3のデコーダシステム300により実行されるような、1または複数のELレイヤブロックに対するスケーラブルビデオデコード処理の少なくとも一部を形成しうる。
さらに、処理400は、図5のスケーラブルビデオコーディングシステム500を用いたELPUのコーディングに関して本明細書で説明される。図5は、本開示の少なくともいくつかの実施例に従って構成された、例となるシステム500の説明図である。図5で示されるように、システム500は、プロセッサ502、SVCコーデックモジュール506、及びメモリ508を含んでよい。プロセッサ502は、SVCコーデックモジュール506をインスタンス化して本開示に係るインターレイヤ予測を提供しうる。以下でより詳細に説明されるように、システム500の例において、メモリ508は、動きデータなどの他のアイテム(複数の動きベクトル、複数の参照インデックスおよび/または複数のインターディレクションを含む)だけでなく、BL出力フレーム308の少なくともいくつかおよび/またはEL出力フレーム306の少なくともいくつかを含むビデオコンテンツを格納してよい。SVCコーデックモジュール506は、ソフトウェア、ファームウェアおよび/またはハードウェアの任意の組み合わせにより提供されうる。本明細書でさらに説明されるように、いくつかの実施例において、SVCコーデックモジュール506は、または、より一般的に、ロジックモジュールは、インターレイヤ動きデータ継承モジュールを含んでよい。動きデータ継承モジュールは、例えば、ビデオデータの参照レイヤに関連する動きデータを特定し、動きデータの少なくとも一部に基づいてビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償を実行するよう構成されうる。メモリ508は、揮発性メモリ(例えばスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)など)または不揮発性メモリ(例えばフラッシュメモリなど)およびその他などの任意のタイプのメモリであってよい。非限定的な例において、メモリ508は、キャッシュメモリにより実施されてよい。
図4の議論に戻り、処理400は、決定ブロック401の「ELブロックに対してインターレイヤ予測を実行する?」で開始してよく、現在のELブロックに対してインターレイヤ予測が実行されるべきか否かに関する判断が行われてよい。インターレイヤ予測が実行されるべきである場合には、次に処理400はブロック402に続いてよいが、インターレイヤ予測が実行されるべきではない場合には、処理400は終了してよい。デコーダの実施例など、いくつかの実施例において、インターレイヤ予測が実行されるべきであるかの判断は、ビットストリームにアクセスしてインジケータ(例えばビットストリームフラグ)を特定することを含んでよく、その結果、動き補償を実行するかをインジケータが指定する。
処理400は、ブロック402の「ELブロックに対応するコロケートベースレイヤ(BL)ブロックを特定する」に続いてよく、現在のELブロックに対し、ELブロックに対応するBLの1または複数のコロケートブロックが特定されてよい。例えば、図6は、本開示の少なくともいくつかの実施例に従って構成された、一例のコーディングスキームの説明図である。図6は、EL出力フレーム306の現在のブロック(本実施例においてはPU)602を示し、PU602は、BL出力フレーム308の1より多いコロケートブロックに対して空間的に対応する。本実施例において、PU602は、BL出力フレーム308の4つのコロケートブロック604に対応する。しかしながら、さまざまな実施例においては、ELと、BLまたはより低いレベルのELとの間での空間のスケーリングに応じて、任意の数のBL、または、より低いレベルのELブロックは、特定のEL PUに関して配列されうる(コロケートでありうる)。他の実施例において、BLまたはより低いレベルのELブロックの一部分だけが、EL PUと配列されうる。本明細書で用いられるように、「コロケート」という用語は、ELの1または複数のブロックと、ELレイヤのブロックとの間の空間相関を指し、「同じ場所に位置(co−located)」という用語と同じことを意味するとみなされるべきである。
さらに、ELと、より低いELまたはBLレイヤとの間で空間のスケーリングが適用されない、いくつかのスケーラブルコーディングの実施例において、ELにおける複数のブロックと、より低いELまたはBLにおける 複数のブロックとの間には、空間的に1対1の対応があってよい。図6の例に関し、ブロック402での複数のコロケートブロックの特定は、現在のPU602に関し、複数のブロック604がコロケートであるとマーキングすること、さもなければラベリングすることを伴ってよい。
EL及びBLの間の空間比率が1より大きくなるように空間のスケーリングが適用される、さまざまな実施例において、複数のコロケートBLブロックを得るのにELブロックの異なる複数の位置が用いられてよい。例えば、さまざまな実施例において、PU602の左上位置、中心位置または右下位置は、BL出力フレーム308内でコロケートブロック604を特定するのに用いられてよい。いくつかの実施例において、参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティがイネーブルされてよく、エンハンスメントレイヤのエンハンスメントレイヤ映像サイズは、参照レイヤの参照レイヤ映像サイズよりも大きくてよい。そのような例において、コロケートブロックの特定は、エンハンスメントレイヤのブロックの左上位置、中心位置または右下位置の1つを用いて参照レイヤのコロケートブロックを特定することを含んでよい。
処理400は、ブロック404の「コロケートBLブロックの動きデータにアクセスする」に続いてよく、コロケートブロックに対応する動きデータがアクセスされうる。例えば、図5、6を参照し、ブロック404は、プロセッサ502を用い、SVCコーデックモジュール506を伴って、複数のコロケートブロック604の1または複数に対応する動きデータをメモリ508から取得してよい。例えば、メモリ508は、複数のブロック604に関連付けられた動きデータだけでなく、BL出力フレーム308の複数の部分などのビデオコンテンツを一時的に格納するフレームバッファとして動作してよい。
さまざまな実施例において、ブロック404でアクセスまたは継承される動きデータは、複数の動きベクトル、複数の参照インデックスおよび/または複数のインターディレクションの任意の組み合わせを含んでよい。いくつかの実施例においては、複数のコロケートBLブロックの複数の動きベクトル、複数の参照インデックス及び複数のインターディレクションの全てはアクセスまたは継承されてよく、他の実施例においては、複数のBLブロックの複数の動きベクトルだけが継承されてよく、さらに他の実施例においては、複数のBLブロックの複数の参照インデックス及び複数のインターディレクションだけがELブロックに継承されてよく、その他も同様である。
いくつかの実施例において、複数のコロケートBLブロックは、全てのインターコーディングブロックを含んでよい。他の実施例において、複数のコロケートBLブロックは複数のハイブリッドコーディングブロックを含んでよく、その結果、複数のコロケートBLブロックのいくつかの部分はインターコーディングされるが、他の複数の部分はイントラコーディングされる。そのような実施例において、ブロック404は、複数のコロケートBLブロックのイントラコーディングされた複数の部分に対して動きデータを指定することを伴ってよい。たとえば、複数のコロケートBLブロックのイントラコーディングされた複数の部分は、インターコーディングされた近隣の複数の部分、例えば左、上、右上の空間的に近隣の複数の部分などの、または、一時的な複数のコロケートブロックの動きデータに関連付けられてよい。他の実施例において、複数のコロケートBLブロックのイントラコーディングされた複数の部分は、(0,0)に等しい動きベクトル、0に等しい参照インデックス、および/または、スライスタイプに等しいインターディレクション(片予測(uni−prediction)または両予測(bi−prediction))またはその他に関連付けられてよい。
複数のコロケートBLブロックのいくつかの複数の部分はインターコーディングされるが、他の複数の部分はイントラコーディングされるように、複数のコロケートBLブロックがハイブリッドコーディングされるいくつかの実施例において、ブロック404は、複数のコロケートBLブロックのイントラコーディングされた複数の部分に対して補償された複数のピクセルを指定することを伴ってよい。例えば、複数のコロケートBLブロックのイントラコーディングされた複数の部分は、複数のインターレイヤコロケートブロックの復元された画素で埋められてよい。また、空間スケーラビリティの場合に、複数のインターレイヤブロックの復元された画素は、アップサンプリングされてよい。
さまざまな実施例において、ブロック404でアクセスまたは継承される動きデータは、様々な粒度で継承されてよい。例えば、16×16のPUに対し、動きベクトルは4×4、8×8または16×16の粒度で継承されてよいが、8×16のPUに対し、動きベクトルは4×4または8×8その他の粒度で継承されてよい。
処理400は決定ブロック406の「動きデータをスケーリングする?」に続いてよく、ブロック404でアクセスされた動きデータをスケーリングするか否かの判断が行われてよい。判断が肯定的である場合には、次に処理400はブロック408の「動きデータに倍率を適用する」に進んでよく、動きデータに倍率が適用されてよい。例えば、EL及びBLの間の空間比率が1より大きくなるよう空間のスケーリングが適用される場合には、ブロック404のようにアクセスされる1または複数の動きベクトルは、空間比率に対応する倍率を適用することにより、ブロック408でアップサンプリングされてよい。さまざまな実施例において、ブロック408で適用されるアップサンプルの倍率は、固定倍率であってもよいし、適応性の倍率であってもよい。固定倍率に関し、倍率は事前に定義され、エンコーダ及びデコーダの両方で用いられてよい。適応性のスケーリングを用いる実施例において、倍率は、エンコーダ側で仕込まれ、次に、ビットストリーム内でデコーダに通信されてよい。例えば、図1を参照し、エンコーダサブシステム101は、ビットストリーム126を使用して適応性の倍率をデコーダサブシステム103に通信してよい。デコーダは、例えば、ビデオデータに関連付けられたビットストリームにアクセスし、倍率を特定してよい。
次に、処理400は、ブロック410の「動きデータの少なくとも一部を用いてELブロックに対して動き補償を実行する」で終わってよく、ブロック404でアクセスされ、必要に応じてブロック408でアップサンプリングまたはスケーリングされた動きデータの少なくとも一部を用い、ELブロックに対して動き補償が実行されてよい。さまざまな実施例において、ブロック410は、例えば、コロケートBLブロックから継承された動きベクトルを用いてELブロックを動き補償することを伴ってよい。例えば、ビデオデータにおけるエンハンスメントレイヤのブロックに対する動き補償は、動きデータの少なくとも一部に基づいて実行されてよい。一般的に、動きデータは、動きベクトル、参照インデックスまたはインターディレクション、またはその他を含んでよい。
説明されるように、さまざまな実施例において、複数のコロケートBLブロックの複数の参照映像がELブロックの複数の参照映像と異なる場合に、ブロック404でアクセスされる複数のコロケートBLブロックの複数の動きベクトルは、追加でスケーリングされ、ELブロックの複数の参照映像と並んでよい。例えば、固定または適応性の倍率が適用されてよい。固定倍率に関し、この追加の倍率は、事前に定義されエンコーダ及びデコーダの両方で用いられてよい。適応性の倍率に関し、追加の倍率はエンコーダ側で仕込まれ、ビットストリーム内でデコーダに送信されてよい。
説明されるように、さまざまな実施例において、ブロック401でのインターレイヤ予測を実行するかの判断などの処理400の複数の部分は、例えばビットストリーム内でデコーダに提供される指示に応じて実行されてよい。例えば、図7は、本開示の少なくともいくつかの実施例に従って構成された、ビットストリーム126、242または301などの一例のビットストリーム700の説明図である。図7に示されるように、ビットストリーム700は、ヘッダ部分702と、データ部分704を含んでよい。ヘッダ部分702は、1または複数のインジケータ706を含んでよい。例えば、インジケータ706は、ELの現在のブロックに対し、本明細書で説明されるように、継承された動きデータを用いてインターレイヤ予測を実行するか否かを指定する値のインジケータまたはフラグ708を含んでよい。さらに、ビットストリーム700は、上述したように、1または複数の適応性の倍率710などの他の情報を含んでよい。
図8は、本開示の少なくともいくつかの実施例に従って構成された、一例の処理800のフロー図を示す。処理800は、図8のブロック802、804、806、808、810、812、814および816の1または複数によって図示されるように、1または複数の動作、機能またはアクションを含んでよい。非限定的な例として、処理800は、デコーダシステム300によって実行されるような、ELレイヤ(例えば、この実施例におけるPU)の一部分に対するスケーラブルビデオコーディング処理の少なくとも一部を形成してよい。さらに、処理800はまた、EL PUのデコードに関して本明細書で説明される。但し、処理800は、本明細書で説明されるようにSVCコーデックモジュール506がデコーダシステム300をインスタンス化しうる、図5のスケーラブルビデオコーディングシステム500を用いて任意のブロックに適用され、かつ、図7のビットストリーム700の例に適用されうる。
処理800は、決定ブロック802の「スキップモード?」で開始してよく、デコードされている現在のEL PUに対してスキップモードを実行するかに関する判断が行われてよい。スキップモードでは、既にデコードされた1または複数のPUに基づいて現在のPUがデコードされる。さまざまな実施例において、SVCコーデック506は、ビットストリーム700のヘッダ部分702で受信されたインジケータの値に応じてブロック802を実行してよい。例えば、インジケータが第1の値(例えば1)を有する場合に、このときSVCコーデック506は、現在のPUに対してスキップモードを実行するよう判断してよい。一方で、インジケータが第2の値(例えば0)を有する場合には、このときSVCコーデック506は、現在のPUに対してスキップモードを実行しないと判断してよい。
ブロック802が否定的な判断になる場合には、このとき処理800は、決定ブロック804の「インター/イントラ」に進んでよく、PUに対してイントラコーディングまたはインターコーディングの何れを実行するかに関する判断が行われてよい。イントラ予測が選択される場合には、このとき処理800は、ブロック806の「従来のイントラ予測を実行する」に進んでよく、既知のイントラ予測技術を用いてイントラ予測が実行されてよい。インター予測が選択される場合には、このとき処理800は、決定ブロック808の「IL MDIフラグ=トゥルー?」に進んでよく、従来技術を用いたインター予測を実行する、または、本明細書で説明されるように継承される動きデータを用いたインター予測が実行されるべきか、に関する判断が行われてよい。本実施例において、ブロック808は、ビットストリーム700内でデコーダに提供されるインターレイヤの動きデータ継承(IL MDI)インジケータ(例えばフラグ708)の値に基づいて実行されてよい。
インジケータの値が否定的(継承された動きデータを用いたインター予測が実行されるべきではないことを示す)である場合には、このとき処理800は、ブロック810の「従来のインター予測を実行する」に進んでよく、従来のインター予測技術を用いてインター予測が実行されてよい。一方で、インジケータの値が肯定的(例えばIL MDIフラグがトゥルーの値を有する)である場合には、このとき処理800は、ブロック812の「継承された動きデータを用いてインターレイヤ予測を実行する」に進んでよく、本明細書で説明されるように、継承された動きデータを用いてインター予測が実行されてよい。処理800は、次に、ブロック814の「残差デコードを実行する」に続いてよく、既知の残差デコード技術とブロック810、812または806のいずれかの結果とを用いた残差デコードが実行されてよい。最終的に、処理800はブロック816の「PU内のピクセルを再構成する」で終了してよく、既知の技術が使用されてPUに対するピクセル値が再構成されてよい。
本明細書で処理800をEL PUに対するデコード処理として説明したが、本開示は、PUレベルで継承された動きデータを用いたインターレイヤ予測の実行には限定されない。よって、さまざまな実施例において、処理800はさらに、本明細書で説明されるように、CUまたはTUまたは任意のブロックに適用されてよい。さらに、既に指摘されたように、処理800を含んで本明細書で説明される、継承された動きデータを用いた全てのインターレイヤ予測処理は、一時的、空間、および/または質的スケーラブル(quality scalable)ビデオコーディングの任意の組み合わせの文脈で適用されてよい。
図12は、本開示の少なくともいくつかの実施例に従って構成された、一例のビデオコーディングシステム100及び動作中のビデオコーディング処理1200の説明図である。示された実施例において、処理1200は、アクション1201、1202、1203、1204、1205、1206、1207、1208、1209、1210、1211、1212、1213および/または1214の1または複数によって図示されるように、1または複数の動作、機能またはアクションを含んでよい。非限定的な例として、処理1200は、図1の例示的なビデオコーディングシステム100に関して本明細書で説明される。
示された実施例において、ビデオコーディングシステム100は、複数のロジックモジュール1220など、および/または、その組み合わせを含んでよい。例えば、複数のロジックモジュール1220は、エンコーダ1230(例えば、エンコーダ101または200に対応しうる)とデコーダ1240を有してよい。エンコーダ1230は、インターレイヤ動きデータ継承モジュール1250を含んでよい。デコーダ1240は、インターレイヤ動きデータ継承モジュール1260を含んでよい。図12に示されるように、ビデオコーディングシステム100は特定の複数のモジュールに関連付けられた特定の一連のブロックまたはアクションを含んでよいが、これらのブロックまたはアクションは、本明細書で示される特定のモジュールとは異なるモジュールに関連付けられてよい。図示されるように、処理1200はエンコード及びデコードを対象とするが、説明されるコンセプトおよび/または動作は、エンコードおよび/またはデコードに別々に適用されてよく、より一般的に、ビデオコーディングに適用されてよい。
処理1200は、ブロック1201の「参照レイヤに関連する動きデータを特定する」で開始し、ビデオデータの参照レイヤに関連付けられた動きデータが特定されうる。例えば、動きデータが1または複数の動きベクトル、参照インデックスおよび/またはインターディレクションなどを含みうるように、BLエンコーダ202で動きデータ210が特定されうる。説明されるように、参照レイヤは、ベースレイヤまたは、ターゲットエンハンスメントレイヤ(すなわち動きデータが転送されるエンハンスメントレイヤ)より低いレベルであるエンハンスメントレイヤであってよい。
処理1200は、ブロック1201からブロック1202の「エンハンスメントレイヤのブロックに関連する参照レイヤのコロケートブロックを特定する」に続いてよく、エンハンスメントレイヤの(現在)ブロックに関連する参照レイヤのコロケートブロックが特定されてよい。いくつかの実施例においては、参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティがイネーブルされてよい。また、エンハンスメントレイヤのエンハンスメントレイヤ映像サイズは参照レイヤの参照レイヤ映像サイズより大きくてよい。また、コロケートブロックの特定は、エンハンスメントレイヤのブロックの左上位置、中心位置、または右下位置の少なくとも1つを用いてコロケートブロックを特定することを含んでよい。さまざまな実施例において、コロケートブロックは、インターコーディングブロックまたはハイブリッドブロックの少なくとも1つを含んでよい。コロケートブロックに基づいて、コロケートブロックに関連付けられた動きデータは、本明細書で説明されるように、特定またはアクセスされてよい。
処理1200は、ブロック1202からブロック1203の「動きデータに倍率を適用する」に続いてよく、動きデータに倍率が適用されてよい。例えば、動きデータは少なくとも1つの動きベクトルを含んでよく、倍率の適用は、動きベクトルに対する倍率の適用を含んでよい。例えば、動きベクトルは、コロケートブロックに関連付けられてよい。さまざまな実施例において、倍率は、事前に定義された倍率または適応性の倍率、またはその他を含んでよい。
説明されるように、いくつかの実施例(例えば参照レイヤ及びエンハンスメントレイヤの間で空間スケーラビリティが適用されない場合)において、処理1200はブロック1203をスキップしてよい。いずれにしても、処理1200は、ブロック1204の「動き補償を実行する」に続いてよく、動きデータの少なくとも一部に基づいて、ビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償が実行されてよい。例えば、ELエンコーダ204は、動きデータ210の少なくとも一部に基づいて動き補償を実行してよい。
処理1200は、ブロック1204からブロック1205の「ビットストリームをエンコードする」に続いてよく、動き補償の少なくとも一部に基づいてビットストリームがエンコードされてよい。いくつかの実施例において、ビットストリームは残差コーディングと共にエンコードされてよい。
処理1200は、ブロック1205からブロック1206の「ビットストリームを転送する」に続いてよく、エンコードされたビットストリームが転送されてよい。示されるように、エンコードされたビットストリームは、デコーダ1240に転送されてよい。説明されるように、エンコーダ1230はコンテンツプロバイダシステムに関連付けられてよく、かつ/または、コンテンツプロバイダシステムによって提供されてよい。デコーダ1240は、クライアントシステムに関連付けられてよい。よって、さまざまな実施例において、エンコーダ1230及びデコーダ1240は、実質的に相互に独立に実装されてよい。さまざまな実施例において、ビットストリームは、インターネットを介して、複数のメモリデバイスまたはその他を介して、転送されてよい。理解されるように、いくつかの実施例において、ビットストリームは、複数のデバイスに対し、直列に、または並列して転送されてよい。
処理1200は、ブロック1206からブロック1207の「ビットストリームにアクセスして、動き補償を実行するか否かを指定するインジケータを特定する」に続くか、または、ブロック1207で開始してよく、ビデオデータに関連付けられたビットストリームはアクセスされて、動き補償を実行するかを指定しうるインジケータを特定してよい。インジケータは、例えば、デコーダ300によってアクセスされてよい。いくつかの実施例において、インジケータは、ビットストリームフラグを含んでよい。上で説明されたように、インターレイヤ予測が実行されるべきでない場合には、このとき処理1200はブロック1213にスキップしてよい。
インターレイヤ予測が実行されるべきである場合には、処理1200はブロック1208(空間スケーラビリティがイネーブルされ倍率がビットストリームを介して提供されている場合)の「ビットストリームにアクセスして倍率を特定する」に続いてよく、ビデオデータに関連付けられたビットストリームがアクセスされて倍率が特定されてよい。説明されるように、いくつかの実施例において、倍率は、デコードのためにビットストリーム内にエンコードされてよい。例えば、ビットストリーム700は、1または複数の適応性の倍率710を含んでよい。空間スケーラビリティがイネーブルされており、ビットストリームを介して倍率が提供されていない場合には、本明細書で説明されるように、倍率は、ブロック1211で特定されてよい。他の実施例において、空間スケーラビリティはイネーブルされないかもしれず、倍率は必要とされないかもしれない(ビットストリームを介しても、デコーダ1240での特定によっても)。
処理1200は、ブロック1209の「参照レイヤに関連する動きデータを特定する」で継続し、ビデオデータの参照レイヤに関連付けられた動きデータが特定されうる。例えば、動きデータ310はBLデコーダ302で特定されてよい。説明されるように、動きデータは例えば、1または複数の動きベクトル、参照インデックスおよび/またはインターディレクションを含んでよい。一般的に、参照レイヤは、ベースレイヤまたは、ターゲットエンハンスメントレイヤ(すなわち動きデータが転送されるエンハンスメントレイヤ)より低いレベルであるエンハンスメントレイヤであってよい。
処理1200は、ブロック1209からブロック1210の「エンハンスメントレイヤのブロックに関連する参照レイヤのコロケートブロックを特定する」に続いてよく、エンハンスメントレイヤの(現在)ブロックに関連する参照レイヤのコロケートブロックが特定されてよい。説明されるように、いくつかの実施例においては、参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティがイネーブルされてよい。また、エンハンスメントレイヤのエンハンスメントレイヤ映像サイズは参照レイヤの参照レイヤ映像サイズより大きくてよい。また、コロケートブロックの特定は、エンハンスメントレイヤのブロックの左上位置、中心位置、または右下位置の少なくとも1つを用いてコロケートブロックを特定することを含んでよい。さまざまな実施例において、コロケートブロックは、インターコーディングブロックまたはハイブリッドブロックの少なくとも1つを含んでよい。コロケートブロックに基づいて、コロケートブロックに関連付けられた動きデータは、本明細書で説明されるように、特定またはアクセスされてよい。
倍率が適用されるべきではない場合には、処理1200はブロック1212にスキップしてよい。倍率が適用されるべきである場合には、処理1200はブロック1210からブロック1211の「動きデータに倍率を適用する」に続いてよく、倍率が動きデータに適用されてよい。例えば、動きデータは少なくとも1つの動きベクトルを含んでよく、倍率の適用は、動きベクトルに対する倍率の適用を含んでよい。例えば、動きベクトルは、コロケートブロックに関連付けられてよい。さまざまな実施例において、倍率は、デコーダ1240を介して実装される、事前に定義された倍率か、またはビットストリームを介して受信される適応性の倍率を含んでよい。
処理1200は、(例えば、ブロック1207、1211または1209から)ブロック1212の「動き補償を実行する」に続いてよく、動きデータの少なくとも一部に基づいて、ビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償が実行されてよい。例えば、ELデコーダ304は、動きデータ310の少なくとも一部に基づいて動き補償を実行してよい。
処理1200は、ブロック1212からのブロック1213の「エンハンスメントレイヤ出力フレームを生成する」に続いてよく、動き補償の少なくとも一部に基づいて、エンハンスメントレイヤに関連付けられたエンハンスメントレイヤ出力フレームが生成されてよい。例えば、ELデコーダ304は、EL出力フレーム306を生成してよい。
処理1200は、ブロック1213からブロック1214の「表示のために出力フレームを転送する」に続いてよく、出力フレームが表示のために転送されてよい。例えば、出力フレームはディスプレイデバイスを介してユーザに表示されてよい。
本明細書での例示的な処理の実施例は図示された順序で示される全てのブロックの実行を含み得るが、本開示はこの点に関して限定されず、さまざまな実施例において、本明細書での例示的な処理の実施例は、示されたブロックのサブセットのみを実行すること、および/または、図示されたものとは異なる順序で実行することを含み得る。
加えて、本明細書において説明されるブロックのうち任意の1つまたは複数は、1または複数のコンピュータプログラム製品により提供される複数の命令に応じて実行され得る。そのようなプログラム製品は、例えば、プロセッサにより実行された場合に本明細書において説明される機能を提供し得る複数の命令を提供する信号担持媒体を含み得る。コンピュータプログラム製品は、1または複数のマシン可読媒体の任意の形態で提供され得る。例えば、1または複数のプロセッサコアを含むプロセッサが、1または複数のマシン可読媒体によりプロセッサへ伝達されるプログラムコードおよび/または複数の命令または命令セットに応じて、本明細書での例示的な複数の処理のブロックのうち1または複数を実行し得る。概してマシン可読媒体は、本明細書において説明される任意の複数のデバイスおよび/またはシステムに、ビデオシステム100,200および300、SVCコーデックモジュール506、インターレイヤ動きデータ継承モジュール1250または1260などの少なくとも一部を実装させ得るプログラムコードおよび/または複数の命令または命令セットの形態でソフトウェアを伝達し得る。
本明細書において説明される任意の実施例において用いられるように、「モジュール」という用語は、本明細書において説明される機能を提供するよう構成されたソフトウェアロジック、ファームウェアロジック、および/またはハードウェアロジックの何らかの組み合わせを指す。ソフトウェアは、ソフトウェアパッケージ、コードおよび/または命令セット、若しくは命令として実装され得、本明細書において説明されるいずれかの実施例おいて用いられる「ハードウェア」は、例えば、ハードワイヤによる回路、プログラマブル回路、状態マシン回路、および/または、プログラマブル回路により実行される命令を格納したファームウェアを単体で、または何らかの組み合わせで含み得る。複数のモジュールは、集合的または個別に、例えば、集積回路(IC)、システムオンチップ(SoC)およびその他であるより大きなシステムの一部を形成する回路として実装され得る。
図13は、本開示の少なくともいくつかの実施例に従って構成された、例示的なビデオコーディングシステム1300の説明図である。示される実施例において、ビデオコーディングシステム1300は、イメージングデバイス1301、ビデオエンコーダ1302、アンテナ1303、ビデオデコーダ504、1または複数のプロセッサ1306、1または複数のメモリストア1308、ディスプレイ1310、および/またはロジックモジュール1340を含み得る。ロジックモジュール1340は、インターレイヤ動きデータ継承モジュール1260、その他、および/またはこれらの組み合わせを含み得る。いくつかの実施例において、ビデオエンコーダ1302は、例えばインターレイヤ動きデータ継承モジュール1240などのインターレイヤ動きデータ継承モジュールを含む1または複数のロジックモジュールを実装し得る。
示されるように、アンテナ1303、ビデオデコーダ1304、プロセッサ1306、メモリストア1308、および/またはディスプレイ1310は互いに通信可能であり得、かつ/または、ロジックモジュール1340の一部と通信可能であり得る。同様に、イメージングデバイス1301およびビデオエンコーダ1302は、互いに通信可能であり得、かつ/またはロジックモジュール1340の一部と通信可能であり得る。したがって、ビデオデコーダ1304は、ロジックモジュール1340の全てまたは一部を含み得、ビデオエンコーダ1302は、同様のロジックモジュールを含み得る。図13に示されるように、ビデオコーディングシステム1300は特定の複数のモジュールに関連付けられた特定の一連のブロックまたはアクションを含んでよいが、これらのブロックまたはアクションは、本明細書で示される特定のモジュールとは異なるモジュールに関連付けられてよい。
いくつかの実施例において、ビデオコーディングシステム1300は、アンテナ1303、ビデオデコーダ1304、その他、および/または、これらの組み合わせを含み得る。アンテナ1303は、ビデオデータのエンコードされたビットストリームを受信するよう構成され得る。ビデオデコーダ1304はアンテナ1303に通信可能に結合され得、エンコードされたビットストリームをデコードするよう構成され得る。ビデオデコーダ1304は、本明細書で説明されるように、ビデオデータの参照レイヤに関連する動きデータを特定し、動きデータの少なくとも一部に基づいてビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償を実行するよう構成されうる。
他の実施例において、ビデオコーディングシステム1300は、ディスプレイデバイス1310、1または複数のプロセッサ1306、1または複数のメモリストア1308、インターレイヤ動きデータ継承モジュール1260など、および/または、それらの組み合わせを含んでよい。ディスプレイデバイス1310は、ビデオデータを表示するよう構成されてよい。プロセッサ1306は、ディスプレイ1310に通信可能に結合されてよい。メモリストア1308は、1または複数のプロセッサ1306に通信可能に結合されてよい。ビデオデコーダ1304(または他の実施例におけるビデオエンコーダ1302)のインターレイヤ動きデータ継承モジュール1260は、1または複数のプロセッサ1306に通信可能に結合されてよく、また、ビデオデータの参照レイヤに関連する動きデータを特定し、動きデータの少なくとも一部に基づいてビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償を実行するよう構成されてよく、その結果、ディスプレイデバイス1310を介しした画像データの表示は、動き補償の少なくとも一部に基づきうる。
様々な実施形態において、インターレイヤ動きデータ継承モジュール1260はハードウェア内に実装されてよいが、ソフトウェアが他の複数のロジックモジュールを実施しても良い。例えば、幾つかの実施形態ではインターレイヤ動きデータ継承モジュール1260は特定用途向け集積回路(ASIC)ロジックによって実装されてよいが、他のロジックモジュールは、プロセッサ1306などのロジックにより実行されるソフトウェア命令によって提供されてよい。しかしながら、本開示はこの点に限定されず、インターレイヤ動きデータ継承モジュール1260および/または他の複数のロジックモジュールは、ハードウェア、ファームウェアおよび/またはソフトウェアの任意の組み合わせによって実施されてよい。さらに、メモリストア1308は、揮発性メモリ(例えばスタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)など)または不揮発性メモリ(例えばフラッシュメモリなど)およびその他などの任意のタイプのメモリであってよい。非限定的な例において、メモリストア1308は、キャッシュメモリにより実施されてよい。
さまざまな実施例において、インターレイヤ動きデータ継承モジュール1260は、ベースレイヤエンコーダ(例えばBLエンコーダ202)の動き推定モジュール(例えば動き推定モジュール222)と、エンハンスメントレイヤエンコーダ(例えばELエンコーダ204)の動き補償モジュール(例えば動き補償モジュール226)とを含んでよい。さらに、インターレイヤ動きデータ継承モジュール1260は、ハードウェアを介して少なくとも一部が実施されてよい。さらに、図13では示されていないが、ビデオエンコーダ(例えばエンコーダ1230または1302)を介して実施されるインターレイヤ動きデータ継承モジュール(例えばインターレイヤ動きデータ継承モジュール1250)は、ベースレイヤデコーダ(例えばBLデコーダ302)の動き推定モジュール(例えば、動き推定モジュールを含むインター予測モジュール316)と、エンハンスメントレイヤデコーダ(例えばELデコーダ304)の動き補償モジュール(例えば、動き補償モジュールを有するインター予測モジュール324)とを有してよい。さらに、ビデオエンコーダを介して実施されるインターレイヤ動きデータ継承モジュールは、ハードウェアを介して少なくとも一部が実施されてよい。
図9は、本開示の少なくともいくつかの実施例に従って構成された、例となるシステム900を示す。さまざまな実施例において、システム900はメディアシステムであってよいが、システム900はこの文脈に限定されない。例えば、システム900は、パーソナルコンピュータ(PC),ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えば、スマートフォン、スマートタブレットまたはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、カメラ(例えばオートフォーカスのカメラ、スーパズームカメラ、デジタル一眼レフレックス(DSLR)カメラ)などに組み込まれうる。
さまざまな実施例において、システム900は、ディスプレイ920に結合されたプラットフォーム902を備える。プラットフォーム902は、コンテンツサービスデバイス930またはコンテンツ配信デバイス940または他の同様のコンテンツソースなどのコンテンツデバイスから、コンテンツを受信してよい。1または複数のナビゲーション機能を有するナビゲーションコントローラ950は、例えば、プラットフォーム902および/またはディスプレイ920とインタラクトするために用いられてよい。これらのコンポーネントのそれぞれは、以下でより詳細に説明される。
さまざまな実施例において、プラットフォーム902は、チップセット905、プロセッサ910、メモリ912、アンテナ913、ストレージ914、グラフィックスサブシステム915、アプリケーション916および/または無線機918の何らかの組み合わせを備えてよい。チップセット905は、プロセッサ910、メモリ912、ストレージ914、グラフィックスサブシステム915、アプリケーション916および/または無線機918の間の相互通信を提供しうる。例えば、チップセット905は、ストレージ914との相互通信を提供できるストレージアダプタ(図示せず)を有してよい。
プロセッサ910は、複数命令セットコンピュータ(CISC)または縮小命令セットコンピュータ(RISC)プロセッサ、x86命令セットコンパーチブルプロセッサ、マルチコア、または他の任意のマイクロプロセッサまたは中央処理ユニット(CPU)として実施されてよい。さまざまな実施例において、プロセッサ910は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサおよびその他であってよい。
メモリ912は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、またはスタティックRAM(SRAM)などの揮発性メモリデバイスとして実装されてよいが、これに限定されない。
ストレージ914は、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、装着ストレージデバイス、フラッシュメモリ、バッテリバックアップされたSDRAM(シンクロナスDRAM)、および/または、ネットワークアクセス可能なストレージデバイスなどの不揮発性ストレージデバイスとして実装されてよいが、これに限定されない。さまざまな実施例において、ストレージ914は、例えば多数のハードドライブが含まれる場合に、貴重なデジタルメディアの保護を高めるために記憶性能を向上させる技術を備えうる。
グラフィックスサブシステム915は、表示されるスチルまたはビデオなどの画像の処理を実行しうる。グラフィックスサブシステム915は、例えば、グラフィクスプロセッシングユニット(GPU)またはビジュアル処理ユニット(VPU)であってよい。アナログまたはデジタルインターフェースが、グラフィックスサブシステム915及びディスプレイ920を通信可能に結合するために用いられうる。例えば、インターフェースは高解像度マルチメディアインターフェース、ディスプレイポート、無線HDMI(登録商標)および/または無線HD準拠技術の何れかであってよい。グラフィックスサブシステム915は、プロセッサ910またはチップセット905に統合されてよい。いくつかの実施例において、グラフィックスサブシステム915は、チップセット905に通信可能に結合された据え置き型デバイスであってよい。
本明細書で説明されるグラフィックスおよび/またはビデオ処理技術は、多様なハードウェアアーキテクチャで実施されうる。例えば、グラフィックスおよび/またはビデオ機能は、チップセット内に統合されてよい。代替的に、別々のグラフィックスおよび/またはビデオプロセッサが使用されてよい。さらに他の実施例として、グラフィックスおよび/またはビデオ機能は、マルチコアプロセッサを含む汎用プロセッサによって提供されてよい。さらなる実施形態において、当該機能は家電機器内に実装されてよい。
無線機918は、種々の適当な無線通信技術を用いて信号を送受信できる1または複数の無線機を有してよい。そのような技術は、1または複数の無線ネットワークにまたがる通信を伴ってよい。無線ネットワークの例は、無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN),ワイヤレス大都市圏ネットワーク(WMAN)、セルラーネットワーク及び衛星ネットワークを含む(但し、これに限定されない)。そのような複数のネットワークにまたがる通信において、無線機918は、任意のバージョンの1または複数の適用規格に従って動作しうる。
さまざまな実施例において、ディスプレイ920は、任意のテレビ型モニタまたはディスプレイを有してよい。ディスプレイ920は、例えば、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビのようなデバイス、および/またはテレビを有してよい。ディスプレイ920は、デジタルおよび/またはアナログであってよい。さまざまな実施例において、ディスプレイ920はホログラフィックディスプレイであってよい。さらに、ディスプレイ920は、視覚投影を受信しうる透明な面であってよい。そのような投影は、様々な形態の情報、画像および/またはオブジェクトを伝達しうる。例えば、そのような投影は、モバイル拡張現実(MAR)アプリケーションのためのビジュアルオーバーレイであってよい。1または複数のソフトウェアアプリケーション916の制御下で、プラットフォーム902は、ディスプレイ920上にユーザインターフェース922を表示してよい。
さまざまな実施例において、コンテンツサービスデバイス930は、任意の国営の、国際の、および/または、独立したサービスにより提供されてよく、これにより、例えば、インターネットを介してプラットフォーム902にアクセス可能である。コンテンツサービスデバイス930は、プラットフォーム902および/またはディスプレイ920に結合されてよい。プラットフォーム902および/またはコンテンツサービスデバイス930は、ネットワーク960へ、及びネットワーク960からメディア情報を通信(例えば送信および/または受信)すべく、ネットワーク960に結合されてよい。コンテンツ配信デバイス940はさらに、プラットフォーム902および/またはディスプレイ920に結合されてよい。
さまざまな実施例において、コンテンツサービスデバイス930は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、インターネット有効デバイス、またはデジタル情報および/またはコンテンツの配信可能な装置、及び、コンテンツプロバイダとプラットフォーム902及び/ディスプレイ920との間でネットワーク960を介してまたは直に一方向または双方向にコンテンツを通信可能な他の任意の同様のデバイスを有してよい。コンテンツがネットワーク960を介してシステム900と、コンテンツプロバイダとのコンポーネントの何れか1つへ、及び、1つから、一方向および/または双方向に通信されうることは評価されるだろう。コンテンツの例は、例えば、ビデオ、音楽、医学及びゲーム情報などを有する任意のメディア情報を含んでよい。
コンテンツサービスデバイス930は、メディア情報、デジタル情報を有するケーブルテレビプログラムなどのコンテンツ、および/または他のコンテンツを受信してよい。コンテンツプロバイダの例は、任意のケーブル若しくは衛星テレビ、または、無線機若しくはインターネットコンテンツプロバイダを含んでよい。提供された例は、いかなる方法によっても本開示に係る実施例を限定することを意味しない。
さまざまな実施例において、プラットフォーム902は、1または複数のナビゲーション機能を有するナビゲーションコントローラ950からコントロールシグナルを受信しうる。コントローラ950のナビゲーション機能は、例えば、ユーザインターフェース922とインタラクトするために用いられうる。さまざまな実施形態では、ナビゲーションコントローラ950は、ユーザが空間(例えば連続かつ多次元の)データをコンピュータに入力することを可能にするコンピュータハードウェアコンポーネント(具体的にはヒューマンインターフェースデバイス)でありうるポインティングデバイスであってよい。グラフィカルユーザインターフェース(GUI)、テレビ及びモニタなどの多くのシステムは、ユーザが身体的なジェスチャを用いてコントロールを行い、コンピュータまたはテレビにデータを提供することを可能にする。
コントローラ950のナビゲーション機能の動作は、ポインタ、カーソル、フォーカスリング、またはディスプレイ上に表示される他の視覚的インジケータの動きによってディスプレイ(例えばディスプレイ920)上に複製されてよい。例えば、ソフトウェアアプリケーション916の制御下で、ナビゲーションコントローラ950に位置付けられたナビゲーション機能は、例えばユーザインターフェース922上に表示された仮想ナビゲーション機能にマッピングされてよい。さまざまな実施形態では、コントローラ950は、別個のコンポーネントでないかも知れないが、プラットフォーム902および/またはディスプレイ920に統合されてよい。しかしながら、本開示は、本明細書で説明されるまたは記載される要素または文脈には限定されない。
さまざまな実施例では、複数のドライバ(不図示)は、例えば、有効化された場合に、初期ブートアップ後にボタンに触れられるテレビのように、ユーザがプラットフォーム902をただちにオン・オフすることを可能とする技術を備えてよい。プラットフォームが"オフ"にされた場合であっても、プログラムロジックは、プラットフォーム902に、複数のメディアアダプタ、または他のコンテンツサービスデバイス930、またはコンテンツ配信デバイス940へ、コンテンツをストリーム配信させることを許容してよい。加えて、チップセット905は、例えば、5.1サラウンドサウンドオーディオおよび/または高品質の7.1サラウンドサウンドオーディオをサポートするハードウェアおよび/またはソフトウェアを備えてよい。複数のドライバは、集中画像表示プラットフォームのためのグラフィックスドライバを有してよい。さまざまな実施形態では、グラフィックスドライバは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレスグラフィックカードを備えてよい。
様々な実施例において、システム900において示された複数のコンポーネントのうちいずれか1つまたは複数が統合されてもよい。例えば、プラットフォーム902とコンテンツサービスデバイス930とが統合されてよく、或いは、プラットフォーム902とコンテンツ配信デバイス940が統合化されてよく、或いは、例えばプラットフォーム902とコンテンツサービスデバイス930とコンテンツ配信デバイス940とが統合されてもよい。様々な実施形態において、プラットフォーム902とディスプレイ920とは、統合されたユニットであってよい。例えば、ディスプレイ920とコンテンツサービスデバイス930が統合化されてよく、或いは、ディスプレイ920とコンテンツ配信デバイス940が統合されてよい。これらの複数の例は、本開示を限定することを意味しない。
様々な実施形態において、システム900は、無線システム、有線システム、または両方の組み合わせとして実装されてよい。無線システムとして実装される場合には、システム900は、例えば、1または複数のアンテナ、送信機、受信機、トランシーバ、アンプ、フィルタ、制御ロジックなどの、無線共有媒体で通信するのに好適な複数のコンポーネントおよび複数のインターフェースを備えてよい。無線共有媒体の一例として、RFスペクトルなどの無線スペクトルの部分を有してよい。有線システムとして実装される場合には、システム900は、例えば入出力(I/O)アダプタ、I/Oアダプタを対応する有線通信媒体と接続するための物理コネクタ、ネットワークインターフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラなどの有線通信媒体で通信するのに好適な複数のコンポーネントおよび複数のインターフェースを備えてよい。有線通信媒体の例は、ワイヤ、ケーブル、金属リード線、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペア線、同軸ケーブル、光ファイバーなどを含んでよい。
プラットフォーム902は、情報を通信するために、1または複数の論理チャネルまたは物理チャネルを確立してよい。この情報は、メディア情報および制御情報を含んでよい。メディア情報は、ユーザ向けのコンテンツを表す任意のデータを参照してよい。コンテンツの例は、例えば、音声会話、ビデオ会議、ストリーミングビデオ、電子通信メールメッセージ(電子メール)、ボイスメールメッセージ、英数字シンボル、グラフィックス、画像、ビデオ、テキストなどからのデータを有してよい。音声会話からのデータは、例えば、音声情報、沈黙時間、背景雑音、快適雑音、トーンなどであってよい。制御情報は、自動化システム向けの、コマンド、命令または制御単語を表す任意のデータを指してよい。例えば、制御情報は、システムを介してメディア情報を送信するために、または、所定の態様でメディア情報を処理するようノードに指示するために用いられてよい。しかしながら、これら複数の実施形態は、図9で示されまたは記載された複数の要素または文脈に限定されない。
上述したように、システム900は、物理的な様式やフォームファクターを変化させながら実装されてよい。図10は、本開示の少なくともいくつかの実施例に従って構成された、システム1000が実装されてよいスモールフォームファクタデバイス1000の複数の実施例を示す。さまざまな実施形態では、例えばデバイス1000は、無線機能を備えるモバイルコンピューティングデバイスとして実装されてよい。モバイルコンピューティングデバイスは、プロセッシングシステムおよび、例えば1または複数のバッテリなどのモバイル電源を備える任意のデバイスを指してよい。
上述したように、モバイルコンピューティングデバイスの例は、パーソナルコンピュータ(PC),ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、携帯情報端末(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えばスマートフォン、スマートタブレット、またはスマートテレビ),モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス、カメラ(例えばオートフォーカスのカメラ、スーパズームカメラ、デジタル一眼レフレックス(DSLR)カメラ)などを含んでよい。
モバイルコンピューティングデバイスの例はさらに、人の身に着けられるよう構成された複数のコンピュータを含んでよく、例えば、リストコンピュータ、フィンガーコンピュータ、リングコンピュータ、アイグラスコンピュータ、ベルトクリップコンピュータ、アームバンドコンピュータ、靴コンピュータ、衣服コンピュータ、その他の身に着けることが可能なコンピュータなどである。さまざまな実施形態では、例えば、モバイルコンピューティングデバイスは、音声通信および/またはデータ通信だけでなくコンピュータアプリケーションを実行することが可能なスマートフォンとして実装されてよい。例を挙げる目的で、幾つかの実施形態が、スマートフォンとして実装されたモバイルコンピューティングデバイスと共に説明されるかもしれないが、他の複数の実施形態が、他の無線モバイルモバイルコンピューティングデバイスを同様に用いて実装されうることは当然であってよい。複数の実施形態は、この文脈に限定されない。
図10に示されるように、デバイス1000は、ハウジング1002、ディスプレイ1004、入出力(I/O)デバイス1006およびアンテナ1008を備える。デバイス1000はさらに、ナビゲーション機能1012を備えてよい。ディスプレイ1004は、モバイルコンピューティングデバイスに適切な情報を表示するのに好適な任意のディスプレイユニットを有してよい。I/Oデバイス1006は、モバイルコンピューティングデバイスに情報を入力するのに好適な任意のI/Oデバイスを有してよい。I/Oデバイス1006の例は、英数字キーボード、テンキーパッド、タッチパッド、インプットキー、ボタン、スイッチ、ロッカースイッチ、マイク、スピーカ、音声認識デバイス及びソフトウェアなどを含んでよい。情報はさらに、マイク(不図示)を用いてデバイス1000入力されてよい。そのような情報は、音声認識デバイス(不図示)によってデジタル化されてよい。複数の実施形態は、この文脈に限定されない。
複数のハードウェア要素、複数のソフトウェア要素、または両方の組み合わせを用いて、様々な実施形態が実装されてよい。複数のハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子(例えばトランジスタ、抵抗、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラム式論理デバイス(PLD)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなど、を含んでよい。複数のソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、ファンクション、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーション・プログラム・インターフェース(API)、命令セット、演算コード、コンピュータコード、コードセグメント、コンピュータ・コード・セグメント、ワード、値、シンボル、またはこれらの任意の組み合わせを含んでよい。ある実施形態がハードウェア要素および/またはソフトウェア要素を用いて実装されるか否かを決定することは、望ましい演算レート、電力レベル、耐熱性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバススピード、およびその他の設計上または性能上の制約などの任意の数の要因によって異なってよい。
少なくとも1つの実施形態の1または複数の特徴は、プロセッサ内の様々なロジックを表すマシン可読媒体上に格納された複数の代表的命令により実装されうる。複数の代表的命令は、機械により読み取られると、機械に、本明細書で説明される複数の技術を実行するロジックを作成させる。「IPコア」として知られたそのような複数の表現は、有形のマシン可読媒体上に格納され、様々な顧客、または実際にロジックまたはプロセッサを作製する複数の製造機械にロードする複数の製造設備に提供され得る。
本明細書において明らかにされる特定の特徴は様々な実施例を参照して説明されてきたが、本説明は、制限的な意味で解釈されるよう意図されていない。したがって、本開示が関連する分野の当業者には明らかである、本明細書において説明される実施例の様々な修正、および他の実施例が、本開示の精神および範囲に含まれるものとして見なされる。
以下の例は、さらなる実施形態に関する。
一例において、スケーラブルビデオコーディングを実行する、コンピュータ実装された方法は、ビデオデータにおける参照レイヤに関連付けられた動きデータを特定する段階と、動きデータの少なくとも一部に基づいて、ビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償を実行する段階とを含んでよい。
他の例において、スケーラブルビデオコーディングを実行する、コンピュータ実装された方法は、参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティがイネーブルされ、エンハンスメントレイヤ映像サイズが参照レイヤ映像サイズより大きくなるように、エンハンスメントレイヤのブロックに関連する参照レイヤのコロケートブロックを特定することをさらに含んでよい。コロケートブロックを特定する段階は、エンハンスメントレイヤのブロックの左上位置、中心位置または右下位置の少なくとも1つを用いてコロケートブロックを特定する段階を含んでよい。動きデータは、参照レイヤのコロケートブロックに関連付けられた動きデータを含んでよい。コロケートブロックは、インターコーディングブロックまたはハイブリッドブロックの少なくとも1つを含んでよい。コンピュータ実装された方法はさらに、事前に定義された倍率または適応性の倍率の少なくとも1つを倍率が含むように、動き補償の実行に先立って、動きデータの少なくとも1つの動きベクトルに倍率を適用する段階と、ビットストリームが残差コーディングを用いてエンコードされるように動き補償の少なくとも一部に基づいてビットストリームをエンコードする段階と、動き補償を実行するかをインジケータが指定し、かつ、インジケータがビットストリームフラグを含むように、ビデオデータに関連付けられたビットストリームにアクセスしてインジケータを特定する段階と、ビデオデータに関連付けられたビットストリームにアクセスして倍率を特定する段階と、動き補償の少なくとも一部に基づいてエンハンスメントレイヤに関連付けられたエンハンスメントレイヤ出力フレームを生成する段階とを含んでよい。動きデータは、動きベクトル、参照インデックスまたはインターディレクションの少なくとも1つを含んでよい。エンハンスメントレイヤが第2エンハンスメントレイヤの上位レイヤであるように、参照レイヤがベースレイヤまたは第2エンハンスメントレイヤの少なくとも1つを含んでよい。参照レイヤ及びエンハンスメントレイヤの間のクオリティスケーラビリティ、一次的スケーラビリティまたはビット深度スケーラビリティの少なくとも1つがイネーブルされてよい。動き補償はスライス、映像またはレイヤレベルの少なくとも1つに対して実行されてよい。ブロックは、予測単位、予測ブロック、変換単位、またはコーディング単位の少なくとも1つを含んでよい。少なくとも1つの動きベクトルは、エンハンスメントレイヤのブロックが16×16の予測単位となるように、4×4、8×8または16×16の少なくとも1つを含む粒度を有してよい。参照レイヤはベースレイヤを含んでよく、エンハンスメントレイヤはレベル1のエンハンスメントレイヤを含んでよい。動き補償の実行は、エンハンスメントレイヤデコーダでの動き補償の実行を含んでよい。エンハンスメントレイヤデコーダは、ハードウェアを介して少なくとも一部が実施されてよい。動き補償の実行は、エンハンスメントレイヤエンコーダでの動き補償の実行を含んでよい。
他の実施例において、コンピュータ上のビデオコーディングのためのシステムは、ディスプレイデバイス、1または複数のプロセッサ、1または複数のメモリストア、インターレイヤ動きデータ継承モジュールなど、および/または、それらの組み合わせを含んでよい。ディスプレイデバイスは、ビデオデータを表示するよう構成されてよい。1または複数のプロセッサは、ディスプレイデバイスに対して通信可能に結合されてよい。1または複数のメモリストアは、1または複数のプロセッサに対して通信可能に結合されてよい。インターレイヤ動きデータ継承モジュールは、1または複数のプロセッサに通信可能に結合されてよく、また、ビデオデータの参照レイヤに関連する動きデータを特定し、動きデータの少なくとも一部に基づいてビデオデータにおけるエンハンスメントレイヤのブロックに対して動き補償を実行するよう構成されてよい。ディスプレイデバイスを介しての画像データの表示は、動き補償の少なくとも一部に基づいてよい。
さらに例となるシステムにおいて、インターレイヤ動きデータ継承モジュールは、エンハンスメントレイヤのブロックに関連する参照レイヤのコロケートブロックを特定し、倍率が事前に定義された倍率または適応性の倍率の少なくとも1つを有するように、動き補償の実行に先立って動きデータの少なくとも1つの動きベクトルに対して倍率を適用し、残差コーディングを用いてビットストリームがエンコードされるように、動き補償の少なくとも一部に基づいてビットストリームをエンコードし、動き補償を実行するかをインジケータが指定し、インジケータがビットストリームフラグを含むように、ビデオデータに関連付けられたビットストリームにアクセスしてインジケータを特定し、ビデオデータに関連付けられたビットストリームにアクセスして倍率を特定し、動き補償の少なくとも一部に基づいて、エンハンスメントレイヤに関連付けられたエンハンスメントレイヤ出力フレームを生成するよう構成されてよい。参照レイヤ及びエンハンスメントレイヤの間の空間スケーラビリティはイネーブルされてよく、エンハンスメントレイヤ映像サイズは参照レイヤ映像サイズより大きくてよい。コロケートブロックの特定は、エンハンスメントレイヤのブロックの左上位置、中心位置または右下位置の少なくとも1つを用いてコロケートブロックを特定することを含んでよい。動きデータは、参照レイヤのコロケートブロックに関連付けられた動きデータを含んでよい。コロケートブロックは、インターコーディングブロックまたはハイブリッドブロックの少なくとも1つを含む。動きデータは、動きベクトル、参照インデックスまたはインターディレクションの少なくとも1つを含んでよい。エンハンスメントレイヤが第2エンハンスメントレイヤの上位レイヤであるように、参照レイヤがベースレイヤまたは第2エンハンスメントレイヤの少なくとも1つを含んでよい。参照レイヤ及びエンハンスメントレイヤの間のクオリティスケーラビリティ、一次的スケーラビリティまたはビット深度スケーラビリティの少なくとも1つがイネーブルされてよい。動き補償はスライス、映像またはレイヤレベルの少なくとも1つに対して実行されてよい。ブロックは、予測単位、予測ブロック、変換単位、またはコーディング単位の少なくとも1つを含んでよい。少なくとも1つの動きベクトルは、エンハンスメントレイヤのブロックが16×16の予測単位となるように、4×4、8×8または16×16の少なくとも1つを含む粒度を有してよい。参照レイヤはベースレイヤを含んでよく、エンハンスメントレイヤはレベル1のエンハンスメントレイヤを含んでよい。インターレイヤ動きデータ継承モジュールは、ベースレイヤエンコーダの動き推定モジュールと、エンハンスメントレイヤエンコーダの動き補償モジュールとを含んでよい。インターレイヤ動きデータ継承モジュールは、ハードウェアを介して少なくとも一部が実施されてよい。インターレイヤ動きデータ継承モジュールは、ベースレイヤデコーダの動き推定モジュールと、エンハンスメントレイヤデコーダの動き補償モジュールとを含んでよい。
更なる例において、少なくとも1つのマシン可読媒体は、コンピューティングデバイスで実行されることに応じて、コンピューティングデバイスに、上記した例のうちいずれか1つに係る方法を実行させる複数の命令を含み得る。
また更なる例において、装置は、上記した例のうちいずれか1つに係る方法を実行する手段を含み得る。
上記した例は、特徴の特定の組み合わせを含み得る。しかしながら、そのような上記した例はこの点に関して限定されず、様々な実施例において、上記した例は、そのような特徴のサブセットのみを実行すること、そのような特徴を異なる順序で実行すること、そのような特徴の異なる組み合わせを実行すること、および/または、明示的に列挙されたそれらの特徴以外の追加の特徴を実行することを含み得る。例えば、例示的な方法に関して説明された全ての特徴は、例示的な装置、例示的なシステム、および/または例示的な物品に関して実装され得、その逆もまた然りである。