(57)【特許請求の範囲】
【請求項１】
ビデオ処理のためのビデオ処理システムであって、
タスクの並列処理が可能な少なくとも２つの並列処理ユニット；
少なくとも１つのストレージデバイスを備え、
前記少なくとも１つのストレージデバイスは、処理されることになる入力ビデオデータと；処理済ビデオデータならびに、ビデオ処理タスクのタスクリストと；を記憶し、
階層的強化構造を有する前記入力ビデオデータは、少なくとも１つの基本レイヤと、１または複数の強化レイヤとを備え、
前記１または複数の強化レイヤは、前記基本レイヤと、少なくとも１つの他の強化レイヤとのうちの少なくとも１つに依存し、
前記システムは、前記タスクリストの少なくとも１つのタスクを前記並列処理ユニットのうちの１つに割り当てるように、且つ前記並列処理ユニットがタスクを処理した後に、処理済の前記タスクである処理済タスクに依存する少なくとも１つの強化レイヤに関係するタスクに関する情報を用いて前記タスクリストを更新するように構成される、ビデオ処理システム。
【請求項２】
前記並列処理ユニットは、少なくとも１つのスレッドと、少なくとも１つのハイパースレッドと、マルチコアプロセッサの少なくとも１つのコアと、少なくとも１つのプロセッサとのうちの少なくとも１つを含む、
請求項１に記載のビデオ処理システム。
【請求項３】
階層的強化構造は、空間強化構造とテンポラル強化構造と品質強化構造とのうちの少なくとも１つを含む、
請求項１〜２のいずれか一項に記載のビデオ処理システム。
【請求項４】
前記ビデオ処理システムはさらに、前記並列処理ユニットがタスクを処理した後に、前記処理済タスクのデブロッキングに関する情報を用いて前記タスクを更新するように構成される、
請求項１〜３のいずれか一項に記載のビデオ処理システム。
【請求項５】
ビデオデータの並列処理のための方法であって、
処理済ビデオデータを提供するために処理されることになる入力ビデオデータを提供することであって、前記入力ビデオデータと前記処理済ビデオデータとのうちの少なくとも１つは、階層的強化構造を有し、前記階層的強化構造は、少なくとも１つの基本レイヤと、１または複数の強化レイヤを有し、前記１または複数の強化レイヤは、前記基本レイヤと少なくとも１つの他の強化レイヤとのうちの少なくとも１つに依存することと；
ビデオ処理タスクのタスクリストを設定することであって、少なくとも１つのタスクは処理されることになる前記基本レイヤのビデオ処理に関係することと；
前記タスクリストの少なくとも１つのタスクを複数の並列処理ユニットのうちの１つに割り当てることと；
処理済タスクを提供するために前記並列処理ユニットによって前記割り当てられたタスクを処理することと；
前記割り当てられたタスクを処理した後に、前記処理済タスクに依存する少なくとも１つの強化レイヤに関係するタスクに関する情報を用いて前記タスクリストを更新することと
を有する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ処理システムおよびビデオデータの並列処理のための方法に関する。
【背景技術】
【０００２】
最新のデジタル・ビデオ・アプリケーションは、ビデオ処理、たとえば、符号化および／または復号にますます多くの処理能力を使用している。特に、Ｈ．２６４またはＭＰＥＧ−４のような最近のビデオ符号化標準規格は、高品質のビデオデータを提供するが、相当量の計算資源を必要とする。このことは、リアルタイム符号化および／または復号に特に当てはまる。
【０００３】
他方、最新のコンピューティング技術には、たとえば、ハイパースレッディング技術および／またはコンピューティングチップの複数のコアもしくは複数のプロセッサを使用して、複数のスレッドを処理することが可能であることによって、タスクの並列処理が可能なハードウェアを提供している傾向が存在する。しかしながら、ビデオ符号化および／または復号を並列化するための効率的なメカニズムを提供することは、新規の手法および計算技法を必要とする。
【０００４】
Ｈ．２６４符号化器においてマルチスレッディングを使用することは、たとえば、「インテル・ハイパースレッディング・アーキテクチャにおけるＨ．２６４符号化器の効率的なマルチスレッディングの実施（Ｅｆｆｉｃｉｅｎｔ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｈ．２６４  Ｅｎｃｏｄｅｒ  ｏｎ  Ｉｎｔｅｌ  Ｈｙｐｅｒ−Ｔｈｒｅａｄｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ）」（Ｓｔｅｖｅｎ  Ｇｅ、Ｘｉｎｍｉｎ  ＴｉａｎおよびＹｅｎ−Ｋｕａｎｇ  Ｃｈｅｎ著、ＩＣＩＳ−ＰＣＭ  ２００３，  Ｄｅｃｅｍｂｅｒ  １５−１８  ２００３，  Ｓｉｎｇａｐｏｒｅ）に記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−５０８５９０号公報
【非特許文献】
【０００６】
【非特許文献１】「Ｅｆｆｉｃｉｅｎｔ  Ｍｕｌｔｉｔｈｒｅａｄｉｎｇ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  Ｈ．２６４  Ｅｎｃｏｄｅｒ  ｏｎ  Ｉｎｔｅｌ  Ｈｙｐｅｒ−Ｔｈｒｅａｄｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ」、Ｓｔｅｖｅｎ  Ｇｅ、Ｘｉｎｍｉｎ  ＴｉａｎおよびＹｅｎ−Ｋｕａｎｇ  Ｃｈｅｎ著、ＩＣＩＳ−ＰＣＭ  ２００３，  Ｄｅｃｅｍｂｅｒ  １５−１８  ２００３，  Ｓｉｎｇａｐｏｒｅ
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特に、Ｈ．２６４またはＭＰＥＧ−４のような最近のビデオ符号化標準規格は、高品質のビデオデータを提供するが、相当量の計算資源を必要とする。
ビデオ符号化および／または復号を並列化するための効率的なメカニズムを提供することは、新規の手法および計算技法を必要とする。
【課題を解決するための手段】
【０００８】
本発明は、添付の特許請求の範囲によるビデオ処理システムおよびビデオデータの並列処理のための方法に言及する。
【０００９】
本発明の具体的な実施形態は、従属請求項に記載されている。
【００１０】
本発明のこれらの態様および他の態様は、以下に記載される実施形態から明らかとなり、それらを参照することによって明瞭になろう。
【００１１】
本発明のさらなる詳細、態様、および実施形態を、例としてのみ、図面を参照して記載する。図面において、同様の参照符号は同様のまたは機能的に類似の要素を特定するために使用される。図面内の要素は簡潔かつ明瞭にするために示されており、必ずしも原寸に比例して描かれてはいない。
【図面の簡単な説明】
【００１２】
【図１】ビデオ処理を並列化する方法の流れ図である。
【図２】１つのフレームに関するタスク依存関係を概略的に示す図である。
【図３】複数の並列処理ユニットを使用するビデオ処理システムの実施形態の例のブロック図である。
【発明を実施するための形態】
【００１３】
本発明の例示されている実施形態は、大部分について、当業者に既知のコンピューティングまたは電子コンポーネント、回路およびソフトウェアを使用して実装され得るため、本発明の基礎となる概念の理解および評価のために、ならびに本発明の教示を分かりにくくせず当該教示から注意を逸らさせないために、詳細は例示されているような必要と考えられる範囲を超えては説明されない。
【００１４】
本明細書の文脈において、「ビデオ処理」という用語は、特に、ビデオデータの符号化および／もしくは復号ならびに／または圧縮、特にエントロピー符号化、ならびに／または解凍および／もしくはデブロッキングを指し得る。符号化または復号は、複数の異なるステップ、特に圧縮、解凍および／またはデブロッキングなどを含み得る。ビデオ処理、特に符号化は、ビデオ処理または符号化に使用されるビデオ標準規格によって定義され得る特定の構造を有する処理済ビデオデータを提供すると考えられ得る。
【００１５】
ビデオデータのための符号化器は、ビデオデータを符号化するためのデバイスまたはプログラムであると考えられ得る。復号器は、ビデオデータを復号するためのプログラムまたはデバイスであると考えられ得る。符号化器は、所与のソースフォーマットにおいて提供されるビデオデータを符号化して、所与のビデオ符号化標準規格にしたがって符号化されたデータにするように構成され得る。ビデオ標準規格は、たとえば、Ｈ．２６４／ＡＶＣ、Ｈ．２６４／ＳＶＣ、ＭＰＥＧ−４またはＨ．２６３であり得る。復号器は、ビデオデータを所与のフォーマットから任意の種類のビデオフォーマット、特に表示可能および／またはピクセルフォーマットに復号することができる。符号化器に対するソースデータまたは入力ビデオデータは、任意の種類のフォーマットにある生のピクセルデータまたはビデオデータを含み得る。符号化器および／または復号器が、ビデオデータを或るビデオデータ標準規格から別のビデオ標準規格に、たとえば、ＭＰＥＧ−４からＨ．２６４にトランスコードするのに利用されることが実現可能である。
【００１６】
ビデオデータは通常、表示タイミングにしたがって決定され得る特定の順序で配列されるピクチャまたはイメージのシーケンスまたはシリーズを含む。符号化および／または復号のために、ビデオデータは、符号化および／または復号されるべきフレームのシーケンスに配列されうる。符号化／復号のためのフレームの順序は、表示順序とは異なっていてもよい。たとえば、Ｈ．２６４のコンテキストにおいては、フレームを、それらが表示されるべき順序とは異なる、符号化プロセスにとっての重要性に応じた順序で符号化することが実現可能である。
【００１７】
フレームは、任意の種類のフレームであってよい。特に、フレームは、Ｉフレーム、ＢフレームまたはＰフレームのうちの１つであってよい。Ｉフレーム（モード内フレーム）は、他のフレームに依存することなく符号化／復号されるフレームであり得る。Ｐフレーム（予測または予測的フレーム）は、ＩフレームまたはＰフレームであり得る先行して符号化／復号されたフレームに依存して符号化／復号され得る。Ｂフレーム（双方向予測フレーム）は、先行するフレームおよび将来のフレームの両方に依存し得る。使用されるビデオ標準規格に応じて、さらなるフレームタイプ、たとえば、ＳＩフレーム（スイッチングＩフレーム）またはＳＰフレーム（スイッチングＰフレーム）が存在し得る。
【００１８】
最新のビデオ標準規格、特にＨ．２６４またはＭＰＥＧ−４は、たとえば、ビデオの時間または空間解像度のスケーラビリティを提供するための階層的強化レイヤまたは構造を利用することが可能である。階層的強化構造またはスケーラブルビデオ構造は、複数の依存関係を有するレイヤ状表現（ｌａｙｅｒｅｄ  ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）に基づき得る。階層的強化構造は、所与のビデオ標準規格、たとえば、Ｈ．２６４／ＳＶＣまたはＭＰＥＧ−４／ＳＶＣにしたがって定義され得る。スケーラブルビデオ符号化によって、アプリケーション要件、たとえば、符号化器／復号器の処理能力またはビデオのためのディスプレイの制約に適合することが可能となる。ビデオデータ、たとえば、ビデオ・ビット・ストリームは、ビデオデータを除去することによってサブストリームを形成することが可能であり、かつ、そのサブストリームが、より低い品質および／または解像度において元のビデオを表す別の有効なビデオ・ビット・ストリームを形成するときに、スケーラブルであると考えられ得る。一般的に、強化構造は、基本レイヤ、および基本レイヤに依存する１つもしくは複数の強化レイヤ、ならびに／またはビデオ処理のための少なくとも１つの強化レイヤを含み得る。各レイヤは１または複数のフレームを含み得る。
【００１９】
テンポラル強化構造（ｔｅｍｐｏｒａｌ  ｅｎｈａｎｃｅｍｅｎｔ  ｓｔｒｕｃｔｕｒｅ）を提供することが実現可能であり得る。テンポラル基本レイヤは、ビデオ表示の異なる複数の時点を表す所与の数のフレームを含み得る。テンポラル強化レイヤは、テンポラル基本レイヤのフレーム間に挿入されることになるさらなるフレームを含み得る。したがって、テンポラル基本レイヤをテンポラル強化レイヤと組み合わせることを考慮することによって、所与の時点において表示されることになるフレームの総数が増大し、時間解像度が向上し、一方でテンポラル基本レイヤは依然として表示のために十分なビデオデータを提供する。２以上のテンポラル強化レイヤが提供されてよい。テンポラル強化レイヤが、基本レイヤおよび／またはビデオ処理のための１または複数のより低いレベルのテンポラル強化レイヤに依存することが実現可能である。テンポラル強化レイヤのフレームは、テンポラル基本レイヤおよび／または処理されることになるより低いテンポラル強化レイヤの１または複数のフレームに依存し得る。テンポラルレイヤおよび／またはテンポラル強化構造の構成は、ビデオ処理、たとえば符号化／復号に使用されているビデオ標準規格に依存し得る。テンポラル強化レイヤにＢフレームおよび／またはＰフレームを使用することが実現可能である。テンポラル強化レイヤの依存関係から階層構造が生じ得、テンポラル基本レイヤが最低レベルにあり、テンポラル強化レイヤは、ビデオ処理、特に符号化／復号のためにより高いレベルのテンポラル強化レイヤが最大でもより低いレベルのレイヤに依存するように構成される。
【００２０】
少なくとも空間基本レイヤおよび少なくとも１つの空間強化レイヤを含む空間強化構造が考慮され得る。基本空間レイヤは低い解像度にある１または複数のフレームを含み得る。空間基本レイヤおよび／または１または複数の空間強化レイヤに対する所望の１または複数の解像度を達成するために入力ビデオデータをダウンサンプリングすることが考慮され得る。空間基本レイヤが最低空間解像度、たとえば、７２０ｐの解像度に対応することが想定され得る。強化レイヤはより高い解像度のビデオデータを含み得る。強化レイヤおよび／または強化レイヤのフレームは、基本レイヤのデータと組み合わされると強化レイヤの解像度を有するビデオデータを提供することを可能にするデータを含み得る。空間強化レイヤは、ビデオ処理のために空間基本レイヤに依存することが考慮され得、たとえば、強化レイヤのフレームは基本レイヤの対応するフレームが処理されている場合にのみ処理されることができることが実現可能である。階層的強化構造は、その最低レベルにおける空間基本レイヤ、および、より高い階層レベルに対応する、空間解像度が高くなっていく１または複数の空間強化レイヤを含むことができる。所与のレベルの空間強化レイヤが、それを下回る１または複数のレイヤに依存するが、存在する場合はより高いレベルのレイヤとは無関係であり得ることが想定され得る。７２０ｐの解像度を有する空間基本レイヤおよび１０８０ｐの解像度を有する空間強化レイヤを使用することが実現可能であり得る。たとえば、Ｈ．２６４／ＳＶＣのコンテキストにおいては、空間基本レイヤは、７２０ｐの解像度（１２８０ｘ７２０ピクセルの解像度を表す）を有することができ、第１の空間強化レイヤは、１０８０ｐのより高い解像度（通常、１９２０ｘ１０８０ピクセルの解像度を指す）を可能にする情報を提供することができる。最高レベルの空間強化構造は、元のピクチャまたはビデオデータの解像度を有することができる。複数の異なるレイヤの解像度の間の比は、利用されるビデオ標準規格が許可する場合は任意に選択されることができる。
【００２１】
品質強化構造が提供され得、ここで、たとえば、品質強化構造のレイヤを組み合わせるときに信号対ノイズ比を低減することによって、複数のレイヤは、ますます高い画質を提供する。
【００２２】
１つのみの強化構造を提供すること、または、異なる複数の強化手法を組み合わせることが実現可能であり得る。たとえば、Ｈ．２６４／ＳＶＣ標準規格は、時間、空間および品質レイヤ化を利用するスケーラブルなビデオ処理を可能にする。
【００２３】
フレームは、所与の数のマクロブロックを含むことができる。マクロブロックは、ビデオ標準規格によって定義され得るピクセルの所与の数および／または構成に対応することができる。たとえば、Ｈ．２６４標準規格においては、マクロブロックは１６ｘ１６ピクセルを含むことができる。マクロブロックは、特に符号化および／または復号のために、フレームのイメージまたはピクチャデータを表すための基本単位として使用され得る。
【００２４】
フレームを複数のスライスに分割することが実現可能である。各スライスは多数のマクロブロックを含むことができる。所与のフレームが、符号化／復号に使用されるビデオ標準規格に応じて任意の適切な数のスライスに分割されることができることが考慮され得る。単一のフレームに対して複数の異なるサイズのスライスが定義されてよい。フレームのスライスは任意の形状を有してよく、フレームの分離した領域を含んでよい。スライスは、ビデオ処理、特に符号化および／または復号に関して同じフレーム内の他のスライスから独立していることができる、自己完結型の符号化単位であると考えられ得る。スライスはフレームと同様に、たとえば、Ｉスライス、ＢスライスまたはＰスライスとして特徴づけられ得る。
【００２５】
レイヤは、ビデオデータのより大きな構造、たとえば、ビデオストリームのサブユニットとして考えられ得る。１または複数のフレームを含むピクチャグループがレイヤのサブユニットとして考えられてもよい。フレームが、レイヤおよび／またはピクチャグループのサブユニットとして考えられてもよい。スライスはフレームのサブユニット、また、対応するピクチャグループおよびレイヤのサブユニットとして考えられ得る。マクロブロックは、対応するスライス、フレーム、ピクチャグループおよび／またはレイヤのサブユニットとして考えられ得る。
【００２６】
第１のビデオデータ構造、たとえば、レイヤ、フレーム、スライスまたはマクロブロックは、第１のビデオデータ構造のビデオ処理のために、第２のビデオデータ構造を前もって処理しておく必要がある場合に、第２のビデオデータ構造に依存していると考えられ得る。第１のビデオデータ構造が依存するビデオデータ構造のタイプは、第１のビデオデータ構造のタイプと同じである必要はないが、同じであってもよい。たとえば、フレームはスライスまたはマクロブロックに依存し得る。サブユニットを含むデータ構造、たとえば、フレーム、スライスおよびマクロブロックを含むレイヤは、第１のビデオデータ構造のサブユニットのうちの少なくとも１つが第２のビデオデータ構造および／またはそのサブユニットのうちの１つに依存する場合に、第２のビデオデータ構造に依存すると考えられ得る。依存関係は直接的であってもよく、または間接的であってもよい。たとえば、第２のビデオ構造を処理するために第３のビデオデータ構造が処理されなければならず、かつ、第１のビデオデータ構造を処理するために第２のビデオデータ構造が処理されなければならない場合、第１のビデオデータ構造は第２のビデオデータ構造および第３のビデオデータ構造に依存していると考えられ得る。それに依存する第１のビデオデータ構造が処理され得る前に第２のビデオデータ構造に対して実行されなければならないビデオ処理のタイプは、第１のビデオデータ構造に対して実行されるべきビデオ処理のタイプと同じである必要はないが、同じであってもよい。
【００２７】
ビデオ処理を並列化することが考慮され得る。処理ユニットは、ビデオデータを処理するように構成されるスレッド、ハイパースレッド、マルチコアプロセッサのコアまたはプロセッサであることができる。処理ユニットは、スレッド、ハイパースレッド、マルチコアプロセッサのコアまたはプロセッサであり得る、別の処理ユニットと並列にビデオ処理を実行するように構成され得る。マスタ処理ユニットは、下位処理ユニットによる並列処理を制御するように構成され得る。効率的な並列化のために、符号化および／または復号されるべきフレームまたはスライス間の依存関係を考慮することが考えられ得る。符号化器の場合、依存関係は符号化器によって決定および／または定義され得る。符号化器は、それにしたがって符号化が実行されるビデオ標準規格の要件を考慮し得る。復号器の場合、依存関係に関する情報は復号のために提供される符号化フレームに含まれ得る。所与のフォーマットにおいて符号化されたビデオデータに含まれる情報および／または符号化／復号に使用されるビデオ標準規格の要件に応じて復号プロセスを並列化するためにこのような依存関係を決定するように、復号器を適合させることが考慮され得る。
【００２８】
アクセス単位は、ビデオシーケンスまたはストリーム内の同じ時点に関係するフレームデータを指し得る。アクセス単位は、複数のレイヤ内、特に基本レイヤおよび複数の関係する強化レイヤ内のデータを含み得る。
【００２９】
ビデオ処理システムは、タスクの並列処理が可能な少なくとも２つの並列処理ユニットにタスクを割り当てるように構成され得る。ビデオ処理システムは、少なくとも１つのストレージデバイスを、処理されることになる入力ビデオデータ、処理済ビデオデータ、およびビデオ処理タスクのタスクリストを記憶するように制御するように構成され得る。ビデオ処理システムは、少なくとも１つの基本レイヤ、および基本レイヤに依存する１または複数の強化レイヤ、ならびに／または他の強化レイヤのうちの少なくとも１つを含む階層的強化構造を有するビデオデータを提供および／または処理するように構成され得る。システムは、タスクリストの少なくとも１つのタスクを並列処理ユニットのうちの１つに割り当てるように構成され得る。システムは、並列処理ユニットがタスクを処理した後に、処理されたタスクに依存するタスクに関連するとともに少なくとも１つの強化レイヤに関係する情報を用いてタスクリストを更新するように構成されることが実現可能である。タスクは、レイヤおよび／またはこのレイヤのサブユニットに対して実行されることになるビデオ処理のタイプを識別する場合にレイヤに関連すると考えられ得る。タスクリストに基づいてタスクを分配もしくは割り当て、かつ／または下位処理ユニットから情報を受信するマスタ処理ユニットを提供することが考慮され得る。１または複数の並列処理ユニットがタスクリストにアクセスすることができ得る。タスクリストは共有メモリ内に記憶され得る。並列処理ユニットが自身のためにタスクリスト上にタスクを受け入れるためにタスクリストにアクセスし、それによって自身に対してタスクを割り当てることが実現可能である。並列処理ユニットはタスクリストを直接更新するためにアクセスすることができる。並列処理ユニットによって提供される情報に基づいてマスタ処理ユニットによってタスクリストが更新されることが想定され得る。タスクは処理されるべきビデオデータおよび実行されるべきビデオ処理を識別し得る。処理ユニットによって処理されているタスクが、たとえば、処理されるべきビデオデータの範囲を増大させることによって、処理中に更新されていることが想定され得る。タスク更新は、下位処理ユニットのためのタスクを更新するマスタ処理ユニットによって実行され得る。タスクは、タスクのデータのサブユニットの処理に対応するサブタスクを識別し得る。タスクは適切なメモリ構造によって表され得る。タスクリストは任意の数のタスクを表し得る。特に、それは単一のタスクを表してもよい。タスクリストは、ストレージデバイス、たとえば、ＲＡＭ、処理コアのプライベートメモリまたはキャッシュメモリのようなメモリ内に記憶され得る。タスクリストは、分離したメモリ領域にわたって分配され得る。並列処理ユニットが、少なくとも１つのスレッドおよび／または少なくとも１つのハイパースレッドおよび／またはマルチコアプロセッサの少なくとも１つのコアおよび／または少なくとも１つのプロセッサを含むことが考慮され得る。ビデオ処理システムは、並列処理ユニットおよび／または少なくとも１つのストレージデバイスを備え得る。ストレージデバイスは、任意の数および組み合わせの種々のメモリタイプを含み得る。ビデオ処理システムは、このようなハードウェアを用いずに、たとえば、適切な方法で処理ユニットおよび／もしくはストレージデバイスもしくはメモリと対話するように構成されるソフトウェアおよび／またはハードウェアの形態で提供されてもよい。ビデオ処理システムは符号化器および／または復号器であり得る。それはビデオコーデックの形態で提供され得る。階層的強化構造は、空間および／または時間および／または品質強化構造を含み得る。
【００３０】
ビデオ処理システムが、並列処理ユニットがタスクを処理した後に、処理されたタスクのデブロッキングに関連する情報を用いてタスクリストを更新するようにさらに構成されることが想定され得る。タスクリストは処理済ビデオデータ、特に符号化または復号されたビデオデータのデブロッキングを実行するための１または複数のタスクを用いて更新され得る。ビデオ処理システムは、同じイメージの異なる解像度の複数のフレームを提供または受信するように構成され得る。
【００３１】
ビデオデータの並列処理のための方法が考慮され得る。方法は、処理済ビデオデータを提供するために処理されることになる入力ビデオデータを提供することを含み得、入力ビデオデータおよび／または処理済ビデオデータは、少なくとも１つの基本レイヤ、および基本レイヤに依存する１または複数の強化レイヤ、ならびに／または他の強化レイヤのうちの少なくとも１つを含む階層的強化構造を有する。少なくとも１つのタスクが、処理されることになる基本レイヤのビデオ処理に関係する、ビデオ処理タスクのタスクリストの設定が実行され得る。タスクリストの少なくとも１つのタスクが複数の並列処理ユニットのうちの１つに割り当てられ得る。割り当てられたタスクの並列処理ユニットによる処理が、処理済タスクを提供するために実行され得る。割り当てられたタスクを処理した後に、処理済タスクに依存するタスクに関連するとともに少なくとも１つの強化レイヤに関係する情報を用いてタスクリストを更新することが考慮され得る。本方法は、上記のビデオ処理システムのいずれかによって実行され得る。符号化について、処理済ビデオデータが階層的強化構造を有し、それによって符号化器がこの構造を有する出力データを提供することが考慮され得る。復号について、入力ビデオデータは階層的強化構造を有し得、これは表示データに復号され得る。方法は、タスクリストが空になり、かつ／または、もはや処理済タスクに依存する少なくとも１つの強化レイヤに関係するタスクがなくなるまで、タスクリストのタスクのうちの少なくとも１つの割り当てと、タスクリストの更新との間をループし得る。入力ビデオデータおよび／または処理済ビデオデータが１つのアクセス単位に関与することが実現可能である。タスクリストを更新することは、処理済タスクのデブロッキングに関する情報を用いてタスクリストを更新することを含み得る。階層的強化構造が、空間および／またはテンポラルおよび／または品質強化構造を含むことが想定され得る。並列処理ユニットは、少なくとも１つのスレッドおよび／または少なくとも１つのハイパースレッドおよび／またはマルチコアプロセッサの少なくとも１つのコアおよび／または少なくとも１つのプロセッサを含み得る。ビデオ処理は、符号化および／または復号であり得る。
【００３２】
図１は、ビデオ符号化プロセスに関する例示的な並列化方法の流れ図を示す。ステップＳ１０において、符号化されることになる開始フレームおよび／またはアクセス単位を提供することが考慮され得る。ステップＳ２０において、並列化方法の開始時にはメモリ内に記憶されている場合があるとともに空であり得るタスクリストは、開始フレームまたは開始フレームの１つもしくは複数の部分を符号化するタスクを含むように更新され得る。開始フレームは、強化構造の基本レイヤ、特に空間基本レイヤのフレームであり得る。開始フレームを符号化するタスクは、複数の独立した符号化タスクを含み得る。特に、開始フレームが互いに独立して符号化されることになる複数のスライスに分割されることが、実現可能であり得る。ステップＳ２０においてタスクリストを更新した後、ステップＳ３０において、タスクリストが空になったか、かつ／または現在のアクセス単位の符号化が終了したか否かをチェックすることが考慮され得る。そうである場合（ＹＥＳである場合）、これはステップＳ１００に分岐し得、与えられたアクセス単位の符号化が終了する。符号化されるべきすべてのビデオデータが処理されていない場合、これは新たなアクセス単位によるステップＳ１０に戻り得る。
【００３３】
Ｓ３０のステータスチェックの結果、与えられたアクセス単位の中にさらに実行すべきタスクがある場合、これはステップＳ４０に分岐し得、タスクがプロセッサ、プロセッサコア、スレッドまたはハイパースレッドのような処理ユニットに分配され得る。タスクを分配するマスタ処理ユニットが提供され得る。並列処理ユニットがタスクリスト自体にアクセスして、タスク優先度および／または利用可能な処理能力にしたがってタスクまたはタスクの一部分をとることが実現可能であり得る。任意選択のステップＳ５０において、何らかのタスクが割り当てられた否か、および／または処理ユニットがアイドルであるか否かがチェックされ得る。たとえば、タスクリストが空であり、かつ／または処理ユニットがアイドルであるためにタスクが割り当てられなかった場合、これはステップＳ３０またはＳ１００のうちの一方に分岐し得る（分岐は図示されてない）。そうでない場合、方法はステップＳ６０によって継続し得る。
【００３４】
１または複数のタスクの１または複数の処理ユニットへの割り当て、および任意選択的にＳ５０のチェックにしたがって、タスクは並列に処理され得る（ステップＳ６０）。所与の処理ユニットは、タスクまたはタスクの一部分、たとえば、サブタスクを完了すると、ステップＳ６０に続くステップＳ７０においてタスクリストにアクセスして、それにしたがってそれを更新することができる。タスクリストの更新中、完了したタスクに依存する新たなタスクが追加されることが実現可能である。たとえば、空間基本レイヤのスライスを符号化した後に、符号化されたスライスをデブロッキングするタスクがタスクリストに追加されることが考慮され得る。空間強化レイヤの対応するスライスを符号化するタスクがタスクリストに追加され得る。テンポラルレイヤの依存するスライスを符号化するタスクがタスクリストに追加され得ることが考慮され得る。ＰフレームもしくはＢフレームまたはタスクリストに追加される符号化スライスに依存する他のフレームの対応するスライスを符号化するタスクを追加することが可能である。依存関係を識別するように構成される機能、モジュール、またはデバイスが提供され得る。依存関係はビデオデータ内の情報および／または符号化のためのビデオ標準規格の要件に基づいて識別され得る。ステップＳ７０から、ステップＳ３０に分岐し得、符号化またはタスクリストのステータスがチェックされる。開始フレームに直接的または間接的に依存するすべてのタスクが処理されるまで、Ｓ３０からＳ７０へのループが実行され得る。
【００３５】
図２は、解像度が高くなっていく情報を表す種々の空間レイヤのフレームのタスク依存関係の例を示す。ブロック１は、たとえば、空間基本レイヤのフレームのスライスの所与の数の行Ｘ〜Ｙを表す依存関係０を表す。ブロック１のビデオデータが処理された符号化の対応するタスクの場合に限って、結果としてのデータをデブロッキングすることが可能である。したがって、行Ｘ〜Ｙを有する依存関係０をデブロッキングするタスク５がブロック１に依存するものと考えられ得る。依存関係０が符号化されると、空間強化レイヤ１０に関するビデオ情報の符号化が依存関係１として可能であり得る。タスク５および１０は互いに独立してまたは並列に処理され得る。空間強化レイヤは符号化された行Ｘ〜Ｙに基づき、行２Ｘ〜２Ｙに関する情報を提供し得、これは画像解像度を２倍にする。タスク１０が処理されたことに応じて、符号化された依存関係１をデブロッキングするタスク１５が処理され得る。デブロッキング１５とは無関係に、より高い解像度を提供するとともに依存関係２によって表されている第２の空間強化レイヤのビデオデータを符号化するタスク２０を処理することが可能であり得る。依存関係２を符号化するタスクを完了すると、行４Ｘ〜４Ｙに関するイメージ情報が提供され得る。追加の空間強化レイヤが存在しないと仮定すると、タスク２０を完了することによって、依存するタスク２５として、符号化された依存関係２のデブロッキングが可能となる。ブロック間の矢印は依存関係を示す。
【００３６】
図３は、ビデオデータを符号化するためのビデオ処理システムの設定を示す。多数の並列処理ユニット１０２、１０４によってアクセスされ得る共有メモリ１００が提供され得る。各並列処理ユニット１０２、１０４に対して、メモリ領域１０６、１０８が割り当てられ得る。各メモリ領域１０６、１０８は、所与の並列処理ユニットによってのみアクセス可能なローカルメモリであり得る。特に、メモリ１０６および／または１０８はコアまたはプロセッサに直接的に接続され得る。メモリ１０６、１０８は、たとえばキャッシュメモリであってもよい。メモリ１０６、１０８が、並列処理ユニットまたはデバイス１０２、１０４によるアクセスのために確保され得る、通常の共有メモリ領域において提供されることも実現可能であり得る。各並列処理ユニット１０２、１０４に対して、異なる種類のメモリが提供されてもよい。処理ユニット１０２、１０４に関連付けられるメモリは、処理ユニットがスレッドであるか、ハイパースレッドであるか、コアまたはプロセッサであるかに応じて决まり得る。異なる複数のタイプの処理ユニットが利用されることが考慮され得る。特に、処理ユニット１０２は処理ユニット１０４とは異なるタイプの処理ユニットであり得る。たとえば、処理ユニット１０２はマルチコアプロセッサのコアであり得、処理ユニット１０４はスレッドであり得る。図３に図示されている２つの並列処理ユニット１０２、１０４よりも多くの並列処理ユニットを提供することが実現可能である。
【００３７】
メモリ１０６は、処理ユニット１０２によって符号化されることになるスライスのスライスデータ１１０を記憶することができる。メモリは関連マクロブロックデータ１１２を記憶することができる。符号化において使用されるローカルデータ１１４、たとえば、カウンタ、ローカル変数などがメモリ１０６に記憶されることができる。メモリ１０８は、処理ユニット１０４によって符号化されることになるスライスに関係するデータ１１６、ならびに関連マクロブロックデータ１１８およびローカルデータ１２０を含むことができる。
【００３８】
ソースフレーム１３０に関連するビデオデータが共有メモリ１００において提供され得る。２つ以上のソースフレームを提供することが実現可能である。特に、同じイメージを異なる複数の解像度において表すソースフレームを提供することが実現可能である。そのような異なる複数のソースフレームを提供するために、高解像度にある単一のソースピクチャが処理されてより解像度の低いイメージが提供されることが実現可能であり得る。これは外部からまたはビデオ処理システムによって実行され得る。共有メモリ１００の領域１３２内には、１または複数の参照フレーム、たとえば、すでに符号化された異なる複数の空間レイヤに関連するいくつかのフレームが記憶され得る。共有メモリ１００の領域１３４内には、対応する残留フレームが記憶され得る。残留フレームは、ソースおよび／または参照フレームのビデオ処理を組み合わせる結果として生じ得、処理タスクの結果の構成に基づき得る。残留フレームは、ソースフレームと、対応する参照フレームによって提供される情報との間の差分フレームとして計算されることができる。残留フレームは、強化構造のフレーム間の差に関する、たとえば、異なる複数の空間レイヤのフレーム間の差に関する情報を含むことができる。残留フレームは、処理ユニット１０２、１０４上で作動している符号化タスクによって提供され得る。残留フレームの完了したセットは、符号化プロセスの部分結果と考えられ得る。ソースフレーム、参照フレーム、および残留フレームに基づいて、再構築されたフレームのセットが、処理ユニット１０２、１０４を使用して提供され得る。共有メモリ１００は、すべての並列プロセスまたはデバイス１０２、１０４にとってアクセス可能であり得るタスクリスト１３８を記憶することができる。タスクリストは完了した符号化ステップに応じて実行され得るタスクに関する情報を含むことができる。共有メモリ１００が、コード対話に関する情報、たとえば、符号化または分配タスクのときに使用されるポインタまたはカウンタを含むことが実現可能であり得る。
【００３９】
説明されたビデオ処理システムおよび方法は、スケーラブルなビデオデータの並列化によく適している。特に、それらは、Ｈ．２６４標準規格に対するＳＶＣ修正案および／またはＭＰＥＧ−４に対するＳＶＣ修正案による、ビデオ処理、特に符号化／復号に使用するのに適している。本発明によれば、強化構造またはレイヤを使用したスケーラブルビデオ処理が並列化されることができる。特に、処理ユニット、特にマルチコアプロセッサのコアを利用してビデオデータの符号化および／または復号の速度を向上させることが可能である。利用されるコアまたは処理ユニットの数に応じてリアルタイム符号化が達成され得る。更新されたタスクリストを進歩的に使用することによって、ビデオ処理を並列化するときに限られたオーバヘッドしか発生しない。処理ユニットの負荷のバランスをとることが可能になる。
【００４０】
本発明は、少なくとも、コンピュータシステムのようなプログラム可能装置上で実行されるときに本発明による方法のステップを実行するか、または、プログラム可能装置が本発明によるデバイスもしくはシステムの機能を実行することを可能にするためのコード部分を含む、コンピュータシステムを作動させるためのコンピュータプログラムにおいて実装されることができる。
【００４１】
コンピュータプログラムは、特定のアプリケーションプログラムおよび／またはオペレーティングシステムのような、命令のリストである。コンピュータプログラムはたとえば、サブルーチン、関数、プロシージャ、オブジェクトメソッド、オブジェクトインプリメンテーション、実行可能アプリケーション、アプレット、サーブレット、ソースコード、オブジェクトコード、共有ライブラリ／動的ロードライブラリ、および／または、コンピュータシステム上での実行のために設計される他の一連の命令のうちの１または複数を含むことができる。
【００４２】
コンピュータプログラムはコンピュータ可読記憶媒体上に内部的に記憶されるか、またはコンピュータ可読伝送媒体を介してコンピュータシステムに送信されることができる。コンピュータプログラムのすべてまたはいくつかは、情報処理システムに永続的に、取り外し可能に、または遠隔的に結合されるコンピュータ可読媒体上で提供されることができる。コンピュータ可読媒体はたとえば、限定されることなく、いくつか例を挙げると、ディスクおよびテープ記憶媒体を含む磁気記憶媒体、コンパクトディスク媒体（たとえば、ＣＤ−ＲＯＭ、ＣＤ−Ｒなど）およびデジタルビデオディスク記憶媒体を含む光記憶媒体、ＦＬＡＳＨメモリ、ＥＥＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭのような半導体ベースのメモリユニットを含む不揮発性メモリ記憶媒体、強磁性デジタルメモリ、ＭＲＡＭ、レジスタ、バッファまたはキャッシュ、メインメモリ、ＲＡＭなどを含む揮発性記憶媒体、ならびにコンピュータネットワーク、ポイントツーポイント遠隔通信機器、および搬送波伝送媒体を含むデータ伝送媒体のうちの任意の数を含むことができる。
【００４３】
コンピュータプロセスは通常、実行している（作動している）プログラムまたはプログラムの一部、現在のプログラム値および状態情報、ならびにプロセスの実行を管理するためにオペレーティングシステムによって使用されるリソースを含む。オペレーティングシステム（ＯＳ）は、コンピュータのリソースの共有を管理するとともにプログラマにこれらのリソースにアクセスするために使用されるインタフェースを提供するソフトウェアである。オペレーティングシステムは、システムデータおよびユーザ入力を処理して、タスクおよび内部システムリソースをシステムのユーザおよびプログラムに対するサービスとして配分および管理することによって応答する。
【００４４】
コンピュータシステムはたとえば、少なくとも１つの処理装置、関連付けられるメモリ、および多数の入出力（Ｉ／Ｏ）デバイスを含むことができる。コンピュータプログラムを実行するとき、コンピュータシステムはコンピュータプログラムに従って情報を処理して、結果としての出力情報をＩ／Ｏデバイスを介して生成する。
【００４５】
本発明は、並列処理ユニットを提供することが可能な任意の種類のマイクロプロセッサまたはマイクロプロセッサシステムを使用して実装され得る。マイクロプロセッサシステムが並列処理ユニットを提供するか否かは、その上で作動しているソフトウェア、たとえば、オペレーティングシステムによって决まり得る。たとえば、ＵＮＩＸ（登録商標）ベースのシステムまたはＧｎｕ／ＬＩＮＵＸ（登録商標）システムは、使用されるプロセッサが高度な並列コンピューティング機関を提供しない場合であってもスレッドを提供することができる。ハイパースレッディングおよび／またはマルチコアを有する最新のＩｎｔｅｌ  ｘ８６プロセッサまたはＡＭＤプロセッサが利用されてもよい。適切なマイクロプロセッサシステムは２つ以上のプロセッサを備え得る。本発明は、多くの場合マルチコアを提供し得るデジタル信号プロセッサ（ＤＳＰ）においても実装されてもよい。本発明をＦＰＧＡ（フィールドプログラマブル・ゲート・アレイ）システムまたは専用ハードウェアにおいて実装することも実現可能であり得る。
【００４６】
上記の明細書において、本発明が本発明の実施形態の具体例を参照して説明された。しかしながら、添付の特許請求の範囲に記載されている本発明のより広い精神および範囲から逸脱することなく、そこにさまざまな修正および変更を行うことができることは明らかであろう。
【００４７】
論理ブロック間の境界は例示にすぎないこと、および、代替的な実施形態は、論理ブロックもしくは回路要素を融合し、またはさまざまな論理ブロックもしくは回路要素に対する代替的な機能の分解を課してもよいことを、当業者は認識しよう。したがって、本明細書において描写したアーキテクチャは例示にすぎないこと、および、事実、同じ機能を達成する多くの他のアーキテクチャを実装することができることは理解されたい。たとえば、処理ユニットは内蔵メモリを設けられてもよく、または共有メモリにアクセスしてもよい。
【００４８】
同じ機能を達成するための構成要素の任意の構成が、所望の機能が達成されるように効果的に「関連付けられる」。したがって、本明細書における、特定の機能を達成するために結合される任意の２つの構成要素は互いに「関連付けられる」とみなすことができ、それによって、中間の構成要素またはアーキテクチャにかかわりなく、所望の機能が達成される。同様に、そのように関連付けられる任意の２つの構成要素も、所望の機能を達成するために互いに「動作可能に接続されている」または「動作可能に結合されている」とみなすことができる。
【００４９】
さらに、上述の動作間の境界は例示にすぎないことを当業者は認識しよう。複数の動作を単一の動作に組み合わせ、単一の動作を追加の動作に分散させ、複数の動作を少なくとも部分的に時間的に重ね合わせて実行することができる。その上、代替的な実施形態は、特定の動作の複数のインスタンスを含んでもよく、動作の順序はさまざまな他の実施形態においては変更してもよい。
【００５０】
さらに例として、実施例、またはその一部は、任意の適切なタイプのハードウェア記述言語などによって、実回線または実回線に転換可能な論理表現のソフトまたはコード表現として実装されることができる。
【００５１】
さらに、本発明は、プログラム不能ハードウェアにおいて実装される物理デバイスまたはユニットに限定されるものではなく、本出願においては一般的に「コンピュータシステム」として示されている、メインフレーム、ミニコンピュータ、サーバ、ワークステーション、パーソナルコンピュータ、ノートパッド、携帯情報端末、電子ゲーム、自動車および他の組込みシステム、携帯電話、ならびに、さまざまな他の無線デバイスのような、適切なプログラムコードに従って操作することによって所望のデバイス機能を実行することが可能なプログラム可能デバイスまたはユニット内に適用されることもできる。
【００５２】
しかしながら、他の修正形態、変更形態および代替形態も可能である。したがって、明細書および図面は限定的な意味においてではなく例示的に考慮されるべきである。
【００５３】
特許請求の範囲において、括弧間に置かれる任意の参照符号は特許請求の範囲を限定するものとして解釈されるべきではない。「備える（ｃｏｍｐｒｉｓｉｎｇ）」という文言は、特許請求項内にリストされているもの以外の要素またはステップの存在を除外するものではない。さらに、本明細書において使用される場合、「１つ（”ａ”  ｏｒ  ”ａｎ”）」という用語は、１または２つ以上として定義される。さらに、特許請求の範囲における「少なくとも１つの」および「１または複数の」のような前置きの語句の使用は、不定冠詞「１つの  （”ａ”  ｏｒ  ”ａｎ”）」による別の請求項要素の導入が、このように導入された請求項要素を含む任意の特定の請求項を、たとえ同じ請求項が前置きの語句「１または複数の」または「少なくとも１つの」および「１つの  （”ａ”  ｏｒ  ”ａｎ”）」のような不定冠詞を含む場合であっても、１つだけのこのような要素を含む発明に限定することを暗示するように解釈されるべきではない。同じことが、定冠詞の使用についても当てはまる。別途記載されない限り、「第１の」および「第２の」のような用語は、そのような用語が説明する要素間で適宜区別するように使用される。したがって、これらの用語は必ずしも、このような要素の時間的なまたは他の優先順位付けを示すようには意図されていない。特定の手段が相互に異なる特許請求項において記載されているというだけの事実は、これらの手段の組み合わせを有利に使用することができないということを示すものではない。
【図１】
0005500665.tif 000002
【図２】
0005500665.tif 000003
【図３】
0005500665.tif 000004