(57)【要約】【課題】データ処理システムおよびデータ処理方法を提供する。【解決手段】本発明のデータ処理システムは独立的に動作する多数個のデータ処理単位と、これらがパイプライン動作をするようにし、またそのパイプライン動作をタスク別に区別して制御するタスクスケジュラーと、前記データ処理単位の動作のためのデータを貯蔵するメモリプールとを含む。前記データ処理単位は前記タスクスケジュラーから受けたタスク開始信号によってタスクを実行する。前記タスクスケジュラーが指示したタスク処理が終了すれば、前記データ処理単位は前記タスクスケジュラーにタスク終了信号を伝達して前記タスクスケジュラーから次のタスク実行を指示する制御信号を待つ待機状態になる。前記データ処理単位からタスク終了信号を受けた前記タスクスケジュラーはタスクを転換する。【選択図】図２
2005198289.tif 000002
【特許請求の範囲】
【請求項１】
複数個のデータ処理単位と、
前記複数個のデータ処理単位の各々の複数個の動作をタスク別に区別してこれらがパイプライン動作をするように制御するタスクスケジュラーを含むことを特徴とするデータ処理システム。
【請求項２】
前記タスクスケジュラーはタスク開始信号を前記データ処理単位に伝達して固有のタスクを実行するようにし、前記データ処理単位から固有のタスク終了信号が伝達されてタスクを転換し、
前記データ処理単位は前記タスクスケジュラーから受けた前記タスク開始信号によってタスクを実行し、タスク処理が終了すれば、前記タスクスケジュラーに前記タスク終了信号を伝達してタスク処理が終了したことを知らせることを特徴とする請求項１に記載のデータ処理システム。
【請求項３】
前記データ処理システムの機能を設定するための制御レジスタと、
前記データ処理単位の動作に必要なデータを貯蔵する内部メモリプールとをさらに含み、
前記複数個のデータ処理単位はＭＰＥＧ動画像符号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器を含むことを特徴とする請求項２に記載のデータ処理システム。
【請求項４】
前記内部メモリプールは、
前記動き補償器によって補償された輝度成分および色差成分を貯蔵する動き補償された輝度および色差データメモリと、
フレームメモリから現在入力されたフレームの輝度および色差成分を読み出して貯蔵する基準マクロブロック輝度および色差データメモリと、
前記フレームメモリから前記現在入力されたフレーム以前の再構成されたフレームから輝度成分を読み出して貯蔵する探索領域データメモリとを含み、
前記メモリプールはタスクスケジュラーから受けたフレームメモリ制御信号に応答して外部フレームメモリから必要なデータを前記データメモリに貯蔵するタスクを実行し、
前記メモリプールは前記データ処理単位が提供するデータメモリ制御信号に応答して前記データメモリに貯蔵されたデータを前記データ処理単位に提供することを特徴とする請求項３に記載のデータ処理システム。
【請求項５】
前記動き推定器と動き補償器は前記探索領域データメモリを共有し、
前記離散余弦変換器と逆離散余弦変換器は前記動き補償されたデータメモリを共有し、
前記動き推定器と離散余弦変換器は前記基準マクロブロックデータメモリを共有することを特徴とする請求項４に記載のデータ処理システム。
【請求項６】
前記動き推定器は動き推定タスクおよび動きベクタ伝達タスクを実行し、
前記動き補償器は輝度成分に対する動き補償タスクおよび色差成分に対する動き補償タスクを実行し、
前記離散余弦変換量子化器は輝度成分に対するＤＣＴＱタスク、色差成分に対するＤＣＴＱタスク、および再構成フレーム書き込みタスクを実行し、
可変長符号器／複号器によって、またはソフトウェア的に輝度成分に対する可変長符号化／複号化タスクおよび色差成分に対する可変長符号化／複号化タスクが実行されることを特徴とする請求項４に記載のデータ処理システム。
【請求項７】
前記データ処理単位は前記タスク開始信号および前記タスク終了信号の間でだけシステムクロックが供給されることを特徴とする請求項２または請求項４に記載のデータ処理システム。
【請求項８】
前記制御レジスタによって前記データ処理システムが符号化イントラモードで動作する場合、前記動き推定器および動き補償器にはシステムクロックを供給せず、複号化インタモードで動作する場合、動き推定器にシステムクロックを供給せず、複号化イントラモードで動作する場合、前記メモリプール、動き推定器および動き補償器にシステムクロックを供給しないことを特徴とする請求項４に記載のデータ処理システム。
【請求項９】
ＭＰＥＧ動画像符号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器を含むデータ処理単位と、
前記データ処理単位がデータを共有するように共通データを貯蔵するための内部メモリプールと、
前記複数個のデータ処理単位の各々の複数個の動作をタスク別に区別し、これらがパイプライン動作をするように制御するタスクスケジュラーと、
前記データ処理システムの機能を設定する制御レジスタとを含むことを特徴とするビデオコーデック。
【請求項１０】
前記内部メモリプールは、
前記動き補償器によって補償された輝度成分および色差成分を貯蔵する動き補償された輝度データメモリおよび動き補償された色差データメモリと、
フレームメモリから現在入力されたフレームの輝度および色差成分を読み出して貯蔵する基準マクロブロック輝度データメモリおよび基準マクロブロック色差データメモリと、
前記フレームメモリから前記現在入力されたフレームの以前の再構成されたフレームから輝度成分を読み出して貯蔵する探索領域データメモリ含む内部データメモリと、
前記各データ処理単位から内部データメモリ制御信号を受けて必要なデータを各データ処理単位に提供する内部データメモリ制御回路と、
前記フレームメモリをアクセスして前記基準マクロブロックデータメモリと前記探索領域データメモリにデータを貯蔵することを制御するフレームメモリ制御回路と、
前記タスクスケジュラーから実行しなければならないタスク開始信号を受けて前記フレームメモリに伝達してタスクを実行するようにし、タスク実行が完了すれば、タスク終了信号を前記タスクスケジュラーに伝達するタスク制御回路とを含むことを特徴とする請求項９に記載のビデオコーデック。
【請求項１１】
前記タスクスケジュラーはタスク開始信号を発生させて前記データ処理単位がタスクを実行するように指示し、
前記データ処理単位および前記メモリプールは前記タスクスケジュラーから受けた前記タスク開始信号によってタスクを実行する動作状態になり、指示を受けたタスク処理が終了すれば、前記タスクスケジュラーにタスク終了信号を伝達して、次のタスク指示信号を待つ待機状態になることを特徴とする請求項９または請求項１０に記載のビデオコーデック。
【請求項１２】
前記動き推定器は、
前記探索領域データメモリと前記基準マクロブロック輝度メモリから輝度マクロブロックを読み出して動き推定を実行して動きベクタを計算する動き推定エンジンと、
前記動きベクタを前記動き補償器と前記可変長符号器に伝達する動きベクタ伝達器と、
前記タスクスケジュラーから前記タスク開始信号を受け、前記タスク終了信号を前記タスクスケジュラーに伝達する動き推定器タスク制御回路と、
前記探索領域データメモリと前記基準マクロブロック輝度メモリから輝度成分データを読み出すための内部データメモリ制御信号を発生する動き推定器内部データメモリ読み出し制御回路とを含むことを特徴とする請求項１０に記載のビデオコーデック。
【請求項１３】
前記動き補償器は、
符号化の時には前記動き推定器から、複号化の時には前記可変長複号器から前記動きベクタを受けて解釈する動きベクタ解釈回路と、
前記解釈された動きベクタを基盤にして輝度成分および色差成分に対して動き補償を実行する動き補償エンジンと、
前記タスクスケジュラーから前記タスク開始信号を受け、前記タスク終了信号を前記タスクスケジュラーに伝達する動き補償器タスク制御回路と、
前記探索領域データメモリからデータを読み出すための内部データメモリ制御信号および前記動き補償器によって動き補償された輝度成分データと動き補償された色差成分データを前記動き補償されたデータメモリに書き込むための内部データメモリ制御信号を発生させる動き補償器内部データメモリ読み出し／書き込み制御回路と、
前記フレームメモリから色差成分の動き補償のために色差成分データを読み出すためのフレームメモリ読み出し制御信号を発生させるためのフレームメモリ読み出し制御回路とを含むことを特徴とする請求項９または請求項１２に記載のビデオコーデック。
【請求項１４】
前記離散余弦変換量子化器(ＤＣＴＱ)は、
前記タスクスケジュラーからタスク開始信号を受け、タスクの処理終了を前記タスクスケジュラーに知らせる前記タスク終了信号を伝達するＤＣＴＱタスク制御回路と、
基準マクロブロックデータメモリから輝度および色差成分データおよび動き補償されたデータメモリから動き補償された輝度および色差データを読み出すための内部データメモリ制御信号を発生させるＤＣＴＱ内部データメモリ読み出し制御回路と、
再構成されたフレームを前記フレームメモリに貯蔵するためのＤＣＴＱフレームメモリ書き込み制御回路とを含むことを特徴とする請求項９または請求項１２に記載のビデオコーデック。
【請求項１５】
前記離散余弦変換量子化器(ＤＣＴＱ)は、
前記タスクスケジュラーから前記タスク開始信号を受け、タスクの処理終了を知らせる前記タスク終了信号を前記タスクスケジュラーに伝達するＤＣＴＱタスク制御回路と、
基準マクロブロック色差データメモリから色差成分データおよび動き補償されたデータメモリから動き補償された輝度および色差データを読み出すための内部データメモリ制御信号を発生させるＤＣＴＱ内部データメモリ読み出し制御回路と、
再構成されたフレームを前記フレームメモリに貯蔵するためのＤＣＴＱフレームメモリ書き込み制御回路とを含むことを特徴とする請求項１３に記載のビデオコーデック。
【請求項１６】
前記データ処理単位は前記タスク開始信号および前記タスク終了信号の間でだけシステムクロックが供給されることを特徴とする請求項９または請求項１０に記載のビデオコーデック。
【請求項１７】
データ処理単位は可変長符号器／複号器をさらに含むことを特徴とする請求項９に記載のビデオコーデック。
【請求項１８】
前記制御レジスタによって前記データ処理システムが符号化インタモードで動作する場合、前記動き推定器および動き補償器にはシステムクロックを供給せず、複号化インタモードで動作する場合、動き推定器にシステムクロックを供給せず、複号化イントラモードで動作する場合、前記メモリプール、動き推定器および動き補償器にシステムクロックを供給しないことを特徴とする請求項９に記載のビデオコーデック。
【請求項１９】
前記動き推定器は動き推定タスクおよび動きベクタ伝達タスクを実行し、
前記動き補償器は輝度成分に対する動き補償タスクおよび色差成分に対する動き補償タスクを実行し、
前記離散余弦変換量子化器は輝度成分に対するＤＣＴＱタスク、色差成分に対するＤＣＴＱタスク、および再構成フレーム書き込みタスクを実行し、
前記メモリプールのフレームメモリ制御回路はフレームメモリから前記メモリプールのデータメモリへの以前フレームの輝度成分書き込みタスク、現在フレームの輝度成分書き込みタスクおよび色差成分書き込みタスクを制御し、
可変長符号器／複号器によって、またはソフトウェア的に輝度成分に対する可変長符号化／複号化タスクおよび色差成分に対する可変長符号化／複号化タスクが実行されることを特徴とする請求項１３に記載のビデオコーデック。
【請求項２０】
ＭＰＥＧ動画像符号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器、および可変長符号器／可変長複号器を含むデータ処理単位と、
前記データ処理単位がデータを共有するように共通データを貯蔵するための内部メモリプールを含み、
前記内部メモリプールは前記動き補償器によって補償された輝度成分および色差成分を貯蔵する動き補償された輝度データメモリおよび動き補償された色差データメモリと、
フレームメモリから現在入力されたフレームの輝度および色差成分を読み出して貯蔵する基準マクロブロック輝度データメモリおよび基準マクロブロック色差データメモリと、
前記フレームメモリから前記現在フレームの以前の再構成されたフレームから輝度成分を読み出して貯蔵する探索領域データメモリとを含み、
前記動き推定器と前記動き補償器とは前記探索領域データメモリを共有し、前記離散余弦変換器および逆離散余弦変換器は前記動き補償されたデータメモリを共有し、前記動き推定器および前記離散余弦変換器は前記基準マクロブロックデータメモリを共有することを特徴とするビデオコーデック。
【請求項２１】
前記複数個のデータ処理単位の各々の複数個の動作をタスク別に区別し、これらがパイプライン動作をするように制御するタスクスケジュラーをさらに含み、
前記タスクスケジュラーはタスク開始信号を前記データ処理単位に伝達してタスクを実行するようにし、前記データ処理単位からタスク終了信号が伝達されてタスクを転換し、
前記データ処理単位は前記タスクスケジュラーから受けた前記タスク開始信号によってタスクを実行し、タスク処理が終了すれば、前記タスクスケジュラーに前記タスク終了信号を伝達してタスク処理が終了したことを知らせることを特徴とする請求項２０に記載のビデオコーデック。
【請求項２２】
ＭＰＥＧ動画像符号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器、および可変長符号器／可変長複号器を含むデータ処理単位を含むビデオコーデックのデータ処理方法において、
各データ処理単位はタスクスケジュラーから受けたタスク開始信号によって指示されたタスクを実行し、タスク実行が終了すれば、タスク終了を知らせるタスク終了信号を発生して次のタスク開始信号を待つ待機状態になり、
前記タスクスケジュラーはタスク完了信号を受けてタスクを転換することを特徴とするデータ処理方法。
【請求項２３】
前記タスク開始信号および前記タスク終了信号発生の間にだけ前記データ処理単位にシステムクロックが供給されることを特徴とする請求項２２に記載のデータ処理方法。
【請求項２４】
前記制御レジスタによって前記データ処理システムが符号化インタモードで動作する場合、前記動き推定器および動き補償器にはシステムクロックを供給せず、複号化インタモードで動作する場合、動き推定器にシステムクロックを供給せず、複号化イントラモードで動作する場合、前記メモリプール、動き推定器および動き補償器にシステムクロックを供給しないことを特徴とする請求項２２に記載のデータ処理方法。
【請求項２５】
メモリ帯域幅要求事項を最小化するためにビデオコーデックに使用されるメモリプールにおいて、
少なくとも一つの動き補償メモリと、
少なくとも一つの基準マクロブロックメモリと、
少なくとも一つの探索領域データメモリとを含み、
前記メモリプールはフレーム制御信号に応答して外部フレームメモリのデータユニットを貯蔵し、データメモリ制御信号に応答して貯蔵したデータをデータ処理ユニットに提供することを特徴とするメモリプール。
【請求項２６】
前記探索領域データメモリはビデオコーデックで動き推定および動き補償のために再構成された以前フレームから提供された輝度データを貯蔵し、探索領域が[−１６、１６]である場合、前記領域データメモリは４８＊（１６＊１０）ピクセルを貯蔵することができる大きさを有することを特徴とする請求項２５に記載のメモリプール。
【請求項２７】
前記基準マクロブロックメモリは輝度データを貯蔵するための８個の１６＊１６ピクセルの大きさのマクロブロックと色差成分を貯蔵するための１６個の８＊８ピクセルの大きさのメモリブロックを含むことを特徴とする請求項２５に記載のメモリプール。
【請求項２８】
前記動き補償メモリは動き補償された輝度データを貯蔵するための二つの１６＊１６ピクセルの大きさのメモリブロックと動き補償された色差データを貯蔵するための４個の８＊８ピクセルの大きさのメモリブロックを含むことを特徴とする請求項２５に記載のメモリプール。
【請求項２９】
ビデオコーデックのための動き推定器において、
探索領域データメモリと基準マクロブロック輝度メモリから輝度マクロブロックを読み出して動き推定を実行して動きベクタを計算する動き推定エンジンと、
前記動きベクタを前記動き補償器と前記可変長符号器に伝達する動きベクタ伝達器と、
タスクスケジュラーからタスク開始信号を受け、前記タスク終了信号を前記タスクスケジュラーに伝達する動き推定器タスク制御回路と、
前記探索領域データメモリと前記基準マクロブロック輝度メモリから輝度成分データを読み出すための内部データメモリ制御信号を発生する動き推定器内部データメモリ読み出し制御回路とを含むことを特徴とする動き推定器。
【請求項３０】
ビデオコーデックの動き補償器において、
符号化の時には動き推定器から、複号化の時には可変長複号器から動きベクタを受けて解釈する動きベクタ解釈回路と、
前記解釈された動きベクタを基盤にして輝度成分および色差成分に対して動き補償を実行する動き補償エンジンと、
タスクスケジュラーから前記タスク開始信号を受けてタスク終了信号を前記タスクスケジュラーに伝達する動き補償器タスク制御回路と、
探索領域データメモリからデータを読み出すための内部データメモリ制御信号および前記動き補償エンジンによって動き補償された輝度成分データと動き補償された色差成分データを動き補償されたデータメモリに書き込むための内部データメモリ制御信号を発生させる動き補償器内部データメモリ読み出し／書き込み制御回路と、
フレームメモリから色差成分の動き補償のために色差成分データを読み出すためのフレームメモリ読み出し制御信号を発生させるためのフレームメモリ読み出し制御回路とを含むことを特徴とする動き補償器。
【請求項３１】
ビデオコーデックの離散余弦変換量子化器において、
タスクスケジュラーから前記タスク開始信号を受けて、タスクの処理終了を知らせるタスク終了信号を前記タスクスケジュラーに伝達するＤＣＴＱタスク制御回路と、
基準マクロブロック色差データメモリから色差成分データおよび動き補償されたデータメモリから動き補償された輝度および色差データを読み出すための内部データメモリ制御信号を発生させるＤＣＴＱ内部データメモリ読み出し制御回路と、
再構成されたフレームをフレームメモリに貯蔵するためのＤＣＴＱフレームメモリ書き込み制御回路とを含むことを特徴とする離散余弦変換量子化器。
【請求項３２】
動き推定器、動き補償器、および離散余弦変換量子化器を含むコーディングのための多数のデータ処理ユニットと、
インターフェースネットワークと、
前記データ処理ユニットによって共有された共通のデータを貯蔵する少なくとも一つのメモリを含むメモリプールとを含み、
少なくとも二つのデータ処理ユニットは前記インターフェースネットワークを通じて少なくとも一つのメモリを共有することを特徴とするデータ処理システム。
【請求項３３】
前記メモリプールは、
少なくとも一つの動き補償メモリと、
少なくとも一つの基準マクロブロックメモリと、
少なくとも一つの探索領域データメモリとを含むことを特徴とする請求項３２に記載のデータ処理システム。
【請求項３４】
離散余弦変換量子化器、動き補償器、動き推定器を含む多数のデータ処理ユニットと、
動き補償されたメモリ、探索領域データメモリ、基準マクロブロックメモリを含むメモリプールと、
タスクスケジュラーおよび制御レジスタを含むマイクロコントローラとを含み、
前記マイクロコントローラは多数の動作と連関したタスクを通じてパイプライン動作をするように前記多数のデータ処理ユニットを制御し、
前記メモリプールは前記多数のデータ処理単位によって使用されるデータを貯蔵し、
前記多数のデータ処理単位は前記メモリプール内のメモリのうちの少なくとも一つを共有することを特徴とするビデオコーデック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムおよびデータ処理方法に係り、さらに詳細にはＭＰＥＧ動画像符号化のためのビデオコーデックおよびビデオコーデックのデータ処理方法に関する。
【背景技術】
【０００２】
ＭＰＥＧ(Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅｓ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ)のビデオ動画像圧縮技術は動画像を圧縮、復元する技術に関して定義している。ＭＰＥＧビデオ動画像圧縮技術は動画像が有する時間的に重複される時間的余剰性(ｔｅｍｐｏｒａｌ ｒｅｄｕｎｄａｎｃｙ)、空間的に重複される空間的余剰性(ｓｐａｔｉａｌ ｒｅｄｕｎｄａｎｃｙ)を利用して圧縮を行なう。空間的余剰性は一フレーム内で示し、時間的余剰性は連続するフレームの間で示す。
【０００３】
典型的なビデオコーデック(ｖｉｄｅｏ ｃｏｄｅｃ)は入力画像データを貯蔵するためのフレームメモリ、 離散余弦変換器(ＤＣＴ：Ｄｉｓｃｒｅｔｅ Ｃｏｓｉｎｅ Ｔｒａｎｓｆｏｒｍｅｒ)／逆離散余弦変換器(ＩＤＣＴ：Ｉｎｖｅｒｓｅ ＤＣＴ)、量子化器／逆量子化器、 可変長符号器(ＶＬＣ：Ｖａｒｉａｂｌｅ Ｌｅｎｇｔｈ Ｃｏｄｅｒ)、動き推定器、動き補償器(Ｍｏｔｉｏｎ Ｃｏｍｐｅｎｓａｔｏｒ)を含む。図１は、このような典型的なビデオコーデックを概略的に示すブロック図である。図１で、参照番号１１、１３、１５はフレームメモリを、参照番号１７は離散余弦変換器を、参照番号１９は量子化器を、参照番号２１は逆量子化器を、参照番号２３は逆離散余弦変換器を、参照番号２５は動き補償器を、参照番号２７は動き推定器を、参照番号２７は可変長符号器をそれぞれ示す。
【０００４】
フレームメモリ１１は現在処理しようとする入力画像データ(現在フレーム)を貯蔵し、フレームメモリ１３は現在フレームの以前の再構成された画像データ(再構成フレーム、以前フレーム)を貯蔵し、フレームメモリ１５は動きが補償された画像データ(動き補償されたフレーム)を貯蔵する。
【０００５】
まず、インタモード(Ｉｎｔｅｒ Ｍｏｄｅ)について説明する。動き補償は１６＊１６ピクセルの大きさのブロック(マクロブロック)単位で実行される。動き補償のために動き推定器２７はフレームメモリ１３に貯蔵された再構成されたフレームでフレームメモリ１１から読み出した現在マクロブロックと最も類似のブロックをさがして動きベクタ(Ｍｏｔｉｏｎ Ｖｅｃｔｏｒ)を推定する。
【０００６】
動き補償器２５は動き推定器２７で提供される動きベクタおよびフレームメモリ１３から提供される以前フレームを利用して動きが補償されたフレームを求める。フレームメモリ１５から提供される動き補償されたフレームおよびフレームメモリ１１から提供される現在フレームの間の画像差分データが８＊８ピクセルブロック単位で離散余弦変換器１７によって処理された後、量子化器１９を経て量子化される。量子化された画像差分データは逆離散余弦変換器２１および逆量子化器２３によって復元されて動きが復元された画像データとともに再構成フレームを生成するのに使用される。
【０００７】
可変長符号器２９は量子化された画像差分データおよび動きベクタに対してエントロピー符号化を実行する。
【０００８】
一方、イントラモード(Ｉｎｔｒａ Ｍｏｄｅ)の場合には、動き補償を実行しない。すなわち、フレームメモリ１１から提供された現在フレームに対して離散余弦変換、量子化を経て可変長符号化を実行する。
【０００９】
上述の典型的なビデオコーデックは多数個のデータ処理単位すなわち、離散余弦変換器、逆離散余弦変換器、量子化器、逆量子化器、可変長符号器、動き推定器、動き補償器を含んでいる。このような典型的なビデオコーデックは共通バス構造を取っていて、各データ処理単位は個別的に動作する。したがって、共通的に使用されることができるデータを共有し難く、外部メモリ帯域幅の要求事項が増加する。また、各データ処理単位の動作は処理しなければならないデータによってバス上の制約を受けるようになる。
【００１０】
特に最近、携帯電話機、デジカメ、カムコーダのような携帯情報通信器機で扱う動画像データの画素数が急増する趨勢であり、これに比例して高い演算能力が要求される一方、同等の消費電力を要求する現実を勘案する時、新しいビデオコーデックが切実に要求される。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の課題は高性能、低電力のデータ処理システム、データ処理方法およびビデオコーデックを提供することである。
【課題を解決するための手段】
【００１２】
前記発明の課題を達成するために本発明の一実施形態によるデータ処理システムは、固有のデータを処理する複数個のデータ処理単位と、前記複数個のデータ処理単位の各々の複数個の動作をタスク別に区別し、これらがパイプライン動作をするように制御するタスクスケジュラーとを含む。
【００１３】
前記タスクスケジュラーは前記複数個のデータ処理単位のパイプライン動作をタスク別に区別して制御するタスク開始信号を前記データ処理単位に伝達してタスクを実行するようにし、前記データ処理単位からタスク終了信号が伝達されてタスクを転換する。一方、前記データ処理単位は前記タスクスケジュラーから受けた前記タスク開始信号によってタスクを実行し、タスク処理が終了すれば、前記タスクスケジュラーに前記タスク終了信号を伝達する。
【００１４】
したがって、このような本発明によれば、データ処理システムのデータ処理性能を向上させることができるだけではなく、タスク開始信号およびタスク終了信号によって各データ処理単位のパイプライン動作がタスク別に制御されるので、データ処理システムを構成する個々のデータ処理単位の実現、維持補修、および変更が非常に容易になる。
【００１５】
前記データ処理システムは前記データ処理システムの機能を設定するための制御レジスタと、前記データ処理単位の動作に必要なデータを貯蔵する内部メモリプールをさらに含む。この時、前記複数個のデータ処理単位はＭＰＥＧ動画像符号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器を含む。
【００１６】
前記内部メモリプールは前記動き補償器によって補償された輝度成分および色差成分を貯蔵する動き補償された輝度および色差データメモリと、フレームメモリから現在入力されたフレームの輝度および色差成分を読み出して貯蔵する基準マクロブロック輝度および色差データメモリと前記フレームメモリから前記現在入力されたフレーム以前の再構成されたフレームから輝度成分を読み出して貯蔵する探索領域データメモリとを含む。
【００１７】
前記探索領域データメモリは前記動き推定器と前記動き補償器とに以前フレームの輝度データを提供する。前記動き補償された輝度および色差データメモリは前記離散余弦変換器および逆離散余弦変換器に動き補償された輝度および色差データを提供する。前記基準マクロブロック輝度および色差データメモリは前記動き推定器に現在フレームの輝度ブロックデータを提供し、離散余弦変換器に現在フレームの輝度と色差ブロックデータを提供する。すなわち、データ処理単位が内部データメモリを共有するので、外部メモリ帯域幅要求事項を最小化させることができる。
【００１８】
一実施形態において、前記データ処理単位は前記タスク開始信号および前記タスク終了信号の間でだけシステムクロックが供給される。
【００１９】
一実施形態において、前記制御レジスタによって前記データ処理システムが符号化インタモードで動作する場合、前記動き推定器および動き補償器にはシステムクロックを供給せず、複号化インタモードで動作する場合、動き推定器にシステムクロックを供給せず、複号化イントラモードで動作する場合、前記メモリプール、動き推定器および動き補償器にシステムクロックを供給しない。
【００２０】
したがって、システムの電力消耗を減らすことができる。
【００２１】
前記技術的課題を達成するために本発明の一実施形態によるビデオコーデックはＭＰＥＧ動画像符号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器を含むデータ処理単位と、前記データ処理単位がデータを共有するように共通データを貯蔵するための内部メモリプールと、前記複数個のデータ処理単位の各々の複数個の動作をタスク別に区別し、これらがパイプライン動作をするように制御するタスクスケジュラーと、前記データ処理システムの機能を設定する制御レジスタとを含む。
【００２２】
前記タスクスケジュラーはタスク開始信号を発生して前記データ処理単位にタスクの開始を指示する。一方、前記データ処理単位は前記タスクスケジュラーから受けた前記タスク開始信号によってタスクを実行する動作状態になる。そして、前記データ処理単位は前記タスクスケジュラーから前記タスク開始信号によって指示されたタスク処理が終了すれば、前記タスクスケジュラーにタスク終了信号を伝達して指示されたタスクが終了したことを知らせる。これによって、前記データ処理単位は前記タスクスケジュラーから次のタスク実行を指示するタスク開始信号を待つ待機状態になる。一方、前記タスクスケジュラーは前記データ処理単位から前記タスク終了信号を受けて次のタスク開始信号を発生してデータ処理単位のタスクを転換する。
【００２３】
前記動き推定器は動き推定タスクおよび動きベクタ伝達タスクを実行する。前記動き補償器は輝度成分に対する動き補償タスクおよび色差成分に対する動き補償タスクを実行する。前記離散余弦変換量子化器は輝度成分に対するＤＣＴＱタスク、色差成分に対するＤＣＴＱタスク、および再構成フレーム書き込みタスクを実行する。前記メモリプールのフレームメモリ制御回路はフレームメモリから前記メモリプールのデータメモリへの以前フレームの輝度成分書き込みタスク、現在フレームの輝度成分書き込みタスクおよび色差成分書き込みタスクを制御する。可変長符号器／複号器によって、またはソフトウェア的に輝度成分に対する可変長符号化／複号化タスクおよび色差成分に対する可変長符号化／複号化タスクが実行される。
【００２４】
前記メモリプールは、前記動き補償器によって補償された輝度成分および色差成分を貯蔵する動き補償された輝度データメモリおよび動き補償された色差データメモリと、フレームメモリから現在入力されたフレームの輝度および色差成分を読み出して貯蔵する基準マクロブロック輝度データメモリおよび基準マクロブロック色差データメモリと、前記フレームメモリから前記現在フレーム以前の再構成されたフレームから輝度成分を読み出して貯蔵する探索領域データメモリを含む内部データメモリと、前記各データ処理単位から内部データメモリ制御信号を受けて必要なデータを各データ処理単位に提供する内部データメモリ制御回路と、外部フレームメモリをアクセスして前記基準マクロブロックデータメモリと前記探索領域データメモリにデータを貯蔵することを制御するフレームメモリ制御回路と、前記タスクスケジュラーから実行しなければならないタスク開始信号を受けて前記フレームメモリに伝達してタスクを実行するようにし、タスク実行が完了すれば、タスク終了信号を前記タスクスケジュラーに伝達するタスク制御回路とを含む。
【００２５】
前記動き推定器は、前記探索領域データメモリと前記基準マクロブロック輝度メモリから輝度マクロブロックを読み出して動き推定を実行して、動きベクタを計算する動き推定エンジンと、前記動きベクタを前記動き補償器と前記可変長符号器に伝達する動きベクタ伝達器と、前記タスクスケジュラーから前記タスク開始信号を受け、前記タスク終了信号を前記タスクスケジュラーに伝達する動き推定器タスク制御回路と、前記探索領域データメモリと前記基準マクロブロック輝度メモリから輝度成分データを読み出すための内部データメモリ制御信号を発生する動き推定器内部データメモリ読み出し制御回路とを含む。
【００２６】
前記動き補償器は符号化の時には前記動き推定器から、複号化の時には前記可変長複号器から前記動きベクタを受けて解釈する動きベクタ解釈回路と、前記解釈された動きベクタを基盤にして輝度成分および色差成分に対して動き補償を実行する動き補償エンジンと、前記タスクスケジュラーから前記タスク開始信号を受け、前記タスク終了信号を前記タスクスケジュラーに伝達する動き補償器タスク制御回路と、前記探索領域データメモリからデータを読み出すための内部データメモリ制御信号および前記動き補償器によって動き補償された輝度成分データと動き補償された色差成分データを前記動き補償されたデータメモリに書き込むための内部データメモリ制御信号を発生させる動き補償器内部データメモリ読み出し／書き込み制御回路と、前記フレームメモリから色差成分の動き補償のために色差成分データを読み出すためのフレームメモリ読み出し制御信号を発生させるためのフレームメモリ読み出し制御回路とを含む。
【００２７】
前記離散余弦変換量子化器(ＤＣＴＱ)は前記タスクスケジュラーからタスク開始信号を受け、タスクの処理終了を前記タスクスケジュラーに知らせる前記タスク終了信号を伝達するＤＣＴＱタスク制御回路と、基準マクロブロックデータメモリから輝度および色差成分データと動き補償されたデータメモリから動き補償された輝度および色差データを読み出すための内部データメモリ制御信号を発生させるＤＣＴＱ内部データメモリ読み出し制御回路と、再構成されたフレームを前記フレームメモリに貯蔵するためのＤＣＴＱフレームメモリ書き込み制御回路とを含む。
【００２８】
前記技術的課題を達成するために本発明の一実施形態によるビデオコーデックはＭＰＥＧ動画像符号化および複号化のための離散余弦変換器／逆離散余弦変換器および量子化器／逆量子化器を含む離散余弦変換量子化器(ＤＣＴＱ)、動き推定器、動き補償器、および可変長符号器／可変長複号器を含むデータ処理単位と、前記データ処理単位がデータを共有するように共通データを貯蔵するための内部メモリプールとを含み、前記動き推定器と前記動き補償器は前記探索領域データメモリを共有し、前記離散余弦変換器および逆離散余弦変換器は前記動き補償されたデータメモリを共有し、前記動き推定器および前記離散余弦変換器は前記基準マクロブロックデータメモリを共有する。
【００２９】
前記ビデオコーデックは前記複数個のデータ処理単位がパイプライン動作をするように制御し、前記パイプライン動作をタスク別に区別して制御するタスクスケジュラーをさらに含み、前記タスクスケジュラーは前記複数個のデータ処理単位のパイプライン動作をタスク別に区別して制御するタスク開始信号を前記データ処理単位に伝達してタスクを実行するようにし、前記データ処理単位からタスク終了信号が伝達されてタスクを転換し、前記データ処理単位は前記タスクスケジュラーから受けた前記タスク開始信号によってタスクを実行し、タスク処理が終了すれば、前記タスクスケジュラーに前記タスク終了信号を伝達する。
【００３０】
このような本発明のビデオコーデックによれば、データ処理システムのデータ処理性能を向上させることができる。だけではなく、タスク開始信号およびタスク終了信号によって各データ処理単位のパイプライン動作がタスク別に制御されるので、ビデオコーデックを構成する個々のデータ処理単位の実現、維持補修、および変更が非常に容易になる。
【００３１】
また、本発明のビデオコーデックによれば、探索領域データメモリが前記動き推定器と前記動き補償器によって共有される。動き補償された輝度および色差データメモリは離散余弦変換器および逆離散余弦変換器によって共有され、基準マクロブロック輝度データメモリは動き推定器および離散余弦変換器によって共有される。
【００３２】
前記技術的課題を達成するために本発明の一実施形態によるデータ処理方法は、複数個のデータ処理単位はタスクスケジュラーから受けたタスク開始信号によって指示されたタスクを実行し、タスク実行が終了すれば、タスク終了を知らせるタスク終了信号を発生し、次のタスク開始信号を待つ待機状態になり、前記タスクスケジュラーはタスク完了信号を受けてタスクを転換することを特徴とする。
【発明の効果】
【００３３】
本発明によるビデオコーデックの全体動作はタスクスケジュラーで処理するので、動き推定器、動き補償器、ＤＣＴＱはタスクスケジュラーで各機能実行の開始を知らせる命令によってだけ動作を行い、実行が完了すれば、次の命令を待機して実行完了状態をスケジュラーに知らせば良いので、機能が簡単になる。
【００３４】
また、各データ処理単位に共通的なデータを貯蔵するメモリプールを具備して、これらの大きさを最適化することによって、外部メモリ帯域幅要求事項を最小化できる。
【００３５】
また、データ処理単位が動作する区間でだけシステムクロックを供給するか、各モードで動作しないデータ処理単位にはシステムクロックを供給しないことによって、システムの電力消耗を減らすことができる。
【発明を実施するための最良の形態】
【００３６】
以下、添付の図面を参照して本発明の実施形態を詳細に説明する。しかし、本発明はここで説明される実施形態に限定されず、他の形態で具体化することもできる。むしろ、ここで紹介される実施形態は開示された内容が徹底して完全になれるように、そして当業者に本発明の思想を十分に伝達するために提供されるものである。
【００３７】
図２はデータ処理システムの一つである本発明によるメモリ帯域幅要求事項を最小化するビデオコーデック２００を概略的に示すブロック図である。図２を参照すると、本発明の一実施形態によるビデオコーデック２００は独立的なデータ処理動作を実行するデータ処理単位２０１、２２１、２３１およびこれらの動作を制御するマイクロコントローラ２９０を含む。データ処理単位２０１は離散余弦変換量子化器ＤＣＴＱであり、データ処理単位２２１は動き推定器ＭＥであり、データ処理単位２３１は動き補償器ＭＣである。離散余弦変換量子化器(ＤＣＴＱ)２０１は離散余弦変換器 (ＤＣＴ)２０３、量子化器（Ｑ）２０５、逆量子化器(ＩＱ)２０７、逆離散余弦変換器(ＩＤＣＴ)２０９のようなデータ処理単位で構成される。コーディング制御器２１５はイントラモード、インタモード、量子化インデックスなどを制御する。
【００３８】
本発明のビデオコーデック２００はメモリ帯域幅要求事項を最小化するためにメモリプール２４１を含む。メモリプール２４１はビデオコーデック２００の内部データメモリである探索領域データメモリ(ｐｒｅｖ ｍｅｍ)２４３、動き補償されたデータメモリ(ｍｃｅｄ ｍｅｍ)２４５および基準マクロブロックデータメモリ(ｃｕｒｒ ｍｅｍ)２４７を含む。これら各内部データメモリ４３、２４５、２４７に貯蔵されたデータをデータ処理単位２０１、２２１、２３１が共有する。すなわち、動き推定器２２１と動き補償器２３１は探索領域データメモリ２４３を共有する。離散余弦変換器２０３および逆離散余弦変換器２０９は動き補償されたデータメモリ２４５を共有する。そして、動き推定器２３１および離散余弦変換器２０３は基準マクロブロックデータメモリ２４７を共有する。
【００３９】
内部メモリプール２４１は各データ処理単位から制御信号(内部データメモリ制御信号)を受け、そこに応答して各データ処理単位に必要なデータを提供する。
【００４０】
フレームメモリ２８１、２９１は現在処理しようとする入力や画像データ(現在フレーム)、現在入力画像データの以前の再構成された画像データ(再構成フレーム、以前フレーム)などを貯蔵する。例えば、フレームメモリ２８１、２９１はバーストアクセスが可能なＳＤＲＡＭである。マイクロコントローラ２９０の制御下にフレームメモリ２８１、２９１に貯蔵された輝度および色差データが内部データメモリ２４７、２４３に書き込まれる。
【００４１】
一方、離散余弦変換量子化器(ＤＣＴＱ)２０１は再構成フレームを一時的に貯蔵する再構成データメモリ(ｒｅｃｏｎ ｍｅｍ)２１１、量子化係数ＣＯＥＦを貯蔵する量子化係数データメモリ(ＣＯＥＦ ｍｅｍ)２１３をさらに含むことができる。
【００４２】
以下では、ビデオコーデック２００を構成するデータ処理単位固有動作に対して説明する。ビデオコーデック２００はマイクロコントローラ２９０の制御下に、符号器または複号器として動作することができる。また、各々に対してインタモード、またはイントラモードで動作することができる。
【００４３】
まず、符号器として動作する場合を説明する。符号器として動作する場合、イントラ符号化およびインタ符号化を実行する。イントラ符号化は入力された現在フレームの空間的重複性を除去するために、入力される現在フレームに対して離散余弦変換および量子化を実行する。一方、インタ符号化は連続するフレームの間の時間的重複性を除去するために、動き推定、動き補償、現在フレームおよび動き補償されたフレーム(予測フレーム)の画像差分データ(予測エラー信号)に対する離散余弦変換、量子化などを実行する。
【００４４】
符号器動作のうち、まずインタ符号化の時の各データ処理単位の動作について説明する。動き推定器２２１は輝度成分Ｙに対して１６＊１６ピクセルの大きさのブロック(マクロブロック)単位に現在入力されたフレームと以前フレーム(再構成フレーム)の間の動きを推定する。すなわち、基準マクロブロックデータメモリ２４７から提供される現在入力フレームのマクロブロックと最も類似のマクロブロック(マッチングマクロブロック)を探索領域データメモリ２４３から提供される以前フレームの探索領域からさがした後、これら二つのマクロブロックの間の変位量(動きベクタ)ｍｖを推定する。推定された動きベクタｍｖは動き補償および可変長符号化のために使用される。探索領域は以前フレームで現在マクロブロックの位置に対応するマクロブロックおよびその周りに隣接した８個のマクロブロックで構成されることができる。すなわち、探索領域は４８＊４８ピクセル(９個のマクロブロック)で構成されることができる。
【００４５】
動き補償器２３１は動き推定器２２１によって推定された動きベクタｍｖを基盤にして探索領域データメモリ２４３とフレームメモリ２９１とから提供される以前フレームの輝度Ｙおよび色差Ｃｂ／Ｃｒブロックから動きが補償された輝度および色差データブロック(予測データ)を生成する。動き補償された輝度および色差データブロック(予測データ)が動き補償されたデータメモリ２４５に貯蔵される。
【００４６】
離散余弦変換量子化器(ＤＣＴＱ)２０１は動き補償されたデータブロック(予測データ)を使用して離散余弦変換器２０３および量子化器２０５よって符号化を、逆量子化器２０７および逆離散余弦変換器２０９によって複号化を実行する。すなわち、離散余弦変換量子化器(ＤＣＴＱ)２０１は基準マクロブロックデータメモリ２４７から提供される現在フレームの輝度および色差データブロックで動き補償されたデータメモリ２４５に提供される動き補償された輝度および色差データブロック(予測データ)を減算した結果、得られた画像差分データに対して離散余弦変換器（ＤＣＴ)２０３および量子化器(Ｑ)２０５を介して離散余弦変換および量子化を実行して量子化係数ＣＯＥＦを量子化係数メモリ２１３に貯蔵する。一方、量子化された画像差分データは逆量子化器２０７および逆離散余弦変換器２０９を介して逆量子化および逆離散余弦変換された後、動き補償された輝度および色差データに加算されて再構成フレームが形成され、その結果が再構成フレームメモリ２１１に一時的に貯蔵される。離散余弦変換量子化器(ＤＣＴＱ)２１０は８＊８ピクセルブロック単位でデータを処理する。再構成フレームメモリ２１１に貯蔵された再構成フレームは動き補償のために外部フレームメモリ２９１に貯蔵される。
【００４７】
動き推定器２２１によって推定された動きベクタｍｖおよび量子化係数データメモリ２１３に貯蔵された量子化係数ＣＯＥＦに対して可変長符号化が実行される。可変長符号化は可変長符号器ＶＬＣのようなハードウェアによって実行するか、プログラムを通じるソフトウェアによって実行することができる。ソフトウェアによって可変長符号化を実行する場合、動きベクタおよび量子化係数は外部フレームメモリ２９１に書き込まれる。一方、可変長符号器を使用する場合、外部メモリへの書き込みは不要である。例えば、量子化係数の場合、可変長符号器が量子化係数データメモリ２１３に接近して量子化係数を使用する。また、量子化係数は動き推定器２２１に接近して動きベクタを接近して動きベクタを使用する。すなわち、可変長符号器が使用される場合、動きベクタｍｖは動き推定器２２１から、量子化係数は量子化係数データメモリ２１３から提供される。すなわち、可変長符号器と離散余弦変換量子化器は量子化係数データメモリを共有する。この時、可変長符号器はレディー／ビジー （ｒｅａｄｙ／ｂｕｓｙ）信号を発生して離散余弦変換量子化器２０１に自分が動作しているということを知らせる。離散余弦変換量子化器２０１は量子化係数を量子化係数データメモリ２１３に書き込んだ後、その動作完了を知らせる信号を発生して可変長符号器が量子化係数データメモリ２０５に接近して量子化係数を使用して可変長符号を実行するようにする。
【００４８】
符号器のイントラ符号化モードの場合、空間的重複性を除去するために、基準マクロブロックデータメモリ２４７から提供される現在フレームに対して８＊８ピクセルブロック単位で離散余弦変換器２０３によって離散余弦変換した後、量子化器２０５によって量子化されて生成された量子化係数ＣＯＥＦは内部メモリである量子化係数メモリ２１３に貯蔵される。量子化係数ＣＯＥＦはソフトウェア的に、または可変長符号器によってエントロピー符号化される。
【００４９】
次に複号器動作について説明する。複号器動作の場合、動き推定は実行されない。インタ複号化の場合、複号器動作は動き補償、エントロピー符号化された画像差分データの量子化係数に対する複号化、動きベクタを利用したフレーム復元を含む。動き補償器２３１はエントロピー複号化された動きベクタを使用して輝度および色差成分データに対する動き補償を実行する。離散余弦変換量子化器２０１はエントロピー複号化された輝度および色差成分の量子化係数を逆量子化および逆離散余弦変換を実行して動き補償された輝度および色差データに加算してフレームを復元する。
【００５０】
次に、イントラ複号化を説明する。イントラ複号化はインタ複号化動作のうちの動き補償を実行しない。イントラ複号化動作はエントロピー複号化、フレーム復元を含む。
【００５１】
以上説明した本発明のビデオコーデック２００によれば、動き推定器２２１と動き補償器２３１とは探索領域データメモリ２４３を共有し、離散余弦変換器２０３と逆離散余弦変換器２０９とは動き補償されたデータメモリ２４５を共有し、動き推定器２３１と離散余弦変換器２０３とは基準マクロブロックデータメモリ２４７を共有する。したがって、メモリ帯域幅要求事項を最小化できる。
【００５２】
図３は高性能のパイプライン動作が可能な本発明によるデータ処理システムの一種であるビデオコーデック３００を概略的に示すブロック図である。ビデオコーデック３００はタスクスケジュラー３６１および制御レジスタ３７１を含むマイクロコントローラ３９０、離散余弦変換量子化器(ＤＣＴＱ)３０１、動き推定器３２１、動き補償器３３１、可変長符号器／複号器３５１を含むデータ処理単位およびメモリプール３１４を含む。離散余弦変換量子化器(ＤＣＴＱ)３０１は離散余弦変換器３０３、量子化器３０５、逆量子化器３０７、逆離散余弦変換器３０９を含む。
【００５３】
可変長符号器／複号器３５１はエントロピー符号化／複号化を実行する。エントロピー符号化／複号化は、可変長符号器／複号器のようなハードウェアによらず、エントロピー符号化／複号化を実行するアルゴリズムによってソフトウェア的に実行することができる。
【００５４】
制御レジスタ３７１はビデオコーデック３００の機能を設定する。例えば、フレーム開始、イントラ符号化、インタ符号化、符号化、複号化などのビデオコーデックの全般的な機能を設定する。制御レジスタ３７１による各種モード別(イントラ符号化、インタ符号化、イントラ複号化、インタ複号化)データ処理単位３０１、３２１、３３１、３５１の動作は図２を参照して説明した通りである。
【００５５】
メモリプール３１４は探索領域データメモリ３４３、動き補償されたデータメモリ３４５および基準マクロブロックデータメモリ３４７を含んでデータ処理単位３０１、３２１、３３１は共通的なデータを相互連結網３４９を介して共有する。すなわち、動き推定器３２１と動き補償器３３１とは探索領域データメモリ３４３を共有する。また離散余弦変換器３０３と逆離散余弦変換器３０９とは動き補償されたデータメモリ３４５を共有する。そして、動き推定器３３１と離散余弦変換器３０３とは基準マクロブロックデータメモリ３４７を共有する。
【００５６】
タスクスケジュラー３６１はビデオコーデック３００を構成するデータ処理単位のパイプライン動作を全体的に制御する。タスクスケジュラー３６１は離散余弦変換量子化器(ＤＣＴＱ)３０１、動き推定器３２１、動き補償器３３１およびメモリプール３１４にタスクの実行を指示する命令語(制御信号)、すなわちタスク開始信号を送る。タスク開始信号を受けたデータ処理単位３０１、３２１、３３１およびメモリプール３１４はそれに相応するタスクを実行する。タスク実行が終了すれば、データ処理単位３０１、３２１、３３１およびメモリプール３１４はタスク実行終了を知らせるタスク終了信号を発生してタスクスケジュラー３６１に送って、自分は他のタスク開始信号を待つ待機状態になる。データ処理単位３０１、３２１、３３１およびメモリプール３１４からタスク終了信号を受けたタスクスケジュラー３６１は次のタスクの実行を指示する他のタスク開始信号を発生してデータ処理単位３０１、３２１、３３１およびメモリプール３１４に送る。
【００５７】
可変長符号器／複号器３５１は動き推定器２２１から提供される動きベクタまたは量子化係数メモリ(図２の２１３)に貯蔵された量子化係数ＣＯＥＦに対して可変長符号化／複号化を実行する。可変長符号器／複号器３５１がない場合、動きベクタは外部フレームメモリ(図２の２９１)から提供され(すなわち、動きベクタが動き推定器から外部フレームメモリに貯蔵される)、量子化係数も外部フレームメモリから提供される(量子化係数が量子化係数メモリから外部フレームメモリに貯蔵される)。
【００５８】
可変長符号器／複号器３５１はレディー／ビジー信号（ｒｅａｄｙ／ｂｕｓｙ信号）を発生して離散余弦変換量子化器３０１に自分が動作しているということを知らせる。離散余弦変換量子化器３０１は量子化係数を量子化係数データメモリに書き込んだ後、その動作完了を知らせる信号を発生して可変長符号器／複号器３５１が可変長符号を実行するようにする。
【００５９】
タスクスケジュラー３６１によって独立的に制御されるデータ処理単位のタスクは次のとおりである。動き推定器３２１は輝度データブロックに対して動きを推定する動き推定タスク、動きベクタを外部メモリに書き込むタスク(可変長符号器／複号器を使用しない場合)を実行する。動き補償器３３１は輝度および色差データブロックに対して各々別個のタスク、すなわち輝度データブロックに対する動き補償タスク、色差データブロックに対する動き補償タスクを実行する。離散余弦変換量子化器(ＤＣＴＱ)３０１は輝度および色差データブロックに対して各々別個のタスク、すなわち、輝度成分に対するＤＣＴＱ(離散余弦変換、量子化、逆量子化、逆離散余弦変換)タスク、色差成分に対するＤＣＴＱタスク、再構成フレームを貯蔵するための再構成フレーム貯蔵タスクを実行する。可変長符号器／複号器３５１は動き補償器３３１および離散余弦変換量子化器ＤＣＴＱの制御によって輝度成分に対するエントロピー符号化／複号化のためのタスク、色差成分の量子化係数に対するエントロピー符号化／複号化のためのタスク、動きベクタに対する可変長符号化／複号化タスクを実行する。
【００６０】
メモリプール３１４はタスクスケジュラー３６１の制御に従ってフレームメモリ(図２の２８１、２９１)から以前フレームの輝度成分を読み出して探索領域データメモリ３４３に貯蔵し、現在フレームの輝度および色差成分を基準マクロブロックデータメモリ３４７に貯蔵するタスクを実行する。動き補償器３３１によって補償された動き補償された輝度および色差成分は動き補償されたデータメモリ３４５に貯蔵される。
【００６１】
一方、メモリプール３１４の内部データメモリ３４３、３４５、３４７に貯蔵されたデータは離散余弦変換量子化器３０１、動き推定器３２１および動き補償器３３１の制御下にアクセスされる。
【００６２】
このような各データ処理単位のタスクはタスクスケジュラー３６１によって制御されてパイプライン動作で実行される。図４は本発明のビデオコーデック３００の符号化モードの時の各データ処理単位のタスクに対するパイプライン動作を概略的に図示する。
【００６３】
タスクスケジュラー３６１の制御信号(タスク開始信号)によってフレームメモリから現在フレームおよび以前フレームの輝度成分が基準マクロブロック輝度データメモリおよび探索領域データメモリに書き込まれた後、動き推定器３２１によって動き推定が実行されて動きベクタが生成される。動き推定器３２１によって動き推定が完了すれば、動きベクタを基盤にして、動き補償器３３１による輝度および色差成分に対する動き補償が実行される。可変長符号器／複号器を使用しない場合、輝度成分に対する動き補償を実行する時、動きベクタが外部フレームメモリに書き込まれる。動き補償器３３１によって輝度成分に対する動き補償が完了した後、離散余弦変換量子化器(ＤＣＴＱ)３０１によって輝度成分に対するＤＣＴＱタスクが実行され、動き補償器３３１によって色差成分に対する動き補償が完了すれば、離散余弦変換量子化器（ＤＣＴＱ）３０１によって色差成分に対するＤＣＴＱタスク、および構成フレーム貯蔵タスクが実行される。離散余弦変換量子化器(ＤＣＴＱ)３０１によって輝度成分に対するＤＣＴＱタスクが完了した後、量子化係数ＣＯＥＦに対するエントロピー符号化が行なわれる。
【００６４】
上述のデータ処理単位のタスク別効率的なパイプライン動作および外部メモリ帯域要求事項を最小化するためのメモリプール３４１の構成の一例が図５、図６Ａ、図６Ｂ、図７Ａ、および図７Ｂに概略的に示されている。本例では動き補償のための探索領域が[−１６、１５]であり、すなわち探索領域が４８＊４８ピクセルブロックであり、システムで支援されるメモリアクセスモードがシングル、バースト４、バースト８、バースト１６である場合に対することを例示的に図示したものである。メモリプール３４１は探索領域データメモリ、基準マクロブロックデータメモリ、動き補償されたデータメモリを含む。
【００６５】
図５は動き推定および動き補償のために再構成された以前フレームから提供された輝度成分を貯蔵する探索領域データメモリを図示し、図６Ａおよび図６Ｂは動き推定、離散余弦変換量子化器ＤＣＴＱのために現在入力フレームから提供された輝度および色差成分を貯蔵する基準マクロブロック輝度データメモリおよび基準マクロブロック色差データメモリを図示し、図７Ａおよび図７Ｂは離散余弦変換量子化器ＤＣＴＱの符号化／複号化、そしてフレーム再構成のために動き補償された輝度成分および色差成分を貯蔵するメモリを図示する。
【００６６】
まず、図５を参照すると、探索領域データメモリ３４５は外部フレームメモリ(図２の２８１)に対してバースト８、バースト１６でアクセスされた以前フレームの輝度成分を貯蔵する。探索領域が [−１６、１６]の場合、４８＊４８ピクセルの大きさのデータが要求される点と、フレームメモリに対するバースト８、バースト１６アクセス、パイプライン動作を考慮して、探索領域データメモリ３４３は４８＊(１６＊１０)ピクセルの大きさを貯蔵することができるメモリの大きさを有するように構成される。図５は４８＊(１６＊１０)ピクセルの大きさのデータを貯蔵する探索領域データメモリを図示する。
【００６７】
初めには、パッディング領域を考慮してバースト８に外部フレームメモリ(図２の２９１)がアクセスされて二つの４８＊１６ピクセルの大きさの輝度ブロックが探索領域データメモリ３４３ブロックＰＹ０、ＰＹ１に貯蔵され、その後からはバースト１６でアクセスされる。すなわち、二つの４８＊１６ピクセルの大きさの輝度ブロックが探索領域データメモリ３４５ブロックＰＹ０、ＰＹ１に貯蔵された後、フレームメモリがバースト１６にアクセスされて４個の４８＊１６ピクセルの大きさの輝度ブロックが探索領域データメモリ３４３ブロックＰＹ２、ＰＹ３、ＰＹ４、ＰＹ５に貯蔵される。以後もフレームメモリがバースト１６にアクセスされて４個の４８＊１６ピクセルの大きさの輝度ブロックが探索領域データメモリ３４３ブロックＰＹ６、ＰＹ７、ＰＹ８、ＰＹ９に貯蔵される。探索領域データメモリ３４３ブロックＰＹ６、ＰＹ７、ＰＹ８、ＰＹ９に４個の４８＊１６ブロックが貯蔵された後、探索領域データメモリ３４３ブロックＰＹ０、ＰＹ１、ＰＹ２、ＰＹ３に４個の４８＊１６ブロックが貯蔵される。このような過程は以前フレームの水平方向マクロブロックのアクセスが完了するまで繰り返される。この時、水平方向に残っているマクロブロックが４個ではない場合には、残っているマクロブロックの数に対応してバーストアクセスが行なわれる。ここで探索領域の範囲が変わるようになれば、探索領域データメモリ３４３の垂直ピクセルの大きさ(すなわち、４８ピクセル)水平ピクセルの大きさ(１６＊１００)もそれに相応して変わるであろう。
【００６８】
次に、図６Ａおよび図６Ｂを参照すると基準マクロブロックデータメモリ３４７は輝度成分を貯蔵するための基準マクロブロック輝度データメモリ３４７ａおよび色差成分を貯蔵するための基準マクロブロック色差データメモリ３４７ｂを含む。基準マクロブロック輝度データメモリ３４７ａはフレームメモリ(図２の２８１)をバースト１６にアクセスして輝度成分を貯蔵する。基準マクロブロック色差データメモリ３４７ｂはフレームメモリ(図２の２８１)をバースト８にアクセスして輝度成分を貯蔵する。
【００６９】
すなわち、輝度成分データはバースト１６に４個のマクロブロック単位(１６＊１６ピクセルの大きさ)にアクセスされて基準マクロブロック輝度データメモリ３４７ａのブロックＣＹ０、ＣＹ１、ＣＹ２、ＣＹ３に貯蔵され、次の回のアクセスの時に基準マクロブロック輝度データメモリ３４７ａのブロックＣＹ４、ＣＹ５、ＣＹ６、ＣＹ７に４個の輝度マクロブロックが貯蔵される。輝度ブロックＣＹ４〜ＣＹ７がアクセスされて貯蔵される前に、以前に貯蔵された輝度ブロックＣＹ０〜ＣＹ３に対するデータ処理が完了する。基準マクロブロックデータメモリ３４７ａのブロックＣＹ４、ＣＹ５、ＣＹ６、ＣＹ７に４個の輝度１６＊１６ブロックが貯蔵された後、次の回のアクセスの時に基準マクロブロックデータメモリ３４７ａのブロックＣＹ０、ＣＹ１、ＣＹ２、ＣＹ３に４個の輝度１６＊１６ブロックが貯蔵される。すなわち、パイプライン動作を円滑にするために一つのメモリブロックグループＣＹＯ〜ＣＹ３が処理されている間、次の回の処理のために他のメモリブロックグループＣＹ４〜ＣＹ７にデータが書き込まれる。以後、このような過程が以前フレームの水平方向マクロブロックのアクセスが完了するまで繰り返される。この時、水平方向に残っているマクロブロックの数にあうようにバーストアクセスが行なわれる。
【００７０】
色差成分データは色差成分Ｃｂ、色差成分Ｃｒの手順によって、４個の８＊８ピクセルの大きさのブロック単位でバースト８にアクセスされてマクロブロック色差データメモリ３４７ｂのブロックＣＣｂ０、ＣＣｂ１、ＣＣｂ２、ＣＣｂ３、ＣＣｒ０、ＣＣｒ１、ＣＣｒ２、ＣＣｒ３ に貯蔵される。続いて、同一にバースト８に色差成分Ｃｂ、色差成分Ｃｒの手順にアクセスされて８＊８ピクセルの大きさのブロック単位で基準マクロブロック色差データメモリ３４７ｂのブロックＣＣｂ４、ＣＣｂ５、ＣＣｂ６、ＣＣｂ７、ＣＣｒ４、ＣＣｒ５、ＣＣｒ６、ＣＣｒ７に貯蔵される。色差データブロックＣＣｂ４、ＣＣｂ５、ＣＣｂ６、ＣＣｂ７、ＣＣｒ４、ＣＣｒ５、ＣＣｒ６、ＣＣｒ７に色差成分が貯蔵される前に、それ以前に色差データブロックＣＣｂ０、ＣＣｂ１、ＣＣｂ２、ＣＣｂ３、ＣＣｒ０、ＣＣｒ１、ＣＣｒ２、ＣＣｒ３に貯蔵された色差データに対する処理が完了する。パイプライン動作を円滑にするために一つのメモリブロックグループＣＣｂ０、ＣＣｂ１、ＣＣｂ２、ＣＣｂ３、ＣＣｒ０、ＣＣｒ１、ＣＣｒ２、ＣＣｒ３が処理されている間次の回の処理のために他のメモリブロックグループＣＣｂ４、ＣＣｂ５、ＣＣｂ６、ＣＣｂ７、ＣＣｒ４、ＣＣｒ５、ＣＣｒ６、ＣＣｒ７にデータが書き込まれる。このような過程が繰り返して行なわれる。
【００７１】
次に、図７Ａおよび図７Ｂを参照すると、動き補償されたデータメモリ３４５は動き補償された輝度および色差成分データブロックを貯蔵する。離散余弦変換量子化器(ＤＣＴＱ)３０１の離散余弦変換器３０３および逆離散余弦変換器３０９が同時に動き補償されたデータメモリ３４５をアクセスするので、動き補償されたデータメモリ３４５は動き補償された同一の輝度成分を貯蔵するための一対の動き補償された輝度データメモリ３４５ａ、および動き補償された同一の色差成分を貯蔵するための一対の動き補償色差データメモリ３４５ｂを含む。
【００７２】
動き補償された輝度データメモリ３４５ａは二つのマクロブロック１６＊１６を貯蔵することができる大きさを有し、動き補償された色差データメモリ３４５ｂは各色差成分に対して二つの８＊８ピクセルの大きさのブロックを貯蔵することができる大きさを有する。すなわち、動き補償された輝度データメモリ３４５ａは１６＊１６ピクセルの大きさのメモリブロックＭＹ０、ＭＹ１で構成され、動き補償された色差データメモリ３４５ｂは８＊８ピクセルの大きさのメモリブロックＭＣｂｏ、ＭＣｂ１、ＭＣｒ０、ＭＣｒ１で構成される。
【００７３】
図８は今まで説明した内部データメモリ８４１およびデータ処理単位の間の相互連結網８４９を介した相互連結関係を図示するブロック図である。離散余弦変換器８０３および逆離散余弦変換器８０９は同一の動き補償されたマクロブロックを同時に接近し、また動き補償されたデータメモリ８４５を共有する。動き推定器８２１と動き補償器８３１とは探索領域データメモリ８４３を共有する。動き推定器８２１と離散余弦変換器８０３とは基準マクロブロックデータメモリ８４７の輝度成分データＣＹ０〜ＣＹ７を共有する。
【００７４】
探索領域データメモリ８４３に貯蔵された輝度成分データは３個の４８＊１６ブロック単位で動き推定器８２１および動き補償器８３１に伝達される。基準マクロブロック輝度データメモリ８４７に貯蔵された輝度成分マクロブロック対（ＣＹ０、ＣＹ２)、(ＣＹ１、ＣＹ３)、(ＣＹ４、ＣＹ６)、(ＣＹ５、ＣＹ７)はマルチプレクサ８４９ａ、８４９ｂを介して動き推定器８２１および離散余弦変換器８０３に提供され、基準マクロブロック色差データメモリ８４７に貯蔵された色差成分ブロック対(ＣＣｂ０、ＣＣｒ０、ＣＣｂ２、ＣＣｒ２)、(ＣＣｂ１、ＣＣｒ１、ＣＣｂ３、ＣＣｒ３)、(ＣＣｂ４、ＣＣｒ４、ＣＣｂ６、ＣＣｒ６)、(ＣＣｂ５、ＣＣｒ５、ＣＣｂ７、ＣＣｒ７)はマルチプレクサ８４９ｃによって離散余弦変換器８０３に提供される。
【００７５】
以下、上述のパイプライン動作のためのデータ処理単位およびメモリプールについてより詳細に説明する。なお、可変長符号器を使用せず、ソフトウェア的に可変長符号化を実行すると考えて説明する。すなわち、ソフトウェア的に可変長符号化を実行する場合、可変長符号化のために動きベクタおよび量子化係数が外部メモリに貯蔵される。一方、可変長符号器を使用する場合、動きベクタおよび量子化係数を外部メモリに伝達しなくてもよい。
【００７６】
図９は動き推定器の詳細ブロック図であり、図１０は動き補償器の詳細ブロック図であり、図１１は離散余弦変換量子化器ＤＣＴＱの詳細ブロック図であり、図１２はメモリプールの詳細ブロック図である。
【００７７】
まず、図９を参照すると、動き推定器９００は動き推定エンジン９０１、タスク制御回路９０３、内部データメモリ読み出し制御回路９０５、動きベクタ伝達制御回路９０７を含む。
【００７８】
タスク制御回路９０３はタスクスケジュラーから実行しなければならないタスク命令(動き推定開始信号ｍｅ＿ｓｔａｒｔ、動きベクタ書き込み開始信号ｍｖ＿ｗｒｉｔｅのようなタスク制御信号)を受け、これらタスクの実行完了を知らせるタスク終了信号(動き推定終了信号ｍｅ＿ｅｎｄ、動きベクタ書き込み終了信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄ)をタスクスケジュラーに伝達する。動きベクタ書き込み開始信号ｍｖ＿ｗｒｉｔｅによって動きベクタは動きベクタ伝達制御回路９０７の制御下に外部フレームメモリに書き込まれる。一方、可変長符号器を使用する場合、可変長符号化のために動きベクタを外部メモリに貯蔵する必要はなく、可変長符号器が動き推定器を直接アクセスして動きベクタを使用することができる(動き補償器も動き推定器を直接アクセスして動きベクタを使用する)。したがって、動きベクタ書き込み開始信号ｍｖ＿ｗｒｉｔｅおよび動きベクタ書き込み終了信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄは不要になる。しかし、動きベクタ書き込み開始信号ｍｖ＿ｗｒｉｔｅを使用する場合、この信号が発生するとすぐに、動きベクタ書き込み終了信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄが発生するようにして、タスクスケジュラーに知らせることができる。
【００７９】
内部データメモリ読み出し制御回路９０５は、メモリプールの探索領域データメモリから輝度成分データＰＹと基準マクロブロックデータメモリから輝度成分データＣＹとを読み出すための内部データメモリ制御信号を発生する。動き推定エンジン９０１はタスク制御回路９０３を介してタスクスケジュラーから受けた動き推定開始信号ｍｅ＿ｓｔａｒｔに応答してメモリプールの探索領域データメモリから輝度成分データＰＹと基準マクロブロックデータメモリから輝度成分データＣＹとを利用して動きを推定して動きベクタを生成する。動きベクタ伝達制御回路９０７は動き補償器(または可変長符号器)に動きベクタを提供するために動きベクタを一時的に貯蔵するか、動きベクタ可変長符号化のために動きベクタを外部メモリに書き込む。
【００８０】
動き推定、動きベクタ書き込みが終了すれば、タスク制御回路９０３はタスクスケジュラーに動き推定終了を知らせる動き推定終了信号ｍｅ＿ｅｎｄ、動きベクタ書き込み終了を知らせる動きベクタ書き込み終了信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄを送る。
【００８１】
次に、図１０を参照すると、動き補償器１０００は動き補償エンジン１００１、タスク制御回路１００３、内部データメモリ読み出し／書き込み回路１００５、動きベクタ解釈回路１００７、フレームメモリ読み出し制御回路１００９を含む。
【００８２】
タスク制御回路１００３はタスクスケジュラーから実行しなければならないタスク実行命令(輝度成分に対する動き補償実行の開始を指示する信号ｍｃ＿ｙ＿ｓｔａｒｔ、色差成分に対する動き補償実行の開始を指示する信号ｍｃ＿ｃｂｃｒ＿ｓｔａｒｔのようなタスク制御信号)を受けて、これらタスクの実行完了をタスクスケジュラーに知らせるタスク終了信号(輝度成分に対する動き補償が完了したことを知らせる信号ｍｃ＿ｙ＿ｅｎｄ、色差成分に対する動き補償が完了したことを知らせる信号ｍｃ＿ｃｂｃｒ＿ｅｎｄ)を伝達する。内部データメモリ読み出し／書き込み回路１００５はメモリプールの探索領域データメモリから輝度成分データＰＹを読み出し、動き補償された結果である動き補償された輝度成分データＭＹと動き補償された色差成分データＭＣｂ／ＭＣｒを動き補償されたデータメモリに書き込むための内部データメモリ制御信号を発生する。フレームメモリ読み出し制御回路１００９は色差成分の動き補償のためにフレームメモリ(図２の２９１)アクセスを制御する。動き解釈ベクタ回路１００７は符号化モードの時には動き推定器から、複号化モードの時には外部メモリ(または可変長複号器)から、動きベクタが伝達されて解釈する。動き補償エンジン１００１はタスクスケジュラーから受けた輝度成分動き補償開始信号ｍｃ＿ｙ＿ｓｔａｒｔ、色差成分動き補償開始信号ｍｃ＿ｃｂｃｒ＿ｓｔａｒｔに応答して解釈された動きベクタを基盤にして輝度成分および色差成分に対して動き補償を実行する。動き補償エンジン１００１によって動き補償が終了すれば、タスク制御回路１００３はタスクスケジュラーに動き補償終了を知らせる動き補償終了信号ｍｃ＿ｙ＿ｅｎｄ、ｍｃ＿ｃｂｃｒ＿ｅｎｄを送る。
【００８３】
図１１を参照すると、離散余弦変換量子化器(ＤＣＴＱ)１１００は離散余弦変換器１１１１、量子化器１１１３、逆量子化器１１１５、逆離散余弦変換器１１１７、タスク制御回路１１０３、内部データメモリ読み出し制御回路１１０５、フレームメモリ書き込み制御回路１１０９を含む。
【００８４】
タスク制御回路１１０３はタスクスケジュラーから実行しなければならないタスク実行命令(輝度成分に対する離散余弦変換量子化開始信号ｄｃｔｑ＿ｙ＿ｓｔａｒｔ、色差成分に対する離散余弦変換量子化開始信号ｄｃｔｑ＿ｃｂｃｒ＿ｓｔａｒｔ、輝度成分に対する量子化係数エントロピー符号化開始を指示する信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ、色差成分に対する量子化係数エントロピー符号化開始を指示する信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ、輝度成分に対する逆量子化逆離散余弦変換開始信号ｉｑｉｄｃｔ＿ｙ＿ｓｔａｒｔ、色差成分に対する逆量子化逆離散余弦変換開始信号ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｓｔａｒｔ、再構成フレーム貯蔵開始信号ｒｅｃｏｎ＿ｗｒｉｔｅのようなタスク制御信号)を受け、これらタスクの実行完了を知らせるタスク終了信号(輝度成分に対する離散余弦変換量子化終了信号ｄｃｔｑ＿ｙ＿ｅｎｄ、色差成分に対する離散余弦変換量子化終了信号ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ、輝度成分に対する量子化係数エントロピー符号化終了を知らせる信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ＿ｅｎｄ、色差成分に対する量子化係数エントロピー符号化終了を知らせる信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ、輝度成分に対する逆量子化逆離散余弦変換終了信号ｉｑｉｄｃｔ＿ｙ＿ｅｎｄ、色差成分に対する逆量子化逆離散余弦変換終了信号ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ、再構成フレーム貯蔵終了信号ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ 信号)を伝達する。
【００８５】
輝度成分に対する量子化係数エントロピー符号化開始信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ および色差成分に対する量子化係数エントロピー符号化開始信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅは可変長符号化のために量子化係数を外部メモリに書き込み、可変長符号化が実行されるように指示する信号である。
【００８６】
一方、可変長符号器が使用される場合、輝度成分に対する量子化係数エントロピー符号化開始信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅおよび色差成分に対する量子化係数エントロピー符号化開始信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅに応答して(外部メモリ書き込み動作なしに)可変長符号器は離散余弦変換量子化器を直接アクセスして(すなわち、量子化係数データメモリ(図２の２１３)をアクセスして)可変長符号化を実行する。
【００８７】
内部データメモリ読み出し制御回路１１０５はメモリプールの基準マクロブロック輝度データメモリから輝度成分データＣＹを、基準マクロブロック色差データメモリから色差成分データＣＣｂ／ＣＣｒを、動き補償された輝度成分データメモリから輝度成分データＭＹを、動き補償された色差成分データメモリから色差成分データＭＣｂ／ＭＣｒを読み出すための内部データメモリ制御信号を発生させる。フレームメモリ書き込み制御回路１１０９は再構成されたフレームをフレームメモリ(図２の２９１)に貯蔵することを制御する。
【００８８】
次に、図１２を参照すると、メモリプール１２００は現在フレームの輝度成分および色差成分を貯蔵する基準マクロブロックデータメモリ１２１１、以前フレームの輝度成分を貯蔵する探索領域データメモリ１２１３、動き補償された輝度および色差成分を貯蔵する動き補償されたデータメモリ１２１５、タスク制御回路１２０３、内部データメモリ読み出し／書き込み制御回路１２０５、フレームメモリ読み出し制御回路１２０９、相互連結網１２１７を含む。
【００８９】
タスク制御回路１２０３はタスクスケジュラーから実行しなければならないタスク命令(探索領域輝度成分書き込み開始信号ｐｙ＿ｗｒｉｔｅ、基準マクロブロック輝度成分書き込み開始信号ｃｙ＿ｗｒｉｔｅ、基準マクロブロック色差成分書き込み開始信号ｃｃｂｃｃｒ＿ｗｒｉｔｅ のようなタスク制御信号)を受けて、フレームメモリ読み出し制御回路１２０９を介して外部フレームメモリに貯蔵されたデータをアクセスして基準マクロブロック輝度および色差データメモリと探索領域データメモリとに貯蔵されるようにする。また、タスク制御回路１２０３はこのような各タスクの実行完了をタスクスケジュラーに知らせるタスク終了信号(探索領域輝度成分書き込み終了信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ、基準マクロブロック輝度成分書き込み終了信号ｃｙ＿ｗｒｉｔｅ＿ｅｎｄ、基準マクロブロック色差成分書き込み終了信号ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄのようなタスク制御信号)を伝達する。
【００９０】
内部データメモリ読み出し／書き込み回路１２０５は各データ処理単位(動き推定器、動き補償器、離散余弦変換量子化器ＤＣＴＱ)から内部データメモリ制御信号を受けて相互連結網１２１７を介して必要なデータすなわち、探索領域輝度データＰＹ、基準マクロブロック輝度成分データＣＹ、基準マクロブロック色差成分データＣＣｂ／ＣＣｒ、動き補償された輝度成分データＭＹ、動き補償された色差成分データＭＣｂ／ＭＣｒを各データ処理単位に提供する。
【００９１】
図１３は本発明によるビデオコーデックの全体動作を制御するタスクスケジュラーと各データ処理単位が取り交わすタスク開始信号、タスク終了信号などを概略的に図示する。タスクスケジュラー１３６１は制御レジスタ１３７１から一フレームの一番目の開始を知らせるｆｒａｍｅ＿ｓｔａｒｔ信号によって動作を開始する。制御レジスタ１３７１はモード設定信号、すなわち、符号化と複号化とを区別するｅｎｃｏｄｅｒ信号、インタモードとイントラモードとを決めるｉｎｔｅｒ信号を発生してタスクスケジュラー１３６１に提供してビデオコーデックの機能を設定する。ｅｎｃｏｄｅｒ信号が“１”である時、符号化であり、“０”である時、複号化を実行し、ｉｎｔｅｒ信号は“１”の場合がインタモード、“０”の場合はイントラモードを示す。またビデオ符号化はフレーム単位で処理することもでき、スライス単位で処理することもできる。スライス単位で処理する時は、決められたマクロブロックの数だけ符号化を実行するので、制御レジスタは次のスライスに対する動作を知らせるために動作開始信号ｏｐ＿ｓｔａｒｔを発生する。信号ｍｅｍ＿ｍｂｘ、ｍｅ＿ｍｂｘ、ｍｃ＿ｍｂｘ、ｄｃｔｑ＿ｍｂｘは各々のメモリプール１３４１、動き推定器１３２１、動き補償器１３３１及び離散余弦変換量子化器(ＤＣＴＱ)１３０１で現在処理されているマクロブロックの水平方向の位置(処理されるフレームでのマクロブロックの水平方向位置)を示す。ｍｅｍ＿ｍｂｘの場合、４個のマクロブロック単位で内部データメモリに貯蔵されるので、貯蔵が終了するごとにｍｅｍ＿ｍｂｘは４ずつ増加する。これに反して、ｍｅ＿ｍｂｘ、ｍｃ＿ｍｂｘ、ｄｃｔｑ＿ｍｂｘは各々の動きベクタ伝達、色差成分に対する動き補償終了、色差成分に対するＤＣＴＱタスクが終了するごとに１ずつ増加する。
【００９２】
一方、ＶＧＡ解像度を支援する場合、マクロブロックの水平方向位置は６ビットに表示することができる。また、水平方向のマクロブロックを４個のマクロブロック単位で区分する時、最後に残るマクロブロックの数は０、１、２、３のうちのいずれかになる。したがって、残っているマクロブロックの数を知らせるための信号がｈｏｒｉｚｏｎｔａｌ＿ｅｎｄである。ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ信号が発生した後には、残っているマクロブロックの数だけのマクロブロックがメモリプールのデータメモリに貯蔵される。この場合、水平方向の位置を示すビットのうちの最後の二つのビットから残っているマクロブロックの数が分かる。
【００９３】
図１３に示した残りの信号はタスクスケジュラー１３６１から各データ処理単位１３２１、１３３１、１３０１およびメモリプール１３４１にタスクの開始を知らせるタスク開始信号とそれに対応するデータ処理単位１３２１、１３３１、１３０１およびメモリプール１３４１の動作の完了を示すタスク終了信号とである。
【００９４】
まず、メモリプール１３４１とタスクスケジュラー１３６１との間に取り交わす信号対をよく見る。信号ｐｙ＿ｗｒｉｔｅはタスクスケジュラー１３６１が発生する信号として内部データメモリの探索領域データメモリＰＹ０〜ＰＹ９に書き込みを知らせる信号であり、信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄはメモリプール１３４１が発生する信号として書き込みが完了したことを示す信号である。信号ｃｙ＿ｗｒｉｔｅはタスクスケジュラー１３６１が発生する信号として基準マクロブロック輝度成分データＣＹ０〜ＣＹ７の書き込みを知らせる信号であり、信号ｃｙ＿ｗｒｉｔｅ＿ｅｎｄはメモリプール１３４１が発生する信号として書き込みが完了したことを知らせる信号である。同様に、信号ｃｃｂｃｃｒ＿ｗｒｉｔｅは基準マクロブロック色差成分データＣＣｂ０〜ＣＣｂ７、ＣＣｒ０〜ＣＣｒ７の書き込みを知らせる信号であり、信号ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄは書き込みが完了することを示す信号である。
【００９５】
次に、動き推定器１３２１とタスクスケジュラー１３６１との間に取り交わす信号対をよく見る。信号ｍｅ＿ｓｔａｒｔはタスクスケジュラー１３６１が発生する信号として動き推定器１３２１が動き推定を開始するように命令する信号であり、信号ｍｅ＿ｅｎｄは動き推定の完了をタスクスケジュラー１３６１に知らせる信号として動き推定器１３２１が発生する信号である。信号ｍｖ＿ｗｒｉｔｅは動き推定の結果である動きベクタを外部メモリに書き込むようにするタスクスケジュラー１３６１が発生する信号であり、信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄは動きベクタの書き込みが完了することを示す動き推定器１３２１が発生する信号である。
【００９６】
次に、動き補償器１３３１とタスクスケジュラー１３６１との間に取り交わす信号対に対してよく見る。信号ｍｃ＿ｙ＿ｓｔａｒｔは動き補償器１３３１が輝度成分に対する動き補償を開始するように知らせるタスクスケジュラー１３６１が発生する信号であり、信号ｍｃ＿ｃｂｃｒ＿ｓｔａｒｔは色差成分に対する動き補償をするように知らせるタスクスケジュラー１３６１が発生する信号であり、信号ｍｃ＿ｙ＿ｅｎｄとｍｃ＿ｃｂｃｒ＿ｅｎｄは各々の輝度と色差成分の動き補償が終了したことを示す動き補償器１３３１が発生する信号である。
【００９７】
次に、離散余弦変換量子化器(ＤＣＴＱ)１３０１とタスクスケジュラー１３６１との間に取り交わす信号対をよく見る。信号ｄｃｔｑ＿ｙ＿ｓｔａｒｔと信号ｄｃｔｑ＿ｃｂｃｒ＿ｓｔａｒｔとは複号化の場合、各々の輝度と色差成分とに対する離散余弦変換、量子化、逆量子化、逆離散余弦変換を実行するようにタスクスケジュラー１３６１が発生する信号であり、信号ｄｃｔｑ＿ｙ＿ｅｎｄと信号ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄとは各々の輝度と色差成分とに対する動作が完了したということをタスクスケジュラー１３６１に知らせる信号として離散余弦変換量子化器１３０１が発生する信号である。信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅと信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅとは量子化された結果である輝度と色差成分との量子化係数をエントロピー符号化するようにタスクスケジュラー１３６１が発生する信号であり、信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ＿ｅｎｄと信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄとはエントロピー符号化が完了することをタスクスケジュラー１３６１に知らせる離散余弦変換量子化器１３０１がタスクスケジュラー１３６１に知らせる信号である。可変長符号器を使用する場合、信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ信号と信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ信号とは可変長符号器に量子化係数データメモリに貯蔵された量子化係数に接近して可変長符号を実行するように指示する信号であり、信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ＿ｅｎｄと信号ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄとは離散余弦変換量子化器が可変長符号器によって可変長符号が終了したことをタスクスケジュラーに知らせる信号である。信号ｒｅｃｏｎ＿ｗｒｉｔｅは再構成されたフレームデータを貯蔵するように離散余弦変換量子化器１３０１に知らせる信号であり、完了すれば、離散余弦変換量子化器１３０１は信号ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ信号を発生してタスク終了をタスクスケジュラー１３０１に知らせる。
【００９８】
一方、複号化の時において、タスクスケジュラー１６６１は信号ｃｏｅｆ＿ｙ＿ｒｅａｄ信号と信号ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄとを発生して離散余弦変換量子化器１３０１に輝度と色差成分とに対する量子化係数を外部メモリ(または可変長複号器)から受け入れるように指示する信号であり、離散余弦変換量子化器１３０１は信号ｃｏｅｆ＿ｙ＿ｒｅａｄ＿ｅｎｄと信号ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ＿ｅｎｄ信号とを発生して、この動作の完了をタスクスケジュラー１３６１に知らせる。信号ｉｑｉｄｃｔ＿ｙ＿ｓｔａｒｔと信号 ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｓｔａｒｔとは輝度と色差成分とに対して逆量子化と逆離散余弦変換の動作を開始させる信号であり、信号ｉｑｉｄｃｔ＿ｙ＿ｅｎｄと信号ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｅｎｄはその動作が完了したことを知らせる信号である。
【００９９】
今まで説明したビデオコーデックのパイプライン動作をモード別にさらに詳細に示せば、以下の図１４Ａおよび図１４Ｂ、図１５Ａおよび図１５Ｂと同様である。図１４Ａおよび図１４Ｂは符号化／インタモードおよび符号化／イントラモード時のパイプラインを図示し、図１５Ａおよび図１５Ｂは複号化／インタモードおよび複花化／イントラモード時のパイプラインを図示する。
【０１００】
まず、図１４Ａを参照すると、符号化／インタモードで、フレームメモリから動き推定のための輝度成分データがメモリプールの探索領域データメモリおよび基準マクロブロックデータメモリに書き込まれる。フレームメモリからメモリプールの内部データメモリへのデータ貯蔵は探索領域データメモリ、基準マクロブロック輝度データメモリ、基準マクロブロック色差データメモリの順に繰り返して行われる。具体的に説明すれば、タスク０(Ｔ０)で探索領域データメモリのブロックＰＹ０〜ＰＹ６に６個の４８＊１６輝度ブロックが貯蔵される。この時、フレームメモリ(図２のフレームメモリ２９１参照)に対する二度のアクセスを通じて行われる。まず、フレームメモリがバースト８にアクセスされてメモリブロックＰＹ０〜ＰＹ１に輝度成分データが貯蔵され、続いてバースト１６にアクセスされてメモリブロックＰＹ２〜ＰＹ５に輝度成分データが貯蔵される(図５参照)。
【０１０１】
次に、タスク１(Ｔ１)でフレームメモリ(図２のフレームメモリ２８１参照)がバースト１６にアクセスされて４個の１６＊１６輝度成分データＣＹが基準マクロブロック輝度データメモリのブロックＣＹ０〜ＣＹ３に貯蔵される(図６Ａ参照)。
【０１０２】
基準マクロブロック輝度メモリに４個の輝度マクロブロックの貯蔵が完了すれば、動き推定器がマクロブロック１６＊１６単位で基準マクロブロック輝度メモリに貯蔵された４個の輝度ブロックＣＹ０〜ＣＹ３に対して動き推定タスクを開始する。すなわち、タスク２Ｔ２で、タスク０（Ｔ０）およびタスク１（Ｔ１）で準備された探索領域輝度データＰＹ０〜ＰＹ２および基準マクロ輝度データブロックＣＹ０を使用して動き推定器が動き推定タスクを開始する。また、タスク２(Ｔ２)でフレームメモリがバースト８にアクセスされて各々４個の８＊８ピクセル色差成分データＣＣｂおよびＣＣｒが基準マクロブロック色差データメモリのブロックＣＣｂ０〜ＣＣｂ３、ＣＣｒ０〜ＣＣｒ３に貯蔵される(図６ｂ参照)。ここで、タスク(Ｔ２)で動き推定が終了すれば、ｍｅｍ＿ｍｂｘは初期０から４に変わる。
【０１０３】
タスク２(Ｔ２)で輝度マクロブロックＣＹ０に対する動き推定が完了して動きベクタが生成されれば、タスク３(Ｔ３)で動きベクタが外部メモリに伝達され、動き補償器は輝度ブロックＰＹ０に対する動き補償を実行して動き補償された輝度ブロックＭＹ０が動き補償された輝度データメモリに貯蔵される。ここで、動きベクタの伝達が終了すれば、ｍｅ＿ｍｂｘは初期０から１に増加する。またタスク２(Ｔ２)でフレームメモリがバースト８にアクセスされて色差成分ＣＣｂ０〜ＣＣｂ３、ＣＣｒ０〜ＣＣｒ３が基準マクロブロック色差データメモリに貯蔵されれば、タスク８(Ｔ８)で(図面で三番目のＴ８)輝度マクロブロックＰＹ４に対する動き推定のために、タスク３(Ｔ３)でフレームメモリがバースト１６にアクセスされて４８＊１６ピクセルの大きさの４個の輝度ブロックＰＹ６〜ＰＹ９が探索領域データメモリに書き込まれ始め、タスク９(Ｔ９)(二番目のＴ９)でフレームメモリがバースト１６にアクセスされて１６＊１６ピクセルの大きさの４個の輝度ブロックＣＹ４〜ＣＹ７が基準マクロブロックデートメモリに書き込まれ始める(図５参照)。
【０１０４】
輝度ブロックＰＹ０に対する動き補償が完了して動きベクタの伝達が終了すれば、タスク４(Ｔ４)で８＊８ブロック単位で離散余弦変換量子化器ＤＣＴＱは差分輝度ブロックＣＹ０−ＰＹ０に対するＤＣＴＱタスク(離散余弦変換、量子化、逆量子化、逆離散余弦変換)を実行する。これと同時に、タスク４(Ｔ４)で色差ブロックに対する動き補償が実行され、輝度マクロブロックＣＹ１に対する動き推定が開始される。タスク４(Ｔ４)で色差成分に対する動き補償が終了すれば、ｍｃ＿ｍｂｘは初期０から１に増加する。
【０１０５】
輝度ブロックＣＹ０−ＭＹ０に対するＤＣＴＱタスクが完了すれば、タスク５(Ｔ５)およびタスク６(６)(一番目のＴ６)にかけて輝度成分ＣＯＥＦ Ｙ０に対する可変長符号化タスクが実行される。またタスク４(Ｔ４)で色差ブロックに対する動き補償が完了すれば、タスク(５)で色差成分に対するＤＣＴＱタスクが実行される。タスク５(Ｔ５)で輝度マクロブロックに対する動き推定が終了すれば、タスク６(Ｔ６)(一番目のＴ６)で輝度マクロブロックＰＹ１に対する動き補償が実行されて動き補償された輝度ブロックＭＹ１が動き補償された輝度データメモリに貯蔵される。
【０１０６】
タスク５(Ｔ５)で色差ブロックに対するＤＣＴＱタスクが終了すれば、タスク６(Ｔ６)(一番目のＴ６)で再構成フレーム書き込みタスクが実行され、そのタスク実行が完了した後、ｄｃｔｑ＿ｍｂｘは初期０から１に増加する。
【０１０７】
タスク６(Ｔ６)で輝度成分ＣＯＥＦ Ｙ０に対する可変長符号が終了すれば、タスク８(８)(一番目のＴ８)で色差成分に対する可変長符号が実行される。この時、色差成分に対する動き補償が動き補償器によって、輝度成分ＣＹ１−ＭＹ１に対するＤＣＴＱが離散余弦変換量子化器によって、輝度成分ＣＹ２に対する動き推定が動き補償器によって実行される。
【０１０８】
インタ符号化モードの場合、探索領域データはタスク０(Ｔ０)とタスク３(Ｔ３)〜タスク８(Ｔ８)との間Ｔ３、Ｔ４、Ｔ４、Ｔ６、Ｔ８、Ｔ９、Ｔ６、Ｔ８に、基準マクロブロックの輝度データはタスク１(Ｔ１)とタスク９(Ｔ９)との間、色差データはタスク２(Ｔ２)とタスク９(Ｔ９)との間に外部フレームメモリでアクセスされて貯蔵される。動き推定はタスク２(Ｔ２)、タスク４(Ｔ４)〜タスク５(Ｔ５)(Ｔ４、Ｔ５)とタスク８(Ｔ８)〜タスク９(Ｔ９)との間(Ｔ８、Ｔ９)に、動きベクタ伝達はタスク３(Ｔ３)とタスク６(Ｔ６)、動き補償の輝度成分はタスク３(Ｔ３)とタスク６(Ｔ６)との間に、動き補償の色差成分はタスク４(Ｔ４)とタスク８(Ｔ８)との間に、ＤＣＴＱ動作の輝度成分はタスク４(Ｔ４)とタスク８(Ｔ８)との間に、ＤＣＴＱの色差成分はタスク５(Ｔ５)とタスク９(Ｔ９)との間に、再構成されたフレームの貯蔵はタスク６(Ｔ６)で実行される。
【０１０９】
輝度成分に対する可変長符号化はタスク５(Ｔ５)〜タスク６(Ｔ６)(Ｔ５、Ｔ６)、タスク９(Ｔ９)〜タスク６(Ｔ６)(Ｔ９、Ｔ６)の間に実行され、色差成分に対する可変長符号化はタスク８(Ｔ８)で実行される。
【０１１０】
イントラ符号化の時のパイプライン動作を図１４Ｂに示す。イントラ符号化モードの場合は探索領域データのアクセス、動き推定器と動き補償器とが動作しないのでタスクＴ０とＴ３とを除いては、残りの動作はインタモードの場合と同一に動作する。
【０１１１】
本発明によるビデオコーデックが複号器として動作する場合のイントラ複号化、インタ複号化に対するパイプライン動作は図１５Ａおよび図１５Ｂに示すとおりである。
【０１１２】
図１５Ａを参照すると、インタ複号化モードはインタ符号化と比べて、動き推定を実行せず、基準マクロブロックに対する動作は発生しない。すなわち、インタ複号化モードは動き推定器が動作しないので、探索領域データはＴ０とＴ３〜Ｔ６(Ｔ３、Ｔ４、Ｔ５、Ｔ６、Ｔ７、Ｔ８、Ｔ９、Ｔ６、Ｔ７、Ｔ８、Ｔ９、Ｔ６)の間アクセスされ、動き補償の輝度成分はＴ３とＴ６、色差成分はＴ４とＴ７〜Ｔ８(Ｔ７、Ｔ８)、ＤＣＴＱの輝度成分はＴ４とＴ８、色差成分は１５とＴ９、再構成されたフレームの貯蔵はＴ６タスクの間に実行される。
【０１１３】
図１５Ｂを参照すると、イントラ複号化モードはインタ複号化モードと比べて、動き補償を実行しないことを除いては同一である。
【０１１４】
図１６Ａ乃至図１６Ｄは図１４Ａおよび図１４Ｂ、図１５Ａおよび図１５Ｃの各モード別のパイプライン動作でタスク流れを概略的に図式化したタスク流れ図である。
【０１１５】
図１６Ａ乃至図１６Ｄは図１４Ａおよび図１４Ｂ、そして図１５Ａおよび図１５Ｂの各モード別パイプライン動作でのタスク流れを要約して図示する。図１６Ａはインタ符号化モード時のタスク流れを、図１６Ｂはイントラ符号化モード時のタスク流れを、図１６Ｃはインタ複号化モード時のタスク流れを、図１６Ｄはイントラ複号化モード時のタスク流れを示す。
【０１１６】
符号化と複号化の場合、各々Ｔ８とＴ６タスクで水平方向のすべてのマクロブロックの動作が完了すれば(ＭＸ＝ＭＸＬＡＳＴ、ここでＭＸは現在処理されているマクロブロックの水平方向の位置を示し、ＭＸＬＡＳＴは水平方向マクロブロックの最後のマクロブロックを示す)初期タスクＴ０に、または一フレームに対する動作が完了すればＭＢ ＥＮＤ遊休ＩＤＬＥタスクに遷移して実行される。
【０１１７】
図１４Ａおよび図１４Ｂ、そして図１５Ａおよび図１５Ｂに概略的に図示されたモード別のパイプライン動作に対するタスク制御信号によるタスクスケジュラーの各モード別の状態遷移を図１７乃至図２０に示した。図１７はインタ符号化モード、図１８はイントラ符号化モード、図１９はインタ複号化モード、図２０はイントラ複号化モード場合のタスクスケジュラーの状態遷移状態を示す。図１７乃至図２０で、ｍｘｌａｓｔは一フレームで水平方向で最後のマクロブロックの位置であり、Ｍ−１(Ｍはフレームで水平方向へのマクロブロック個数)の値を有し、ｍｘは現在ＤＣＴＱ処理されるマクロブロックの水平位置として、ｄｃｔｑ＿ｍｂｘのような位置を示し、ｍｙは現在処理されているマクロブロックの垂直方向の位置であり、０〜Ｎ−１(Ｎは垂直方向のマクロブロックの個数)の範囲を有する。ｏｐ＿ｕｎｉｔは全体マクロブロックの数、すなわちＭ×Ｎ値を有し、ｏｐ＿ｃｎｔは現在処理されたマクロブロックの数を示す。
【０１１８】
まず、図１７を参照すると(図１４Ａ、１６Ａも共に参照)、インタ符号化モードの場合、タスクスケジュラーは制御レジスタによるフレーム開始信号ｆｒａｍｅ＿ｓｔａｒｔによって一フレームに対する動作を開始し、メモリプール、動き推定器、動き補償器、離散余弦変換量子化器による各種タスク終了信号によってタスクを変換する(状態が遷移される)。すなわち、制御レジスタによるフレーム開始信号ｆｒａｍｅ＿ｓｔａｒｔによって遊休状態ＩＤＬＥからタスク０（Ｔ０）に遷移する。メモリプールが探索領域マクロブロック輝度データ書き込み完了信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄを発生すれば、タスクスケジュラーはタスク１（Ｔ１）タスクを転換する。また、基準マクロブロック輝度データ書き込みの完了信号ｃｙ＿ｗｒｉｔｅ＿ｅｎｄが発生すれば、タスク２(Ｔ２)に遷移する。基準マクロブロック色差データ書き込み完了信号ｃｃｂｒ＿ｗｒｉｔｅ＿ｅｎｄと動き推定完了信号ｍｅ＿ｅｎｄとが発生すれば、タスク３(Ｔ３)に遷移する。外部フレームメモリへの動きベクタの書き込みが終了し(ｍｖ＿ｗｒｉｔｅ＿ｅｎｄ)、輝度成分に対する動き補償が完了すれば(ｍｃ＿ｙ＿ｅｎｄ)タスク４(Ｔ４)に遷移する。色差データに対する動き補償が完了して(ｍｃ＿ｃｂｃｒ＿ｅｎｄ)輝度成分に対するＤＣＴＱタスクが完了すれば(ｄｃｔｑ＿ｙ＿ｅｎｄ)タスク５(Ｔ５)に遷移する。タスクＴ５からタスク Ｔ６への遷移の時に要求される信号は動き推定終了信号ｍｅ＿ｅｎｄと色差成分に対するＤＣＴＱ終了信号ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄでとある(図１４Ａ参照)。ここで、水平方向の最後のマクロブロック(この時、ｍｅ＿ｍｂｘ＝Ｍ−１)に対しては動き推定、動き補償、ＤＣＴＱが順次に実行される。したがって、最後のマクロブロックに対する動き推定が終わって動きベクタが伝達されれば、ｍｅ＿ｍｂｘ＝Ｍになる。この時、色差成分に対するＤＣＴＱが終わる時(ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ)動き推定終了信号は発生しないので、タスクＴ５からタスクＴ６に遷移されなくなる。したがって、最後のマクロブロックに対してはｍｅ＿ｅｎｄ信号に構わず、ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ信号だけでタスクＴ５からタスクＴ６に遷移するようにするために、常に真である論理式ｍｅ＿ｍｂｘ＝＝Ｍをｍｅ＿ｅｎｄと論理和演算した(ｍｅ＿ｅｎｄ｜｜ｍｅ＿ｍｂｘ＝＝Ｍ)。
【０１１９】
同様に、タスクＴ６からタスクＴ８への遷移の時に必要な信号は動きベクタ伝達終了信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄ、輝度ブロックに対する動き補償終了信号ｍｃ＿ｙ＿ｅｎｄ、再構成フレーム書き込み終了信号ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ、輝度成分に対する可変長符号化終了信号ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ＿ｅｎｄである(図１４Ａ参照)。ここでも水平方向の最後のマクロブロックに対する可変長符号化終了信号が発生する時、動きベクタ伝達終了信号および輝度成分に対する動き補償終了信号が発生しないので、ｍｖ＿ｗｒｉｔｅ＿ｅｎｄ｜｜ｍｅ＿ｍｂｘ＝＝Ｍ、ｍｃ＿ｙ＿ｅｎｄ｜｜ｍｃ＿ｍｂｘ＝Ｍを使用した。
【０１２０】
タスク８では、全体フレームに対する処理が完了せず、水平方向へのマクロブロックに対する処理が完了しなければ、Ｔ８→Ｔ９→Ｔ６→Ｔ８に循環しながら状態を遷移する。または現在処理されたマクロブロックの個数が全体マクロブロックの個数と同一であり(ｏｐ＿ｕｎｉｔ＝＝ｏｐ＿ｃｎｔ)、現在マクロブロックの水平方向の位置がＭ(水平方向のマクロブロックの個数)と同一であり(ｍｘ＝＝Ｍ)、現在マクロブロックの垂直方向のフレーム位置がフレームの垂直方向の最後のマクロブロックの個数と同一であり(ｎｘ＝＝Ｎ)、色差成分の量子化係数に対する可変長符号が完了すれば(ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ)、すなわち全体一フレームに対する処理が完了すれば、タスク８から遊休状態に遷移して新しいフレームに対する動作が開始されることを待つようになる。または、現在処理されたマクロブロックの個数が全体マクロブロックの個数と同一ではなく(ｏｐ＿ｕｎｉｔ!＝ｏｐ＿ｃｎｔ)(すなわち、全体フレームに対する処理が完了しなく)、色差成分に対する量子化係数の可変長符号が終わって(ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ)、そして水平方向の最後のマクロブロックが処理されたら(ｍｘ＝＝Ｍ)、タスク０に遷移し、次の水平ラインのマクロブロックに対する処理が進行される。
【０１２１】
一方、全体マクロブロックに対する処理が終わらず、また水平ラインのマクロブロックに対する処理が終わらなければ(ｏｐ＿ｕｎｉｔ!＝ｕｎｉｔ ＆＆ ｍｘ!Ｍ)、タスクＴ８からタスクＴ９に遷移する。この時、図１４Ａで一番目のタスクＴ８で、色差成分に対する動き補償が終わって(ｍｃ＿ｃｂｃｒ＿ｅｎｄ)、輝度成分に対するＤＣＴＱが終わって(ｄｃｔｑ＿ｙ＿ｅｎｄ)、色差成分の量子化係数に対する可変長符号が終われば(ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ)、タスクＴ９に遷移する。一方、二番目のタスクＴ８からＴ９への遷移の時には、ｍｃ＿ｃｂｃｒ＿ｅｎｄ、ｄｃｔｑ＿ｙ＿ｅｎｄ、ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ信号だけではなく、輝度マクロブロックＰＹに対する書き込み終了信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄも必要である。したがって、ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ信号も考慮しなければならない。一方、一番目のＴ８で色差成分に対する動き補償が終われば(ｍｃ＿ｃｂｃｒ＿ｅｎｄ)、ｍｘ[１：０]＝１状態(ｍｘの最下位二つのビットは‘０１')であり、二番目のＴ８で色差成分に対する動き補償が終われば(ｍｃ＿ｃｂｃｒ＿ｅｎｄ)、ｍｘ[１：０]＝２(ｍｘの最下位の二つのビットは‘１０’)状態である。したがって、すべての場合におけるタスク８からタスク９への遷移を保障するため、図示したように (((ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ)＆＆ｍｘ[１：０]＝＝２'ｂ１０)｜｜ｍｘ[１：０]!＝２’１０)｜｜ｍｅｍ＿ｍｂｘ＝＝Ｍ)が加えられた。
【０１２２】
一方、図１４Ａを参照すると、動き推定が終わって(ｍｅ＿ｅｎｄ)、色差成分に対するＤＣＴＱが終われば(ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ) 一番目のタスク９からタスク６に遷移する。一方、二番目のタスク９からタスク６に遷移するためには、ｍｅ＿ｅｎｄ、ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄだけではなく、基準マクロブロック輝度データに対する書き込み動作が完了しなければならない(ｃｙ＿ｗｒｉｔｅ＿ｅｎｄ)。そして、三番目のタスク９からタスク６に遷移するためには基準マクロブロック色差データに対する書き込み動作が完了しなければならない(ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄ)。一方、三番目のタスク９が終わればｍｘ[１：０]＝３になる。このような状況を考慮して、タスク９からタスク６に遷移するためには(ｍｅ＿ｅｎｄ｜｜ｍｅ＿ｍｂｘ＝＝Ｍ)＆＆ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ＆＆((((ｃｙ＿ｗｒｉｔｅ＿ｅｎｄ ＆＆ ｍｘ[１：０]＝＝２'ｂ１０) ｜｜ ｍｘ[１：０]!＝２’ｂ１０) ＆＆ ((ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄ ＆＆ ｍｘ[１：０]＝＝２'ｂ１１ ｜｜ ｍｘ[１：０] !＝ ２’ｂ１１) || ｍｅｍ＿ｍｂｘ ＝＝ Ｍ)条件を満足しなければならない。
【０１２３】
一方、スライス単位でマクロブロックが処理されることを支援するためにタスクＴ８から待機状態Ｗａｉｔに遷移することにした。すなわち、初めに設定したスライド単位処理が完了したが(ｏｐ＿ｕｎｉｔ＝＝ｏｐ＿ｃｎｔ)、全体フレームに対する処理が終わらなければ(ｍｘ!＝Ｍ｜｜ｍｙ!＝Ｎ)、タスクＴ８から待機状態Ｗａｉｔに遷移する。タスク８からタスク９への遷移で前に説明したように、すべてのタスク８から待機状態への遷移を担保にするため(((ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ) ＆＆ ｍｘ[１：０]＝＝２'ｂ１０) ｜｜ ｍｘ[１：０]!＝２’１０) ｜｜ ｍｅｍ＿ｍｂｘ＝＝Ｍ ｜｜ ｍｘ＝＝Ｍ)が考慮されなければならない。したがって、図示したように、タスク８から待機状態への遷移はｏｐ＿ｕｎｉｔ＝＝ｏｐ＿ｃｎｔ ＆＆ (ｍｘ!＝Ｍ ｜｜ ｍｙ!＝Ｎ)＆＆((ｍｃ＿ｃｂｃｒ＿ｅｎｄ ＆＆ ｄｃｔｑ＿ｙ＿ｅｎｄ) ｜｜ ｍｘ＝＝Ｍ) ＆＆ ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ ＆＆ (((ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ) ＆＆ ｍｘ[１：０]＝＝２'ｂ１０) ｜｜ ｍｘ[１：０]!＝２’１０) ｜｜ ｍｅｍ＿ｍｂｘ＝＝Ｍ ｜｜ ｍｘ＝＝Ｍ)条件を満足しなければならない。
【０１２４】
待機状態でスライス単位処理開始信号(ｏｐ＿ｓｔａｒｔ)が制御レジスタによって発生し、水平方向へのすべてのマクロブロックの処理が終われば(ｍｘ＝＝Ｍ)、タスク０に遷移する。一方、スライス単位処理開始信号(ｏｐ＿ｓｔａｒｔ)が制御レジスタによって発生し、水平方向へのすべてのマクロブロックに対する処理が終わらなければ(ｍｘ!＝Ｍ)、タスク９に遷移する。
【０１２５】
図１８はイントラ符号化モード時のタスクスケジュラーの状態遷移を図示する。図１８、図１４Ｂおよび図１６Ｂを参照すると、遊休状態で制御レジスタによるｆｒａｍｅ＿ｓｔａｒｔ信号によってタスク１に遷移し、ｃｙ＿ｗｒｉｔｅ＿ｅｎｄ 信号によってタスク２に遷移し、信号ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄタスク４に遷移し、信号ｄｃｔｑ＿ｙ＿ｅｎｄが発生すればタスク５に遷移し、信号ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄが発生すればタスク６に遷移する。タスク６で、基準マクロブロック色差データに対する書き込み動作を考慮して(((ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄ＆＆ｍｘ［１：０］＝＝２ｂ１１)｜｜ｍｘ［１：０］！＝２ｂ１１) ｜｜ｍｅｍ＿ｍｅｘ＝＝ｍ)条件を満足し、輝度成分に対する動き補償が終わって(ｍｃ＿ｙ＿ｅｎｄ ｜｜ｍｃ＿ｍｂｘ＝＝Ｍ)、輝度成分の量子化係数に対する可変長符号が終わって(ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ＿ｅｎｄ)、再構成フレーム貯蔵が終われば(ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)、タスク８に遷移する。タスク８で遊休状態およびタスク1に遷移する動作は図１７と同一である。また、待機状態でタスク９およびタスク１に遷移する動作も図１７と同一である。一方、動き補償が行なわれないので、図１７のタスク８から待機状態への遷移で色差成分に対する動き補償完了信号ｍｃ＿ｃｂｃｒ＿ｅｎｄが不要であり、信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄに代えて信号ｃｙ＿ｗｒｉｔｅ＿ｅｎｄが使用される。タスク８終了時点でｍｘ「１：０」＝３であるので、図１７のｍｘ[１：０]＝＝２'１０は図１８のイントラ符号化モードではｍｘ[１：０]＝＝２’ｂ１１に変わる。このようなことはタスク８からタスク９への遷移時にも同一に適用される。
【０１２６】
図１９は複号化イントラモード時のタスクスケジュラーの状態遷移を図示する。図１５Ａ、図１６Ｃおよび図１９を参照すると、遊休状態で信号ｆｒａｍｅ＿ｓｔａｒｔによってタスク０に遷移する。信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ(輝度成分に対する書き込み動作が完了すれば)によってタスク３に遷移し、信号ｍｃ＿ｙ＿ｅｎｄ(輝度成分に対する動き補償が完了して)とｃｏｅｆ＿ｙ＿ｒｅａｄ＿ｅｎｄ(外部メモリまたは可変長複号器から輝度量子化係数に対する読み出し動作が完了すれば)とが発生すれば、タスク４に遷移し、信号ｍｃ＿ｃｂｃｒ＿ｅｎｄ(色差信号に対する動き補償が完了して)、ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ＿ｅｎｄ(外部メモリまたは可変長複号器から色差量子化係数に対する読み出し動作が完了して)、ｉｑｉｄｃｔ＿ｙ＿ｅｎｄが発生すれば(輝度成分に対する逆量子化逆離散余弦変換が完了)タスク５に遷移し、信号ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｅｎｄが発生すれば(色差成分に対する逆量子化逆離散余弦変換が終了すれば)タスク６に遷移する。
【０１２７】
タスク６では、全体フレームに対する処理が完了せず、水平方向へのマクロブロックに対する処理が完了しなければ、Ｔ６→Ｔ７→Ｔ８→Ｔ９→６循環しながら状態を遷移する。または現在処理されたマクロブロックの個数が全体マクロブロックの個数と同一であり、(ｏｐ＿ｕｎｉｔ＝＝ｏｐ＿ｃｎｔ)、現在マクロブロックの水平方向の位置がＭ(水平方向のマクロブロックの個数)と同一であり(ｍｘ＝＝Ｍ)、現在マクロブロックの垂直方向のフレーム位置がフレームの垂直方向の最後のマクロブロックの個数と同一であり(ｍｙ＝＝Ｎ)、再構成フレーム貯蔵が終われば(ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)、すなわち全体一フレームに対する処理が完了すれば、タスク８で遊休状態ＩＤＬＥに遷移して新しいフレームに対する動作が開始されることを待つようになる。または、現在処理されたマクロブロックの個数が全体マクロブロックの個数と同一ではなく(ｏｐ＿ｕｎｉｔ!＝ｏｐ＿ｃｎｔ)(すなわち、全体フレームに対する処理が完了しなく)、水平方向の最後のマクロブロックが処理され(ｍｘ＝＝Ｍ)、再構成フレーム貯蔵が終われば(ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)、すなわち、水平方向にすべてのマクロブロックに対する処理が終われば、タスク０に遷移して次の水平ラインのマクロブロックに対する処理が実行される。
【０１２８】
一方、全体マクロブロックに対する処理が終わらず、また水平ラインのマクロブロックに対する処理が終わらず(ｏｐ＿ｕｎｉｔ!＝ｕｎｉｔ ＆＆ ｍｘ!Ｍ)、輝度成分に対する動き補償が終わって(ｍｃ＿ｙ＿ｅｎｄ)、再構成フレーム貯蔵が終われば(ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)、タスクＴ６からタスクＴ７に遷移する。タスク７で外部メモリから輝度成分の量子化係数に対する読み出しが終われば、タスク８に遷移する。タスク８で、色差成分に対する動き補償が終了して(ｍｃ＿ｃｂｃｒ＿ｅｎｄ)、外部メモリから色差成分の量子化係数に対する読み出しが終了して(ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ＿ｅｎｄ)、色差成分に対する逆量子化および逆離散余弦変換が終了すれば(ｉｑｉｄｃｔ＿ｙ＿ｅｎｄ)、タスク９に遷移する。
【０１２９】
すべてのタスク９からタスク６への遷移の時には色差成分に対する逆量子化および逆離散余弦変換終了(ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｅｎｄ)が必要であるだけではなく、場合によっては、タスク９からタスク６への遷移のために輝度成分書き込み終了(ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ)が必要な場合もある。また、二番目のタスク９が終わる時点でｍｘ[１：３]＝３(ｍｘの最下位の二つのビットが‘１１’)状態である、したがって、すべてのタスク９からタスク６への遷移を保障するために図示したように、ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｅｎｄ ＆＆ (((ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ ＆＆ ｍｘ[１：０]＝＝２‘ｂ１１ ｜｜ ｍｘ[１：０]!＝２’ｂ１１ ｜｜ ｍｅｍ＿ｍｂｘ＝＝Ｍ) 条件を満足しなければならない。
【０１３０】
一方、スライス単位でマクロブロックが処理されることを支援するためにタスクＴ６から待機状態Ｗａｉｔに遷移するようにした。すなわち、初めに設定したスライド単位処理が完了したが(ｏｐ＿ｕｎｉｔ＝＝ｏｐ＿ｃｎｔ)、全体フレームに対する処理が終わらず(ｍｘ!＝Ｍ｜｜ｎｘ!＝Ｎ)、再構成フレーム書き込みが終わって(ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)、水平ラインの最後のマクロブロックを考慮した輝度成分に対する動き補償が終われば(ｍｃ＿ｙ＿ｅｎｄ｜｜ｍｘ＝＝Ｍ)、タスクＴ６から待機状態Ｗａｉｔに遷移する。
【０１３１】
待機状態でスライス単位処理開始信号ｏｐ＿ｓｔａｒｔが制御レジスタによって発生し、水平方向へのすべてのマクロブロックの処理が終われば(ｍｘ＝＝Ｍ)、タスク０に遷移する。一方、スライス単位処理開始信号ｏｐ＿ｓｔａｒｔが制御レジスタによって発生して水平方向へのすべてのマクロブロックに対する処理が終わらなければ(ｍｘ!＝Ｍ)、タスク７に遷移する。
【０１３２】
図２０は複号化イントラモードの時のタスクスケジュラーに対する状態遷移を図示する。
【０１３３】
図２０、図１５Ｂ、および図１６Ｄを参照して、遊休状態ＩＤＬＥで制御レジスタによるｆｒａｍｅ＿ｓｔａｒｔ信号によってタスク３に遷移する。タスク３でｃｏｅｆ＿ｙ＿ｅｎｄ 信号によってタスク４に遷移し、ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ＿ｅｎｄおよびｉｑｉｄｃｔ＿ｙ＿ｅｎｄによってタスク５に遷移し、ｉｑｉｄｃ＿ｃｂｃｒ＿ｅｎｄによってタスク６に遷移する。
【０１３４】
複号化イントラモードの場合、動き補償が実行されない。したがって、タスク６で待機状態、遊休状態、タスク７への遷移は輝度成分に対する動き補償ｍｃ＿ｙ＿ｅｎｄがないことを除いては図１９の複号化インタモード時と同一である。
【０１３５】
一方、図１３に示したタスクスケジュラーが生成するタスク制御信号を各データ処理単位によってタスク別に要約すれば、図２１乃至図２４と同様であり、このようなタスク制御信号によるメモリプール、動き推定器、動き補償器、離散余弦変換量子化器の状態遷移は図２５乃至図２８に示したとおりである。
【０１３６】
図２１はメモリプール、図２２は動き推定器、図２３は動き補償器、図２４は離散余弦変換量子化器ＤＣＴＱのためのタスク制御信号の発生を示した。図２１で、ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ信号は水平方向に残っているマクロブロックの個数が三つの以下である場合、これを知らせるためのものである。例えば、ＶＧＡ解像度を支援する場合、マクロブロックの水平方向位置は６ビットで構成される。また、水平方向のマクロブロックを４個のマクロブロック単位で区分する時、最後に残るマクロブロックの数は０、１、２、３のうちの一つの場合になる。すなわち、ｍｅｍ＿ｍｂｘの上位４ビット[５、２]がｍｘｌａｓｔの上位４ビットと同一であれば(すなわち、一水平ラインで残っているマクロブロックの数が０〜３個であれば)、ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ 信号が発生する。この時、ｍｘは‘１１１１００’、‘１１１１０１’、‘１１１１１０’、または‘１１１１１１’ 値のうちのいずれか一つを有するであろう。ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ信号が発生した後には残っているマクロブロック数だけデータメモリに貯蔵される。また、水平領域のすべてのマクロブロックに対する処理が終わるか(ｍｘ＝＝Ｍ)、全体マクロブロックに対する処理が終われば(ｏｐ＿ｕｎｉｔ＝＝ｏｐ＿ｃｎｔ)、またｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ信号が消滅して次の水平ライン、または次のフレームの一番目のラインのマクロブロックに対するメモリアクセスが行なわれるようにする。
【０１３７】
一方、符号化インタモードにおいて、タスク６で、ｍｘの最下位の二つのビットが‘11’の場合、ｐｙ＿ｗｒｉｔｅ ｅｎａｂｌｅを発生して以前フレームの輝度ブロックＰＹに対するメモリ書き込みが起きるようにする。また、符号化インタモードにおいて、タスク９で、ｍｘの最下位の二つのビットが‘１１’の場合、ｃｃｂｃｃｒ＿ｗｒｉｔｅ ｅｎａｂｌｅを発生して現在フレームの色差ブロックＣＣｂ、ＣＣｒに対するメモリ書き込みが起きるようにする。また、タスク９でｍｘの最下位の二つのビットが‘１０'の場合、ｃｙ＿ｗｒｉｔｅ ｅｎａｂｌｅを発生して輝度ブロックＣＹに対するメモリ書き込みが起きるようにする。
【０１３８】
符号化イントラモードの場合、動き推定が起きないのでｐｙ＿ｗｒｉｔｅ＿ｅｎａｂｌｅ信号の発生はなく、現在フレームの輝度ブロックＣＹおよび色差ブロックＣＣｂ、ＣＣｒに対するメモリ書き込みを指示する信号ｃｙ＿ｗｒｉｔｅ ｅｎａｂｌｅ、ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎａｂｌｅ信号が発生する。タスク９でｍｘの最下位の二つのビットが‘１１’の場合、ｃｃｂｃｃｒ＿ｗｒｉｔｅ ｅｎａｂｌｅを発生して現在フレームの色差ブロックＣＣｂ、ＣＣｒに対するメモリ書き込みが起きるようにし、ｍｘの最下位の二つのビットが‘１０'の場合、ｐｙ＿ｗｒｉｔｅ ｅｎａｂｌｅを発生して現在フレームの輝度ブロックＣＹに対するメモリ書き込みが起きるようにする。
【０１３９】
複号化インタモードの場合、ｐｙ＿ｗｒｉｔｅ ｅｎａｂｌｅ信号が発生する。タスク６でｍｘの最下位の二つのビットが‘１１'の場合、ｐｙ＿ｗｒｉｔｅ ｅｎａｂｌｅを発生して以前フレームの輝度ブロックＰＹに対するメモリ書き込みが起きるようにする。
【０１４０】
次に、図２２を参照すれば、タスクスケジュラーはｍｅ＿ｓｔａｒｔ ｅｎａｂｌｅ、ｍｖ＿ｓｔａｒｔ ｅｎａｂｌｅを発生してインタモードで動き推定器に動き推定および動きベクタ伝達タスクを実行するようにする。
【０１４１】
次に、図２３を参照すると、タスクスケジュラーはｍｃ＿ｓｔａｒｔ ｅｎａｂｌｅ、ｍｃ＿ｃｂｃｒ＿ｓｔａｒｔ ｅｎａｂｌｅを発生して動き補償器に輝度成分に対する動き補償および色差成分に対する動き補償を実行するようにする。
【０１４２】
次に、図２４を参照すると、タスクスケジュラーは符号化インタ／イントラモードの時にｄｃｔｑ＿ｙ＿ｓｔａｒｔ ｅｎａｌｂｌｅ、ｄｃｔｑ＿ｃｂｃｒ＿ｓｔａｒｔ ｅｎａｂｌｅ、ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ ｅｎａｌｂｅ、ｒｅｃｏｎ＿ｗｒｉｔｅ ｅｎａｂｌｅ、ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ ｅｎａｂｌｅ信号を発生して離散余弦変換量子化器に提供する。一方、複号化インタ／イントラモード時にはｃｏｅｆ＿ｙ＿ｒｅａｄ ｅｎａｂｌｅ、ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ ｅｎａｂｌｅ、ｉｑｉｄｃｔ＿ｙ＿ｓｔａｒｔ ｅｎａｂｌｅ、ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｓｔａｒｔ ｅｎａｂｌｅ、ｒｅｃｏｎ＿ｗｒｉｔｅ ｅｎａｂｌｅなどの信号を発生して離散余弦変換器に提供する。
【０１４３】
図２５はメモリプールの状態遷移を図示する。全体的に探索領域データメモリＰＹ、基準マクロブロック輝度成分データメモリＣＹ、基準マクロブロック色差成分データメモリＣＣｂ／ＣＣｒにフレームメモリから当該データをアクセスして貯蔵する機能で区分されており、タスクスケジュラーでタスク制御信号を受けて動作し、タスクスケジュラーに各々の実行が完了したことを知らせる。タスクスケジュラーからタスク開始信号、例えば、ｐｙ＿ｗｒｉｔｅ、ｃｙ＿ｗｒｉｔｅ、ｃｃｂｃｃｒ＿ｗｒｉｔｅなどによってフレームメモリをアクセスする状態になり、アクセスが終われば、それに相応するタスク終了信号ｐｙ＿ｗｒｉｔｅ＿ｅｎｄ、ｃｙ＿ｗｒｉｔｅ＿ｅｎｄ、ｃｃｂｃｃｒ＿ｗｒｉｔｅ＿ｅｎｄを発生して待機状態になる。
【０１４４】
メモリプールはタスクスケジュラーからタスク開始信号を受け、そこに相応するタスクを実行してタスク開始信号によってタスクを転換する。探索領域データメモリＰＹの場合、遊休状態ＩＤＬＥで符号化モードの時には探索領域データメモリ書き込みを指示する信号ｐｙ＿ｗｒｉｔｅによって、初めにはバースト８にアクセスされ、以後からはバースト１６にアクセスされる（〜ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ）。バースト１６にアクセスしていて、水平方向に残っているマクロブロックが３個である場合(ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ ＆＆ ｍｘｌａｓｔ[１：０]＝＝２‘ｂ１１))ペディング領域を考慮してバースト１６にアクセスされる。一方、水平方向に残っているマクロブロックの数が０であれば(ｍｘｌａｓｔ[１：０]＝＝２’ｂ００)、ペディング領域を考慮してバースト４にアクセスされ、二つ、または一つが残っていれば(ｍｘｌａｓｔ[１：０]＝＝２‘ｂ０１｜｜２’ｂ１０)ペディング領域を考慮してまずバースト８にアクセスされ、続いてバースト ４にアクセスが行なわれる。
【０１４５】
待機状態でタスクスケジュラーから信号ｃｙ＿ｗｒｉｔｅを受ければ、外部フレームメモリから輝度成分が基準マクロ輝度データメモリに貯蔵される。基準マクロブロック輝度データはバースト１６にアクセスされる(〜ｈｏｒｉｚｏｎｔａｌ)。バースト１６に続いてアクセスされて、残っている水平方向のマクロブロックが三つの以下になればｈｏｒｉｚｏｎｔａｌ信号が発生する。この時、水平方向に残っているマクロブロックが３個である場合(ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ ＆＆ ｍｘｌａｓｔ[１：０]＝＝２‘ｂ１１))、 ペディング領域を考慮してバースト１６にアクセスされる。一方、水平方向に残っているマクロブロックの数が０であれば(ｍｘｌａｓｔ[１：０]＝＝２’ｂ００)、ペディング領域を考慮してバースト４にアクセスされ、１または２であれば(ｍｘｌａｓｔ[１：０]＝＝２‘ｂ０１｜｜２’ｂ１０))、ペディング領域を考慮してまずバースト８にアクセスされ、続いてバースト４にアクセスされる。
【０１４６】
待機状態でタスクスケジュラーから信号ｃｃｂｃｃｒ＿ｗｒｉｔｅが発生すれば、フレームメモリから基準マクロ色差データメモリに色差成分が貯蔵される。色差成分は初めにはバースト８にアクセスされる(〜ｈｏｒｉｚｏｎｔａｌ)。バースト８にアクセスが繰り返されて残っている水平方向へのマクロブロックが３個以下になればｈｏｒｉｚｏｎｔａｌ信号が発生する。この時、水平方向に残っているマクロブロックが３個である場合(ｈｏｒｉｚｏｎｔａｌ＿ｅｎｄ ＆＆ ｍｘｌａｓｔ[１：０]＝＝２‘ｂ１１))、ペディング領域を考慮してバースト８にアクセスされる。一方、水平方向に残っているマクロブロックの数が０であれば(ｍｘｌａｓｔ[１：０]＝＝２’ｂ００)、ペディング領域を考慮してバースト２に(シングルモード)アクセスされ、１または２であれば(ｍｘｌａｓｔ[１：０]＝＝２‘ｂ０１｜｜２’ｂ１０))ペディング領域を考慮してまずバースト４にアクセスされ、続いてバースト２にアクセスされる。
【０１４７】
図２６乃至図２８は各々動き推定器、動き補償器と離散余弦変換量子化器ＤＣＴＱの状態遷移を示す。図２６を参照すると、動き推定器は遊休状態ＩＤＬＥでタスクスケジュラーから受けた動き推定開始信号ｍｅ＿ｓｔａｒｔによって動き推定を実行する状態ＭＥ ｏｐになり、動き推定終了信号ｍｅ＿ｅｎｄを発生して待機状態Ｗａｉｔになる。待機状態Ｗａｉｔで動きベクタ書き込み開始信号(ｍｖ＿ｗｒｉｔｅ)を受けて動きベクタを外部メモリに書き込む動作を実行する状態ＭＶ ｗｒｉｔｅになり、その動作が終了すれば、動きベクタ書き込み終了信号ｍｖ＿ｗｒｉｔｅ＿ｅｎｄを生成して遊休状態ＩＤＬＥになる。
【０１４８】
図２７を参照すると、動き補償器はパイプライン動作を効率的にするために輝度と色差成分とに対して動き補償を区分して実行する。遊休状態でｍｃ＿ｙ＿ｓｔａｒｔ信号によって輝度成分に対して動き補償を実行し、ｍｃ＿ｙ＿ｅｎｄ信号を発生して待機状態になる。待機状態でｍｃ＿ｃｂｃｒ＿ｓｔａｒｔ信号によって色差成分に対する動き補償を実行する状態ＭＣ Ｃｂ／Ｃｒ ｏｐになり、ｍｃ＿ｃｂｃｒ＿ｅｎｄ信号によって遊休状態になる。
【０１４９】
図２８を参照すれば、離散余弦変換量子化器ＤＣＴＱの状態は遊休状態ＩＤＬＥ、輝度成分に対する離散余弦変換量子化を実行する状態ＤＣＴＱ Ｙ、輝度成分に対する量子化係数を外部メモリに貯蔵する状態ＣＯＥＦ Ｙ Ｗｒｉｔｅ、色差成分に対する離散余弦変換量子化を実行する状態ＤＣＴＱ Ｃｂ／Ｃｒ、色差成分に対する量子化係数を外部メモリに貯蔵する状態ＣＯＥＦ Ｃｂ／Ｃｒ Ｗｒｉｔｅ、再構成フレームを貯蔵する状態ｒｅｃｏｎ Ｗｒｉｔｅ、外部メモリから量子化係数を読み出す状態ＣＯＥＦ Ｙ Ｒｅａｄ、ＣＯＥＦ Ｃｂ／Ｃｒ Ｒｅａｄ、逆量子化逆離散余弦変換を実行する状態ＩＱＩＤＣＴ Ｙ、 ＩＱＩＤＣＴ Ｃｂ／Ｃｒ、待機状態Ｗａｉｔを含む。各状態の間には待機状態Ｗａｉｔが存在し、各状態でタスク終了信号(符号化動作:ｄｃｔｑ＿ｅｎｄ、ｃｏｅｆ＿ｙ＿ｅｎｄ、ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ、ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ、ｃｏｅｆ＿ｃｂｃｒ＿ｗｒｉｔｅ＿ｅｎｄ、複号化動作:ｃｏｅｆ＿ｙ＿ｒｅａｄ＿ｅｎｄ、ｉｑｉｄｃｔ＿ｙ＿ｅｎｄ、ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ＿ｅｎｄ、ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｅｎｄ、 ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)によって待機状態に遷移し、待機状態でタスク開始信号(符号化動作:ｄｃｔｑ＿ｙ＿ｓｔａｒｔ、ｃｏｅｆ＿ｙ＿ｗｒｉｔｅ、ｄｃｔｑ＿ｃｂｃｒ＿ｓｔａｒｔ、ｒｅｃｏｎ＿ｗｒｉｔｅ、ｃｏｅｆ＿ｗｒｉｔｅ、複号化動作:ｃｏｅｆ＿ｙ＿ｒｅａｄ、ｉｑｉｄｃｔ＿ｙ＿ｓｔａｒｔ、ｃｏｅｆ＿ｃｂｃｒ＿ｒｅａｄ、ｉｑｉｄｃｔ＿ｃｂｃｒ＿ｓｔａｒｔ、ｒｅｃｏｎ＿ｗｒｉｔｅ)によって個々状態に遷移する。
【０１５０】
遊休状態でｄｃｔｑ＿ｙ＿ｓｔａｒｔ信号によって符号化動作が開始され、ｃｏｅｆ＿ｙ＿ｒｅａｄ信号によって複号化動作が開始される。符号化動作の場合、色差成分に対する符号化が終了し、水平方向のマクロブロックに対するすべての処理が終了すれば、遊休状態に遷移して次のラインのマクロブロックに対する処理を指示するｄｃｔｑ＿ｙ＿ｓｔａｒｔ信号を待つようになる。複号化動作の場合、再構成フレーム貯蔵が終われば(ｒｅｃｏｎ＿ｗｒｉｔｅ＿ｅｎｄ)遊休状態に遷移する。
【０１５１】
可変長符号器を使用する場合、ｄｃｔｑ＿ｙ＿ｅｎｄ信号が発生すれば輝度成分に対する量子化係数に対する可変長符号化が実行され、その後に、ｄｃｔｑ＿ｃｂｃｒ＿ｅｎｄ信号が発生されていれば、色差成分に対する量子化係数に対する可変長符号化が実行される。すなわち、ＤＣＴＱ Ｙ状態が終了すれば、すぐ可変長符号器によって輝度成分に対するＤＣＴＱタスク実行の結果(輝度成分に対する量子化係数)に対して可変長符号化が実行される。同様にＤＣＴＱ Ｃｂ／Ｃｒ状態が終了すれば、すぐ可変長符号器によって色差成分に対するＤＣＴＱタスク実行の結果(色差成分に対する量子化係数)に対して可変長符号化が実行される。
【０１５２】
本発明によるビデオコーデックの消費電力を最小化するために二つの方法を適用する。一番目の方法は符号化と複号化、インタとイントラモードの場合に動作しないデータ処理単位にクロックを供給しない全域電力管理(Ｇｌｏｂａｌ Ｐｏｗｅｒ Ｍａｎａｇｅｍｅｎｔ)を実行し、二番目の方法は各データ処理単位がタスク別にパイプライン動作を実行して各データ処理単位の実行時間は違うので、実行する間にだけクロックを供給する動的クロックゲーティング方法(Ｄｙｎａｍｉｃ Ｃｌｏｃｋ Ｇａｔｉｎｇ Ｍｅｔｈｏｄ)を使用する。各データ処理単位の機能実行はタスクスケジュラーが生成する開始信号と実行が終わることを知らせる完了信号との間の区間で動作をするので、図２９のように実行区間ｔ１〜ｔｎでだけクロックを供給するようにする。
【０１５３】
開始信号がｔ０時点で活性化されれば、システムクロックの下降エッジで(ｔ１で)クロック活性化信号が活性化される。完了信号がｔ(ｎ−１)時点で活性化されれば、次のシステムクロックの下降エッジｔｎでクロック活性化信号が不活性化される。したがって、ｔ１〜ｔ(ｎ)区間の間にだけ(すなわち、データ処理単位が動作を実行する期間の間にだけ)ゲーティングされたクロックが発生し、この区間でだけデータ処理単位が動作する。
【０１５４】
以上、本発明に対してその望ましい実施形態を説明した。本発明が属する技術分野で通常の知識を持つ者は本発明が本発明の本質的な特性から逸脱しない範囲で変形された形態に実現されることができることを理解することができるであろう。したがって、本開示の実施形態は限定的な観点ではなく、説明的な観点で考慮されなければならない。本発明の範囲は上述の説明ではなく、特許請求の範囲に示しており、それと同等の範囲内にあるすべての差異は本発明に含まれるものと解釈されなければならない。
【図面の簡単な説明】
【０１５５】
【図１】通常のビデオコーデックを概略的に図示するブロック図である。
【図２】メモリプールを具備した本発明の一実施形態によるビデオコーデックを図示するブロック図である。
【図３】メモリプールおよびタスクスケジュラーを具備した本発明の一実施形態によるビデオコーデックを図示するブロック図である。
【図４】図３のビデオコーデックの符号化モードの時のパイプライン動作を概略的に図示する図である。
【図５】一実施形態による図２および図３のメモリプールの探索領域データメモリの構成を図示する。
【図６】Ａ，Ｂは、一実施形態による図２および図３のメモリプールの基準マクロブロック輝度データメモリおよび基準マクロブロック色差データメモリの構成を図示する。
【図７】Ａ，Ｂは、一実施形態による図２および図３のメモリプールの動き補償された輝度および色差データメモリの構成を図示する。
【図８】内部データメモリおよびデータ処理単位の間の相互連結網を介して相互連結関係を図示するブロック図である。
【図９】図２および図３の動き推定器を概略的に図示するブロック図である。
【図１０】図２および図３の動き補償器を概略的に図示するブロック図である。
【図１１】図２および図３の離散余弦変換量子化器を概略的に図示するブロック図である。
【図１２】図２および図３のメモリプールを概略的に図示するブロック図である。
【図１３】タスクスケジュラーおよびデータ処理単位の間の取り交わす信号を概略的に図示する。
【図１４Ａ】符号化／インタモードおよび符号化／イントラモード時のパイプラインを図示しする。
【図１４Ｂ】符号化／インタモードおよび符号化／イントラモード時のパイプラインを図示しする。
【図１５】Ａ，Ｂは、複号化／インタモードおよび複花化／イントラモード時のパイプラインを図示する。
【図１６Ａ】図１４Ａおよび図１４Ｂ、図１５Ａおよび図１５Ｂの各モード別のパイプライン動作でタスク流れを概略的に図式化したタスク流れ図である。
【図１６Ｂ】図１４Ａおよび図１４Ｂ、図１５Ａおよび図１５Ｂの各モード別のパイプライン動作でタスク流れを概略的に図式化したタスク流れ図である。
【図１６Ｃ】図１４Ａおよび図１４Ｂ、図１５Ａおよび図１５Ｂの各モード別のパイプライン動作でタスク流れを概略的に図式化したタスク流れ図である。
【図１６Ｄ】図１４Ａおよび図１４Ｂ、図１５Ａおよび図１５Ｂの各モード別のパイプライン動作でタスク流れを概略的に図式化したタスク流れ図である。
【図１７】インタ符号化モードの時のタスクスケジュラーの状態遷移を図示する。
【図１８】イントラ符号化モードの時のタスクスケジュラーの状態遷移を図示する。
【図１９】インタ複号化モードの時のタスクスケジュラーの状態遷移を図示する。
【図２０】イントラ複号化モード場合のタスクスケジュラーの状態遷移を図示する。
【図２１Ａ】メモリプールのためのタスク制御信号の発生を図示する。
【図２１Ｂ】メモリプールのためのタスク制御信号の発生を図示する。
【図２２】動き推定器のためのタスク制御信号の発生を図示する。
【図２３】動き補償器のためのタスク制御信号の発生を図示する。
【図２４】離散余弦変換量子化器(ＤＣＴＱ)のためのタスク制御信号の発生を図示する。
【図２５】メモリプールの状態遷移を図示する。
【図２６】動き推定器の状態遷移を図示する。
【図２７】動き補償器の状態遷移を図示する。
【図２８】離散余弦変換量子化器の状態遷移を図示する。
【図２９】データ処理単位が動作する間にだけシステムクロックを提供する動的クロックゲーティング方法(Ｄｙｎａｍｉｃ Ｃｌｏｃｋ Ｇａｔｉｎｇ Ｍｅｔｈｏｄ)を図示する。
【図１】
2005198289.tif 000003
【図２】
2005198289.tif 000004
【図３】
2005198289.tif 000005
【図４】
2005198289.tif 000006
【図５】
2005198289.tif 000007
【図６】
2005198289.tif 000008
【図７】
2005198289.tif 000009
【図８】
2005198289.tif 000010
【図９】
2005198289.tif 000011
【図１０】
2005198289.tif 000012
【図１１】
2005198289.tif 000013
【図１２】
2005198289.tif 000014
【図１３】
2005198289.tif 000015
【図１４Ａ】
2005198289.tif 000016
【図１４Ｂ】
2005198289.tif 000017
【図１５】
2005198289.tif 000018
【図１６Ａ】
2005198289.tif 000019
【図１６Ｂ】
2005198289.tif 000020
【図１６Ｃ】
2005198289.tif 000021
【図１６Ｄ】
2005198289.tif 000022
【図１７】
2005198289.tif 000023
【図１８】
2005198289.tif 000024
【図１９】
2005198289.tif 000025
【図２０】
2005198289.tif 000026
【図２１Ａ】
2005198289.tif 000027
【図２１Ｂ】
2005198289.tif 000028
【図２２】
2005198289.tif 000029
【図２３】
2005198289.tif 000030
【図２４】
2005198289.tif 000031
【図２５】
2005198289.tif 000032
【図２６】
2005198289.tif 000033
【図２７】
2005198289.tif 000034
【図２８】
2005198289.tif 000035
【図２９】
2005198289.tif 000036