(57)【特許請求の範囲】
【請求項１】
複数のブロック行を有する少なくとも１つのフレームを含む動画データを符号化する方法であって、
第２の符号化ステージを用いて前記複数のブロック行を符号化し、各行の符号化への前記入力が、隣接行に含まれる情報を含むことと、
前記複数の行を複数のパーティションに分割し、少なくとも２つの隣接行が、別個のパーティションに配置されることと、
第１の符号化ステージを用いて、前記複数のパーティションの各々をさらに個別に符号化することと、
前記符号化された複数のパーティションの少なくともいくつかの各パーティションカウントとパーティション位置を示すパーティションデータを生成すること、
を含むことを特徴とする方法。
【請求項２】
前記第２の符号化ステージは、イントラフレーム予測とインターフレーム予測の少なくとも１つを含み、前記第１の符号化ステージは、エントロピー符号化方式であることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の符号化ステージは、コンテキストベースの算術符号化であることを特徴とする請求項１に記載の方法。
【請求項４】
前記行を複数のパーティションに分割することは、さらに、
前記フレームのＮ番目の行すべてを複数のパーティションの異なる１つにグループ化することを含み、前記フレーム中の各隣接行が、別個のパーティションに置かれることを特徴とする請求項１〜３のいずれか１項に記載の方法。
【請求項５】
複数のパーティションに分割された少なくとも１つのフレームを含む符号化動画データストリームを復号する方法であって、
前記複数のパーティションの少なくとも１つそれぞれのパーティション位置を示すパーティションデータ情報を特定することと、
前記パーティションデータ情報に基づいて、少なくとも１つのブロック行を含む前記複数のパーティションのうち少なくとも第１の１つのパーティションを特定することと、
前記パーティションデータ情報に基づいて、少なくとも１つのブロック行を含む前記複数のパーティションの少なくとも第２の１つのパーティションを特定することと、
第１のプロセッサを用いて前記第１のパーティションを復号することと、および第２のプロセッサを用いて前記第２のパーティションを復号することを含み、
前記第一のパーティションと前記第二のパーティションが少なくとも第１の符号化ステージおよび第２の符号化ステージを使用してそれぞれ個別に圧縮され、前記第２のパーティションの復号が、指定したブロック数だけオフセットされ、これにより、前記第１のパーティションの前記復号からの出力の少なくとも一部が、前記第１の符号化ステージにより前記第２のパーティションを復号する際に入力として用いられることを特徴とする方法。
【請求項６】
前記第１の符号化ステージは、ロスレス符号化を含み、前記第２の符号化ステージは、イントラフレーム予測およびインターフレーム予測の少なくとも１つを含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記第１のパーティション中の１つのブロック行および前記第２のパーティション中の１つのブロック行は、前記動画データにより表される画像フレーム中の２つの隣接行から取得されることを特徴とする請求項５または６に記載の方法。
【請求項８】
前記ロスレス符号化は、エントロピー符号化ステージであることを特徴とする請求項５または６に記載の方法。
【請求項９】
前記第２のパーティションの復号からの出力のブロック行の少なくとも一部は、前記第１の符号化ステージおよび前記第２の符号化ステージの少なくとも１つに従って、前記第１のパーティション中の別のブロック行の少なくとも一部を復号する際に入力として用いられることを特徴とする請求項５または６に記載の方法。
【請求項１０】
前記第２のパーティション中の前記行は、前記動画情報のフレーム中で、前記第１のパーティション中の前記行に隣接していることを特徴とする請求項９に記載の方法。
【請求項１１】
前記第２の符号化ステージは、前記第２のパーティション中の１つのブロック行に含まれるコンテキスト情報を用いて、前記第１のパーティション中の１つのブロック行を符号化するように構成されていることを特徴とする請求項５または６に記載の方法。
【請求項１２】
前記第２の符号化ステージは、前記第１のパーティション中の１つのブロック行に含まれるコンテキスト情報を用いて、前記第２のパーティション中の１つのブロック行を符号化するように構成されていることを特徴とする請求項５または６に記載の方法。
【請求項１３】
前記第２の符号化ステージは、イントラフレーム予測およびインターフレーム予測の少なくとも１つを含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記第１のパーティション中の１つのブロック行および前記第２のパーティション中の１つのブロック行は、前記動画データにより表される画像フレーム中の２つの隣接行から取得され、
前記第２のパーティションを復号することは、さらに、
前記第１のプロセッサによりすでに復号されたブロックからの情報を用いて、前記第２のパーティション中の少なくとも１つのブロックを復号することを含み、
ここで、前記第２のパーティション中の少なくとも１つのブロックおよび前記第１のパーティション中のすでに復号されたブロックは、前記画像フレーム中で互いに隣接していることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記第２のパーティションの復号することは、
前記第２のパーティション中の少なくとも１つのブロックを復号するために、コンテキストデータとして、前記第１のプロセッサにより直近で復号されたブロックの前記情報の少なくとも一部を用いることをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１６】
前記第２のパーティションを復号するに使用した前記指定したオフセットは、前記第１のパーティション中の前記１つのブロック行を復号化するときに前記第２の符号化ステージで用いた前記コンテキストのサイズに基づいて決定されることを特徴とする請求項１２に記載の方法。
【請求項１７】
前記第１のパーティション中の１つのブロック行および前記第２のパーティション中の１つのブロック行は、前記動画データの２つの連続フレーム中の対応する行から取得され、
前記第２のパーティションを復号することは、
前記第１のプロセッサによりすでに復号されているブロックからの情報を用いて、前記第２のパーティション中の少なくとも１つのブロックを復号することをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１８】
パーティション数を示すレコードを、前記動画データ中から読み出すことをさらに含むことを特徴とする請求項５または６に記載の方法。
【請求項１９】
前記指定したマクロブロックオフセットのサイズを示すレコードを、前記動画データ中から読み出すことをさらに含むことを特徴とする請求項５または６に記載の方法。
【請求項２０】
前記第１の符号化ステージは、コンテキストベースの算術符号化であることを特徴とする請求項５または６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２００８年９月１１日に出願された米国仮特許出願第６１／０９６，２２３号の優先権を主張する、２００８年１２月５日に出願された米国特許出願第１２／３２９，２４８号の優先権を主張しており、ここで両出願の内容全体を本明細書に参照として組み入れる。
【０００２】
本発明は、一般に、並列処理を用いた動画復号に関する。
【背景技術】
【０００３】
今日の増加しつつある多数のアプリケーションでは、例えば、テレビ会議による遠隔ビジネス会議、高精細動画エンターティメント、動画広告、およびユーザー生成動画の共有を含む様々な目的のためにデジタル動画を利用している。技術の進歩につれて、人々は、高フレームレートでのスムーズな再生と共に、動画品質と高解像度動画により大きな期待を抱いている。
【０００４】
デジタル動画を符号化、記録、および送信するビデオコーダーを選択するとき、考慮すべき多くの要因があり得る。ある用途では、優れた動画品質が要求され、その他の用途では、例えば、帯域幅または記憶装置要件を含む様々な制約に適合する必要があるかもしれない。帯域幅消費を制限しながら、高品質の動画送信を可能にするために、現在および将来のバージョンを含む、ＶＰｘ（ニューヨーク市、クリフトンパーク、Ｏｎ２  Ｔｅｃｈｎｏｌｏｇｉｅｓ社により普及された），ＶＣＥＧ（(ITU-T Video Coding Experts Group)：ＩＴＵ−Ｔ動画符号化専門家グループによって普及された）Ｈ．２６４標準、およびＭＰＥＧ（(ISO/IEC Moving Picture Experts Group)：ＩＳＯ／ＩＥＣ動画像専門家グループによって普及された）標準などの、独自開発されたフォーマットを含む多数の動画圧縮方式が知られている。Ｈ．２６４は、ＭＰＥＧ−４  Ｐａｒｔ１０またはＭＰＥＧ−４ＡＶＣ（正式には、ＩＳＯ／ＩＥＣ１４４９６−１０）としても知られている。
【０００５】
動画データ圧縮と復元(recovered)を可能にする、多くの種類の動画符号化方式が存在する。Ｈ．２６４標準は、例えば、ＣＡＶＬＣ（コンテキストベースの適応可変長符号化）とＣＡＢＡＣ（コンテキストベースの適応バイナリ算術符号化）などの、エントロピー符号化方式を実装して、動画符号化のより効果的な方法を提供する。ＣＡＶＬＣを用いて符号化された動画データの場合、ある最新の復元(decompression)システムは、マルチコアプロセッサまたはマルチプロセッサの使用を取り入れて、全体的な動画復号速度を向上させている。
【発明の概要】
【０００６】
本発明の一実施形態は、少なくとも第１の符号化方式を用いて、圧縮されている複数のパーティション(partitions)を含む符号化動画データストリームを復号化する方法として開示されている。この方法は、少なくとも第２の符号化方式を用いて、符号化されている少なくとも１つのブロック行を含むパーティションの少なくとも第１の１つのパーティションを選択することを含む。第２のパーティションは、第２の符号化方式を用いて、符号化されたブロックの少なくとも１つの行を含むものから選択される。第１のパーティションは、第１のプロセッサにより復号され、第２のパーティションは、第２のプロセッサにより復号される。第２のパーティションを復号する際に、第１のパーティションの復号からの出力の少なくとも１部が入力として用いられるように、第２のパーティションの復号が、特定ブロック数だけオフセットされる。また、第１のパーティションを復号する際に、第２のパーティションの復号からの出力の少なくとも一部が入力として用いられるように、第１のパーティションの復号が、特定ブロック数だけオフセットされる。
【０００７】
本発明の別の実施形態は、複数のブロック行から成る少なくとも１つのフレーム画像を表す動画データストリームを復号する方法として開示されている。第１の符号化方式と第２の符号化方式を用いてデータを符号化する。この方法は、共用主メモリ空間を有する複数のプロセッサを設けることと、パーティションカウントとパーティション位置オフセットとを示す動画データ中のレコードを読み出すことを含む。パーティションカウントとパーティション位置オフセットとに基づいて、動画データが複数のパーティションに分割される。複数のパーティションから、第１のパーティションと第２のパーティションが特定される。複数のパーティションの第１のパーティションは、符号化コンテキスト情報(encoded context information)を含み、この復号化コンテキスト情報は、第１の記録方式により複数のパーティションのうち第２の１つのパーティションを復号するのに用いることができる。複数のパーティションのうち第１の１つのパーティションは、複数のプロセッサのうち第１のプロセッサを用いて、第２の符号化方式により復号化される。複数のパーティションのうち第２の１つのパーティションは、複数のプロセッサのうち第２のプロセッサを用いて、第１の復号化方式により復号化される。第２のパーティションの復号は、指定した数が符号化コンテキスト情報のブロック数と少なくとも同数であり、かつ第２のパーティションを復号する際に第１のパーティションの復号からの出力の少なくとも一部を入力として用いることができる場合、指定ブロック数だけオフセットされる。
【０００８】
本発明の別の実施形態は、複数のブロック行を有する少なくとも１つのフレームを含む動画データを符号化する方法として開示されている。この方法は、第２の符号化方式を用いて、行を符号化することを含む。各行の符号化への入力は、隣接行に含まれる情報を含む。複数の行は、少なくとも２つの隣接行が別のパーティションに配置されている場合、複数のパーティションに分割される。第１の符号化方式を用いて、複数のパーティションの各々が、さらに符号化される。複数の行が分割されている数またはパーティション、および符号化動画データ中のパーティション位置を示す値が、記録される。
【０００９】
本発明のこれらと他の実施形態を、以下にさらに詳しく説明する。
【図面の簡単な説明】
【００１０】
ここでは、添付図面を参照して説明を行い、複数の図面にわたり、同一参照符号は同一部位を示す。
【００１１】
【図１】本発明の一実施形態による圧縮動画ビットストリームのレイヤ階層を示す図である。
【００１２】
【図２】本発明の一実施形態による動画圧縮システムのブロック図である。
【００１３】
【図３】本発明の一実施形態による動画復元システムのブロック図である。
【００１４】
【図４】フレームと図２の動画圧縮システムから出力されたその対応するパーティションのブロック図である。
【００１５】
【図５】図２の動画圧縮システムから出力され、図３の動画復元システムに送られるビットストリームの符号化動画フレームの概略図である。
【００１６】
【図６】図６Ａ〜６Ｂは、図３の動画復元システムで用いられるマルチコアプロセッサコアのステージング(staging)と同期を示すタイミング図である。
【００１７】
【図７】図７Ａは、データ依存マクロブロックと図２，３の動画圧縮復元システムで用いられるオフセット計算を示す概略図である。
【００１８】
図７Ｂは、データ依存マクロブロックと、図２，３の動画圧縮復元システムで用いられる別のオフセット計算を示す概略図である。
【発明を実施するための形態】
【００１９】
図１について説明する。Ｈ．２６４などのビデオコーディング標準は、動画ストリーム１１に対し規定されたレイヤ階層１０を提供する。レイヤの最上位レベルは、動画シーケンス１３である。次のレベルで、動画シーケンス１３は、多数の隣接フレーム１５から構成されている。隣接フレーム１５の数は、単一のフレーム１７にさらに再分割できる。次のレベルで、フレーム１７は、一連の固定長マクロブロック２０から構成でき、例えば、フレーム１７中の表示画素１６×１６のブロックに対応する圧縮データを含んでいる。各マクロブロックは、対応する画素の輝度データと色差(chrominance)データを含んでいる。マクロブロック２０も、１６×８画素群または８×１６画素群などの、任意のその他の適切なサイズに再分割できる。マクロブロック２０は、ブロックにさらに細分される。例えば、ブロックは、対応する画素の輝度データと色差データをさらに記述できる、４×４画素群である。ブロックも、１６×１６、１６×８、８×１６、８×８、８×４、４×８、または４×４画素群などの、任意のその他の適切なサイズであってもよい。
【００２０】
ＶＰ８動画符号化フォーマットの実施形態の説明をしたが、本発明の実施形態の他のビデオコーディングフォーマットで実現できる。また、この実施形態は、どの特定のビデオコーディング標準にもフォーマットにも制限されない。
【００２１】
図２について説明する。一実施形態により、入力動画ストリーム１６を復号するため、エンコーダ１４は、前方向パス（実線で示す）の以下の処理、すなわち、イントラ／インター予測１８、変換１９、量子化２２、およびエントロピー符号化２４を実行して、符号化ビットストリーム２６を生成する。エンコーダ１４はまた、再構成パス（点線で示す）を含み、さらなるマクロブロックの符号化フレームを再構成する。エンコーダ１４は、再構成パスの以下の処理、すなわち、逆量子化２８、逆変換３０、再構成３２、およびループフィルタ処理３４を実行する。エンコーダ１４の他の構造的変更を用いて、ビットストリーム２６を符号化できる。
【００２２】
入力動画ストリーム１６が、符号化のため与えられたとき、入力動画ストリーム１６中の各フレーム１７をマクロブロック単位で処理できる。イントラ／インター予測段階１８で、イントラ予測モードまたはインター予測モードのいずれかを用いて、各マクロブロックを符号化できる。イントラ予測の場合、予測マクロブロックは、前に符号化および再構成されている現フレームのサンプルから形成できる。一方、インター予測の場合、予測マクロブロックは、符号化および再構成されている１つ以上の参照フレームから形成できる。
【００２３】
次に、図２についてさらに説明する。予測マクロブロックを現マクロブロックから引いて、残差マクロブロック（残差(residual)）を生成することができる。変換ステージ１９で、残差信号を係数に変換し、量子化ステージ２２で、係数を量子化して、一組の量子化変換係数を生成する。そして、量子化変換係数は、エントロピー符号化ステージ２４で、エントロピー符号化される。エントロピー符号化係数は、用いた予測モードタイプ、動きベクトル、および量子化値などの、マクロブロックを復号するのに必要な情報と一緒に、圧縮ビットストリーム２６に出力される。
【００２４】
図２の再構成パスは、エンコーダとデコーダが、マクロブロックを復号するのに必要な同じ参照フレームを用いることができるようにする。復号処理時に実行される処理と同様に、以下にさらに詳述する、再構成パスは、逆量子化ステージ２８で変換係数を逆量子化し、逆変換ステージ３０で係数を逆変換して、微分残差マクロブロック（微分残差）を生成する。再構成ステージ３２で、予測マクロブロックを微分残差に加えて、再構成マクロブロックを生成できる。ループフィルタ３４を再構成マクロブロックに適用して、歪を低減させることができる。
【００２５】
図３について説明する。一実施形態によれば、圧縮ビットストリーム２６を復号するため、デコーダ２１は、上述したエンコーダ１４の再構成パスと同様、以下の処理、すなわち、エントロピー復号化２５、逆量子化２７、逆変換２９、イントラ／インター予測２３、再構成３１、ループフィルタ３４、およびデブロッキングフィルタ処理３３を実行して、出力動画ストリーム３５を生成する。デコーダ２１の構造的変更を用いて、圧縮ビットストリーム２６を復号できる。
【００２６】
圧縮ビットストリーム２６を復号したとき、エントロピー復号化ステージ２５でデータ要素を復号して、一組の量子化係数を生成できる。この係数を、逆量子化ステージ２７で、逆量子化し、逆変換ステージ２９で、逆変換して、エンコーダ１４での再構成ステージで生成されたものと同一の微分残差を生成できる。予測モードタイプおよび／または圧縮ビットストリーム２６から復号された動きベクトル(motion vector)情報を用いて、デコーダ２１は、イントラ／インター予測ステージ２５でエンコーダ１４で生成されたのと同じ予測マクロブロックを生成する。再構成ステージ３３で、予測マクロブロックを微分残差に加えて、再構成マクロブロックを生成できる。また、ループフィルタ３４を再構成マクロブロックに適用して、ブロッキングアーチファクトを低減できる。さらに、デブロッキングフィルタ３３を動画画像フレームに適用して、ブロッキング歪をさらに低減して、その結果を出力動画ストリーム３５に出力できる。
【００２７】
ＣＡＢＡＣ（コンテキストベースの適応算術符号化）などの、コンテキストベースのエントロピー符号化方式は、マクロブロックに、参照近傍マクロブロックを要求する空間局所性を利用し、マクロブロックに、別のフレームからの参照マクロブロックを要求する時間局所性を利用する依存性に制限される。これらの依存性と適合性により、エンコーダ１４は、隣接マクロブロックからのコンテキストデータを用いて、ビットストリームを連続的に符号化する。エンコーダ１４で生成された上記の連続性依存(sequential dependency)は、デコーダ２１に圧縮ビットストリーム２６を連続的に復号させる。単一コアプロセッサを用いて復号するとき、上記の連続的復号は妥当であり得る。これに対して、復号時にマルチコアプロセッサまたはマルチプロセッサシステムを用いた場合、マルチコアプロセッサまたはマルチプロセッサシステムの計算能力は、効果的に用いられないだろう。
【００２８】
マルチコアプロセッサとマルチコアプロセッサ上のスレッド生成を参照して、本発明の実施形態を開示し、説明を続けるが、本発明の実施形態は、複数のマルチプロセッサ内蔵装置などの、その他の適切なコンピュータシステムにより実現することもできる。
【００２９】
一実施形態によれば、エンコーダ１４は、シリアルデータ(serialized data)の単一ストリームではなく、圧縮ビットストリームをパーティション３６に分割する。図４を参照しておよび単なる例示としてのみ、圧縮ビットストリームを、データパーティション１〜４として示される４つのパーティションに分割することができる。その他のパーティション数も利用可能である。各パーティションがデコーダ２１で復号されたとき、これらのパーティションのそれぞれは別個の復号処理の対象であるので、符号化効率を低下させることなく、圧縮データのシリアル依存性(serialized dependency)を解消することができる。
【００３０】
図４について説明する。分割されたマクロブロック行３８と一緒にフレーム１７が示されている。マクロブロック行３８は、個々のマクロブロック２０から構成されている。例の説明を続ける。全てのＮ番目のマクロブロック３８は、パーティション３６の１つにグループ化できる（ここで、Ｎは全パーティション数）。この例では、４つに分割されており、マクロブロック行０，４，８，１２などは、パーティション１にグループ化されている。マクロブロック行１，５，９，１３などは、パーティション２にグループ化されている。マクロブロック行２，６，１０，１４などは、パーティション３にグル−プ化されている。マクロブロック行３，７，１１，１５などは、パーティション４にグループ化されている。その結果、各パーティション３６は、連続(contiguous)マクロブロックを含むが、この例では、各パーティション３６は、連続マクロブロック行３８を含んでいない。換言すれば、第１のパーティションのブロックのマクロブロック行と第２のパーティションのマクロブロック行は、フレーム中の隣接する２つのマクロブロックから導出できる。その他のグループ分け方法も利用可能であり、マクロブロック行により領域を分離することも、またはＮ番目の全マクロブロック行をパーティションにグループ化することにも制限されていない。グループ分け方法に応じて、別の例で、連続マクロブロック行も同じパーティション３６にグループ化し得る。
【００３１】
別のグループ分け方法は、例えば、第１のフレームからのブロック行と、第２フレームの対応するブロック行とをグループ分けすることも含む。第１のフレームからのブロック行は、第１のパーティションに入れ（packed）、第２のフレームの対応するブロック行は、第２のパーティションに入れることができる。第１のプロセッサは、第１のフレーム行からのブロック行を復号し、第２のプロセッサは、第２のフレームからのブロック行を復号できる。このようにして、デコーダは、第１のプロセッサですでに復号されたブロックの情報を用いて、第２のパーティションの少なくとも１つのブロックを復号できる。
【００３２】
２つの別個の符号化方式を用いて、パーティション３６の各々を圧縮できる。第１の符号化方式は、例えば、ＣＡＢＡＣのようなコンテキストベースの算術符号化を用いたロスレス(lossless)符号化である。その他のロスレス符号化技術も用い得る。図１に戻って説明する。第１の符号化方式は、例えば、エントロピー符号化ステージ２４で実現し得る。
【００３３】
図１ついてなお説明する。第１の符号化方式の前に実行できる第２の符号化方式は、イントラ／インター予測ステージ１８、変換ステージ１９、および量子化２２の少なくとも１つにより実現し得る。第２の符号化方式は、他のパーティションに含まれる情報を用いて、パーティション３６の各々のブロックを符号化することができる。例えば、フレームが、２つのパーティションに分割された場合には、第２の符号化方式は、第１のパーティションのマクロブロック行に含まれる情報を用いて、第２のパーティションを符号化することができる。
【００３４】
図５について説明する。圧縮ビットストリーム２６からの符号化動画フレーム３９を示す。簡略化のために、本発明の実施形態に関するビットストリームの部分のみを示す。符号化動画フレーム３９は、多数のパーティション４０のビットと、各パーティション４２のオフセットのビットを含む動画フレームヘッダ４４を含んでいる。符号化動画フレーム３９も、Ｐ１〜ＰＮとして示されるデータパーティション３６からの符号化データを含む。ここで、Ｎは、上述したように、動画フレーム１６中の全パーティション数である。
【００３５】
いったん、エンコーダ１４が、フレーム１７をパーティション３６に分割すると、エンコーダ１４は、データを動画フレームヘッダ４４に書き込み、パーティション数４０と各パーティションのオフセット４２を示す。パーティション数４０と各パーティションのオフセット４２は、ビット、バイト、または特定情報をデコーダ２１にリレーすることができる任意の他のレコードによりフレーム１７中で表すことができる。圧縮データを復号するために、デコーダ２１は、動画フレームヘッダ４４からのデータパーティション数４０を読み込む。一例において、２ビットを用いて、パーティション数を表し得る。１つ以上のビットを用いて、データパーティション数（または、パーティションカウント）を示すことができる。その他の符号化方式を用いて、パーティション数をビットストリームに符号化することもできる。以下のリストは、どのようにして２ビットが、パーティション数を表すことができるのか示している。
【００３６】
【表１】
0005400888.tif 000002
【００３７】
【００３８】
【００３９】
【００４０】
【００４１】
データパーティション数が、１より大きい場合、デコーダ２１は、圧縮ビットストリーム２６内のデータパーティション３６の位置についての情報も必要である。各パーティションのオフセット４２（パーティション位置オフセットとも呼ばれる）により、復号時に、各パーティションに直接アクセスすることができる。
【００４２】
一例において、各パーティションのオフセット４２は、ビットストリームの開始に関連しており、符号化してビットストリーム２６に書き込むことができる。別の例において、各パーティションのオフセット４２の後に、第１のパーティションがビットストリーム２６で暗黙的に開始するので、第１のパーティションを除いて各データパーティションのオフセットを符号化して、ビットストリームに書き込むことができる。なお、上記のことは、単なる例示にすぎない。その他の適切なデータ構成、フラグ、またはワードおよびバイトなどのレコードを用いて、パーティションカウントとパーティション位置オフセット情報を送信することができる。
【００４３】
入力動画シーケンス１６を通して、データパーティション数は各フレーム１７について同じであるが、データパーティション数はまた、フレームごとに異なるかもしれない。そのため、各フレーム１７は、異なるパーティション数４０を持ち得る。パーティション数を示すのに用いられるビット数も、フレームごとに異なるかもしれない。従って、各フレーム１７は、可変のパーティション数に分割できるだろう。
【００４４】
いったん、正しいパーティション情報（すなわち、パーティション数４０とパーティションオフセット４２）を用いて、データがビットストリーム２６に分割されていると、デコーダ２１は、マルチコアプロセッサ上でデータパーティション３６を並列に復号できる。このようにして、各プロセッサコアは、データパーティション３６の１つの復号に責任を負う。マルチコアプロセッサは、通常、１つより多いプロセッシングコアと共用メモリ空間を備えているので、各コア間で出来るだけ均等にワークロードを割り当てることができる。各データパーティション３６を復号する各コア間でデータを共用する効率的な方法として、各コアは共用メモリ空間を用いることができる。
【００４５】
例えば、２つのパーティションを復号する２つのプロセッサがそれぞれある場合、第１のプロセッサが、第１のパーティションの復号を開始する。そして、第２のプロセッサは、第２のパーティションのマクロブロックを復号して、第１のパーティションのマクロブロックの復号を開始した第１のプロセッサから受け取った情報を用いることができる。第２のプロセッサと同時に、第１のプロセッサは、第１のパーティションのマクロブロックの復号を継続して、第２のプロセッサから受け取った情報を用いることができる。従って、第１のプロセッサと第２のプロセッサ両方は、それらの各パーティションのマクロブロックを正しく符号するのに必要な情報を持ち得る。
【００４６】
さらに、以下にさらに詳述するように、第１のパーティションに依存している第２のパーティションのマクロブロック行を復号するとき、第２のパーティションで現在処理されているマクロブロックは、指定したマクロブロック数だけオフセットされる。このようにして、第１のパーティションの復号出力の少なくとも一部を、第２のパーティションで現在処理されているマクロブロックの復号で、入力として用いることができる。同様に、第２のパーティションに依存している第１のマクロブロック行を復号するとき、第１のパーティションで現在処理されているマクロブロックは、指定したマクロブロック数だけオフセットされる。これにより、第２のパーティションの復号出力の少なくとも一部が、第１のパーティションで現在処理されているマクロブロックの復号への入力として用いることができる。
【００４７】
圧縮ビットストリームを復号するとき、デコーダ２１は、各符号化フレーム３９のパーティション数４０に基づくことができる、データを復号するのに必要なスレッド数を判断する。例えば、パーティション数４０が、符号化フレーム３９中に４つのパーティションがあることを示している場合、デコーダ２１は、４つのスレッドを生成し、各スレッドはデータパーティションの１つを復号する。図４について説明する。一例として、デコーダ２１は、４つのデータパーティションが生成されていると判断する。よって、デコーダ２１が、ルチコアプロセッサを用いている場合、４つの別個のスレッドを生成して、その特定フレームからのデータを復号できる。
【００４８】
上述したように、各フレーム中のマクロブロック２０は、符号化されるとき、近傍マクロブロックからのコンテキストデータを用いる。マクロブロック２０を復号するとき、デコーダは、マクロブロックを正しく復号するために、同じコンテキストデータを必要とする。デコーダ側において、現スレッドまたは他のスレッドにより、近傍マクロブロックがすでに復号された後にのみ、このコンテキストデータが利用可能である。正しく復号するためには、デコーダは、複数スレッドの復号を管理するステージング及び同期機構を備えている。
【００４９】
図６Ａと６Ｂを参照すると、タイミング図は、本発明の一実施形態によるマルチコアプロセッサのパーティション３６を復号する、ステージングと同期機構を示している。図６Ａ，６Ｂは、復号処理の様々な段階での、代表的部分画像フレーム４５を示す。開示目的のために、この例は簡略化され、パーティション数３６は、３つに制限されている。各パーティション３６は、３つのスレッド４６，４８，５０の１つに割り当てることができる。上述したように、各パーティション３６は、連続マクロブロックを含んでいる。
【００５０】
図６Ａ，６Ｂに示したように、一例として、３つのスレッド４６，４８，５０を示し、スレッド４６，４８，５０の各々は、互いに並列に復号することができる。この３つのスレッド４６，４８，５０の各々は、連続的に１つのパーティションを処理し、一方、３つの全パーティション４０は、互いに並列に処理される。
【００５１】
図６Ａと６Ｂの各々は、どのマクロブロックが各マクロブロック行中で現在復号され、どのマクロブロックが各マクロブロック行中ですでに復号され、どのマクロブロックが各マクロブロック行中でまだ復号されていないか示す矢印を示している。矢印が特定のマクロブロックを指している場合、そのマクロブロックは現在復号されている。矢印の左側のどのマクロブロック（もしあれば）も、その行中ですでに復号されている。一方、矢印の右側のどのマクロブロックも、まだ復号されていない。図６Ａ，６Ｂに示すマクロブロックが、全ての同様のサイズであれば、この開示の手法は、この点で制限されている。上述したように、他のブロックサイズも、本発明の実施形態と一緒に用いることができる。
【００５２】
図６Ａについて説明する。時間ｔ１で、スレッド４６は、第１のマクロブロック行５２の復号を開始する。スレッド４６は、矢印５８で示すように、第１のマクロブロック行５２中のマクロブロックｊを現在処理している。マクロブロック０〜ｊ−１は、第１のマクロブロック行５２中ですでに復号されている。第１のマクロブロック行５２中のマクロブロックｊ＋１〜最後は、第１のマクロブロック行５２中でまだ復号されていない。スレッド４８も、第２のマクロブロック行５４の復号を開示する。スレッド４６は、矢印６０で示すように、第２のマクロブロック行５４中でマクロブロック０を現在処理している。マクロブロック１〜第２のマクロブロック行５４の最後は、第２のマクロブロック行５４中ですでに復号されている。スレッド５０は、第３のマクロブロック行５６の復号を開始していない。マクロブロック行５６中のどのマクロブロックも復号されていないか、現在復号されている。
【００５３】
図６Ｂについて説明する。時間ｔ２で、スレッド４６は、第１のマクロブロック行５２の復号を継続している。スレッド４６は、矢印６２で示すように、第１のマクロブロック行５２中のマクロブロックｊ＊２を現在処理している。マクロブロック０〜ｊ＊２−１は、第１のマクロブロック行５２中ですでに復号されている。マクロブロックｊ＊２＋１〜第１のマクロブロック行５２の最後は、第１のマクロブロック行５２中でまだ復号されていない。スレッド４８も、第２のマクロブロック行５４の復号を継続している。スレッド４８は、矢印６４で示すように、第２のマクロブロック行５４中でマクロブロックｊを現在処理している。マクロブロック０〜ｊ−１は、第２のマクロブロック行５４中ですでに復号されている。マクロブロックｊ＋１〜第２のマクロブロック行５４の最後は、第２のマクロブロック行５４でまだ復号されていない。スレッド５０も、第３のマクロブロック行５６の復号をすでに開始した。スレッド５０は、矢印６６で示すように、第３のマクロブロック行５６中でマクロブロック０を現在処理している。マクロブロック１〜第３のマクロブロック行５６の最後は、第３のマクロブロック行５６中でまだ処理されていない。
【００５４】
上部の隣接マクロブロック行が完全に復号されるまで、マクロブロック行の処理を開始することができないので、以前の復号機構は、マルチコアプロセッサを効果的に用いて圧縮ビットストリームを復号することができなかった。以前の復号機構の難点は、復号フェーズに起因するものである。従来の符号化技術を用いてデータを復号したとき、マクロブロック内の空間依存性は、マクロブロックの特定処理順序を示している。またさらに、いったん、フレームが復号されると、マクロブロック行が完全に復号されるまで、特定マクロブロック行を識別できない。そのため、ＣＡＢＡＣなどの、エントロピー符号化方式を搭載したビデオコーディング方式は、デコーダに渡されるシリアル依存性(serialized dependency)を生成する。これらのシリアル依存性の結果、復号処理が当該マクロブロック行を完了するまで、各コンピュータ処理システム（例えば、スレッド４６，４８，５０）への情報が利用可能でなかったので、復号方式の効率は制限されていた。
【００５５】
図５Ａ，６Ｂに示す並列処理ステージングと同期機構により、デコーダ２１は、画像フレームの復号処理を効率的に速めることを可能にする。各パーティション３６の別々の復号処理を行うことができるため、図６Ａ，６Ｂに関して上述したステージングと同期方式の実施形態により、パーティション間の相互依存性を管理できる。このステージングと同期復号方式を用いて、割り当てられたパーティションを復号する各スレッド４６，４８，５０は、近傍マクロブロックからのコンテキストデータを利用できる。それゆえ、先行マクロブロック行が完全に復号される前に、デコーダ２１は、現マクロブロックを復号するのに必要なコンテキストデータを含むマクロブロックを復号できる。
【００５６】
図６Ａ，６Ｂについて説明する。符号化処理時に、先行マクロブロック行中で用いられるコンテキストデータのサイズ（例えば、多数のマクロブロックで測定される）を調べることで、オフセットｊを求めることができる。オフセットｊは、ビット、バイト、またはコンテキストデータサイズをデコーダ２１にリレーすることができる任意の他のレコードにより、フレーム１７中で表すことができる。図７Ａ，７Ｂは、オフセットｊのサイズの２つの代わりのものを示している。
【００５７】
図７Ａについて説明する。一実施形態において、現マクロブロック６８が現在処理されている。現マクロブロック６８は、符号化時に、左、上左、上、および上右マクロブロックからのコンテキストデータを用いる。換言すれば、現マクロブロック６８は、マクロブロック：（ｒ＋１，ｃ−１），（ｒ，ｃ−１），（ｒ，ｃ），および（ｒ，ｃ＋１）からの情報を用いる。現マクロブロック６８を正しく復号するには、現マクロブロック６８の前に、マクロブロック（ｒ＋１，ｃ−１），（ｒ，ｃ−１），（ｒ，ｃ），および（ｒ，ｃ−１）を復号しなければならない。上述したように、マクロブロックの復号は連続的に実行することができるので、マクロブロック（ｒ＋１，ｃ−１）は、現マクロブロック６８の前に復号できる。また、符号化処理が最右マクロブロックとして（ｒ，ｃ＋１）を用いるので、先行マクロブロック行（つまり、マクロブロック行ｒ）において、デコーダは、復号時に、最右マクロブロックとして（ｒ，ｃ＋１）を用いることができる。従って、現マクロブロックの符号化時に、用いた先行行の最右マクロブロックの行と列位置を、処理されている現マクロブロックの行と列位置から引いて、オフセットｊを求めることができる。図７Ａにおいて、マクロブロック（ｒ，ｃ＋１）の行と列位置を、現マクロブロック６８（つまり、（ｒ＋１，ｃ）またはｃ＋１−ｃの行と列位置から引いて、オフセットｊを求め、１のオフセットが生じる。
【００５８】
図７Ｂについて説明する。一実施形態において、現マクロブロック６８’が、現在処理されている。現マクロブロック６８’は、マクロブロック：（ｒ＋１，ｃ−１），（ｒ，ｃ−１），（ｒ，ｃ），（ｒ，ｃ＋１），（ｒ，ｃ＋２），および（ｒ，ｃ＋３）からの情報を用いている。現マクロブロック６８’を正しく復号するために、現マクロブロック６８’の前に、マクロブロック（ｒ＋１，ｃ−１），（ｒ，ｃ−１），（ｒ，ｃ），（ｒ，ｃ＋１），（ｒ，ｃ＋２），および（ｒ，ｃ＋３）を復号しなければならない。上述したように、マクロブロックの復号を連続的に(in a serial fashion)実行できるので、現マクロブロック６８’の前に、マクロブロック（ｒ＋１，ｃ−１）を復号できる。また、最右マクロブロックとして、復号処理は（ｒ，ｃ＋３）を用いるので、先行するマクロブロック行（つまり、マクロブロック行ｒ）中で、復号時に、最右マクロブロックとして、デコーダは、（ｒ，ｃ＋３）を用いることができる。上述したように、現マクロブロックの符号化時に用いられた先行行の最右マクロブロックの行と列位置を、処理されている現マクロブロックの行と列位置から引いて、オフセットｊを求めることができる。図７Ａにおいて、マクロブロック（ｒ，ｃ＋３）の行と列位置を、現マクロブロック６８’（つまり、（ｒ＋１，ｃ））またはｃ＋３−ｃから引いて、オフセットｊを計算すると、オフセットは３になるであろう。
【００５９】
好適な実施形態において、コーディックの特殊な実施形態により、オフセットを求める
ことができる。別の実施形態において、ビットストリーム中で、オフセットを指定できる。
【００６０】
本発明の理解を容易にするため、上記の実施形態を説明したが、かつ本発明を限定するものではない。それどころか、本発明は、開示した実施形態に限定されず、それどころか、添付クレームの精神と範囲内に含まれる様々な変更例と等価な構成を網羅することを意図することを理解すべきである。ここで範囲とは、上記の全ての変更例と法により許されている等価な構成を包合するために、最も広い解釈に一致する。
【図１】
0005400888.tif 000003
【図２】
0005400888.tif 000004
【図３】
0005400888.tif 000005
【図４】
0005400888.tif 000006
【図５】
0005400888.tif 000007
【図６】
0005400888.tif 000008
【図７】
0005400888.tif 000009