ハードウェアデコーダアクセラレータのためのセキュリティ強度の向上

 

【解決手段】符号化したデジタルストリーミングデータの1つ以上のフレーム内に埋め込まれた悪意のあるデータによって、ソフトウェアセキュリティレイヤを使用してシステムをハードウェアエンコーダアクセラレータの利用することからシステムを保護することを含む。サーチャーまたはその他の読者が素早く技術的な開示の主題を確認することができるこの要約は、要約を要求する規則に則って提供されることを強調する。特許請求の範囲若しくは意味を解釈または制限するために使用されるものではないという理解を前提として提出する。
【選択図】図2

 

 

優先権の主張
本出願は、2013年3月15日に出願されたUS61/789,855の優先権の利益を主張し、その開示内容全体が参照により本明細書に組み込まれる。
本出願は、2014年2月27日に出願されたUS14/192,782の優先権の利益を主張し、その開示内容全体が参照により本明細書に組み込まれる。
本開示の態様は、圧縮デジタル信号の復号に関する。特に、本開示は、デコーダアクセラレータ用のセキュリティに関する。
デジタル信号圧縮(ビデオコーディングまたはビデオエンコーディングと呼ばれることもある)は、多くのマルチメディアアプリケーションやデバイスにて広く使用されている。コーダ/デコーダ(コーデック)を使用したデジタル信号圧縮によって、オーディオまたはビデオ信号などのストリーミングメディアをインターネット上で送信したり、コンパクトディスクに保存することが可能になる。H.261、H.263、DV、MPEG−1、MPEG−2、MPEG−4、VC1、及びAVC(H.264)を含めて、多数の異なるデジタルビデオ圧縮規格が登場している。これらの規格ならびに他のビデオ圧縮技術は、ピクチャ及び連続するピクチャ内の空間的及び時間的冗長性を除去することによって、ビデオフレームピクチャを効率的に表現することを追求している。このような圧縮規格を使用することによって、ビデオコンテンツが高度に圧縮されたビデオビットストリームとなって伝送され、従って、効率良くディスクに保存する、またはネットワークを介して送信することができるようになる。
H.264としても知られるMPEG−4AVC(Advanced Video Coding)は、先行規格よりもはるかに高い圧縮率を提供するビデオ圧縮規格である。H.264規格は、以前のMPEG−2規格の2倍までの圧縮を提供することが期待される。H.264規格はまた、知覚品質の向上を提供することが期待される。結果として、より多くのビデオコンテンツがAVC(H.264)で符号化されたストリームの形式で配信されている。2つのライバルDVDフォーマットであるHD−DVDフォーマットとブルーレイディスクフォーマットは、必須プレーヤー機能としてH.264/AVCハイプロファイルの復号をサポートする。AVC(H.264)の符号化は、ITU−T勧告H.264、Hシリーズ:オーディオビジュアル及びマルチメディアシステム、オーディオビジュアルサービスのインフラ−動画の符号化、「オーディオビジュアルサービス全般のための高度ビデオ符号化方式」国際電気通信連合、電気通信標準化部門、ジュネーブ、スイス、2012年1月に詳細に記述され、その内容の全体はすべての目的において参考として本明細書に組み込まれている。
ビデオエンコーディングは、汎用コンピュータ上のソフトウェアで行うことができる。またはハードウェアビデオエンコーダと称される専用のハードウェアで行い得る。ハードウェアビデオエンコーダの使用は、システムのリソース使用を低くした状態で高性能のビデオ圧縮を達成する鍵と考えられている。
ハードウェアデコーダアクセラレータは、複数のユーザに共有されるシステムリソースである。典型的には、アクセラレータは、ユーザのプライベートメモリ、システムレジスタ及び場合によってはカーネルメモリにアクセスするために、通常のプロセス権限よりも高度の権限を有する。このためにアクセラレータはセキュリティ攻撃のためにありうるターゲットとなる。
本開示の態様が生じるのはこのような文脈の中である。
本開示の教示は、添付の図面と併せて、以下の詳細な説明を考慮すれば容易に理解できる。
本開示の態様による、ハードウェアビデオデコーダアクセラレータ及びアクセラレータ用のソフトウェアセキュリティレイヤを含んだシステムを使用する、コンピュータシステムのブロック図である。 本開示の態様による、セキュリティ強化の実行が可能であることを示すハードウェアアクセラレータの最上部にある、ソフトウェアスタックの一例を示すブロック図である。 本開示の態様のコンテキストにおけるストリーミングデータピクチャの1つの可能な分割を示す概略図である。 本開示の態様による、ハードウェアデコーダアクセラレータ及びソフトウェアセキュリティ強化レイヤを利用するシステムの一例の概略図である。
図面の説明
以下の詳細な説明には、説明のための多くの具体的な詳細事項が含まれるが、それらに対する多くの変更や修正も本発明の技術範囲に含まれることは、当業者であれば誰でも理解するであろう。したがって、以下に説明する本発明の例示的な実施形態は、クレームされた発明の普遍性をなんら損なうことなく、また限定も行うことなく記載されている。
本開示の態様は、アクセラレータが損傷した場合、ハードウェアデコーダアクセラレータが損傷しないよう保護し、損傷を最小限にするためのソフトウェアセキュリティ強化レイヤを目的とする。
序文
従来技術では、典型的には、ハードウェアデコーダアクセラレータは、個々のハードウェアデバイスベンダにより実装されてきた。製品の仕様により、それぞれのハードウェアベンダはセキュリティ機能を定め、ハードウェアの一部としてこれらのセキュリティ機能を実行する。例えば、多くのパーソナルコンピュータ(PC)のハードウェアベンダには、セキュリティ目標は、著作権のあるビデオコンテンツを保護することである。そのため、ハードウェアアクセラレータの大部分は、セキュリティ機能に関するコンテンツ保護を有する。
あるデバイスは異なるセキュリティ目標を有する。具体的には、あるゲーム機供給者にとっては、セキュリティ目標は、ゲーム機自体用のビデオコンテンツ及びシステムカーネルの双方を保護し得る。その結果、追加のソフトウェアレイヤでセキュリティ強化をする必要がある。
ハードウェアデコーダのセキュリティ強化に対する必要性は、コンピュータセキュリティの専門家には明白でない場合がある。コンピュータセキュリティの専門家の見地からすると、ハードウェアデコーダアクセラレータはビデオ信号処理のタスクを実行するのみであり、大変簡単なセキュリティ保護のみ必要とする。しかしながら、ビデオ処理の専門家の見地からすると、ハードウェアデコーダアクセラレータは、符号化されたビデオストリームに埋め込まれた命令を実行するよう構成されたプログラム可能なデバイスである。入力ビデオストリームを慎重に設計することにより、デコーダアクセラレータは何かを行うよう命令され得る。これはデバイスに有害なものを含む。したがって、セキュリティ保護を強化することは、ハードウェアデコーダアクセラレータを使用するある種のデバイスには必要である。
ある種の本開示の実施形態によると、デコーダアクセラレータのセキュリティの強化は、ソフトウェアセキュリティ強化レイヤによって実装され得る。例として、限定するものではないが、デコーダサービスダイモン、デコーダアクセラレータカーネルドライバまたはアクセラレータファームウェア内の、このようなソフトウェアレイヤは、ソフトウェアの一部として実装され得る。ハードウェアのブロックとしても実装され得る。あるセキュリティ保護では、ハードウェアビデオエンコーダアクセラレータを有するハードウェア内にも適用され得る。
発明の詳細な説明
図1に示されているように、コンピュータシステム100は、中央処理装置(CPU)102、統合ハードウェアビデオデコーダアクセラレータ104、及び1つ以上のプログラム可能なモジュール106を含み得る。アクセラレータ104は、符号化したビデオストリームを復号するよう構成されている。これらの符号化したビデオストリームは、H.264、MPEG2,MPEG4及びVCIのような、ビデオ符号化規格に従い得る。CPU102は、ハードウェアデコーダアクセラレータ104をあるシステムレジスタ108を通じて制御する。CPU102及びアクセラレータ104は、共通のシステムメモリ110を共有する。所望により、ハードウェアデコーダアクセラレータ104はプログラム可能でもあり得る。デコーダの機能の一部は、ソフトウェアに実装することが可能であり、メモリ110内に保存した命令112として実装され得る。ハードウェアアクセラレータの性能をソフトウェアで増強することで、アクセラレータをよりフレキシブルにすることができる。しかしながら、そうすることでハッカーがアクセラレータ104を攻撃する機会をより与えてしまうことにもなる。これは、現在、市場のほとんどすべてのハードウェアデコーダアクセラレータがプログラム可能であるため、重大である。これを避けるためには、命令112はソフトウェアセキュリティレイヤ114を含むことができ、以下に論じるように構成され得る。
命令112は、ユーザソフトウェア、システムソフトウェア及びハードウェアレイヤを含むソフトウェアスタック内に実装され得る。図2は、セキュリティレイヤ114用のスタック内での可能な位置を示すハードウェアアクセラレータ104の最上部で稼働しうる、典型的なソフトウェアスタック200の一例を示す。図2に示すように、1つ以上のユーザアプリケーション202は、カーネルドライバ206に復号タスクをサブミットするために、ユーザランドライブラリ204でファンクションを呼び出し得る。ユーザアプリケーション202及びランドライブラリ204は、「ユーザソフトウェア」と称されるソフトウェアスタックの一部内にある。カーネルドライバ206は、オペレーティングシステムソフトウェアの一部である。カーネルドライバ206は、システムレジスタ108を介してハードウェアアクセラレータ104を動かす。
本開示の実施形態によると、セキュリティ強化レイヤ114は、ハードウェアレイヤ(例えば、ファームウェア)中、またはカーネルドライバ206中の追加のモジュールであり得る。あるいは、セキュリティ強化レイヤは、カーネルドライバ206の上にある、システムソフトウェアの追加部分であり得る。
図2に示すように、ユーザアプリケーションのみが、システムメモリ110内のユーザメモリ空間でメモリバッファ208にアクセス可能である。時として、ハードウェアアクセラレータ104は、ユーザのメモリ空間にアクセスすることができない。この場合、オペレーティングシステムソフトウェアは、ハードウェアアクセラレータ104用のシステムメモリ内で、ユーザのデータバッファ208をマップまたはコピー可能である。
セキュリティ強化レイヤ114がどのように動くのか理解するためには、ハードウェアアクセラレータ104がどのように動くのか、ハッカー及びその他のセキュリティ脅威に対していかに脆弱であるかを理解することが有用である。典型的には、ピクチャをハードウェアアクセラレータで復号する手順の概要は以下の通りであり得る。
ユーザアプリケーションは、ユーザメモリ空間中のメモリバッファにインプットしたビデオストリームを保存する。次に、オペレーティングシステムソフトウェアは、ハードウェアアクセラレータ104にユーザメモリバッファを開いてアクセスするか、またはオペレーティングシステムがユーザメモリバッファをハードウェアアクセラレータの可視メモリ空間にコピーする。時として、このハードウェアアクセラレータの可視メモリ空間は、カーネルメモリ空間である。
ユーザアプリケーション202は、ユーザランドライブラリ204内でファンクションを呼び出すことにより、復号したタスクを作成する。ビデオ復号タスクのコントロールパラメータは、実ハードウェアアクセラレータ104及びオペレーティングシステムに依存する。例えば、Microsoft DXVAは、ユーザアプリケーションがWindows(登録商標)のパソコンでハードウェアアクセラレータをどのように使用するのか定義する。
カーネルドライバ206は、ユーザの要求をシステムレジスタに書き込む。ハードウェアデコーダアクセラレータ104は、復号命令を受信し、インプットしたビデオストリームの一部を復号する。復号した結果は、ユーザ可視メモリバッファ208に保存される。ハードウェアアクセラレータ104はカーネルドライバ206に、タスクがシステムレジスタ108を介して終了したことを通知する。ユーザアプリケーション202は、カーネルドライバ206から復号したという通知及びハードウェアアクセラレータ104からデコーダ出力データを受信する。
上記のタスクを実行するためには、ハードウェアデコーダアクセラレータ104はある種の権限を有する。例えば、ハードウェアデコーダアクセラレータは、すべてのユーザのビデオ復号バッファを読み取り及び/または書き込むことができ得る。あるシステムでは、デコーダはカーネルメモリ空間にアクセスし得る。ハードウェアデコーダアクセラレータは、あるシステムレジスタを読み取り及び/または書き込みすることも可能であり得る。あるシステムに加えて、ハードウェアアクセラレータ104がプログラム可能である場合には、プログラムの命令及びデータは、カーネルメモリ空間に保存される。
したがって、ハードウェアデコーダアクセラレータがハッカーによって損なわれた場合には、ハッカーはその他のデコーダアプリケーションからビデオコンテンツを盗み取ることができる可能性がある。例えば、ハッカーはブルーレイディスクの違法コピーを作成する可能性がある。さらに、ハッカーは侵害したデコーダアクセラレータを利用しシステムレジスタを読み取ることにより、暗号鍵などのシステムの機密を盗み得る。さらに、極端な場合には、侵害されたハードウェアデコーダアクセラレータは、システムカーネルを侵害し、ハッカーに全システム100を乗っ取らせてしまう。
損傷の最小限化
システム100は、ハードウェアデコーダアクセラレータ104が侵害された場合、損傷を最小限にするように構成し得る。このシステムの可能な構成の一つは、以下の通りである。
1.システム100は、必要な場合にレジスタを読み込みまたは書き込む許可をハードウェアデコーダ104に与えるのみである。
2.ハードウェアアクセラレータがプログラム可能である場合、ハードウェアアクセラレータの命令及びデータは、カーネルメモリ空間及びユーザメモリ空間以外のメモリ空間に置くことが可能である。このようにして、ハードウェアアクセラレータ104は、命令を実行し、データを読み込み、メモリ空間に書き込むことが可能である。
3.もしユーザバッファがハードウェアデコーダのアクセスに開いている場合、バッファの必要な部分のみ開く。
設計によって制限されるが、すべてのハードウェアアクセラレータが上記の勧告に適合するとは限らない。例えば、PCグラフィックカード内に統合されたハードウェアアクセラレータの大部分は、必要よりも多くのレジスタにアクセスすることができ、それに制約を課す可能性はない。したがって、ハードウェアアクセラレータをハッキングするのを困難にするために、追加の保護レイヤを実装する必要がある。
ビデオ復号
セキュリティソフトウェア114がいかに悪意のある攻撃からハードウェアデコーダアクセラレータを保護し得るのかを述べる前に、ビデオピクチャがどのように符号化するのかを理解することが有用である。一例として、限定するものではないが、図3に示すように、単一のピクチャ300(例えば、デジタルビデオフレーム)は1以上のセクションに分解してもよい。本明細書で使用される用語「セクション」は、ピクチャ300内の1以上のピクセルのグループを指すことができる。セクションはピクチャ内の単一のピクセルからピクチャ全体までの範囲とすることができる。セクションの限定しない例として、スライス302、マクロブロック304、サブマクロブロック306、ブロック308及び個々のピクセル310がある。図3に示すように、各スライス302は、マクロブロック304の1以上の行またはそのような1以上の行の部分を含む。ある行のマクロブロックの数は、マクロブロックのサイズとピクチャ300のサイズ及び解像度に依存する。例えば、各マクロブロックに16×16ピクセルが含まれる場合、各行におけるマクロブロックの数は、ピクチャ300の幅(ピクセル単位)を16で割ることによって決定することができる。各マクロブロック304を一定数のサブマクロブロック306に分解してもよい。各サブマクロブロック306を一定数のブロック308に分解してもよく、各ブロックは一定数のピクセル310を含む。一例として、本発明を限定することなく、一般的なビデオ符号化方式では、各マクロブロック304は4つのサブマクロブロック306に分解される。各サブマクロブロックは4つのブロック308に分解され、各ブロックは、4×4配列の16ピクセル310を含む。
なお、各ピクチャは、フレームまたはフィールドのいずれかであることに留意されたい。フレームは、完全な画像を指す。フィールドは、あるタイプのディスプレイデバイス上での画像の表示を容易にするために使用される画像の部分である。一般に、画像内のピクセルは、行単位に配置されている。表示を容易にするために、時には、ピクセルの行を交互に2つの異なるフィールドに置くことによって画像を分割することができる。そして、2つのフィールドのピクセルの行は、完全な画像を形成するためにインタレースされる。例えば、陰極線管(CRT)ディスプレイなどのいくつかのディスプレイ装置では、2つのフィールドは単に、急速に連続して次々と表示される。蛍光体の残光または、ディスプレイ内のピクセルを点灯するのに使用されるその他の光を発する要素は、映像結果の持続性と組み合わされた結果、2つのフィールドが連続した画像として認識される。液晶ディスプレイなどのある表示装置については、表示する前に、単一のピクチャに2つのフィールドをインタレースする必要があるかもしれない。符号化された画像を表すストリーミングデータは、典型的には画像がフィールドであるかフレームであるかを示す情報を含む。このような情報は、画像に対するヘッダに含まれてもよい。
図4は、本開示の態様と関連して使用される、ストリーミングデータ401を復号する方法400における可能な処理フローの一例を示す。この特定の例は、たとえばAVC(H.264)規格を使用したビデオ復号の処理フローを示す。符号化されたストリーミングデータ401は、最初にバッファに保存される。符号化されたストリーミングデータ401(例えば、ビデオデータビットストリーム)がネットワーク、例えば、インターネットで転送された場合、データ401は、符号402で示されるように、最初はネットワーク抽象化レイヤ(NAL)復号と呼ばれる処理を経る。NAL復号は、データを送信する際に補助するために追加された情報をデータ401から除去する。「ネットワークラッパー」と呼ばれるこのような情報は、データ401をビデオデータとして特定する、もしくはビットストリームの先頭または末尾、データの配置のビット、及び/またはビデオデータ自体に関するメタデータを示す。
また、例示的に、ネットワークラッパーは、スライスの開始または終了を示すデータなど、低レベルの復号に使用される情報に加えて、例えば、解像度、画像表示形式、データを表示するためのカラーパレット変換行列、各ピクチャのビット数に関する情報、スライスやマクロブロックに関する情報を含むデータ401に関する情報を含んでいてもよい。この情報は、単一のセクション内のタスクグループの各々に渡すべきマクロブロックの数を決定するために使用され得る。その複雑さのため、NAL復号は、典型的にはピクチャとスライスのレベルで行われる。NAL復号に対して使用される最小NALバッファは、通常スライスのサイズのものである。
いくつかの実施の形態では、符号402におけるNAL復号後、図4で説明される残りの復号は、ここではビデオ符号化レイヤ(VCL)復号404、動きベクトル(MV)再構築410及びピクチャ再構築414と呼ばれる3つの異なるスレッドグループまたはタスクグループにおいて実施される。ピクチャ再構築タスクグループ414は、ピクセル予測及び再構築416と後処理420を含み得る。本発明のいくつかの実施形態において、これらのタスクグループは、データ依存性に基づいて選択され、その結果、後続の処理のためにマクロブロックが次のタスクグループに送信される前に、各タスクグループがピクチャ(例えば、フレームまたはフィールド)またはセクション内のすべてのマクロブロックの処理を完了できるようになる。
特定のコーディング規約は、空間領域から周波数領域へのピクセル情報の変換を伴うデータ圧縮の形式を使用してもよい。そのような変換は、特に、離散コサイン変換(DCT)として知られている。このような圧縮データの復号処理は、周波数領域から空間領域に戻す逆変換を伴う。DCTを使用して圧縮されたデータの場合、逆変換は逆離散コサイン変換(IDCT)として知られている。変換されたデータは、時々、離散変換されたデータの数値を表すのに使用されるビット数を減らすために量子化される。例えば、番号1、2、3を全て2にマッピングし、数字4,5,6を全て5にマッピングしてもよい。データを解凍するためには、周波数領域から空間領域への逆変換を行う前に逆量子化(IQ)として知られる処理が用いられる。VCL IQ/IDCT復号処理404のデータ依存関係は、典型的には、同じスライス内のマクロブロックに対するマクロブロックレベルにある。従ってVCL復号処理304によって生成される結果をマクロブロックレベルでバッファリングしてもよい。
VCL復号404は、多くの場合、VCL構文を復号するために使用されるエントロピー復号406と呼ばれる処理を含む。AVC(H.264)のような多くのコーデックは、エントロピー符号化と呼ばれる符号化レイヤを使用する。エントロピー符号化は、符号長が信号の確率に一致するように、信号に符号を割り当てる符号化方式である。典型的には、エントロピーエンコーダは、等しい長さの符号で表されるシンボルを、確率の負の対数に比例した符号で表されるシンボルで置き換えることによってデータを圧縮するために使用される。AVC(H.264)は、2つのエントロピー符号化方式、コンテキスト適応可変長符号化(CAVLC)、及びコンテキスト適応バイナリ算術符号化(CABAC)をサポートする。CABACはCAVLCよりも約10%以上の圧縮を提供する傾向があるため、CABACは、AVC(H.264)ビットストリームを生成する際に多くのビデオエンコーダで好んで利用されている。AVC(H.264)符号化されたデータストリームのエントロピーレイヤを復号することは計算量が大きくなるため、汎用マイクロプロセッサを使用してAVC(H.264)符号化されたビットストリームを復号する装置に対しては困難な課題があるであろう。このような理由から、多くのシステムはハードウェアデコーダアクセラレータを使用している。
エントロピー復号406に加えて、VCL復号処理404は、符号408で示すように逆量子化(IQ)及び/または逆離散コサイン変換(IDCT)を含み得る。これらの処理は、ヘッダ409とマクロブロックからのデータを復号する。復号されたヘッダ409は、隣接マクロブロックのVCL復号を補助するために用いられ得る。
VCL復号404は、マクロブロックレベルのデータ依存頻度で実施され得る。具体的には、同じスライス内の異なるマクロブロックが並列にVCL復号を受け、その結果は、さらなる処理のために動きベクトル再構成タスクグループ410に送信され得る。
続いて、ピクチャまたはセクション内のすべてのマクロブロックは、動きベクトル再構築410を受け得る。MV再構築処理410は、所与のマクロブロック411及び/または同位置のマクロブロックヘッダ413からのヘッダを用いた動きベクトル再構築412を含み得る。動きベクトルは、ピクチャ内で明白な動きを表す。このような動きベクトルは、以前のピクチャのピクセルとピクチャからピクチャへのそれらのピクセルの相対運動の知識に基づいたピクチャ(またはその一部)の再構築を可能にする。いったん動きベクトルが回復されると、ピクセルは、符号416において、VCL復号処理404からの残留ピクセルとMV再構築処理410からの動きベクトルに基づいたプロセスを使用して再構築することができる。MVに対するデータ依存頻度(及び並列処理のレベル)は、MV再構築処理410が他のピクチャからの同位置のマクロブロックに関係するかどうかに依存する。他のピクチャからの同位置のMBヘッダに関係しないMV再構築に対しては、MV再構築処理410は、スライスレベルまたはピクチャレベルで並列に実装することができる。同位置のMBヘッダに関係するMV再構築に対しては、データ依存頻度はピクチャレベルであり、MV再構築処理410はスライスレベルで並列処理を実装することができる。
動きベクトル再構築410の結果は、ピクチャの頻度レベルで並列化することができるピクチャ再構築タスクグループ414に送られる。ピクチャ再構築タスクグループ414内では、ピクチャまたはセクション内のすべてのマクロブロックは、デブロッキング420と併せてピクセル予測及び再構築416を受け得る。ピクセル予測及び再構成タスク416とデブロッキングタスク420は復号効率を高めるために並列化することができる。これらのタスクは、データ依存関係に基づいて、マクロブロックレベルでピクチャ再構築タスクグループ414内で並列化され得る。例えば、ピクセル予測及び再構築416は1つのマクロブロックに対して行われ、デブロッキング420がその後に続く。デブロッキング420により得られた復号されたピクチャからの参照ピクセルは、後続のマクロブロック上のピクセル予測及び再構築416で使用され得る。ピクセル予測及び再構築418は復号されたセクション419(例えば、復号されたブロックまたはマクロブロック)を生成する。セクション419は、後続のマクロブロックに対するピクセル予測及び再構築処理418への入力として使用される近傍ピクセルを含む。ピクセル予測と再構築416に対するデータ依存関係のゆえに、同じスライス内のマクロブロックに対するマクロレベルでの並列処理がある程度可能になる。
ブロック符号化技術が使用されるブロック間で形成される鋭いエッジを平滑化することによって画質と予測性能を向上させるために、後処理タスクグループ420は、復号されたセクション419内のブロックに適用されるデブロッキングフィルタ422を含み得る。デブロッキングフィルタ422は、得られたデブロックされたセクション424の外観を改善するために使用することができる。
復号化されたセクション419またはデブロックされたセクション424は、隣接マクロブロックをデブロッキングする際に使用するための隣接ピクセルを提供し得る。さらに、現在復号中のピクチャからのセクションを含む復号されたセクション419は、後続のマクロブロックに対するピクセル予測及び再構築418のための参照ピクセルを提供し得る。ピクチャ(またはそのサブセクション)がインター符号化であるかイントラ符号化であるかにかかわらず、現在のピクチャ内からのピクセルが上述したように同じ現在のピクチャ内のピクセル予測のために任意に使用されるのは、この段階である。デブロッキング420は、同じピクチャ内のマクロブロックに対してマクロブロックレベルで並列化することができる。
後処理420の前に生成した復号されたセクション419及び後処理されたセクション424は、同じバッファ、たとえば、関係した特定のコーデックに応じた出力ピクチャバッファに保存され得る。なお、デブロッキングは、H.264における後処理フィルタであることに留意されたい。H.264は、デブロッキング前のマクロブロックを、隣接するマクロブロックのイントラ予測と、未来のピクチャマクロブロックのインター予測に対するデブロッキング後のマクロブロックの参照として、使用するからである。デブロッキング前とデブロッキング後の両方のピクセルが予測に用いられるため、デコーダまたはエンコーダは、デブロッキング前のマクロブロックとデブロッキング後のマクロブロックの両方をバッファリングする必要がある。たいていの低コストの民生用アプリケーションでは、メモリ使用量を減らすために、デブロッキング前のピクチャとデブロッキング後のピクチャは同じバッファを共有する。MPEG2またはMPEG4 part 10(注:H.264もMPEG4パート10と呼ばれる)を除くMPEG4などの以前のH.264規格に対しては、後処理の前のマクロブロック(例えば、デブロッキング前のマクロブロック)だけが、他のマクロブロックの予測のための参照として使用される。そのようなコーデックでは、フィルタ処理前のピクチャは、フィルタ処理後のピクチャと同じバッファを共有しなくてよい。
したがって、H.264に対しては、ピクセル復号の後、復号化されたセクション419は、出力ピクチャバッファに保存される。その後、後処理されたセクション424は、出力ピクチャバッファにある復号化されたセクション419を置き換える。非H.264の場合は、デコーダは出力ピクチャバッファに復号化されたセクション419を保存するだけである。後処理は、表示時に行われており、後処理の出力はデコーダ出力ピクチャバッファと同じバッファを共有することはない。
少なくとも復号処理400の一部のいくつかは、ハードウェアデコーダ104上で実施され得る。ハッカーが悪質なコードまたはデータを、システム100によって受信された符号化されたストリーミングデータ401に挿入することが可能である。このような悪質なコードまたはデータは、ハードウェアデコーダ104を権限なく使用することによってシステムを攻撃するために使用され得る。ハードウェアデコーダアクセラレータのセキュリティレイヤ114は、ハードウェアデコーダ104をこのような悪意のある攻撃から保護するよう構成されることが可能である。
ハードウェアデコーダの保護
ハードウェアアクセラレータ104を保護するためには、ユーザアプリケーション202及びアクセラレータ104のインターフェースは、十分なメモリアクセス情報を伝送しなければならない。ユーザアプリケーション202がハードウェアデコーダアクセラレータ104に要求をサブミットする場合、その要求は、デコーダ104によってアクセスされたすべてのユーザバッファ208のアドレスを伝送しなければならない。また、ハードウェアアクセラレータ104のメモリ使用量を計算するために必要な、すべての情報を伝送する必要がある。異なるコーディング規約用にハードウェアアクセラレータ104によって使用される、このようなバッファのいくつかの例は、下記の表1中にて示す。

現在のビデオ符号化規格としては、これらのバッファサイズに関する情報は、マクロブロックレベルより上のビデオストリームで符号化される。表IIは、バッファサイズの情報が異なるビデオ規格にあわせてストリーム中でいかに符号化されるのかを示す。

ユーザの要求を受信後、デコーダ保護レイヤ114は、各バッファの必要サイズを計算し、範囲内のすべてのメモリが有効であるか確かめる。セキュリティをより強固にするため、ユーザはメッセージを要求し、一旦、タスクがサブミットされたら、任意のユーザ処理アクセスから、ビデオストリームバッファ及び復号したピクセルバッファ以外の、表IIのすべてのバッファが保護されるべきである。さもなければ、その要求が確認された後、ハッカーは有効な要求を無効な要求に置き換える機会を有するかも知れず、ハッカーは、アクセラレータがこれらのバッファを処理している間に、これらのデータバッファ中のコンテンツを変更する可能性がある。
これらのバッファを悪意のある使用から守る、可能な方法のいくつかの例には、下記のものが含まれるがこれらに限定されない。
1.バッファをユーザメモリ空間から安全なメモリ空間へとコピーする。
2.データ範囲内のメモリページをロックし、ユーザ処理によって書き込みできないようにする。注:バッファサイズは、タスクの要求をサブミットするユーザアプリケーションのメモリ使用量情報により計算される。
通常は、復号したピクセルバッファは、アクセラレータ104に「読取りのみ」である。したがって、通常はこのバッファを保護する必要はない。一般的にいくつかの理由から、ビデオストリームバッファを保護するのは実用的ではないと思われる。第1に、このバッファのサイズは、非常に大きく、このバッファ内のすべてのデータをもう一つのメモリ空間にコピーするのは実用的ではないと思われるからである。第二に、ユーザアプリケーションは、他のピクチャのために、まだビットストリームバッファで動いている可能性がある。符号化したピクチャサイズは予想ができない。ピクチャバウンダリをメモリページバウンダリの境界に並べるのは困難である。したがって、あるページをロックしてバッファにユーザアクセスをさせないのは実用的ではない。
ハードウェアアクセラレータ104が、マクロブロックレベルよりも高く符号化したストリームを復号する場合、ストリーム401で符号化したパラメータに関連するバッファサイズが、ユーザの要求のこれらのパラメータに不一致であるため、保護レイヤ114は任意の入力したビットストリームを拒否し得る。これはハードウェアデコーダアクセラレータ104をバッファオーバフロー攻撃から保護する。
各符号化したスライス中のすべてのビデオ符号化規格のため、スライスヘッダはスライスの開始位置を示す情報を伝送する。ある実装においては、デコーダ保護レイヤ114は、スライス位置が現在のピクチャバウンダリ内であるかチェックし得る。もしスライスが現在のピクチャバウンダリ内でないと結論付けた場合、このスライスは悪質なコードまたは悪質なデータを含んでいる可能性があるため破棄されるべきである。
さらに、それぞれの符号化したマクロブロックのため、保護レイヤ114は、現在のマクロブロックが現在のピクチャバウンダリ内であるかをチェックし、現在のマクロブロックが現在のピクチャバウンダリの範囲外である場合、この保護レイヤ114はこのマクロブロックを破棄し得る。
H.264、MPEG4またはVC1ストリーム復号の場合には、各マクロブロックのため、保護レイヤ114は、関連した同位置の参照マクロブロックヘッダが参照マクロブロックヘッダバッファと一緒であるかチェックし得る。もし参照マクロブロックヘッダバッファ内になければ、このマクロブロックは破棄するべきである。
MPEG2ストリーム復号の場合には、保護レイヤ114は、動きベクトルが参照ピクチャバウンダリ内にあるかチェックするべきである。もし参照ピクチャバウンダリ内になければ、このマクロブロックは破棄するべきである。
上述したように、インプットしたストリームバッファを保護するのは困難なため、すべてのビットストリームは上記をチェックするため、データ値はデータが使用されるときにチェックするべきであることに留意する。さもなければ、ハッカーは、アクセラレータがデータを確かめる時間とデータを使用する時間との間に、ビットストリームコンテンツを変える機会を有するだろう。
いくつかの特別な保護ケース
すべてのハードウェアが、ユーザ処理アクセスからある種のバッファをロックする能力を有するとは限らない。例えば、ユーザアプリケーションがマクロブロック中間データバッファにアクセスが可能な場合、ハッカーはアクセラレータに命令して、動きベクトルまたは参照ピクセルを参照してシステムの機密情報を読み取りバッファ内のコンテンツを変更することができる。したがって、マクロブロック中間データバッファ及び参照マクロブロックヘッダバッファのコンテンツによっては、あるメモリアクセス操作のために更なる保護が加えられるべきである。以下は、これらの追加の保護を実装することができる推奨の最良の方法のいくつかの例である。
1.すべてのビデオの規格のため、動きベクトルがマクロブロック中間データバッファに保存される場合には、アクセラレータは参照ピクセル指数の前に、各動きベクトルをチェックしなければならない。
2.H.264及びVCLストリームのため、同位置のマクロブロック動きベクトルが参照マクロブロックヘッダバッファに保存される場合、アクセラレータセキュリティレイヤ114は各参照ピクセル指数の前に動きベクトル参照IDをチェックしなければならない。
3.H.264、MPEG4及びVC1ストリームのため、隣接するマクロブロックバリッドフラグがマクロブロック中間データバッファに保存される場合、アクセラレータセキュリティレイヤ114は、隣接するマクロブロックが、任意の隣接するマクロブロックがアクセスする前に、現在のピクチャバウンダリ内であるかチェックしなければならない。
本開示の態様には、上記の様々な種類のハードウェアデコーダアクセラレータセキュリティレイヤを実装するよう構成されたシステムが含まれる。一例として、限定するものではないが、図5は、本開示の態様に係るビデオ符号化を実装するために用いられるコンピュータシステム500のブロック図を示す。システム500は一般に、メインのプロセッサモジュール501、メモリ502及びハードウェアデコーダ505を含み得る。プロセッサモジュール501には、例えば、シングルコア、デュアルコア、クアドコア、プロセッサ−コプロセッサ、セルプロセッサ、アーキテクチャなどの1つ以上のプロセッサコアを含み得る。
メモリ502は、例えば、RAM、DRAM、ROMなどの集積回路の形態を取ってもよい。そのメモリはまた、プロセッサモジュール501内のすべてのプロセッサコアによってアクセス可能なメインメモリであってもよい。いくつかの実施形態では、プロセッサモジュール501は、1つ以上のプロセッサコアまたは1つ以上のコプロセッサに関連するローカルメモリを有し得る。ソフトウェアコーダプログラム503は、プロセッサモジュール501上で実行することができるプロセッサ読み取り可能な命令の形態でメインメモリ502に保存されてもよい。コーダプログラム503は、例えば、前述したように、ピクチャをハードウェアデコーダアクセラレータ505とともに圧縮したシグナルデータに復号するよう構成し得る。ハードウェアデコーダアクセラレータのセキュリティレイヤ503Aは、メモリ502内に保存し、プロセッサモジュール501上で実行される。セキュリティレイヤ503Aは、上述のように、ハードウェアコーダアクセラレータのために追加のセキュリティを実装するよう構成されている。コーダプログラム503及びハードウェアデコーダアクセラレータセキュリティレイヤ503Aは、任意の適切なプロセッサ読み取り可能な言語、たとえば、C、C++、JAVA(登録商標)、アセンブリ、MATLAB、フォートラン、及び他の様々な言語で書かれ得る。
入力データ507はメモリ502に保存されてもよい。コーダプログラム503及び/またはセキュリティレイヤ503Aの実行中、プログラムコード及び/またはデータ507の一部は、メモリ502またはプロセッサ501に対するプロセッサコアのローカルストアにロードされる。一例であり、限定しないが、入力データ807は、符号化/復号前または符号化/復号の中間段階におけるビデオピクチャまたはそのセクションを含み得る。符号化の場合、データ507は、バッファされたストリーミングデータの一部、たとえば、未符号化ビデオピクチャまたはそのセクションを含み得る。復号の場合、データ507は、未復号のセクション、復号されたが後処理がなされていないセクション、及び復号され後処理がなされたセクションの形式の入力データを含み得る。そのような入力データは、1つ以上のデジタルピクチャの1つ以上の符号化されたセクションを表すデータを有するデータパケットを含んでもよい。一例として、限定するものではないが、そのようなデータパケットは、変換係数の集合及び予測パラメータの部分集合を含んでもよい。これらの様々なセクションは1以上のバッファに保存されてもよい。特に、復号され、及び/または、後処理されたセクションは、メモリ502に実装された出力ピクチャバッファに保存されてもよい。
システム500はさらに、入出力(I/O)要素511、電源(P/S)512、クロック(CLK)513及びキャッシュ514などの周知のサポート機能510を含み得る。装置500は任意に、プログラム及び/またはデータを保存するためのディスクドライブ、CD−ROMドライブ、テープドライブなどの大容量記憶装置515を備えてもよい。装置800はまた、任意に、装置500とユーザの相互作用を容易にするために、ディスプレイユニット516及びユーザインタフェースユニット518を含み得る。ディスプレイユニット516は、テキスト、数値、グラフィカルシンボルや画像を表示する陰極線管(CRT)、またはフラットパネルスクリーンの形態であってもよい。ユーザインタフェース518は、キーボード、マウス、ジョイスティック、ライトペンや他の装置を含んでもよく、これらは、グラフィカルユーザインタフェース(GUI)と併せて使われてもよい。装置500はまた、ネットワークインターフェース520を含み、これにより、当該装置がインターネットのようなネットワーク522上で他の装置と通信することが可能になる。システム500は、ネットワークインターフェース520を介して、ネットワーク522に接続されたその他の装置から、符号化したストリーミングデータ(例えば、1つ以上の符号化したビデオフレーム)のフレームを1つ以上受信し得る。これらの構成要素はハードウェア、ソフトウェア、ファームウェアまたはこれらの2以上の組み合わせによって実装される。
本開示の態様は、ハードウェアデコーダアクセラレータのセキュリティレイヤ503Aの使用を通じて、システム500上での悪意のある攻撃に対する追加の保護を提供する。
本発明の好ましい実施の形態を完全な形で説明してきたが、いろいろな代替物、変形、等価物を用いることができる。したがって、本発明の範囲は、上記の説明を参照して決められるものではなく、請求項により決められるべきであり、均等物の全範囲も含まれる。ここで述べた特徴はいずれも、好ましいかどうかを問わず、本明細書で記載される他の特徴と組み合わせてもよい。下記の請求項において、明示的に断らない限り、各項目は1またはそれ以上の数量である。請求項において「〜のための手段」のような語句を用いて明示的に記載する場合を除いて、請求項がミーンズ・プラス・ファンクションの限定を含むものと解してはならない。



  1. プロセッサモジュール、メモリ及びハードウェアエンコーダアクセラレータを有するシステム内で符号化したデジタルストリーミングデータの1つ以上のフレームを受信し、
    前記ハードウェアエンコーダアクセラレータを使用した前記符号化したデジタルストリーミングデータの前記フレームを1つ以上復号し、
    ソフトウェアセキュリティレイヤを使用して、前記符号化したデジタルストリーミングデータの前記1つ以上のフレーム内に埋め込まれた悪意のあるデータによる前記ハードウェアエンコーダアクセラレータの利用からシステムを保護することを含む方法。

  2. 前記ソフトウェアセキュリティレイヤが前記システムのファームウェア内に実装される、請求項1に記載の方法。

  3. 前記ソフトウェアセキュリティレイヤが前記システムのシステムソフトウェア中のカーネルドライバ内に実装される、請求項1に記載の方法。

  4. 前記ソフトウェアセキュリティレイヤが前記システムのシステムソフトウェア中のカーネルドライバ上部のソフトウェアレイヤ中に実装される、請求項1に記載の方法。

  5. 前記ソフトウェアセキュリティレイヤが、前記1つ以上のフレームを復号する際に使用される1つ以上のバッファの必要なサイズを計算し、範囲内のすべてのメモリが有効であるか確認するよう構成されている、請求項1に記載の方法。

  6. 前記ソフトウェアセキュリティレイヤが、一旦タスクが送信されると任意のユーザ処理アクセスから前記1つ以上のフレームを復号するのに使用される1つ以上のバッファを保護するよう構成されている、請求項1に記載の方法。

  7. 前記ソフトウェアセキュリティレイヤがユーザメモリ空間から安全なメモリ空間へと前記1つ以上のバッファをコピーするよう構成されている、請求項6に記載の方法。

  8. 前記ソフトウェアセキュリティレイヤが、ユーザの処理によって書き込まれたデータ範囲内の1つ以上のメモリページをロックするよう構成されている、請求項6に記載の方法。

  9. 前記ハードウェアアクセラレータが、マクロブロックよりも高いレベルで符号化したストリームを復号した場合、ストリームで符号化したパラメータに関連するバッファサイズが、ユーザの要求のこれらのパラメータに不一致であるため、前記ソフトウェアセキュリティレイヤが任意の入力したビットストリームを拒否する、請求項1に記載の方法。

  10. 前記ソフトウェアセキュリティレイヤが、スライスの位置が現在のピクチャバウンダリ内であるかチェックし、スライスが前記現在のピクチャバウンダリ内でないと結論付けたときには前記スライスを破棄する、請求項1に記載の方法。

  11. 前記1つ以上のフレーム内にあるそれぞれ符号化したマクロブロックに対して、前記ソフトウェアセキュリティレイヤが、前記1つ以上のフレーム内の所与のマクロブロックが、現在のピクチャバウンダリ内にあるかチェックし、もし前記現在のピクチャバウンダリ内にない場合には、前記所与のマクロブロックを破棄する、請求項1に記載の方法。

  12. 前記1つ以上のフレーム中のそれぞれのマクロブロックに対して、関連する同位置の参照マクロブロックヘッダが、参照マクロブロックヘッダバッファと一緒であるか前記ソフトウェアセキュリティレイヤがチェックし、前記参照マクロブロックヘッダバッファ内にない場合には、前記参照マクロブロックを破棄する、請求項1に記載の方法。

  13. 前記ソフトウェアセキュリティレイヤが、前記1つ以上のフレーム内のマクロブロック内の動きベクトルが、参照ピクチャバウンダリ内にあるかチェックし、前記動きベクトルが前記参照ピクチャバウンダリ内にない場合には、前記マクロブロックを破棄する、請求項1に記載の方法。

  14. 前記ソフトウェアセキュリティレイヤが、データが使用されるとき、前記1つ以上のフレーム内の前記データのデータ値のチェックを実行する、請求項1に記載の方法。

  15. プロセッサモジュールと、
    前記プロセッサに連結されたハードウェアデコーダアクセラレータと、
    前記プロセッサに連結されたメモリを含むシステムであって、前記メモリが方法を実行するよう構成された実行可能な命令を含み、前記方法は、
    前記システム内で符号化したデジタルストリーミングデータのフレームを1つ以上受信し、
    前記ハードウェアエンコーダアクセラレータを使用した符号化したデジタルストリーミングデータの前記フレームを1つ以上復号し、
    ソフトウェアセキュリティレイヤを使用して、符号化したデジタルストリーミングデータの前記1つ以上のフレーム内に埋め込まれた悪意のあるデータによって、前記ハードウェアエンコーダアクセラレータの利用することから前記システムを保護することを含むシステム。

  16. 前記ソフトウェアセキュリティレイヤが前記システムのファームウェア内に実装される、請求項15に記載のシステム。

  17. 前記ソフトウェアセキュリティレイヤが前記システムのシステムソフトウェア中のカーネルドライバ内に実装される、請求項15に記載のシステム。

  18. 前記ソフトウェアセキュリティレイヤが前記システムのシステムソフトウェア中のカーネルドライバ上部のソフトウェアレイヤ中に実装される、請求項15に記載のシステム。

  19. 前記ソフトウェアセキュリティレイヤが、前記1つ以上のフレームを復号する際に使用される1つ以上のバッファの必要なサイズを計算し、範囲内のすべてのメモリが有効であるか確認するよう構成されている、請求項15に記載のシステム。

  20. 前記ソフトウェアセキュリティレイヤが、一旦タスクが送信されると任意のユーザ処理アクセスから1つ以上の前記フレームを復号するのに使用される、1つ以上のバッファを保護するよう構成されている、請求項15に記載のシステム。

  21. 前記ソフトウェアセキュリティレイヤがユーザメモリ空間から安全なメモリ空間へと前記1つ以上のバッファをコピーするよう構成されている、請求項20に記載のシステム。

  22. 前記ソフトウェアセキュリティレイヤが、ユーザの処理によって書き込まれたデータ範囲内の1つ以上のメモリページをロックするよう構成されている、請求項20に記載のシステム。

  23. 前記ハードウェアアクセラレータが、マクロブロックよりも高いレベルで符号化したストリームを復号する場合、前記ストリームで符号化したパラメータに関連するバッファサイズが、ユーザの要求のこれらのパラメータに不一致であるため、前記ソフトウェアセキュリティレイヤが任意の入力したビットストリームを拒否する、請求項15に記載のシステム。

  24. ソフトウェアセキュリティレイヤが、スライスの位置が現在のピクチャバウンダリ内にあるかをチェックし、スライスが前記現在のピクチャバウンダリ内でないと結論付けたときには前記スライスを破棄する、請求項15に記載のシステム。

  25. 前記1つ以上のフレーム内にあるそれぞれ符号化したマクロブロックに対して、前記ソフトウェアセキュリティレイヤが、前記1つ以上のフレーム内の所与のマクロブロックが、現在のピクチャバウンダリ内であるかチェックし、もし前記現在のピクチャバウンダリ内でない場合には、前記所与のマクロブロックを破棄する、請求項15に記載のシステム。

  26. 前記1つ以上のフレーム中のそれぞれのマクロブロックに対して、関連する同位置の参照マクロブロックヘッダが、参照マクロブロックヘッダバッファと一緒であるか前記ソフトウェアセキュリティレイヤがチェックし、前記参照マクロブロックヘッダバッファ内にない場合には、前記参照マクロブロックを破棄する、請求項15に記載のシステム。

  27. 前記ソフトウェアセキュリティレイヤが、前記1つ以上のフレーム内のマクロブロック内の動きベクトルが、参照ピクチャバウンダリ内であるかチェックし、前記動きベクトルが前記参照ピクチャバウンダリ内にない場合には、前記マクロブロックを破棄する、請求項15に記載のシステム。

  28. 前記ソフトウェアセキュリティレイヤが、データが使用されるとき、前記1つ以上のフレーム内の前記データのデータ値のチェックを実行する、請求項15に記載のシステム。

  29. 方法を実行するよう構成されたコンピュータが読取り可能な命令をその中に埋め込まれた非一時的なコンピュータ可読媒体であって、前記方法が、
    プロセッサモジュール、メモリ及びハードウェアエンコーダアクセラレータを有するシステム内で符号化したデジタルストリーミングデータの1つ以上のフレームを受信し、
    前記ハードウェアエンコーダアクセラレータを使用した符号化したデジタルストリーミングデータの前記1つ以上のフレームを復号し、
    ソフトウェアセキュリティレイヤを使用して、符号化したデジタルストリーミングデータの前記1つ以上のフレーム内に埋め込まれた悪意のあるデータによって、前記ハードウェアエンコーダアクセラレータの利用することから前記システムを保護することを含むコンピュータ可読媒体。

 

 

Patent trol of patentswamp
類似の特許
本発明の実施形態は、奥行き情報符号化および復号化方法、奥行き情報符号化および復号化装置を開示し、3Dビデオ圧縮符号化技術に関する。前記符号化方法は、奥行き数値をインデックス番号で示すデータ構造である奥行きマッピングルックアップテーブルにおけるすべての要素を値の昇順で配置することと、前記奥行きマッピングルックアップテーブルにおける最初の要素の値を符号化してビットストリームに書き込むことと、前記奥行きマッピングルックアップテーブルにおける最初の要素以外の各要素の値と奥行きマッピングルックアップテーブルにおけるインデックス番号が当該要素のインデックス番号より小さい要素の値との差をそれぞれ符号化してビットストリームに書き込むこととを含む。本発明の実施形態は、奥行き情報復号化方法、奥行き情報符号化および復号化装置を開示する。本発明の技術的解決手段により、奥行き情報符号化および復号化効率を向上させ、奥行き情報が符号化される場合のリソース占有率を低下させる。
【選択図】図1
ビデオコーダは、非可逆コード化を使用してコード化されるブロックの残差データに、残差差動パルス符号変調技法を適用する。ブロックは、残差データへの変換の適用を伴わずにコード化され得る。
ビデオデコーダが、視差ベクトルを判断するために隣接ブロックベースの視差ベクトル(NBDV)導出プロセスを実施するか、または視差ベクトルを判断するためにNBDV洗練(NBDV−R)プロセスを実施する。ビデオデコーダは、複数の視差動きベクトルに対して中央値フィルタリングプロセスを使わずに、視差ベクトルを、現在のブロックについての視差ベクトルとして使い、ここで現在のブロックは、スキップモードまたはダイレクトモードのいずれかにおいてコーディングされている。さらに、ビデオコーダは、現在のブロックについてのピクセル値を判断する。
本発明は、品質基準を最適化することによって、画像ダイナミックレンジ変換演算子のセットから画像ダイナミックレンジ変換演算子を選択するための方法に関し、各画像ダイナミックレンジ変換演算子(TMOi)は、オリジナルの画像(I1)に適用されて(10)、そのダイナミックレンジがオリジナルの画像よりも低い、修正された画像(Ii2)と呼ばれる画像を取得し、前記品質基準(Qi)は、各画像ダイナミックレンジ変換演算子(TMOi)について、前記画像ダイナミックレンジ変換演算子(TMOi)によって修正されたオリジナルの画像(Ii2)を符号化および復号化した後の再構築されたバージョン(Ii3)から算出される歪み(Di)に応じて算出される。
係数レベルコード化のためのゴロムコードを定義するために使用されるライスパラメータの値を更新するための技法について説明する。ライスパラメータによって定義されるゴロムコードは、係数グループ(CG)中の少なくとも1つの係数のための係数レベルの残りの絶対値をコード化するために使用され得る。本技法によれば、ライスパラメータの値は、ライスパラメータの最大値又はライスパラメータの値の変数増分のいずれかの最小値の選択に基づいて更新される。変数増分は、ライスパラメータの値と、コード化されている現在の係数のための係数レベルの絶対値とに基づいて決定される。変換ブロックに変換が適用されるかどうかに基づいて、係数レベルコード化のためのゴロムコードを定義するために使用されるライスパラメータの値を調整するための技法についても説明する。
ビデオ符号化デバイス(例えば、無線送受信ユニット(WTRU))は、送信プロトコルを用いてフレームシーケンス番号を有する符号化されたフレームを送信することができる。符号化デバイス、ビデオ符号化デバイス上のアプリケーション、および/または符号化デバイス上のプロトコル層は、エラー通知を受信することによってパケット損失を検出することができる。パケット損失はMAC層にて検出されうる。パケット損失は、偽装NACKパケット、偽装XRパケットまたは偽装ACKパケットなどの偽装パケットを用いてシグナリングされうる。損失パケットは、(例えば、符号化デバイス、または無線パス上の他のデバイスによって)MAC層にて再送信されうる。パケット損失検出は、アップリンク動作および/またはダウンリンク動作において実行され、クラウドを介してビデオゲームアプリケーションにおいて実行されうる。ビデオ符号化デバイスは、エラー通知に基づいて第2の符号化フレームを生成し、送信することができる。
実装は映像コアにおける一体化された映像ダウンスケーリングのための映像画像処理システム、方法、および装置を含む。ダウンスケーラは表示フレームを計算して外部メモリに書き込む。このフレームは目標表示装置(例えば移動体装置)と同じ解像度を有することができる。次に目標表示装置は元のより高い解像度のフレームではなくこの表示フレームを読み出す。符号化/復号の間のダウンスケーリングを可能にすることによって、装置は、映像データのフレームを別個にダウンスケーリングすることに関連するメモリ帯域、メモリアクセス、バス帯域、そして電療消費などの資源を保存することができる。
モバイル・コンピューティング・デバイス技術、並びに同技術を用いるシステム及び方法が本明細書において説明される。詳細には、分散コンピューティング・システムの処理コンポーネントとして機能することができるモバイル・コンピューティング・デバイス、前記モバイル・コンピューティング・デバイスとペアリングすることができる非一体型スクリーン、並びにそのようなデバイス及びスクリーンを用いるシステム及び方法が説明される。いくつかの実施形態において、前記モバイル・コンピューティング・デバイス技術は、一体型スクリーンを有していないモバイル・コンピューティング・デバイスを含むが、このモバイル・コンピューティング・デバイスは、例えば、有線通信インタフェース又は無線通信インタフェースを介して確立されたペアリング接続を介して、少なくともビデオ情報を、非一体型ターゲット・スクリーンに投げることができる。
マルチレイヤビデオデータを符号化、復号、送信、または受信することを含み得る、マルチレイヤビデオデータをコーディングするためのシステム、方法、およびデバイスが開示される。このシステム、方法、およびデバイスは、レイヤセットの第1の出力レイヤセットを受信または送信し、レイヤセットの第2の出力レイヤセットを受信または送信してよい。このシステム、方法、およびデバイスは、第1の出力レイヤセットおよび第2の出力レイヤセットの少なくとも一方に関するビデオデータをコーディングする。
ビデオコーダは、ビデオ符号化プロセスおよびビデオ復号プロセスの一部として、ビデオデータの現在のブロックの空間的隣接ブロック間で第1の利用可能な視差動きベクトルを決定し得る。さらに、ビデオコーダは、シフト視差動きベクトル候補(DSMV)を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせ得る。ビデオコーダは、DSMVをマージ候補リストに追加し得る。
To top