(57)【要約】  ビデオ圧縮を並列処理するための方法及び装置をここに開示する。画像は、Ｎ個のゾーンに鉛直方向に分割する。そして、鉛直方向分割並列処理（ＶＳＰ）は、Ｎ個のゾーンにおける一般的なマクロブロックコーディングのためのＮ個のＭ−コーディングのプロセス、そして、エントロピーコーディングのための１つのＥ−コーディングからなるＮ＋１個のプロセスを配置する。マクロブロックエンコーディングのプロセスをＭ−コーディングのプロセス、そして、Ｅ−コーディングのプロセスに分割することによって、複数のＭ−コーディングのスレッド、そして、一つのＥ−コーディングのスレッドは、スレッド間の適切な同期を伴い同時に処理することができる。Ｍ−コーディングのプロセスの負荷は、各マクロブロックコーディングのプロセスのためのＥ−コーディングより大きいことから、２つのコアは、２つのＭ−コーディングのプロセスのために指定され得る。Ｅ−コーディングの負荷は軽いことから、どちらかのコアが、Ｅ−コーディングのプロセスのために指定され得る。したがって、ＶＳＰは、並列処置コンピュータの能力を効果的に利用する。
2009544225.tif 000002
【特許請求の範囲】
【請求項１】
ビデオを圧縮するための装置であって、その装置は、
ａ．複数の処理コアと、
ｂ．Ｎ個のＭ−コーディングのプロセス、そして、一つのＥ−コーディングのプロセスを処理するよう前記複数の処理コアを実行するプログラムと、
を備えることを特徴とする装置。
【請求項２】
請求項１に記載の装置であって、Ｎは、前記複数の処置コア内の処理コアの数と等しいことを特徴とする装置。
【請求項３】
請求項１に記載の装置であって、前記Ｅ−コーディングのプロセスは、前記複数の処理コアから選択される利用可能な処理コアによって処理されることを特徴とする装置。
【請求項４】
請求項３に記載の装置であって、前記利用可能な処理コアが、自動的に選択されることを特徴とする装置。
【請求項５】
請求項１に記載の装置であって、前記Ｎ個のＭ−コーディングのプロセスは、モード判定、変換、量子化を含み、前記Ｅ−コーディングのプロセスは、エントロピーコーディングを含むことを特徴とする装置。
【請求項６】
請求項１に記載の装置であって、前記Ｎ個のＭ−コーディングのプロセスは、並列に処理されることを特徴とする装置。
【請求項７】
請求項６に記載の装置であって、前記Ｎ個のＭ−コーディングのプロセスは、同時に処理されることを特徴とする装置。
【請求項８】
請求項１に記載の装置であって、前記Ｎ個のＭ−コーディングのプロセスは、それぞれ鉛直方向のゾーンに対応することを特徴とする装置。
【請求項９】
請求項１に記載の装置であって、前記Ｎ個のＭ−コーディングのプロセスは、それぞれシフト分割されている鉛直方向のゾーンに対応することを特徴とする装置。
【請求項１０】
請求項１に記載の装置であって、前記Ｎ個のＭ−コーディングのプロセスは、それぞれ対角線上のゾーンに対応することを特徴とする装置。
【請求項１１】
請求項１に記載の装置であって、前記複数の処理コアは、
ａ．前のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＭ−コーディングを行い、
ｂ．前記現在のマクロブロックのＭ−コーディングが完了した後に前記現在のマクロブロックのＥ−コーディングを行い、
ｃ．前記前のマクロブロックのＥ−コーディングが完了した後に前記現在のマクロブロックのＥ−コーディングを行うことを特徴とする装置。
【請求項１２】
請求項１に記載の装置であって、マクロブロックが最初の行にない場合、前記複数の処理コアは、マクロブロックのＭ−コーディングを右上のマクロブロックのＥ−コーディングが完了した後に行うことを特徴とする装置。
【請求項１３】
請求項１に記載の装置であって、マクロブロックが行内の最後のマクロブロックである場合、前記複数の処理コアは、マクロブロックのＭ−コーディングを上部のマクロブロックのＥ−コーディングが完了した後に行うことを特徴とする装置。
【請求項１４】
ビデオを圧縮するための装置であって、その装置は、
ａ．第１のＭ−コーディングのスレッドを処理するための第１の処理コアと、
ｂ．前記第１の処理コアに接続されている第２の処理コアであって、第２のＭ−コーディングのスレッドを処理するための前記第２の処理コアと、
を備え、
前記第１の処理コア及び前記第２の処理コアから選択される利用可能な処理コアによってＥ−コーディングのスレッドが処理されることを特徴とする装置。
【請求項１５】
請求項１４に記載の装置であって、前記第１のＭ−コーディングのスレッド及び前記第２のＭ−コーディングのスレッドは、モード判定、変換、量子化を含み、前記Ｅ−コーディングのスレッドは、エントロピーコーディングを含むことを特徴とする装置。
【請求項１６】
請求項１４に記載の装置であって、前記利用可能な処理コアは、自動的に選択されることを特徴とする装置。
【請求項１７】
請求項１４に記載の装置であって、前記第１のＭ−コーディングのスレッド及び前記第２のＭ−コーディングのスレッドは、並列に処理されることを特徴とする装置。
【請求項１８】
請求項１７に記載の装置であって、前記第１のＭ−コーディングのスレッド及び前記第２のＭ−コーディングのスレッドは、同時に処理されることを特徴とする装置。
【請求項１９】
請求項１４に記載の装置であって、前記第１のＭ−コーディングのスレッドは、第１の鉛直方向のゾーンに対応し、前記第２のＭ−コーディングのスレッドは、第２の鉛直方向のゾーンに対応することを特徴とする装置。
【請求項２０】
請求項１４に記載の装置であって、前記第１のＭ−コーディングのスレッドは、シフト分割されている鉛直方向の第１のゾーンに対応し、前記第２のＭ−コーディングのスレッドは、シフト分割されている鉛直方向の第２のゾーンに対応することを特徴とする装置。
【請求項２１】
請求項１４に記載の装置であって、前記第１のＭ−コーディングのスレッドは、対角線上の第１のゾーンに対応し、前記第２のＭ−コーディングのスレッドは、対角線上の第２のゾーンに対応することを特徴とする装置。
【請求項２２】
ビデオを圧縮するための方法であって、
ａ．画像をＮ個のゾーンに鉛直方向に分割し、
ｂ．Ｎ個のプロセスがＭ−コーディングであり、一つのプロセスがＥ−コーディングであるＮ＋１個のプロセスを配置し、
ｃ．複数の処理コアを用いて、前記Ｎ個のＭ−コーディングのプロセスを並列に処理し、
ｄ．前記複数の処理コアから利用可能な処理コアを用いて、前記Ｅ−コーディングのプロセスを処理し、
ｅ．前記Ｎ＋１個のプロセスを同期化する、
ことを含む方法。
【請求項２３】
請求項２２に記載の方法であって、前記Ｎ個のＭ−コーディングのプロセスを処理することは、前のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＭ−コーディングを行うことを含む方法。
【請求項２４】
請求項２２に記載の方法であって、前記Ｅ−コーディングのプロセスを処理することは、前記現在のマクロブロックのＭ−コーディングが完了した後に前記現在のマクロブロックのＥ−コーディングを行うことを含む方法。
【請求項２５】
請求項２２に記載の方法であって、前記Ｅ−コーディングのプロセスを処理することは、前記前のマクロブロックのＥ−コーディングが完了した後に前記現在のマクロブロックのＥ−コーディングを行うことを含む方法。
【請求項２６】
請求項２２に記載の方法であって、その方法はさらに、
ａ．前のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＭ−コーディングを行い、
ｂ．前記現在のマクロブロックのＭ−コーディングが完了した後に前記現在のマクロブロックのＥ−コーディングを行い、
ｃ．前記前のマクロブロックのＥ−コーディングが完了した後に前記現在のマクロブロックのＥ−コーディングを行う、
ことを含む方法。
【請求項２７】
請求項２２に記載の方法であって、マクロブロックが最初の行にない場合、マクロブロックのＭ−コーディングを右上のマクロブロックのＥ−コーディングが完了した後に行うことをさらに含む方法。
【請求項２８】
請求項２２に記載の方法であって、マクロブロックが行内の最後のマクロブロックである場合、マクロブロックのＭ−コーディングを、上部のマクロブロックのＥ−コーディングが完了した後に行うことをさらに含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ圧縮の分野に関する。より詳細には、本発明は、並列プロセッサを用いたビデオ圧縮に関する。
【０００２】
本出願は、２００６年７月１７日に出願した発明の名称が「Parallel Processing Apparatus of Video Compression」である同時継続中の米国仮特許出願番号６０／８３１、６１４について35 U.S. C. §119(e)のもとで優先権を主張する。２００６年７月１７日に出願した発明の名称が「Parallel Processing Apparatus of Video Compression」である仮特許出願番号６０／８３１、６１４は、それの全体の参照によってここに組み込まれる。
【背景技術】
【０００３】
ビデオシーケンスは、通常、フレームと呼ばれる多くの画像からなる。続いて生じるフレームは、非常に似ていることから、あるフレームから次までに多くの冗長部分が含まれる。チャンネル上で効率的に送られる前、又は、メモリに効率的に記憶される前に、ビデオデータは、帯域幅及びメモリを浪費しないよう圧縮される。その目標は、過剰部分を削減し、より良い圧縮比を得ることである。最初に、ビデオ圧縮アプローチは、所定のフレームから参照フレームを抜き取り、相対的差異を生成することである。圧縮されているフレームが有する情報は、参照フレームより少ない。相対的差異は、同じ品質でありながら低いビットレートでエンコードすることができる。デコーダは、参照フレームに相対的差異を加えることによって、もとのフレームを再構築する。
【０００４】
より精巧なアプローチは、全てのシーンの動き及びビデオシーケンスのオブジェクトに似せることである。その動きは、ビットストリーム内にエンコードされているパラメータによって表現される。予測されるフレームのピクセルは、適切に解釈された参照フレームのピクセルによって近づけられる。このアプローチは、単純な抜き取りを超える改良された予測能力を含む。しかしながら、動きモデルのパラメータで占められるビットレートは、大きくなりすぎてはならない。
【０００５】
一般に、ビデオ圧縮は、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４などのようなムービングピクチャーエクスパーツグループ（ＭＰＥＧ）によるオーディオ及びビデオ圧縮のための一又は二以上の標準を含む多くの標準によって実行される。追加の機能拡張は、ＭＰＥＧ−４のパート１０の標準の一部、また、Ｈ．２６４又はＡＶＣ（アドバンスドビデオコーディング）といわれるようなものの一部として構成されている。ＭＰＥＧの標準のもとで、ビデオデータは、最初にエンコード（例えば、圧縮）され、次に、ビデオシステムのエンコーダ側におけるエンコーダのバッファに記憶される。最後に、エンコードされたデータは、ビデオシステムのデコーダ側に送られる。その場合、デコードの前に、それはデコーダのバッファに記憶され、これにより、対応する画像を見ることができる。
【０００６】
Ｈ．２６４／ＡＶＣプロジェクトの目的は、標準的な機能を開発することである。その機能は、以前の標準（例えば、ＭＰＥＧ−２、Ｈ．２６３、ＭＰＥＧ−４のパート２など）で必要としていたものより十分に低いビットレートで良好なビデオ品質を提供する。さらに、それは、複雑性を大きく増加（実装するのに非現実的となるような設計）させることなく、これら改善がなされることを要求している。追加の目標は、柔軟な方法でこれら変更を構成することである。その方法は、標準が多種多様なアプリケーションに適用されることを可能にする。これにより、それは、低ビットレートビデオと高ビットレートビデオの両方、そして、低分解ビデオと高分解ビデオの両方のために用いることが可能となる。別の目的は、非常に多種多様なネットワーク及びシステム上で効果的に動作させることである。
【０００７】
Ｈ．２６４／ＡＶＣ／ＭＰＥＧ−４のパート１０は、多くの新しい特徴を含み、以前の標準より効果的にビデオを圧縮することを可能にし、そして、多種多様なネットワーク環境への利用のためにさらなる柔軟性を提供する。ある主要な特徴は以下を含む。それは、参照として前にエンコードした画像を用いた複数の画像の動き補償、１６ピクセル×１６ピクセルと同じ大きさのブロック及び４ピクセル×４ピクセルと同じ大きさのブロックを用いた可変ブロックサイズ動き補償（ＶＢＳＭＣ）、半画素の輝度サンプル予測を導出するための６タップフィルタリング、マクロブロックペア構造、動き補償のためのクオーターピクセル予測、予測に重点をおいたもの、インループ非ブロックフィルター、整数完全一致４ピクセル×４ピクセル空間ブロック変換、アダマール変換が高速フーリエ変換と同じであるプライマリ空間変換の「ＤＣ」係数上で実行されるセカンダリアダマール変換、「イントラ」コーディングのための隣接するブロックのエッジによる空間予測、状況対応型バイナリ算術コーディング（ＣＡＢＡＣ）、状況対応型可変長コーディング（ＣＡＶＬＣ）、指数ゴロム（Exponential-Golomb）コーディングと呼ばれるＣＡＢＡＣ又はＣＡＶＬＣによってコードされない多くのシンタックス要素のための単純可変長コーディング及び高構造可変長コーディング（ＶＬＣ）技術、ネットワークアブストラクション層（ＮＡＬ）定義、スイッチングスライス、フレキシブルマクロブロックオーダーリング、過剰スライス（ＲＳ）、追加拡張情報（ＳＥＩ）、ビデオユーザービリティ情報（ＶＵＩ）、補助画像、フレームナンバリング、画像順序カウントである。これら技術及び他のいくつかは、以前の標準や、より多くの状況、より多くの環境などにおいて、より顕著に良好な効果でＨ．２６４が機能することを可能にする。Ｈ．２６４は通常、ＭＰＥＧ−２より良好に機能し、半分あるいはそれ以下のビットで同じ品質が得られる。
【０００８】
ＭＰＥＧは、動画及びそれに関連するオーディオの一般的なコーディングのために用いられ、３つのタイプのエンコードされたデータフレームが一組となって構成されている圧縮ビデオビットストリームを生成する。３つのタイプのデータフレームは、イントラフレーム（Ｉ−フレーム（I-frame）又はＩ−ピクチャ（I-picture）とよばれる）、双方向予測フレーム（Ｂ−フレーム（B-frame）又はＢ−ピクチャ（B-picture）とよばれる）、順方向予測フレーム（Ｐ−フレーム（P-frame）又はＰ−ピクチャ（P-picture）とよばれる）である。これら３つのタイプのフレームは、ＧＯＰ（Group Of Pictures）構造と呼ばれる特定の順序に配置され得る。Ｉ−フレームは、画像を再構築するのに必要な情報を全て含む。Ｉ−フレームは、動き補償なしで通常のイメージとしてエンコードされる。その一方、Ｐ−フレームは、前のフレームからの情報を用いて、そして、Ｂ−フレームは、前のフレーム、次のフレーム、又はその両方からの情報を用いて画像を再構築する。特に、Ｐ−フレームは、先行するＩ−フレーム又は直前のＰ−フレームから予測される。
【０００９】
フレームはまた、直後のフレームからも予測され得る。次のフレームがこの方法で利用されるために、その次のフレームは、予測フレームの前にエンコードされなければならない。したがって、エンコードの順序は、必ずしも実際のフレーム順序に合致していなくてもよい。そのようなフレームは通常、２方向から予測される。例えば、Ｉフレーム又はＰ−フレームは、予測フレームの直前、また、そのＰ−フレームは、予測フレームの直後から予測される。これら双方向予測フレームはＢ−フレームと呼ばれる。
【００１０】
多くの実行可能なＧＯＰ構造が存在する。通常のＧＯＰ構造は、１５フレームの長さであり、シーケンスはＩ＿ＢＢ＿Ｐ＿ＢＢ＿Ｐ＿ＢＢ＿Ｐ＿ＢＢ＿Ｐ＿ＢＢ＿である。同様に１２フレームのシーケンスも一般的である。Ｉ−フレームは、空間的冗長性に関してエンコードを行い、Ｐ−フレーム及びＢ−フレームは、時間的冗長性及び空間的冗長性両方に関してエンコードを行う。ビデオストリーム内の隣接したフレームはしばしば、相関性を十分に有することから、Ｐ−フレーム及びＢ−フレームにおけるＩ−フレームのサイズは、わずかな割合でしかない。しかしながら、処理時間に対してフレームが圧縮されるサイズ、そして、そのような圧縮フレームをエンコードするのに必要とするリソースとの間にトレードオフが存在する。ＧＯＰ構造内のＩ−フレーム、Ｐ−フレーム、そして、Ｂ−フレームの比率は、ビデオストリームの種類によって、そして、アウトプットストリームに対する制約である帯域幅によって決定されるが、エンコード時間も問題となり得る。これは、制限されたコンピュータ装置を用いたライブ送信及びリアルタイム環境に特にあてはまる。多くのＢ−フレームを含むストリームは、Ｉフレームのみのファイルよりエンコードするのに長い時間がかかる可能性があるからである。
【００１１】
Ｂ−フレーム及びＰ−フレームは、画像データを記憶するためにより少ないビットを要求し、通常、前のフレーム、次のフレーム、又は、その両方と現在のフレームとの間の差異についての差異ビットを含む。したがって、Ｂ−フレーム及びＰ−フレームは、フレーム間に含まれる冗長情報を取り除くよう用いられる。動作中、デコーダは、エンコードされているＢ−フレーム又はＰ−フレームを受け、前のフレーム又は次のフレームを用いて、もとのフレームを再構築する。シーケンシャルフレームが実質的に同じである場合、フレーム間の差異が小さいことによって、このプロセスは、より単純となり、よりスムーズなシーンの遷移を生み出す。
【００１２】
各ビデオイメージは、一つのルミナンスチャンネル（Ｙ）と２つのクロミナンスチャンネル（色差信号Ｃｂ及びＣｒとよばれる）に分離される。ルミナンス及びクロミナンスのアレイのブロックは、フレーム内におけるコーディングの基本ユニットである「マクロブロック」にまとめられる。
【００１３】
Ｉ−フレームの場合、実際のイメージデータは、エンコードプロセスを経る。しかしながら、Ｐ−フレーム及びＢ−フレームは、最初に「動き補償」のプロセスに従う。動き補償は、前のフレームの各マクロブロックが移動している場合に関して、連続したフレーム間の差異を記述する方法である。そのような技術はしばしば、ビデオ圧縮のためのビデオシーケンスの時間的冗長性を削減するよう採用される。「動きベクトル」を用いたエンコーダによって選択されるときに、Ｐ−フレーム又はＢ−フレーム内の各マクロブロックは、相関性を十分に有する前又は次のイメージのエリアと関連する。動きベクトルは、マクロブロックをそれと相関するエリアに位置決めし、そして、エンコードされる。次に、２つのエリア間の差異は、エンコードプロセスを経る。
【００１４】
従来のビデオコーデックは、動き補償予測を用いて、未加工のインプットビデオストリームを効率的にエンコードする。現在のフレーム内のマクロブロックは、前のフレームにおいて移動したマクロブロックから予測される。もとのマクロブロックとそれの予測との間の差異は、圧縮され、変位（動き）ベクトルとともに送られる。この技術は、インターコーディング（inter-coding）と呼ばれ、ＭＰＥＧ標準において用いられるアプローチである。
【００１５】
エンコードプロセスで多くの時間を必要とする構成要素の一つは、動き推定である。動き推定は、予測エラーの変換コーディングと組み合わせて動き補償予測を実行することによって、ビデオ信号のビットレートを削減するよう用いられる。動き推定に関連するエイリアシングは、インターピクセルの動き推定によって避けることができず、そのエイリアシングは、予測効率を劣化させる。品質劣化の問題を解決するために、ハーフピクセル補間及びクオーターピクセル補間は、エイリアシングの影響を削減するために適用される。クオーターピクセルの精度によって動きベクトルを推定することで、通常、３段階の検索が用いられる。第１のステップにおいて、動き推定は、特定の検索範囲で各整数ピクセルに適用され、最良の適合を探し出す。次に、第２のステップにおいて、選択されている整数ピクセル動きベクトル周辺の８つのハーフピクセルポイントが、最適なハーフピクセルの適合ポイントを探すよう検査される。最後に、第３のステップにおいて、選択されているハーフピクセル動きベクトル周辺の８つのクオーターピクセルポイントが検査され、最適な適合ポイントが、最終的な動きベクトルとして選択される。動き推定の複雑性を考慮すると、整数ピクセルの動き推定のために全検索が用いられた場合、整数ピクセルの動き推定は、動き推定の多くの部分を占める。しかしながら、高速整数動き推定（integer motion estimation）アルゴリズムを利用すると、１０より少ない検索ポイントを検査することによって、整数ピクセルの動きベクトルを探し出すことが可能となる。結果として、ハーフピクセルの動きベクトル及びクオーターピクセルの動きベクトルを検索する計算の複雑性は、際立ったものとなる。
【００１６】
トランジスターのサイズを小さくし、これにより、より多くの機能性を実装するためのシリコンスペースを増加させる絶え間ない半導体技術の進歩、そして、顕著な熱消費をもたらす物理的制限に起因して、プロセッサの製造者は、マルチコアシステム又はマルチプロセッサシステムを導入し始めている。ビデオ圧縮処理は、プロセッサの能力を必要とし、現在のプロセッサが実行可能な計算能力を利用するよう試みる。しかしながら、多くのビデオ圧縮の方法論は、順次定義を用いるかそれとも、近接のビデオオブジェクト間の依存関係を有する。これにより、現在の並列コンピュータシステムにおけるビデオ圧縮プロセスに向けたスレッドレベルの並列処理を利用することは困難となっている。ビデオ圧縮アプリケーションにおける並列処理能力を利用するアプローチの一つは、スライスとして知られているが、ビデオシーケンス内の画像を複数の部分に水平方向に分割することである。複数のスライス間で意味的な依存関係が存在しないことから、これは、マルチ処理システムにおけるビデオ圧縮に適している。
【００１７】
しかしながら、あるビデオ圧縮アプリケーションは、単一のスライスアプローチを必要とする（画像あたり一つのスライス）。単一のスライスアプローチを用いると、単一スライスシンタックス及びブロック境界周辺の動きにおいて、特に、アドバンスドビデオコーディング（ＡＶＣ）仕様において多くの依存関係の問題が存在する。
【００１８】
単一スライスアプローチを用いたマルチ処理システム上の並列処理ビデオ圧縮のためのある方法は、画像を上部半分と下部半分の水平方向に分割することである。一つのスレッドは、画像の上部半分を処理し、他のスレッドは、下部半分を処理する。二つのスレッドは、同じ画像を処理する。下部のスレッドは、境界周辺の依存関係を無視し、境界周辺のシンタックスの一致を扱う。下部のスレッドが、第１のマクロブロック（ＭＢ）のラインを処理する場合、それは、ＭＢモードを選択する。そのモードは、それの上部のＭＢから独立している。しかしながら、この種の一般的な方法論は、標準的な単一スライスラスタースキャンアプローチより圧縮の効果を劣化させる。
【００１９】
ビデオ圧縮の別の並列処理方法論は、画像を複数の部分に水平方向に分割することである。これら水平方向に分割された部分は、スライスと呼ばれる。そして、ビデオ圧縮システムは、並列処理の方法でこれらスライスをエンコードする。結果として、この方法は、複数のスライスを作りだす。
【００２０】
しかしながら、複数のスライスアプローチは、多くの問題を抱えている。複数のスライスのエンコード結果は、互いが意味的に独立していることから、複数のスライスのエンコード結果は、単一のスライスとは異なる。したがって、複数のスライスによる並列処理方法論についての正確性を確かめることは、困難かつ不可能である。ビデオ品質は、スライスの境界で低下する。異なるスライスにおいてビデオ内容の複雑性が異なる場合、水平方向の複数のスライスエンコーディングを用いるビデオ圧縮は、負荷が不均衡となる。水平方向の複数のスライスエンコーディングにおける個々のスライスの結果を、単一の結果が形成されるよう結び付ける必要がある。
【発明の開示】
【課題を解決するための手段】
【００２１】
発明の概要
並列処理のビデオ圧縮のための方法及び装置をここに説明する。画像はＮ個のゾーンに鉛直方向に分割される。鉛直方向分割並列処理（Vertical Split Parallelism、VSP）は、Ｎ個のゾーンにおける一般的なマクロブロックコーディングのためのＮ個のＭ−コーディングのプロセス、そして、エントロピーコーディングのための１つのＥ−コーディングからなるＮ＋１個のプロセスを配置する。マクロブロックエンコーディングのプロセスをＭ−コーディングのプロセス及びＥ−コーディングのプロセスに分割することによって、複数のＭ−コーディングのスレッド、そして、一つのＥ−コーディングのスレッドは、スレッド間の適切な同期を伴い同時に処理することができる。Ｍ−コーディングのプロセスの負荷は、各マクロブロックコーディングのプロセスのためのＥ−コーディングより大きいことから、２つのコアは、２つのＭ−コーディングのプロセスのために指定され得る。Ｅ−コーディングのプロセスの負荷は軽いことから、どちらかのコアが、Ｅ−コーディングのプロセスのために指定され得る。したがって、ＶＳＰは、並列処置コンピュータの能力を効果的に利用する。
【００２２】
一つの側面において、ビデオを圧縮するための装置は、複数の処理コア、そして、プログラムを備え、そのプログラムは、複数の処理コアを実行し、Ｎ個のＭ−コーディングのプロセス及び一つのＥ−コーティングプロセスを処理する。Ｎは、複数の処理コア内におけるコアの数に等しい。Ｅ−コーディングのプロセスは、複数の処理コアから選択される利用可能なある処理コアによって処理される。利用可能な処理コアは、自動的に選択される。Ｎ個のＭ−コーディングのプロセスは、モード判定、変換、量子化を含み、Ｅ−コーディングのプロセスは、エントロピーコーディングを含む。Ｎ個のＭ−コーディングのプロセスは、並列に処理される。Ｎ個のＭ−コーディングのプロセスは、同時に処理される。Ｎ個のＭ−コーディングのプロセスはそれぞれ、鉛直方向のゾーンに対応する。Ｎ個のＭ−コーディングのプロセスはそれぞれ、シフト分割されている鉛直方向のゾーンに対応する。Ｎ個のＭ−コーディングのプロセスはそれぞれ、対角線上のゾーンに相当する。複数の処理コアは、前のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＭ−コーディングを行い、現在のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＥ−コーディングを行い、前のマクロブロックのＥ−コーディングが完了した後に現在のマクロブロックのＥ−コーディングを行う。複数の処理コアは、マクロブロックが最初の行にない場合、マクロブロックのＭ−コーディングを、その右上のマクロブロックのＥ−コーディングが完了した後に行う。複数の処理コアは、マクロブロックが行内の最後のマクロブロックである場合、マクロブロックのＭ−コーディングを、その上部のマクロブロックのＥ−コーディングが完了した後に行う。
【００２３】
別の側面において、ビデオを圧縮するための装置は、第１のＭ−コーディングのスレッドを処理するための第１の処理コア、そして、第２のＭ−コーディングのスレッドを処理するための第２の処理コアであって、第１の処理コアに接続されている第２の処理コアを備える。その場合、Ｅ−コーディングのスレッドは、第１の処理コア及び第２の処理コアから選択された利用可能な処理コアによって処理される。第１のＭ−コーディングのスレッド及び第２のＭ−コーディングのスレッドは、モード判定、変換、量子化を含み、Ｅ−コーディングのスレッドは、エントロピーコーディングを含む。利用可能な処理コアは、自動的に選択される。第１のＭ−コーディングのスレッド及び第２のＭ−コーディングのスレッドは、並列に処理される。第１のＭ−コーディングのスレッド及び第２のＭ−コーディングのスレッドは、同時に処理される。第１のＭ−コーディングのスレッドは鉛直方向の第１のゾーンに対応し、第２のＭ−コーディングのスレッドは鉛直方向の第２のゾーンに対応する。第１のＭ−コーディングのスレッドは鉛直方向にシフト分割された第１のゾーンに対応し、第２のＭ−コーディングのスレッドは鉛直方向にシフト分割された第２のゾーンに対応する。第１のＭ−コーディングのスレッドは対角線上の第１のゾーンに対応し、第２のＭ−コーディングのスレッドは対角線上の第２のゾーンに対応する。
【００２４】
別の側面において、ビデオを圧縮するための方法は、画像をＮ個のゾーンに鉛直方向に分割し、Ｎ＋１個のプロセスを配置することを含む。その場合、Ｎ個のプロセスは、Ｍ−コーディングであり、一つのプロセスは、Ｅ−コーディングである。そして、その方法は、複数の処理コアを利用し並列にＮ個のＭ−コーディングのプロセスを処理し、複数の処理コアの利用可能なある処理コアを利用しＥ−コーディングのプロセスを処理し、さらに、Ｎ＋１個のプロセスを同期化する。Ｎ個のＭ−コーディングのプロセスは、前のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＭ−コーディングを行うことを含む。Ｅ−コーディングのプロセスは、現在のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＥ−コーディングを行うことを含む。Ｅ−コーディングのプロセスを処理することは、前のマクロブロックのＥ−コーディングが完了した後に現在のマクロブロックのＥ−コーディングを行うことを含む。方法はさらに、前のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＭ−コーディングを行い、現在のマクロブロックのＭ−コーディングが完了した後に現在のマクロブロックのＥ−コーディングを行い、前のマクロブロックのＥ−コーディングが完了した後に現在のマクロブロックのＥ−コーディングを行うことを含む。方法はさらに、マクロブロックが最初の行にない場合、マクロブロックのＭ−コーディングを、その右上のマクロブロックのＥ−コーディングが完了した後に行うことを含む。方法はまた、マクロブロックが行内の最後のマクロブロックである場合、マクロブロックのＭ−コーディングを、その上部のマクロブロックのＥ−コーディングが完了した後に行うことを含む。
【発明を実施するための最良の形態】
【００２５】
ビデオシーケンスは、画像のシーケンスを含む。各画像はさらに、複数のマクロブロックに分割される。従来のエンコーディングのプロセスは、ラスタースキャン順に一つずつマクロブロックをエンコードする。一般的に、各マクロブロックのエンコーディングのプロセスは、マクロブックのタイプの選択、前段階である動き予測及び動き補償、中期段階である変換及び量子化、最終段階であるエントロピーエンコーディングを含む。
【００２６】
鉛直方向分割並列処理（VSP）は、従来のビデオ圧縮プロセスを２つの部分であるＭ−コーディング及びＥ−コーディングに分割する。Ｍコーディングは、エントロピーエンコーディングのプロセスを伴わない一般的なマクロブロックコーディングのプロセスを意味する。Ｅ−コーディングは、エントロピーコーディングのプロセスを意味する。画像が鉛直方向に分割される場合、鉛直方向に分割されている各部分の画像は、ゾーンを表す。従って、画像は、複数のゾーンを含む。各ゾーンは、Ｍ−コーディングによって最初に処理される。マクロブロックの単位あたりの各ゾーンのＭコーディングのアウトプットは、Ｅ−コーディングによってさらに処理される。ＶＳＰの特徴は、各マクロブロックのＭ−コーディング及びＥ−コーディングの依存関係を切り離すことである。これにより、マクロブロックのＥ−コーディングは、それ自体のＭ−コーディングの直後には処理されない。さらに、各マクロブロックは、ラスタースキャンの順序における前のマクロブロックのＥ−コーディングの完了には依存しない。
【００２７】
通常、画像が、Ｎ個のゾーンに鉛直方向に分割されている場合、ＶＳＰは、Ｎ個のゾーンのためのＮ個のＭ−コーディングのプロセス、そして、エントロピーコーディングのための１つのＥ−コーディングからなるＮ＋１個のプロセスを配置する。例えば、画像が、２つのゾーンに鉛直方向に分割されている場合、ＶＳＰは、２つのゾーンのための２つのＭ−コーディングのプロセス、そして、エントロピーコーディングのための一つのＥ−コーディングのプロセスからなる３つのプロセスを配置する。
【００２８】
マクロブロックのエンコーディングのプロセスをＭ−コーディングのプロセス、そして、Ｅ−コーディングのプロセスに分けることによって、複数のＭ−コーディングのスレッド及び一つのＥ−コーディングのスレッドは、スレッド間の適切な同期を伴って同時に進行することが可能である。Ｍ−コーディングは、モード判定、変換、量子化を含む。Ｍ−コーディングのこれらの段階は、Ｅ−コーディングであるエントロピーコーディングのタスクと比較して非常に負荷がかかるタスクである。Ｍ−コーディングのプロセスの負荷は、各マクロブロックコーディングのためのＥ−コーディングのプロセスより重いことから、コアは、各Ｍ−コーディングのプロセスを実行するために指定され得る。例えば、デバイス又はシステム内に２つのコアが存在する場合、すると、そのコアは２つのＭ−コーディングのプロセスに利用されるであろう。その場合、一プロセスが各コアに伝達される。２つのＭ−コーディングのプロセスは、並列に実行することができるが、ＡＶＣシンタックス依存がいまだ存在する。例えば、デルタＱＰやマクロブロック（ＭＢ）のスキップ実行など。これら問題は、スタンドアロンのＥ−スレッドの導入によって解決することができる。Ｅ−コーディングの負荷は軽いことから、２つのコアのどちらかが、Ｅ−コーディングのプロセスを処理し得る。したがって、ＶＳＰは、並列処理演算能力を効率的に利用する。
【００２９】
ＶＳＰは、並列処理方法における複数のスライスをエンコードする際の問題を解決する。ビデオ圧縮のＶＳＰの並列処理は、同じ結果となる単一スライスの順次処理をもたらす。したがって、ＶＳＰ並列処理と単一スライスの順次処理の結果が等しいことを比較することによって、ＶＳＰ並列処理の正確性を確認することが容易となる。ＶＳＰ並列処理と単一スライスの順次処理の結果は同一であるから、ビデオ品質は同一であることが保証される。画像を鉛直方向に分割することによって、ＶＳＰの各ゾーンは通常、ビデオの内容の複雑性を一様にする。したがって、各コアにおける個々の所定の負荷は、比較的に等しくなる。さらに、負荷が不均衡である場合、それは、ＶＳＰのエントロピーコーディングのプロセスによって排除される。したがって、ＶＳＰ並列処理の負荷は、自動的に釣り合いが保たれる。ＶＳＰのエントロピーコーディングのプロセスは、単一のスライスのエンコーディングと同じである単一の結果をもたらす。したがって、複数スライスの並列処理における部分的な結果の連結動作である追加の段階は存在しないこととなる。
【００３０】
ＶＳＰが実装されているビデオ圧縮ソフトウエアは、マルチプロセッサコンピュータアーキテクチャの対称型マルチプロセッシング（Symmetric Multiprocessing、ＳＭＰ）マシン上で実行されることが望ましい。そのアーキテクチャでは、複数のプロセス（スレッド）の同期化は、共有メモリの読み取り及び書き込みによって達成されることから、二以上の同一プロセッサ又はコアは、単一の共有メインメモリに接続されている。
【００３１】
ＶＳＰの実装は、ソフトウエアや、ハードウエア、ソフトウエアとハードウエアの組み合わせなどを介することで可能となる。画像を分割する好ましい方法は、鉛直方向に分割することであるが、他の実施例では、画像は対角線上に分割される。
【００３２】
並列で処理を行うビデオ圧縮の量を増加させること、そして、順次処理を削減することによって、ビデオ圧縮の性能は改善する。
【００３３】
ＶＳＰは、画像レート制御（Picture Rate Control）や、マクロブロック量子化重みマクロブロックレート制御（Macro-block Quantization Weight Macro-block Rate Control、MQW MBRC）、画像再エンコード、ＭＢ再エンコード、ＣＡＶＬＣエントロピーコーディング及びＣＡＢＡＣエントロピーコーディング、フレームインプットフォーマット及びフィールドインプットフォーマット、ブロック解除のオン／オフなどをサポートする。
【００３４】
多くの問題が存在し、ＶＳＰによって解決される。ＳＹＮＣ境界制限も解決される。量子化パラメータ（ＱＰ）境界制限は、実際のＭＢコーディングの前に全てのＱＰを事前に計算しておくことによって、又は、右端ＭＢ上の左端ＭＢの依存関係を減少させるアルゴリズムを変更しておくことによって解決する。ＱＰデルタ依存関係の問題は、２段階のアルゴリズムによって解決する。ラスタースキャン順序における前のＱＰ、そして、ラスタースキャン順序における前のスキップＭＢへの依存関係が存在することから、ＱＰデルタ依存関係の問題が存在する。ＶＳＰを用いて、コーディングを２段階に分離する。その際、Ｍ−コーディングは、並列で実行し、Ｅ−コーディングは、ラスタースキャン順序において順次実行する。したがって、デュアルコアシステムにおいて顕著に処理速度が上昇する。
【００３５】
並列化の方法は、タスク分解又はデータ分解によって分類することが可能である。タスク分解では、Ｊｖｔエンコーダが、パイプライン方式において機能レベルで複数のプロセスに分解され得る。各プロセスは、独立した方式として実行され、そして、そのアウトプットは、次のプロセスのためのインプットとすることが可能である。各プロセスにおいてロードバランス及びデータ依存性が解決されている場合、並列化は達成される。各プロセスのためにロードを行う現在のコードのコンピュータ操作は、不均衡である。Ｊｖｔコーディングのプロセスは、他のものと比較して最も重い。
【００３６】
データ分解では、各ピクチャーは、異なる時間フレームにおいて同時にエンコードを行うためにフレームレベルで半分に分解され得る。ペールムーンＡアルゴリズムは、この方法を実現する。各ピクチャーは、複数の異なるスライスを用いてスライスレベルでエンコードされ、並列化を達成する。一つの画像内で処理を行うと、参照フレームが時間領域において生成されない。ＭＢレベルにおいて、各ＭＢは、並列化のための処理ユニットとなる。データ同期化は、扱うとすると隣接するＭＢへのデータ依存関係がＡＶＣエンコーダにおいて基準となることから主要な問題となる。ＶＳＰは、この方法を採用する。ブロックレベルでの並列化は、ＭＢ内で実行され得る。それは、非常に低レベルのアルゴリズムであり、ＭＢレベルにおいて生じるデータ同期化の問題を回避する。混合した分解では、タスク分解及びデータ分解の両方が含まれる。
【００３７】
図１Ａ乃至図１Ｃは、ビデオ圧縮のための並列処理装置の実施例におけるブロック図を示す。図１Ａ乃至図１Ｃそれぞれにおいて、コンピュータデバイスは、一又は二以上のコアを有する一又は二以上のプロセッサを備える。合計で２つのコアを有するならば、任意のプロセッサ及びコアの組み合わせは実現可能である。
【００３８】
図１Ａは、２つのプロセッサを有するコンピュータデバイス１を示す。その２つのプロセッサは、第１のプロセッサ２、第２のプロセッサ４であって、それぞれ、単一のコア３、コア５を有する。図１Ｂは、単一プロセッサ２’を有するコンピュータデバイス１’を示す。その単一プロセッサ２’は、デュアルコア３’を備える。図１Ｃは、２つのプロセッサを有するコンピュータデバイス１’’を示す。その２つのプロセッサは、第１のプロセッサ２’、第２のプロセッサ４’であって、それぞれ、デュアルコア３’、デュアルコア５’を有する。各コンピュータデバイスは、同一プロセッサ内又は複数のプロセッサ内のどちらかに少なくとも二つのコアを有する。さらに、図１Ｃに示すように、２以上のコアを利用することも可能である。コアの総合計が２以上である限り、任意の数のプロセッサ及びコアを利用することができる。コンピュータデバイスは、以下に限定しないが、ビデオカメラ、デジタルカメラ、携帯電話、携帯情報端末（ＰＤＡ）、コンピュータなどを含む任意のデジタルデバイスである。
【００３９】
複数のコアを利用することで、ビデオ圧縮のための並列処理装置は、並列処置の利点を生かすことによりビデオ圧縮プロセスを促進させることが可能である。ここに記載するように、画像が、Ｎ個のゾーンに鉛直方向に分割された後、Ｎ個のＭ−コーディングのプロセスとエントロピーコーディングのための一つのＥ−コーディングのプロセスからなるＮ＋１個のプロセスが配置される。Ｍ−コーディングのプロセスにはＥ−コーディングのプロセスより重い負荷がかかることから、コアは、各Ｍ−コーディングのプロセスのために指定され得る。例えば、図１Ａを参照すると、第１のＭ−コーディングのプロセスは、第１のプロセッサ２内のコア３に送られ、第２のＭ−コーディングのプロセスは、第２のプロセッサ４内のコア５に送られる。これにより、各Ｍ−コーディングのプロセスは、個別に処理される。Ｅ−コーディングのプロセスのために、コア３又はコア５のどちらかが利用され得る。そのようなプロセスの処理は比較的軽いからである。したがって、ビデオ圧縮のための並列処理装置は、並列処理コンピュータの能力を効果的に利用する。
【００４０】
図２は、鉛直方向分割並列処理（ＶＳＰ）における実施例のフローチャートを示す。ステップ２００において、画像は、Ｎ個のゾーンに分割される。この場合、Ｎは２以上である。通常、画像が分割され、これにより、ゾーンの数が処理のために利用可能なコアの数に等しくなる。ステップ２０２において、Ｎ＋１個のプロセスが配置される。Ｎ個のＭ−コーディングのプロセス及び一つのＥ−コーディングのプロセスが存在する。ステップ２０４において、Ｎ個のＭコーディングのプロセスは、並列に処理される、次に、ステップ２０６において、Ｅ−コーディングのプロセスは、利用可能である任意のコアを利用して処理される。そして、ステップ２０８において、処理は同期化される。
【００４１】
図３は、ゾーン＿ａ（左部分）及びゾーン＿ｂ（右部分）かならなる２つのゾーンに対する鉛直方向への画像の分割を示す。その画像は、１２８×９６ピクセル（８×６ＭＢ）を有する。各鉛直方向のゾーンここではゾーン＿ａ及びゾーン＿ｂは、分離したコアによって個々のスレッドとして処理される。ＭＢレベルのエンコーディングに関して、鉛直方向のゾーン間のゾーン境界のみが多くの同期化を必要とする。その他の独立したスレッドは、エントロピーコーディングのために利用される。各ＭＢは、マクロブロック層のコーディングである「Ｍコーディング」、そして、エントロピーコーディングである「Ｅ−コーディング」によってエンコードされる。各ゾーンは、Ｍ−コーディングのための一つのスレッドによって処理される。例えば、ゾーン＿ａは、一つのスレッドによってＭ−コーディングが実行される、ゾーン＿ｂは、別のスレッドによってＭ−コーディングが実行される。独立したスレッドが「Ｅ−コーディング」を実行する。よって、画像が２つの鉛直方向のゾーンに分割されている場合、合計で３つのスレッドが実行される。
【００４２】
効果的にコーディングが実行されることを保証する多くの同期化のルール又は要求が存在する。前のマクロブロックのＭ−コーディングが完了すると、現在のマクロブロックのＭ−コーディングが開始する。例えば、図３を参照すると、ＭＢ１ａは、ＭＢ０ａが完了したときのみ開始することができる。次に、ＭＢ２ｂは、ＭＢ１ｂが完了したときのみ開始することができ、そして、ＭＢ１ｂは、それが開始可能となる前に、ＭＢ０ａが終了するまで待たなければならない。ＭＢのＥ−コーディングは、それぞれのＭＢのＭ−コーディングが完了したときに開始する。あるＭＢのＥ−コーディングはまた、そのＭＢの前のＥ−コーディングが完了したときのみ開始することができる。
【００４３】
上記の一般的な同期化に加えて、用いられるデータ構造の設計に依存するルールが存在する。重複したデータ構造の設計と同期化アルゴリズムの間に密接な関係が有るからである。以下に、重複したデータ構造の設計に依存する同期化のアルゴリズムの実装を開示する。マクロブロックの各列に関して、データの２つのセットが存在する。例えば、８ピクセル×６ピクセルＭＢ画像に関して、隣接したマクロブロックの情報（Adjacent Macro-block Information、AdjacentMblnfo）、算術コーディングのための前のＣＡＢＡＣ情報（Adjacent Macro-block Information、AdjacentMblnfo）、マクロブロックエンコーディング（MbCoding）、マクロブロックエンコーディング、オーサリングエンコーディングモード（MbCodingAE）、マクロブロックエンコーディングモード判定（Macro-block Encoding Mode Decision、 ModeDecision）の１６セットである８×２のデータのセットがある。マクロブロック各列に関して、バッファーを記憶するエントロピーファンクションコールの２つのセットが存在する。各ＭＢのバッファーは、ファンクションコールを３２個まで記憶することができる。例えば、８ピクセル×６ピクセルＭＢ画像に関して、ＶｓｐＳｉｍｓ［８×２］［３２］は、エントロピーファンクションコールレコーディングバッファーである。ＭＢの第１の行内に存在しないＭＢに関して、Ｍ−コーディングは、それの右上のＭＢのＥ−コーディングが完了したときのみ開始することができる。ＭＢが行内の最後のＭＢである場合、Ｍコーディングは、それの上のＭＢのＥ−コーディングが完了したときのみ開始することができる。例えば、図３を参照すると、ＭＢ  ｅ１０のＭ−コーディングは、ＭＢ  ｅ０３のＥ−コーディングが完了したときのみ開始することができる。次に、ＭＢ  ｅ１０は、ＭＢ  ｅ１０とＭＢ  ｅ０２が同一のＭＢの列にあることから、同一なデータのセットであるＭＢ  ｅ０２を再利用する。
【００４４】
ビデオ圧縮のための並列処理装置による、その他の改善事項は、水平方向のゾーンの代わりに鉛直方向のゾーンの使用を含む。鉛直方向のゾーンは、上述の記載に加えて、水平方向のゾーンを越える他の利益を有する。一般的に、鉛直方向のピクセルは、水平方向のピクセルより少ない。ゆえに、列又は行の数が均一ではない場合、相違は、水平方向より鉛直方向の方が小さくなる。したがって、一つのプロセッサが、別のものより負荷が非常に大きくなることはないと考えられる。鉛直方向にゾーンを構成することの別の利益は、図４Ａに示すように列の数が均一ではないとき、鉛直方向にシフト分割を行うことを可能にすることである。シフト分割は、ゾーンが等しいサイズとなるよう、鉛直方向の分割が画像内のあるポイントで変更されることである。例えば、図４Ａを参照すると、第１のゾーン４００及び第２のゾーン４０２である２つのゾーンを生成するとき、奇数の列が存在し、分割部４０４は、中間点４０６における一つの列によって画像の下方で入れ替えられる。これにより、サイズが等しい２つのゾーンが生じることとなる。鉛直方向にゾーンを構成することのさらなる別の利益は、例えば、画像上部にわたる青空や画像下部の水などのように、画像内に静的な構成要素が存在するような多くの画像に向けたものである。例えば、図４Ｂに示す同じような画像は、家の上にある青空、画像の下部には木や人を含む。画像が、水平方向に分割された場合、青空の処理は、圧縮のために処理能力を少ししか必要としない。なぜならば、それが比較的静的であるのに対して、家や、木、そして、人である部分は、多くの処理を必要とするからである。したがって、バランスが保たれなくなる。しかしながら、画像が鉛直方向に分割された場合、両側は、半分の空、半分の家、そして半分の木や人を含むと考えられ、よりバランスの取れた処理スキームを提供する。
【００４５】
ＶＳＰを利用することは、他の圧縮の実装を超える多くの利益を提供する。ロードバランスに関して、負荷が重いスレッドのそれぞれ対して、ほとんど同じ数のＭＢが存在する。全てのＭＢは、同一フレーム内で処理される。鉛直方向に区分けすることは、バランスの取れた負荷を達成する。拡張性ついては、スレッドの数を調節することが容易である。同期化に関しては、同期化するのに必要とされるアイテムの数が最小となる。ゾーン境界に隣接するゾーン内の第１の列のＭＢのみが、多くの同期化を必要とする。データの依存関係のマップは、同期化のために用いることができる。同期化の「実行可能」の結果の可能性は高く、そして、同期化の「実行可能」に対して「実行不可」の待ち時間は短くなる。多くの参照ＭＢは、同一の特定のキャッシュ内にある。ｘ８６デュアルコアプロセッサは、２つのＬ２キャッシュと有する。ＣＥＬＬは、各ＳＰＥのために特定の記憶部を有する。境界を越える参照ＭＢは、転送する必要がない。ｘ８６は、事前フェッチを用いて参照ＭＢを転送する。ＣＥＬＬは、転送のためにＤＭＡを使用する。負荷が重いスレッドそれぞれは、フレームの一部のみを処理する。鉛直方向の領域それぞれは、負荷が重いスレッドそれぞれによって実行される。
【００４６】
マルチコアマシン上の負荷が重いスレッド（Ｍ−コーディング）間にバランスの取れていない負荷が存在する場合、負荷が軽い独立したスレッド（Ｅ−コーディング）が、そのギャップを埋めることができる。したがって、マルチコアの負荷は、自動的にバランスが保たれる。ここに開示した実装を用いることで、プロセッサの利用は、デュアルコアマシン上で時間の大部分である９０％を上回る。ＶＳＰは、メモリの利用をわずかであるが約２．３％増加させる。
【００４７】
レート制御アルゴリズムは、一般的なレート制御アルゴリズムに関してＱＰ依存関係の問題をＭＱＷ ＭＢＲＣアルゴリズムを超えて解決することができる。図５に、第１のスレッド５００及び第２のスレッド５０２を２つのタイプの境界を用いて示す。ＳＹＮＣ境界５０４は、イントラ予測要求に起因する。ＭＢ［１］は、ＭＢ［Ｈ］に依存する（例えば、ＭＢ［Ｈ］が完了するまでＭＢ［１］は開始できない）。ＭＢ［Ｐ］は、ＭＢ［１］に依存する（例えば、ＭＢ［１］が完了するまでＭＢ［Ｐ］は開始できない）。ＱＰ境界５０６は、レート制御アルゴリズムに起因する。ＭＢ［Ｉ］は、ＭＢ［８］に依存する（例えば、ＭＢ［８］のＱＰが決定された後、ＭＢ［Ｉ］のＱＰが決定される）。ＭＢ［Ｑ］は、ＭＢ［１６］に依存する（例えば、ＭＢ［１６］のＱＰが決定された後、ＭＢ［Ｑ］のＱＰが決定される）。
【００４８】
ＱＰ境界の問題を減少させるアルゴリズムの変更は、右端のＭＢとの依存関係なしに左端ＭＢのＱＰを決定し、ＭＢ間の残りのＱＰ依存関係（例えば、右端のＭＢへの左端のＭＢの依存関係を除く、ラスタースキャン順序における前のＭＢへの他のＭＢ依存関係の全て）に影響しない（例えば、ＭＢコーディングの間の各ＭＢのためのＱＰの変化）。したがって、ＶＳＰは、ＭＢ間の依存関係についての弱点を克服することができる。ＭＢ［９］のＱＰは、ＭＢ［８］のＱＰ又はＭＢ［Ｐ］のＱＰのどちらかに依存し得る。新しいレート制御アルゴリズムは、２つの画像（２つのラスタースキャン順序におけるＱＰ依存関係のための左半分の画像と右半分の画像）として分割した画像を扱う。左端のＭＢと右端のＭＢ間の相関関係は存在しておらず、ＱＰ境界依存関係を減少させることが可能である。
【００４９】
動作中、ビデオ圧縮のための並列処理装置は、ビデオ圧縮を促進させるよう複数のコアを用いて並列処置の能力を利用する。多くのデバイス及びシステムは、単一のプロセッサ又は複数のプロセッサのどちらかにおいて複数のコアを備える。効率性の目的に関して、ビデオ圧縮が複数のコアを利用することは重要である。他の試みは、複数のコアを利用することで構成されるが、それは、それの効果を減少させる特定の欠点を有する。ＶＳＰは、各画像をＮ個の鉛直方向のゾーンに分離させる。その場合、そのゾーンは、通常同一サイズである。Ｍコーディングのプロセスは、一つのＥ−コーディングのプロセスに加えて各ゾーンに対して生成される。各Ｍ−コーディングのプロセスは同様な複雑性を有することから、各コアは、それらを処理するためにおおよそ同じ時間を必要とするであろう。さらに、Ｅ−コーディングは負荷が少ないため、利用可能な任意のコアによって処理することが可能となる。その結果、プロセスの同期化が行われる。
【００５０】
記載の通り、デバイスは、画像を鉛直方向のゾーンに分割することによって鉛直方向分割並列処理を利用し、そして、それぞれ対応するプロセスを分離したコアに送り処理を行う。さらに、エントロピーコーディングのプロセスは、利用可能なあるコアに送られる。その後、プロセスは同期化が行われ、迅速なビデオ圧縮を達成する。鉛直方向分割並列処理の実装は、ハードウエアや、ソフトウエア、又はそれらを組み合わせることで可能となる。
【００５１】
鉛直方向分割並列処理は、これらに限定しないが、ビデオ編集、ストレージ、ブロードバンド接続、通信などを含む多くのアプリケーションにおいて用いることが可能である。
【００５２】
本発明は、特定の実施例に関して開示している。その実施例には、本発明の構成及び動作の原理を理解することを促進するための詳細が記載されている。そのような特定の実施例への参照及びそれについての詳細は、ここに添付する特許請求の範囲を制限することを意図していない。他の様々な変更が、特許請求の範囲によって定義する発明の思想及び範囲から逸脱することなく図示のために選択された実施例において構成され得ることは当業者にとって明らかであろう。
【図面の簡単な説明】
【００５３】
【図１Ａ】ビデオ圧縮のための並列処理装置の実施例におけるブロック図を示す。
【図１Ｂ】ビデオ圧縮のための並列処理装置の実施例におけるブロック図を示す。
【図１Ｃ】ビデオ圧縮のための並列処理装置の実施例におけるブロック図を示す。
【図２】鉛直方向分割並列処理についてのプロセスのフローチャートを示す。
【図３】典型的な鉛直方向の画像の分割を示す。
【図４Ａ】シフト分割のグラフィック描写を示す。
【図４Ｂ】圧縮されている画像を示す。
【図５】２つのタイプの境界を有するスレッドのグラフィック描写を示す。
【図１Ａ】
2009544225.tif 000003
【図１Ｂ】
2009544225.tif 000004
【図１Ｃ】
2009544225.tif 000005
【図２】
2009544225.tif 000006
【図３】
2009544225.tif 000007
【図４Ａ】
2009544225.tif 000008
【図４Ｂ】
2009544225.tif 000009
【図５】
2009544225.tif 000010
【国際調査報告】
2009544225.tif 000011