(57)【特許請求の範囲】
【請求項１】
ビデオデコーダを実装するコンピューティングデバイスにおいて、
ビデオシーケンスのビットストリーム中の符号化データを受け取るステップであって、前記ビットストリームはメタデータに含まれる一以上のパラメータセットを含む、ステップと、
前記一以上のパラメータセットを解析して、arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられるか決定するステップと、
arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられたとき、ベースライン、メイン及びそれ以上のプロファイルを復号できる第１のデコーダエンジンに、前記符号化データを転送するステップと、
前記arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられないとき、メインプロファイル及びそれ以上のプロファイルを復号できる、前記第１のデコーダエンジンとは異なる、第２のデコーダエンジンに、前記符号化データを転送するステップとを有する方法。
【請求項２】
コンピューティングデバイスに、
ビデオシーケンスのビットストリーム中の符号化データを受け取るステップであって、前記ビットストリームはメタデータに含まれる一以上のパラメータセットを含む、ステップと、
前記一以上のパラメータセットを解析して、arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられるか決定するステップと、
arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられたとき、ベースライン、メイン及びそれ以上のプロファイルを復号できる第１のデコーダエンジンに、前記符号化データを転送するステップと、
前記arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられないとき、メインプロファイル及びそれ以上のプロファイルを復号できる、前記第１のデコーダエンジンとは異なる、第２のデコーダエンジンに、前記符号化データを転送するステップとを実行させるコンピュータプログラム。
【請求項３】
ビデオデコーダを実装するコンピューティングデバイスであって、一以上の処理ユニットを有し、
ビデオシーケンスのビットストリーム中の符号化データを受け取るステップであって、前記ビットストリームはメタデータに含まれる一以上のパラメータセットを含む、ステップと、
前記一以上のパラメータセットを解析して、arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられるか決定するステップと、
arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられたとき、ベースライン、メイン及びそれ以上のプロファイルを復号できる第１のデコーダエンジンに、前記符号化データを転送するステップと、
前記arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられないとき、メインプロファイル及びそれ以上のプロファイルを復号できる、前記第１のデコーダエンジンとは異なる、第２のデコーダエンジンに、前記符号化データを転送するステップとを有する方法を実行するように構成された、
コンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概して、復号に関し、具体的には、ファイルコンテナを有する符号化ビデオシーケンスからのメタデータを用いた復号最適化に関する。
【背景技術】
【０００２】
エンジニアは、圧縮（ソースコーディングやソースエンコーディングとも呼ぶ）を用いてデジタルビデオのビットレートを低下する。圧縮により、ビデオ情報を低ビットレート形式に変換することにより、ビデオ情報の記憶と送信のコストが低下する。解凍（復号とも呼ぶ）により、圧縮形式から原情報のバージョンが再構成される。「コーデック」とはエンコーダ／デコーダシステムである。
【０００３】
ここ２０年間にわたり、様々なビデオコーデック標準が作られてきた。これには、Ｈ．２６１、Ｈ．２６２（ＭＰＥＧ−２）、Ｈ．２６３標準及びＭＰＥＧ−１、ＭＰＥＧ−４標準がある。最近、Ｈ．２６４標準（ＡＶＣまたは１４４９６−１０とも呼ばれる）とＶＣ−１標準が作られた。次世代標準のＨＥＶＣが開発中である。詳細については、それぞれの標準の代表的バージョンを参照されたい。ビデオコーデック標準では、一般的には、符号化ビデオビットストリームのシンタックスのオプションを規定し、符号化及び復号においてある機能が利用された時のビデオシーケンスのビットストリーム中にあるパラメータを詳細に規定している。多くの場合、ビデオコーデック標準には、デコーダが実行して復号時に正しい結果を得る復号動作に関する詳細も規定している。
【０００４】
最近の復号にはグラフィックス処理ユニット（ＧＰＵ）を使える。ＧＰＵは、ディスプレイに出力するフレームバッファ中の画像の構成を高速化するように、メモリを高速に操作し変更するように設計された特殊な電子回路である。ＧＰＵは、組み込みシステム、携帯電話、パーソナルコンピュータ、ワークステーション、ゲーム機などで用いられている。最近のＧＰＵは非常に効率的にコンピュータグラフィックスを操作し、並列性が高い構造により、多くのデータブロックを並列に処理するアルゴリズムに対して、汎用ＣＰＵより有効である。
【０００５】
高速ではあっても、ほとんどのＧＰＵは、Ａｒｂｉｔｒａｒｙ  Ｓｌｉｃｅ  Ｏｒｄｅｒ  （ＡＳＯ）及び／またはＦｌｅｘｉｂｌｅ  Ｍａｃｒｏ−ｂｌｏｃｋ  Ｏｒｄｅｒ  （ＦＭＯ）で符号化されたビデオを処理するようには設計されていない。かかるアルゴリズムを用いて符号化されたビデオは、一般的に、ＣＰＵのようにベースラインプロファイルを処理するように設計されたデコーダを用いて処理される。しかし、ＧＰＵは概してメインプロファイルとそれより高次のプロファイルを有するビデオシーケンスを処理するように構成されている。残念ながら、多くのＨ．２６４／ＡＶＣエンコーダは、ベースラインビットストリームを生成し、これは実際にはメインプロファイルに整合するものであるが、制約フラグ（constraint  flag）の設定が正しくない。このようなフラグ設定の間違いにより、Ｈ．２６４／ＡＶＣデコーダは、ＡＳＯやＦＭＯなどのアルゴリズムは使われていなくても、クリップをＡＳＯまたはＦＭＯを含む純粋なベースラインとして扱ってしまう。
【発明の概要】
【０００６】
本欄では、発明の詳細な説明で詳しく説明するコンセプトの一部を選んで、簡単に説明する。本欄は、特許を請求する主題の重要な特徴や本質的な特徴を特定するものではなく、特許を請求する主題の範囲を限定するものでもない。
【０００７】
最適化決定をするために符号化ビデオシーケンスのメタデータを用いるビデオデコーダを開示する。例えば、一実施形態では、メタデータを用いて、どのデコーダエンジンがビデオシーケンスを受け取れるか選択する。デコーダには複数のデコーダエンジンがあり、ベースラインプロファイルを処理するもの（例えばＣＰＵ）や処理できないが一般的により効率的なもの（例えばＧＰＵ）などがある。最も効率的なデコーダエンジンを選択するのにメタデータを用いることにより、デコーダを最適化できる。
【０００８】
他の一実施形態では、最適化決定は、ビデオシーケンスに関連するメタデータ情報の長さとロケーションとに基づき得る。かかるメタデータ情報を用いて、デコーダエンジンはスタートコードスキャニング（start-code  scanning）をスキップして、復号プロセスをより効率的にできる。
【０００９】
さらに他の一実施形態では、ビットストリームパーサがスライスヘッダ、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）及びサプリメンタルエンハンスメント情報（ＳＥＩ）を復号する間に、エミュレーション防止バイトを動的に除去できる。ネットワークアクセスレイヤユニット（ＮＡＬＵ）の長さ情報が利用できるとき、ハードウェア高速化復号においてスタートコードスキャニングを完全にスキップし、ＮＡＬＵの１対１ディレクトリをハードウェアに送る。
【００１０】
本発明の上記の及びその他の目的、特徴、及び効果は、添付した図面を参照して以下の詳細な説明を読めば、明らかとなるであろう。
【図面の簡単な説明】
【００１１】
【図１】説明する幾つかの実施形態を実装できるコンピューティング環境の一例を示す図である。
【００１２】
【図２】符号化ビデオシーケンス中のメタデータに基づいて復号最適化決定を行う方法を示すフローチャートである。
【００１３】
【図３】メタデータを用いて、利用可能などのデコーダエンジンをビデオシーケンスの復号に用いられるか決定することを示すフローチャートである。
【００１４】
【図４】図３のフローチャートを拡張するのに用いられる、ＭＰＥＧ−４ビデオシーケンスの具体例であるもっと詳細なフローチャートである。
【００１５】
【図５】複数のデコーダエンジンを含むデコーダのアーキテクチャ構成の一例を示す図である。
【００１６】
【図６】利用できるデコーダエンジンの一例を示す図である。
【００１７】
【図７】デコーダエンジンに長さとロケーションを送る方法を示すフローチャートである。
【００１８】
【図８】エミュレーション防止バイトを除去する方法を示すフローチャートである。
【発明を実施するための形態】
【００１９】
Ｉ．コンピューティング環境例
図１は、説明する手法とツールが実装され得る好適なコンピューティング環境（１００）の一般化例を示す。コンピューティング環境（１００）は、利用や機能性の範囲について限定することを意図したり示唆するものではない。本手法とツールは広範な汎用コンピューティング環境や特定目的コンピューティング環境で実施することができるからである。
【００２０】
図１を参照して、コンピューティング環境（１００）は、コンピューティングデバイスを実装する際に利用できる一以上の処理ユニット（１１０，１１５）とメモリ（１２０，１２５）を含む。図１では、この最も基本的な構成（１３０）は点線内に含まれる。処理ユニット（１１０、１１５）はコンピュータ実行可能命令を実行する。処理ユニットは、汎用中央処理ユニット（ＣＰＵ）、特定用途集積回路（ＡＳＩＣ）中のプロセッサ、その他の任意のタイプのプロセッサであり得る。マルチプロセッシングシステムにおいて、複数の処理ユニットは、コンピュータ実行可能命令を実行して、処理パワーを増加する。例えば、図１は、中央処理ユニット（１１０）及びグラフィックス処理ユニットまたは補助処理ユニット（１１５）を示す。メモリ（１２０、１２５）は、処理ユニットがアクセスできる、揮発性メモリ（例えば、レジスタ、キャッシュ、ＲＡＭ）であっても、非揮発性メモリ（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）であっても、またはこれら２つの組合せであってもよい。メモリ（１２０，１２５）は、処理ユニットによる実行に適したコンピュータ実行可能命令の形式の、デコーダを最適化する一以上のイノベーションを実現するソフトウェア（１８０）を記憶している。
【００２１】
コンピューティング環境は追加的機能（features）を有していても良い。例えば、コンピューティング環境（１００）は、記憶装置（１４０）、一以上の入力デバイス（１５０）、一以上の出力デバイス（１６０）、及び一以上の通信接続（１７０）を含む。バス、コントローラ、またはネットワークなどの相互接続メカニズム（図示せず）が、コンピューティング環境（１００）のコンポーネントを相互接続する。一般的には、オペレーティングシステムソフトウェア（図示せず）が、そのコンピューティング環境（１００）で実行している他のソフトウェアに動作環境を提供し、コンピューティング環境（１００）のコンポーネントの動作を調整する。
【００２２】
記憶装置（１４０）は、リムーバブルまたは非リムーバブルであり、磁気ディスク、磁気テープやカセット、ＣＤ−ＲＯＭ、ＤＶＤ、またはその他の記憶媒体であって一時的でない情報の記憶に使え、コンピューティング環境（１００）内でアクセスできるものを含む。ストレージ（１４０）は、デコーダ最適化する一以上のイノベーションを実現するソフトウェア（１８０）の命令を記憶できる。
【００２３】
入力デバイス（１５０）は、キーボード、マウス、ペン、トラックボールなどのタッチ入力デバイス、音声入力デバイス、スキャニングデバイス、またはその他のデバイスであってコンピューティング環境（１００）に入力を提供するものである。ビデオデコーディングの場合、入力デバイス（１５０）は、ビデオカード、テレビチューナカード、または同様のデバイスであってアナログまたはデジタル形式のビデオ入力を受け付けるもの、またはＣＤ−ＲＯＭやＣＤ−ＲＷであってコンピューティング環境（１００）にビデオサンプルを読み込むものであり得る。出力デバイス（１６０）は、例えば、ディスプレイ、プリンタ、スピーカ、ＣＤライタ、またはその他のデバイスであってコンピューティング環境（１００）からの出力を提供するものである。
【００２４】
通信接続（１７０）により通信媒体による他のコンピューティングエンティティへの通信が実現できる。通信媒体は、コンピュータ実行可能命令、オーディオやビデオの入出力、その他のデータなどの情報を、変調データ信号として搬送する。変調データ信号は、情報を信号にエンコードするように設定または変更された特徴を有する信号である。限定ではなく例として、通信媒体は、電気的、光学的、ＲＦまたはその他のキャリアで実装される有線または無線の技術を含む。
【００２５】
手法とツールは、コンピュータ読み取り可能媒体の一般的なコンテキストで説明できる。コンピュータ読み取り可能媒体は、コンピュータ環境内でアクセスできる任意の利用可能な有体媒体である。限定ではなく例として、コンピューティング環境（１００）において、コンピュータ読み取り可能媒体は、メモリ（１２０）、ストレージ（１４０）、及びこれらの組み合わせを含む。
【００２６】
手法とツールは、プログラムモジュールに含まれ、ターゲットリアルまたはバーチャルプロセッサ上のコンピューティング環境で実行されているようなコンピュータ実行可能命令の一般的なコンテキストで説明できる。一般的に、プログラムモジュールには、あるタスクを実行し、またはある抽象的データタイプをインプリメントするルーチン、プログラム、ライブラリ、オブジェクト、クラス、コンポーネント、データ構造などが含まれる。プログラムモジュールの機能は、様々な実施形態で必要に応じて複数のプログラムモジュールに結合または分離してもよい。プログラムモジュールに対するコンピュータ実行可能命令は、ローカルまたは分散コンピューティング環境内で実行できる。
【００２７】
「システム」及び「デバイス」との用語はここでは交換可能に用いられる。文脈により明確に示されない限り、どちらの用語もコンピューティングシステムやコンピューティングデバイスの種類について何らかの限定を示唆するものではない。一般的に、コンピューティングシステムやコンピューティングデバイスは、ローカルまたは分散型であってもよく、特定用途ハードウェア及び／または汎用ハードウェアの任意の組み合わせを含み、ソフトウェアがここに説明する機能を実装し得る。
【００２８】
プレゼンテーションのため、詳細な説明では、コンピューティング環境におけるコンピュータ動作を記載するために「決定する（determine）」や「選択する（select）」などの用語を用いる。これらの用語は、コンピュータにより実行される高次元の抽象的概念であり、人間により行われる行為と近藤してはならない。これらの用語に対応する実際のコンピュータの動作は、実装によって変わる。
ＩＩ．メタデータ支援復号最適化の概要
【００２９】
図２は、メタデータを用いて復号を最適化する方法を示すフローチャートである。処理ブロック２００において、符号化ビデオシーケンスを受信する。符号化ビデオシーケンスはムービークリップその他のビデオシーケンスであってもよく、ＭＰＥＧ−Ｘ、ＡＶＩ、ＭＫＶ、ＡＳＦなどを含むいろいろなコンテナフォーマットのいずれかを用いることができる。また、Ｈ．２６４／ＡＶＣ、ＶＣ−１、ＭＰＥＧ−４  Ｐｔ２などのビデオ圧縮の様々な標準を用いることができる。処理ブロック２０２において、復号決定をするために、符号化ビデオシーケンス中のメタデータを分析し得る。メタデータは、ビデオシーケンスの原画像データを記述または分類するときに支援するために用いられるものであれば何でもよい。例えば、ＭＰＥＧ−４では、シーケンスパラメータセット（ＳＰＳ）やピクチャパラメータセット（ＰＰＳ）などのパラメータセットに関するメタデータを取得するため、Sample  Description  Box（ＳＴＳＤ）が用いられる。パラメータセットは、デコーダ最適化決定（処理ブロック２０４）をするのに用い得るarbitrary  slice  ordering（ＡＳＯ）とflexible  macroblock  ordering（ＦＭＯ）に関する追加的情報を含み得る。例えば、メタデータを用いて、符号化データを最も効率的なデコーダエンジンに転送する選択をし得る。他の例では、メタデータを用いてビットストリームパーシングを最適化できる。これについては後でさらに説明する。他のメタデータを用いることもでき、ここに説明の実施形態は使用する特定のメタデータや特定のデコーダ最適化決定には限定されない。
ＩＩＩ．メタデータを用いたデコーダエンジン選択
【００３０】
図３は、図２と共に用いられる追加的な詳細または処理ブロックを示す実施形態である。処理ブロック３００において、メタデータを分析して最も効率的なデコーダエンジンを決定する。効率的なデコーダエンジンは、例えば、最も短時間で復号を実行するものである。メモリ使用量、精度などの他の効率パラメータも分析できる。処理ブロック３０２において、デコーダは、複数の（例えば、２以上の）デコーダエンジンを含み、分析の結果、符号化データは適当なデコーダエンジンに転送され得る。第１のデコーダエンジンのタイプは、メインプロファイルまたは高次プロファイルのビットストリームを復号できるデコーダエンジンである。一般的に、ＧＰＵなどのデコーダエンジンやその他のプロセッサであって復号の一部を復号用に設計された特殊ハードウェアで実行するもの（ハードウェアアクセラレーションと呼ばれる）はこのグループに入る。第２のデコーダエンジンタイプは、ベースライン、メイン、及び高次プロファイルを復号できるものである。ソフトウェアを用いて復号する中央処理ユニット（ＣＰＵ）は第２のデコーダエンジンタイプの例である。一般的に、ＣＰＵは復号以外の目的で用いられる汎用ハードウェアを有し、結果として効率が低い。処理ブロック３０４において、選択されたデコーダエンジンが符号化データを復号する。ユーザディスプレイなどに復号ビデオを表示するため、復号データを用いることができる。
【００３１】
図４は、ＭＰＥＧ−４の例を用いて、処理ブロック３００を詳しく説明した方法を示すフローチャートである。処理ブロック４００において、符号化ビットストリームメタデータ中のＳＰＳやＰＰＳなどのパラメータセットを解析（parse）され得る。処理ブロック４０２と決定ブロック４０４において、ＳＰＳ及びＰＰＳのメタデータを分析することにより、ＡＳＯやＦＭＯが用いられているか、判断をする。ＹＥＳであれば、ソフトウェアを用いてビットストリームを復号する（処理ブロック４０６）ＣＰＵなどのベースラインプロファイル、メイン及び高次を復号できるデコーダエンジンを選択する。ＮＯであれば、処理ブロック４０８において、ＧＰＵやその他のハードウェア高速化復号エンジンなどの、メイン及び高次のプロファイルを復号できるデコーダエンジンが選択される。
【００３２】
図５は、複数のデコーダエンジン５０２、５０４を含むデコーダ５００を示す図である。デコーダエンジン５０２は、メインプロファイルと高次の符号化データを復号することができるが、一般的にはベースラインプロファイルの復号は出来ないもしくは効率的ではない。このように、データがＡＳＯやＦＭＯなどある種のアルゴリズムを用いて符号化されているとき、デコーダエンジン５０２を使うことはあまり好ましくない。デコーダエンジン５０４は、ベースラインプロファイル、メイン及び高次（higher）プロファイルを復号できるデコーダエンジンである。このように、デコーダエンジン５０４は、デコーダエンジン５０２より種類が多い符号化データタイプを復号できる。５０６において、どちらのデコーダエンジン５０２、５０４が、ここに説明するアルゴリズムを用いて、ビットストリーム中のメタデータに基づいて、受信した符号化データを復号できるか、デコーダ決定ロジックが選択する。
【００３３】
このように、ＭＰＥＧ−４ファイルフォーマットからメタデータが得られれば、フラグが符号化ビットストリーム中に正しく設定されていなくても、ハードウェア高速化ビデオ復号を行える。例えば、クリップ中のＭＰＥＧ−４ファイルフォーマットからの１つの「ｓｔｓｄ」サンプルエントリーがあれば、これはtrueであることが多いが、すべてのＳＰＳとＰＰＳをビットストリーム復号の始めに送信できる。Ｈ．２６４デコーダは、ＳＰＳを解析し、ビットストリームがベースラインプロファイルでありメインプロファイルとはコンパチブルでないことを知った後でも、Ｈ．２６４／ＡＶＣデコーダは、すべてのＰＰＳを解析して、ビットストリームが本当にＦＭＯとＡＳＯを使っているか知ることができた。使っていない場合、多くはこの場合であるが、ビデオ復号のためにビットストリームをハードウェアアクセラレータに送ることができる。基本的に、ＭＰＥＧ−４ファイルフォーマットから得られる追加的メタデータ情報を用いて、さらにワンステップ進んで、すべてのＰＰＳを見て、クリップに対してハードウェア高速化ビデオ復号を使うか否か決定することができる。
ＩＶ．ビデオデコーダエンジンの例
【００３４】
図６は、ここに説明する任意の実施形態を用いて復号を実行できる汎用ビデオデコーダエンジン６００を示す図である。別のデコーダエンジンを使うこともでき、図６は単なる一例である。デコーダエンジン６００は、圧縮ビデオフレームシーケンスの情報６９５を（例えば、圧縮ビデオビットストリームを介して）受け取り、再構成ブロック６０５を含む出力を生成する。ビデオデコーダの具体的な実施形態は、汎用デコーダ６００のバリエーションまたは補足バージョンを使うこともできる。
【００３５】
デコーダエンジン６００は、インター予測及び／またはイントラ予測を用いて符号化されたブロックを解凍する。開示を目的として、図６は、デコーダエンジン６００を通るイントラ符号化ブロックのパス（イントラブロックパスとして示す）と、インター符号化ブロックのパス（インターブロックパスとして示す）とを示す。デコーダエンジン６００の多くのコンポーネントは、インター符号化ブロックとイントラ符号化ブロックとの両方を圧縮するのに用いられる。それらのコンポーネントにより実行される動作は、解凍される情報の種類に応じて変わり得る。
【００３６】
バッファ６９０が、圧縮ビデオシーケンスの情報６９５を受け取り、受け取った情報をエントロピーデコーダ６８０に利用できるようにする。バッファ６９０は、典型的には、時間的にほぼ一定なレートでこの情報を受け取る。バッファ６９０は、再生バッファやその他のバッファを含んでもよい。あるいは、バッファ６９０は、可変レートで情報を受け取る。
【００３７】
エントロピーデコーダ６８０は、典型的には、エンコーダで実行されたエントロピー符号化の逆変換をして、量子化されエントロピー符号化されたデータ及びエントロピー符号化されたサイド情報（例えば、動き情報６１５、フラグ、モード、シンタックス要素、及びその他のサイド情報）をエントロピー復号する。例えば、エントロピーデコーダ６８０は、後で説明するカウンタベースの可変長符号化法を用いて復号（例えば、シンタックス要素の復号）を実行する。逆量子化器６７０は、エントロピー復号されたデータを逆量子化する。逆周波数変換器６６０は、逆周波数変換などの逆変換を適用することにより、量子化された周波数領域データを、空間領域ビデオ情報に変換する。
【００３８】
再構成されるブロック６０５が前方予測を用いてインター符号化されたブロックであるとき、動き補償器６３０は、参照フレーム６２５に動き情報６１５（例えば、予測動き情報）を適用し、再構成されるブロック６０５の予測６３５を構成する。バッファ（ストア）６２０は、参照フレームとして用いるため、前に再構成されたフレームを記憶する。あるいは、動き補償器は他のタイプの動き補償を適用する。動き補償器による予測が完全であることはほとんどなく、デコーダ６００は、ブロック６０５を再構成するために予測６３５に加える予測残差６４５も再構成する。
【００３９】
デコーダが後の動き補償のために再構成フレームを必要とする時、ストア６２０が、後続フレームの予測で用いる再構成フレームをバッファする。フレーム予測の幾つかの実装では、フレームは、（図示したように）ブロックごとに予測され、フレームの各ブロックが予測され得る。同じフレームのブロックまたは異なるフレームの一以上のブロックからの動き情報を用いて、一以上の予測ブロックを予測することができる。
【００４０】
再構成するブロック６０５がイントラ符号化ブロックであるとき、イントラ予測器６５５は、再構成されるブロック６１０の予測６６５を構成する。バッファ（ストア）６２０は、前に再構成されたブロックとフレームを記憶する。動き補償器による予測が完全であることはほとんどなく、デコーダ６００は、ブロック６１０を再構成するために予測６６５に加える予測残差６７５も再構成する。
【００４１】
具体的なデコーダエンジンを説明したが、いろいろなデコーダ構造を用いることができる。デコーダエンジンのタイプは設計事項であり、具体的なアプリケーションに依存する。
Ｖ．メタデータを用いる最適化ビットストリームパーサ
【００４２】
図７はメタデータを用いるデコーダ最適化の実施方法を示すフローチャートである。例示のため、図７のフローチャートをＨ．２６４／ＡＶＣデコーダに関して説明する。しかし、言うまでもなく、本方法は他のデコーダタイプにも適用できる。一般的に、Ｈ．２６４／ＡＶＣデコーダは、各ネットワークアクセスレイヤユニット（ＮＡＬＵ）の始めにスタートコード０ｘ００  ００  ００１を有するビットストリームを受ける。ＭＰＥＧ−４ファイルフォーマットは、各ネットワークアクセスレイヤユニットの長さを示し、サンプルごとに一ピクチャをＨ．２６４／ＡＶＣデコーダに送る。ＮＡＬＵの長さ情報が利用できるとき、ハードウェア高速化復号においてスタートコードスキャニングを完全にスキップし、ＮＡＬＵの１対１ディレクトリをハードウェアに送る。
【００４３】
処理ブロック７００において、デコーダ決定ロジックは、（図５のブロック５０６に示したように）ＮＡＬＵに関連する長さ及びロケーション情報を読み出す。かかる情報はメタデータであり、入来ビットストリームに関連するファイルコンテナ中に見いだすことができる。処理ブロック７０２において、長さ及びロケーション情報が、前に説明したように、選択された適当なデコーダエンジンに送られる。あるいは、本方法は、単一のデコーダエンジンを有するデコーダに適用できる。処理ブロック７０４において、デコーダエンジンは、長さ及びロケーションメタデータ情報を用いて、スタートコードをスキャンせずに、ビットストリームを復号できる。ロケーション情報には、データが始まるビットストリーム中の位置が記載されている。長さ情報により、スタートに対して、データがどこで終わるか分かる。スタートコードのスキャンが必要なくなることにより、ＣＰＵサイクルを大幅に節約できる。ロケーション及び長さ情報がすでに分かっているからである。
【００４４】
図８は、エミュレーション防止バイトを分析する追加的方法の一実施形態を示す図である。Ｈ．２６４／ＡＶＣビデオのソフトウェア復号では、圧縮ビットストリーム中のエミュレーション防止バイト０ｘ０３を除去して、効率的なエントロピー復号を実現できる。すなわち、ソフトウェアＣＡＢＡＣ／ＣＡＶＬＣ復号は、エントロピー復号のプロセスにおいてエミュレーション防止バイトを検出しない方が効率的であり得る。ソフトウェア復号において、ビットストリームパーサは、スタートコードのパーシングとエミュレーション防止バイトの除去を、ほぼ同時に実行するように設計されている。他方、ハードウェア高速化復号では、圧縮ビットストリームからエミュレーション防止０ｘ０３を除去する必要はない。別のビットストリームパーサは、スタートコードのみをスキャンして、ビットストリームパーサがスライスヘッダ、シーケンスパラメータセット（ＳＰＳ）、ピクチャパラメータセット（ＰＰＳ）、及びサプリメンタルエンハンスメント情報（ＳＥＩ）をデコードする間に、実行中に（動的に）、エミュレーション防止バイト０ｘ０３を検出し除去するように設計されていてもよい。
【００４５】
決定ブロック８００において、長さ及びロケーション情報がメタデータ中にあるか判断をする。ＹＥＳであれば、処理ブロック８０２において、スタートコードの長さ及びロケーションが適当なデコーダエンジンに送られ、そのデコーダがスタートコードスキャンをしなくてすむようにする。ＮＯであれば、スタートコードを検索して、長さ及びロケーション情報を決定できるようにする（処理ブロック８０４）。検索は、ビットストリームをスキャンして、各バイトをスタートコードと比較して、ロケーションを見いだすことにより行える。エンドコードを検索して、スタートコードとエンドコードの間のバイトをカウントすることにより、長さを決定できる。決定ブロック８０６において、ソフトウェアデコーダエンジン（例えば、ＣＰＵ）を用いるか、またはエミュレーションバイトを除去して最適化する必要があるデコーダエンジンを用いるか決定する。これらのデコーダエンジンのどちらかを使う場合、処理ブロック８１０において、エミュレーション防止バイトをビットストリームから除去する。処理ブロック８１２において、エミュレーション防止バイトが除去された符号化データは、デコーダエンジンであってベースラインプロファイル、メイン及び高次プロファイルを復号できるものに送られる。長さ及びロケーション情報もデコーダに送ることができる。決定ブロック８０６の答えがＮＯであれば、処理ブロック８１６において、符号化データが、エミュレーション防止バイトを有するメインプロファイル以上を復号できるデコーダに、長さ及びロケーション情報と共に送られる。このように、ＮＡＬＵの長さ情報が利用できるとき、ハードウェア高速化復号においてスタートコードスキャニングを完全にスキップし、ＮＡＬＵの１対１ディレクトリをハードウェアに送る。最適化されたビットストリームパーサは、特にローエンドマシンでのハードウェア高速化ビデオ復号の場合に、ＣＰＵ使用量で大きなゲインを実現する。
【００４６】
開示の方法はどれも、一以上のコンピュータ読み取り可能記憶媒体に記憶されたコンピュータ実行可能命令として実施でき、コンピュータ上で実行できる。コンピュータ読み取り可能記憶媒体は、例えば、一以上の光媒体ディスク、揮発性メモリコンポーネント（ＤＲＡＭやＳＲＡＭなど）、または不揮発性メモリコンポーネント（ハードディスクドライブなど）などの非一時的コンピュータ読み取り可能媒体などである。コンピュータは、例えば、コンピューティングハードウェアを含むスマートフォンやその他のモバイルデバイスを含む、市販のコンピュータなどである。開示の方法を実施するコンピュータ実行可能命令、及び開示の実施形態の実施中に作成及び使用されるデータは、一以上のコンピュータ読み取り可能媒体（例えば、非一時的コンピュータ読み取り可能媒体）に記憶できる。コンピュータ実行可能命令は、例えば、専用ソフトウェアアプリケーション、またはウェブブラウザやその他のソフトウェアアプリケーションを介してアクセスまたはダウンロードするソフトウェアアプリケーションの一部であってもよい。かかるソフトウェアは、例えば、単一のローカルコンピュータ（例えば、市販の好適なコンピュータ）で、ネットワーク環境（例えば、インターネット、広域ネットワーク、ローカルエリアネットワーク、（クラウドコンピューティングネットワークなどの）クライアントサーバネットワーク、その他のネットワーク）で実行できる。
【００４７】
明確にするため、ソフトウェアベースの実施の、ある側面のみを説明した。本技術分野で周知であるその他の詳細は省略した。例えば、言うまでもなく、開示の技術は特定のコンピュータ言語やプログラムに限定されない。例えば、開示の技術は、Ｃ＋＋、Ｊａｖａ(登録商標)、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ(登録商標)、Ａｄｏｂｅ  Ｆｌａｓｈ、その他の好適なプログラミング言語で書かれたソフトウェアにより実施できる。同様に、開示の技術は特定のコンピュータやハードウェアのタイプには限定されない。好適なコンピュータとハードウェアの詳細は周知であり、この開示で詳細に説明する必要はない。
【００４８】
さらに、（例えば、コンピュータに開示の方法を実行させるコンピュータ実行可能命令を有する）どんなソフトウェアベースの実施形態も、好適な通信手段を通してアップロード、ダウンロード、またはリモートアクセスできる。かかる好適な通信手段には、例えば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル（光ファイバケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、及び赤外線通信を含む）、電子通信、その他の好適な通信手段を含む。
【００４９】
開示の発明の原理を適用できる多くの実施形態を考慮して、言うまでもなく、例示の実施形態は単に本発明の好ましい実施例に過ぎず、本発明の範囲を限定するものと取ってはならない。むしろ、本発明の範囲は下記の特許請求の範囲により画定される。それゆえ、これらのクレームの範囲内に入るものはすべて我々の発明として請求する。
実施形態について付記する。
（付記１）  ビデオデコーダを実装するコンピューティングデバイスにおいて、
ファイルコンテナとともに符号化ビデオシーケンスを受信するステップと、
前記ビデオデコーダを実装するコンピューティングデバイスで、前記ファイルコンテナ中の前記符号化ビデオシーケンスに関連するメタデータを分析するステップと、
前記メタデータを用いて、前記ビデオデコーダにおけるデコーダ最適化決定を行うステップとを有する、
方法。
（付記２）  前記デコーダ最適化決定は、前記メタデータに基づき、複数のデコーダエンジンから、前記復号を実行するデコーダエンジンを選択するステップを含む、
付記１に記載の方法。
（付記３）  前記複数のデコーダエンジンは、メインプロファイル及びそれ以上のプロファイルのビデオシーケンスを復号できるデコーダエンジンと、ベースライン、メイン及びそれ以上のプロファイルを復号できるデコーダエンジンとのうち一方を含むリストから選択される、付記２に記載の方法。
（付記４）  前記メインプロファイル及びそれ以上のプロファイルのビデオシーケンスを復号できるデコーダエンジンは、ハードウェア高速化用のグラフィックス処理ユニットを含み、前記ベースライン、メイン及びそれ以上のプロファイルを復号できるデコーダエンジンは、中央処理ユニットを含む、付記３に記載の方法。
（付記５）  前記復号で用いられるアルゴリズムのタイプのメタデータを検索するステップと、前記アルゴリズムのタイプに基づき復号エンジンを選択するステップとをさらに含む、
付記１に記載の方法。
（付記６）  前記アルゴリズムのタイプは、arbitrary  slice  ordering（ＡＳＯ）とflexible  macroblock  ordering（ＦＭＯ）とを含む、付記５に記載の方法。
（付記７）  前記メタデータを検索するステップは、前記符号化ビデオシーケンス中の一以上のパラメータセットを解析するステップを含む、付記５に記載の方法。
（付記８）  前記符号化ビデオシーケンスに関連する長さ情報とロケーション情報とを読み出すステップと、前記長さ及びロケーション情報を前記メタデータとしてデコーダエンジンに送るステップとをさらに含む、付記１に記載の方法。
（付記９）  プログラムされたコンピューティングデバイスに方法を実行させるコンピュータ実行可能命令をエンコードしたコンピュータ読み取り可能記憶デバイスであって、前記方法は、
デコーダにおいて符号化ビデオシーケンスを受け取るステップと、
前記符号化ビデオシーケンス中のメタデータを分析して、少なくとも２つのデコーダエンジンのどちらがより効率的か決定するステップと、
前記符号化ビデオシーケンスを前記決定されたデコーダエンジンに転送するステップとを有する、
コンピュータ読み取り可能記憶デバイス。
（付記１０）  ビデオデコーダを実装するコンピューティングデバイスであって、一以上の処理ユニットを有し、方法を実行するように構成され、前記方法は、
ビデオシーケンスのビットストリーム中の符号化データを受け取るステップであって、前記ビットストリームはメタデータに含まれる一以上のパラメータセットを含む、ステップと、
前記一以上のパラメータセットを解析して、arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられるか決定するステップと、
arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられたとき、ベースライン、メイン及びそれ以上のプロファイルを復号できる第１のデコーダエンジンに、前記符号化データを転送するステップと、
前記arbitrary  slice  orderingまたはflexible  macroblock  orderingが用いられないとき、メインプロファイル及びそれ以上のプロファイルを復号できる、前記第１のデコーダエンジンとは異なる、第２のデコーダエンジンに、前記符号化データを転送するステップとを有する、
コンピューティングデバイス。
【図１】
0006423061.tif 000002
【図２】
0006423061.tif 000003
【図３】
0006423061.tif 000004
【図４】
0006423061.tif 000005
【図５】
0006423061.tif 000006
【図６】
0006423061.tif 000007
【図７】
0006423061.tif 000008
【図８】
0006423061.tif 000009