(57)【要約】ビットストリームで運ばれた圧縮フレームのストリームを受信するトランスコーダにおけるレートコントローラは、フレームのストリームで運ばれたフレームのスライスを量子化および／または閾値化すべきかどうかを選択的に決定する。レートコントローラはフレームの入力サイズを決定し、少なくとも所望のサイズに少なくとも部分的に基づいて、フレームの出力サイズがおおよそ所望のサイズになるようにフレームを再量子化および／または閾値化する。
2006521771.tif 000002
【特許請求の範囲】
【請求項１】
圧縮フレームのデジタルストリームをトランスコードする方法であって、該方法は、
（ａ）それに含まれるコンテンツ情報と非コンテンツ情報とを有する圧縮ビデオフレームを受信する工程と、
（ｂ）フレームの総圧縮サイズ（ＮＴ）を決定する工程と、
（ｃ）圧縮フレームからシェイブする総ビット数（ＮＳ）を少なくともフレームの総圧縮サイズから決定する工程と、
（ｄ）フレームの所定の部分について複数の統計を決定する工程と、
（ｅ）所定部分についての統計の少なくとも１つに少なくとも部分的に基づいて、所定部分を再量子化すべきかどうかを決定する工程と、
（ｆ）所定部分を再量子化する決定に応答して、所定部分のレベルを再量子化する工程と、
（ｇ）所定部分についての統計の少なくとも１つに少なくとも部分的に基づいて、所定部分を閾値化すべきかどうかを決定する工程と、
（ｈ）所定部分を閾値化する決定に応答して、所定部分のレベルを閾値化する工程と、
（ｉ）所定部分を送信する工程と、
を含む方法。
【請求項２】
工程（ｄ）に先立って、
（ｊ）ビデオフレームをＤＣＴ領域に解凍する工程であって、ＤＣＴ領域では、ピクセル情報のブロックがレベルのブロックとして表される工程と、
（ｋ）フレームを複数部分に解析する工程と、
工程（ｉ）にさきだって、所定部分を再圧縮し、工程（ｉ）で送信された所定部分は再圧縮された所定部分である工程と、
をさらに含む、請求項１に記載の方法。
【請求項３】
所定部分についての複数の統計は、所定部分の圧縮されたコンテンツサイズ（Ｓｓｉｚｅ）を含む、請求項１に記載の方法。
【請求項４】
所定部分についての複数の統計は、所定部分のレベルを量子化するのに使用される量子化パラメータの平均を含む、請求項１に記載の方法。
【請求項５】
所定部分についての複数の統計は、所定部分のランの平均を含む、請求項１に記載の方法。
【請求項６】
工程（ｅ）に先立って、所定部分の最初の圧縮コンテンツサイズ（Ｓｉｎｔ）を決定する工程と、
工程（ｅ）に先立って、所定部分からシェイブする目標ビット数（Ｎ＿ｓｈａｖｅ）を決定する工程と、
工程（ｉ）に先立って、所定部分の最終圧縮コンテンツサイズ（Ｓｆｎｌ）を決定する工程と、
所定部分に対する縮小誤差（ｅ）を計算する工程であって、縮小誤差はシェイブする目標ビット数と、最終および最初の圧縮コンテンツサイズ間の差との差ｅ＝Ｎ＿ｓｈａｖｅ−（Ｓｆｎｌ−Ｓｉｎｔ）として定義される工程と、
をさらに含む、請求項１に記載の方法。
【請求項７】
縮小誤差を蓄積する工程であって、蓄積された縮小誤差はフレームの後続部分からシェイブするビット数を決定する際に使用される工程をさらに含む、請求項６に記載の方法。
【請求項８】
フレームにおける部分数はＮｐｏｒｔｉｏｎｓであり、所定部分は工程（ｅ）、（ｆ）、（ｇ）および（ｈ）に従って処理されるＮｐｏｒｔｉｏｎｓのうちのＫ番目であり、
フレームの総圧縮コンテンツサイズ（ＣＴ）を決定する工程と、
先行（Ｋ−１）部分に対する縮小誤差を蓄積する工程と、
をさらに含み、
Ｅが先行部分に対する蓄積された縮小誤差であるとして、所定部分からシェイブするビット数は以下の式で求められる、
【化１】
2006521771.tif 000030
請求項６に記載の方法。
【請求項９】
工程（ｆ）の後、および工程（ｇ）に先立って、所定部分の統計の少なくとも１つを再決定する工程であって、所定部分についての少なくとも１つの再決定された統計は工程（ｇ）で使用される工程をさらに含む、請求項１に記載の方法。
【請求項１０】
決定された統計は、所定部分の圧縮コンテンツサイズ（Ｓｓｉｚｅ）を含み、圧縮コンテンツサイズは所定部分が再量子化された後、再決定される、請求項９に記載の方法。
【請求項１１】
所定部分について決定された統計の１つに少なくとも基づいて、所定部分に対する再量子化パラメータを決定する工程をさらに含む、請求項１に記載の方法。
【請求項１２】
所定部分は第１の量子化パラメータ（Ｑ１）を使用してすでに量子化されており、再量子化パラメータ（Ｑ２）は第１の量子化パラメータの２倍、Ｑ２＝２Ｑ１である、請求項１１に記載の方法。
【請求項１３】
所定部分は第１の量子化パラメータ（Ｑ１）を使用してすでに量子化されており、再量子化パラメータ（Ｑ２）は第１の量子化パラメータの４倍、Ｑ２＝４Ｑ１である、請求項１１に記載の方法。
【請求項１４】
再量子化パラメータは、所定部分の圧縮コンテンツサイズがおよそ６０％から７０％縮小されるように選択される、請求項１１に記載の方法。
【請求項１５】
再量子化パラメータは、所定部分の圧縮コンテンツサイズが少なくとも７０％縮小されるように選択される、請求項１１に記載の方法。
【請求項１６】
所定部分はすでに量子化されたレベルの多重ブロックで構成され、工程（ｄ）は、すでに量子化されたレベルを量子化する際に使用される最大量子化パラメータ（Ｑ１ＭＡＸ）とすでに量子化されたレベルの平均（Ｌａｖｇ）の両方を決定する工程を含み、Ｑ１ＭＡＸおよびＬａｖｇは再量子化パラメータを決定する際に使用される、請求項１１に記載の方法。
【請求項１７】
ビデオフレームのピクチャタイプを決定する工程であって、ビデオフレームはＭＰＥＧフレームであり、ピクチャタイプ群はＩピクチャ、ＰピクチャおよびＢピクチャからなり、ビデオフレームのピクチャタイプは再量子化パラメータを決定する際に使用される工程をさらに含む、請求項１１に記載の方法。
【請求項１８】
工程（ｈ）に先立って、閾値化によりゼロに設定するレベルの目標数（ＮＴＨＲＥＳＨ）を決定する工程と、
所定幅および高さプロファイルを有する閾値関数より下のレベル数（ＣＮＴ）を決定する工程と、
目標数（ＮＴＨＲＥＳＨ）の所定範囲内である、閾値関数より下のレベル数（ＣＮＴ）に応答して、閾値関数より下のレベルの大きさをゼロに設定する工程と、
目標数（ＮＴＨＲＥＳＨ）の所定範囲外である、閾値関数より下のレベル数（ＣＮＴ）に応答して、閾値関数を調整する工程と、
をさらに含む、請求項１に記載の方法。
【請求項１９】
調整する工程は、閾値関数の高さプロファイルを変更する工程をさらに含む、請求項１８に記載の方法。
【請求項２０】
レベルは走査位置の順番に配置され、閾値関数は走査位置の第１の範囲に及び、調整する工程は、
閾値関数が走査位置の第２の範囲に及ぶように、閾値関数の相対位置をシフトする工程をさらに含む、請求項１８に記載の方法。
【請求項２１】
走査位置の第１の範囲に含まれる最小走査位置は、走査位置の第２の範囲に含まれる最小走査位置よりも小さい、請求項２０に記載の方法。
【請求項２２】
走査位置の第１の範囲に含まれる最小走査位置は、走査位置の第２の範囲に含まれる最小走査位置より大きい、請求項２０に記載の方法。
【請求項２３】
閾値関数は走査位置の第１の範囲に及び、所定部分はレベルの多重ブロックで構成され、調整する工程は、
所定部分のブロックを第１群のブロックと第２群のブロックとに分割する工程と、
第２の閾値関数を第２群に関連付ける工程であって、第２の閾値関数は走査位置の第２の範囲に及ぶ工程と、
（ｍ）第１の閾値関数より下のレベル数（ＣＮＴ１）を決定する工程と、
（ｎ）第２の閾値関数より下のレベル数（ＣＮＴ２）を決定する工程と、
（ｏ）目標数（ＮＴＨＲＥＳＨ）の所定範囲内であるＣＮＴ１とＣＮＴ２の合計に応答して、第１及び第２の閾値関数より下のレベルの大きさをゼロに設定する工程と、
（ｐ）目標数（ＮＴＨＲＥＳＨ）の所定範囲外であるＣＮＴ１とＣＮＴ２の合計に応答して、第１群から第２群に所定数のブロックを移す工程と、
目標数（ＮＴＨＲＥＳＨ）の所定範囲外であるＣＮＴ１とＣＮＴ２の合計に応答して、ＣＮＴ１とＣＮＴ２の合計が目標数（ＮＴＨＲＥＳＨ）の所定範囲内となるまで、工程（ｍ）（ｎ）（ｏ）および（ｐ）を繰り返す工程と、
をさらに含む、請求項１８に記載の方法。
【請求項２４】
フレームの所定部分はレベルの多重ブロックを有するフレームのスライスであり、レベルのブロックは並行して閾値化される、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（参照文献）
本願は、２００３年８月６日に出願された米国出願第１０／６３５，４０６号の一部継続出願であり、第１０／６３５，４０６号は、２００３年３月２６日に出願された米国出願第１０／３９７，６５８号の一部継続出願であり、第１０／３９７，６５８号は、２００２年３月２７日に出願された、第６０／３６８，０６８の番号を有する米国仮出願に対する優先権が主張されており、これら３つは本明細書において参照により全体に組み込まれる。
【０００２】
（技術分野）
本発明は、概ねブロードバンド通信システムに関し、より詳細にはブロードバンド通信システムにおける圧縮ストリームの情報のトランスコーディングに関する。
【背景技術】
【０００３】
（背景技術）
最新の加入者テレビシステム（ＳＴＳ）は、パケット化されたデジタルコンテンツをヘッドエンドから加入者へ送信する。デジタルコンテンツは、典型的にはＭＰＥＧなどの形式または当業者には既知の他のパケット形式で提供される。デジタルプログラムは優れた信頼性を提供するので、またデジタルプログラムは概ねアナログプログラムより狭い帯域幅を使用するように圧縮されるので、ＳＴＳの操作者は典型的にはデジタル形式のプログラムを提供することを好む。デジタルプログラムは一部には、量子化パラメータを使用して圧縮される。
【０００４】
ＳＴＳの操作者は、従来のトランスコーダを使用して量子化パラメータを変更することにより、所定のビットレートの圧縮デジタル信号を、より低いビットレートの圧縮デジタル信号に変換したがる場合も多い。このような目的で使用される従来のトランスコーダは、カスケード式デコーダおよびエンコーダからなる。この組み合わせはかなり複雑で高価である。ビデオ信号の特定ケースでは、他にもいくつかの側面を考慮しなければならない。コード化されたビデオ信号は、一連の符号化されたビデオフレームからなり、各ビデオフレームは二次元アレイのマクロブロックに細分化され、各マクロブロックはブロックにより構成される。ビデオフレームは、ピクセル領域である空間領域内にあり得、周波数領域または、空間領域におけるビデオフレームの離散コサイン変換（ＤＣＴ）の結果得られる変換領域で送信される。加えて、ビデオフレームは、ビデオフレームの奇数ラインによって形成される上部フィールドとビデオフレームの偶数ラインによって形成される下部フィールドの２つのフィールドに分離され得る。マクロブロックは、インターレース形式とインターレース解除形式の２つの異なる形式で伝えられ得る。インターレースビデオフレーム形式においては、マクロブロックは２つの交互のフィールドからのラインで構成され、マクロブロックの各ＤＣＴブロックは、その２つのフィールドからのデータにより形成される。インターレース解除形式では、マクロブロックは２つのフィールドからのラインで構成され、マクロブロックの各ＤＣＴブロックは２つのフィールドのうちの１つだけのデータにより形成される。ビデオフレームの各ＤＣＴブロックは走査されて符号化される。
【０００５】
従来のピクセル領域トランスコーダがビットストリームを再量子化し得る前に、トランスコーダのデコーダ部分がビットストリームをピクセル領域値に変換する。その後、トランスコーダのエンコーダ部分がピクセル領域値を再量子化して、ＤＣＴ領域値に変換しなおす。
【０００６】
従来のピクセル領域トランスコーダに加えて、ＤＣＴブロック領域において動作する従来のＤＣＴブロック領域トランスコーダが存在する。かかるトランスコーダはビットストリームを受信し、そのビットストリームを、ラン−レベルペアの１セットがＤＣＴブロックの圧縮表現であるラン−レベルペアのセットに変換し、その後、そのラン−レベルペアのセットをＤＣＴブロックに変換する。トランスコーダは、ＤＣＴブロック領域の情報を操作し、その後、ＤＣＴブロックを再変換してラン−レベルペアのセットに戻し、その後、圧縮ビットストリームに変換しなおす。ＤＣＴブロック領域トランスコーダに関するさらなる詳細に関しては、全体として参照により本明細書に組み込まれる“Ａ  Ｆｒｅｑｕｅｎｃｙ−Ｄｏｍａｉｎ  Ｔｒａｎｓｃｏｄｅｒ  Ｆｏｒ  Ｄｙｎａｍｉｃ  Ｂｉｔ−Ｒａｔｅ  Ｒｅｄｕｃｔｉｏｎ  ｏｆ  ＭＰＥＧ−２  Ｂｉｔ  Ｓｔｒｅａｍｓ”Ａｓｓｕｎｃａｏ  ｅｔ．ａｌ．，ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｖｉｄｅｏ  Ｔｅｃｈｎｏｌｏｇｙ，  Ｖｏｌ．  ８，  Ｉｓｓｕｅ  ８，  Ｄｅｃｅｍｂｅｒ  １９９８，  ｐａｇｅｓ  ９５３−９６７、および全体として参照により本明細書に組み込まれる“Ｍａｎｉｐｕｌａｔｉｏｎ  ａｎｄ  Ｃｏｍｐｏｓｉｔｉｎｇ  ｏｆ  ＭＣ−ＤＣＴ  Ｃｏｍｐｒｅｓｓｅｄ  Ｖｉｄｅｏ，  ”Ｃｈａｎｇ  ｅｔ  ａｌ，  ＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｎ  Ｓｅｌｅｃｔｅｄ  Ａｒｅａｓ  Ｉｎ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ，  Ｖｏｌ，  １３，  Ｎｏ．１，  １９９５，  ｐａｇｅｓ  １−１１で求められる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
縮小されたビットサイズが所望のサイズにおおよそ等しくなるようにストリームのビットサイズを縮小するトランスコーダに対する必要性および、コンテンツ減少の副作用を低減するようにコンテンツを減少させる方法に対する必要性がある。
【課題を解決するための手段】
【０００８】
（発明を実施するための最良の形態）
これより、いくつかの図を通して同一番号が同一要素を表し、本発明のいくつかの例示的実施形態が示される添付図面を参照して、本発明の好適な実施形態をより十分に説明する。しかしながら、本発明は多くの異なる形態において実施され得、本明細書に述べる実施形態に限定されて解釈されるべきではない。本明細書において述べる例は非限定例であり、他の可能な例の中の単に一例にすぎない。
【０００９】
フローチャートにおけるいかなるプロセスの説明またはブロックも、プロセスにおける特定の論理機能またはステップを実行するための１つ以上の実行可能指令を含むコードのモジュール、セグメントまたは部分を表すものとして理解されるべきであり、関連する機能性に依存して実質的に同時または逆の順番など、図示または記載の順番とは異なる順番で機能が実行され得る代替の実施は、本発明の好適な実施形態の範囲内に含まれ、これは本発明の技術分野のそれ相当の当業者には理解され得るであろう。
【００１０】
本発明の好適な実施形態を理解する１つの方法は、加入者テレビシステム（ＳＴＳ）のコンテキスト内において、好適な実施形態を見ることを含む。従って、本発明の好適な実施形態は、とりわけ、ＳＴＳによって運ばれるトランスポートストリームのサイズを減少させるシステムおよび方法を含む。
【００１１】
本発明の好適な実施形態は、加入者テレビシステム環境のコンテキストにおいて理解可能であるので、最初に加入者テレビシステム（ＳＴＳ）について説明して、その後、加入者テレビシステムのヘッドエンド内に含まれる構成要素の選択について説明をする。また、本発明の好適な実施形態を実行し、ヘッドエンドにおいてヘッドエンドに含まれるトランスコーダについて説明する。
【００１２】
しかしながら、本発明の好適な実施形態は多くの異なる形態で具現化され得、本明細書で述べる実施形態に限定されるものとして解釈されるべきではなく、これらの実施形態は、この開示が詳細で完全であるように、また当技術分野において通常の技術を有する者に対して本発明の範囲を十分に伝えるように提供されるものである。さらには、本明細書で与えられるすべての「例」は、非制限的であることが意図され、考えられるが示されてない多くの他の例の中の例示的リストとして提供される。
【００１３】
さらには、本発明の好適な実施形態（単数、複数）の論理は、ハードウェア、ソフトウェア、ファームウェアまたはその組み合わせにおいて実行可能であることに注意すべきである。好適な実施形態（単数、複数）においては、メモリに記憶され、かつ適切な指示実行システムにより実行されるソフトウェアまたはファームウェアで論理が実行される。ハードウェアにおいて実行される場合、代替の実施形態と同様に、論理は、当技術分野においてはすべて周知である次の技術のいずれか、またはその組み合わせで実行可能である。すなわち、データ信号上に論理機能を実行するための論理ゲートを有するディスクリート論理回路（単数、複数）、適切な組み合わせ論理ゲートを有する特定用途向け集積回路（ＡＳＩＣ）、プログラム可能ゲートアレイ（単数、複数）（ＰＧＡ）、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）などである。加えて、本発明の範囲は、ハードウェアまたはソフトウェア構成媒体にて具体化される論理において、本発明の好適な実施形態の機能性を具体化することを含む。
【００１４】
加入者テレビシステム
図１は、加入者テレビシステム（ＳＴＳ）１００の非制限例を描いたブロック図である。本例では、ＳＴＳ１００はヘッドエンド１０２、ネットワーク１０４および、加入者宅内装置１０５に位置付けられた多重デジタル加入者通信端末（ＤＳＣＴ）１０６を含む。
【００１５】
図１に示すＳＴＳ１００は単に実例として示すものであり、本発明の好適な実施形態の範囲になんら制限を課すものとして解釈されるべきではない。例えば、ＳＴＳ１００は図示される構成要素のいずれか１つを複数個にして特徴とすることが可能である、または個々の構成要素のいずれか１つに対して代替の実施形態、または上記で列挙されない他のさらなる構成要素で構成され得る。また、本発明の好適な実施形態の範囲内に含まれる加入者テレビシステムは、これに限定されないが、サテライトシステムなどの、物理的に構成された送信用ケーブルを利用しないシステムを含む。
【００１６】
加入者宅内装置１０５に位置付けられるＤＳＣＴ１０６は、とりわけＳＴＳ１００のヘッドエンド１０２と加入者間の双方向インタフェースを提供する。ＤＳＣＴ１０６は、いくつかある例の中で特に、テレビジョンセット（ＴＶ）１０７またはコンピュータモニターなどの表示装置上に表示するために信号を復号化して、さらに処理する。当業者は、代替実施形態において、まず信号を復号化してさらに処理するための機器が、これに限定されないが、とりわけコンピュータ、ＴＶ、モニター、またはＭＰＥＧデコーダを含む種々の機器において位置付け可能であることは理解するであろう。
【００１７】
少なくとも１つのコンテンツプロバイダー１０８は、これに限定されないが、ＭＰＥＧなどのプロトコルにフォーマットされたデジタルコンテンツをＳＴＳ１００に提供する。とりわけ、コンテンツプロバイダー１０８は「ライブ」または「録画された」プログラミングを提供するテレビ局であり得る。テレビ局はカメラ１１０およびエンコーダ１１２を含むことになる。エンコーダ１１２は、カメラ１１０からコンテンツを受信して、そのコンテンツを処理してＭＰＥＧフォーマットにして、その後コンテンツはＳＴＳ１００のヘッドエンド１０２に提供される。
【００１８】
ヘッドエンド１０２はコンテンツプロバイダー１０８からのプログラミング信号を受信し、下記で述べるメカニズムに従ってコンテンツプロバイダー１０８からのコンテンツを処理した後、ヘッドエンド１０２はプログラミング信号を加入者宅内装置１０５におけるＤＳＣＴ１０６に送信する。典型的には、ヘッドエンド１０２は従来のアナログ信号（これについては論じない）およびデジタル信号の両方の組み合わせを送信する。
【００１９】
１つの実施においては、デジタル信号はＭＰＥＧ形式で送信され、本発明の実施形態はその観点から論じられる。具体的には、本発明の実施形態はＭＰＥＧビデオフレームおよびビデオフィールドの観点から述べられる。但し、ＭＰＥＧビデオフレームおよびビデオフィールドを採用する本発明の実施形態を説明することは例示および目的を明確にするために過ぎず、本発明の範囲への制限ではない。本発明の範囲は、少なくとも量子化された情報のすべてのストリームに及ぶことが意図される。この開示の目的のために、１フレームの情報は、ビデオフレーム、上部ビデオフィールド、下部ビデオフィールドおよび他の所定のブロックの情報を含む。
【００２０】
図１に示すように、例としてのヘッドエンド１０２の選択された構成要素は、通信インターフェース１１４、デジタルネットワーク制御システム（ＤＮＣＳ）１１６、限定受信（ＣＡ）サーバ１１８、ビデオオンデマンド（ＶＯＤ）サーバ１２０、トランスポートストリーム送信器１２２、四位相偏移変調（ＱＰＳＫ）モデム１２４、ルータ１２６、ＶＯＤポンプ１２８およびトランスコーダ１３４を含み、これらはイーサネット（登録商標）１３０を介して接続される。例示的ヘッドエンド１０２が、とりわけ、さらなるサーバ、スイッチ、マルチプレクサ、トランスポートストリーム送信器などのさらなる構成要素を含むことが可能である、または図示された選択構成要素のいくつかを省略することが可能であることは、当技術分野において通常の技術を有する者により理解されるであろう。
【００２１】
とりわけ、ＤＮＣＳ１１６は、ネットワーク構成要素およびユーザに提供されるサービスのブロードキャストを管理、監視および制御する。ＤＮＣＳ１１６は他のモジュールの中で、とりわけ、支払い情報および調査データなどの目的で、加入者についての情報を含む加入者データベース１３２を含む。ＤＮＣＳ１１６はまた、限定受信サーバ１１８と通信して、ヘッドエンド１０２からＤＳＣＴ１０６へのコンテンツの安全な送信を提供する。
【００２２】
ＣＡサーバ１１８はＳＴＳ１００のサービスおよびプログラミングに対して、選択的にＤＳＣＴ１０６に「資格授与」を与える。言い換えると、とりわけ、ＣＡサーバ１１８は、ＳＴＳ１００のどのＤＳＣＴ１０６がサービスまたはプログラムの所定インスタンスにアクセスする資格があるかを決定して、その選択されたＤＳＣＴ１０６に、とりわけ、サービスの所定インスタンスにアクセスするのに必要なキーおよび権限を与える。加えて、ＣＡサーバ１１８は、各加入者が適切に請求されることができるように、ＤＮＣＳ１１６にＳＴＳ１００におけるＤＳＣＴ１０６のそれぞれの資格授与を知らせる。さらには、ＣＡサーバ１１８は、とりわけ、長期キー、ＤＳＣＴ１０６のパブリックキーおよびＣＡサーバ１１８用のプライベートキーを含むデータベース（図示せず）を含む。ＣＡサーバは、長期キー、パブリックおよびプライベートキーを使用して、ＤＳＣＴ１０６と安全に通信する。
【００２３】
ＣＡサーバ１１８はまた、暗号情報をトランスポートストリーム送信器１２２および選択されたＤＳＣＴ１０６に提供する。トランスポートストリーム送信器１２２は、暗号情報を採用して、プログラムのコンテンツを暗号化し、ネットワーク１０４を介して、とりわけ、変調されたプログラミングをＤＳＣＴ１１０に送信する。
【００２４】
ＱＰＳＫモデム１２４はヘッドエンド１０２とＤＳＣＴ１０６との間で帯域外ＩＰ（インターネットプロトコル）データグラムトラフィックを輸送する任務を担う。ＱＰＳＫモデム１２４により送受信されたデータは、ヘッドエンドルータ１２６によりルートされ得る。とりわけ、ヘッドエンドルータ１２６は、ＶＯＤサーバ１２０などの種々のサーバにアップストリームデータを配信するのに使用され得る。
【００２５】
トランスコーダ１３４はＭＰＥＧトランスポートパケットのストリームを運ぶ入力ビットストリーム１３６を受信して、出力ビットストリーム１３８を送信する。出力ビットストリーム１３８のビットサイズは、入力ビットストリーム１３６よりも小さい。トランスコーダ１３４は操作者入力を受信して、とりわけ、入力ビットストリーム１３６によって運ばれるプログラムのフレーム上にハイブリッド再量子化−閾値化スキームを適用するようになっている。ハイブリッド量子化−閾値化スキームはＤＣＴ領域で行われ、フレームのビットサイズが縮小されるように行われる。
【００２６】
ＭＰＥＧ圧縮
トランスコーダ１３４を詳細に説明する前に、ＭＰＥＧビデオ圧縮の簡単な説明を行う。ＭＰＥＧ圧縮およびＭＰＥＧについてのさらなる詳細は概ね、ＭＰＥＧ−１標準（ＩＳＯ／ＩＥＣ１１１７２）、ＭＰＥＧ−２標準（ＩＳＯ／ＩＥＣ１３８１８）およびＭＰＥＧ−４標準（ＩＳＯ／ＩＥＣ１４４９６）で求めることができ、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ  ｄｏｃｕｍｅｎｔ  ＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１  Ｎ（ＭＰＥＧ−１は１９９６年６月、ＭＰＥＧ−２は１９９６年７月、ＭＰＥＧ−４は１９９８年１０月）に詳細に説明され、これらは本明細書により参照として組み込まれる。
【００２７】
図２Ａおよび２Ｂは、一連のピクチャにおいて２つのピクチャ２０２Ａおよび２０２Ｂをそれぞれ示す。ＭＰＥＧ２は、１つのピクチャをマクロブロック２０４と呼ばれる１６´１６ピクセルのブロックに分割し、図２Ａおよび２Ｂでは１〜２５とされる。実際の高品質Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ（ＮＴＳＣ）フレームでは、およそ１３５０マクロブロックがある。各マクロブロック２０４は、ピクチャにおいて所定の位置を有する。例えば、「１」とされたマクロブロックは、各フレームの右下コーナーである。本明細書で述べるように、各マクロブロック２０４はさらに、本開示の目的でサブマクロブロックと称される多重８´８ブロックのピクセル情報に細分化される。マクロブロックの水平方向シーケンスはスライスと呼ばれ、スライスはピクチャの全幅または幅の一部分に亘って延び得る。
【００２８】
理論的には、ＭＰＥＧ２符号化ピクチャは、コンテンツ情報と非コンテンツ情報からなる。本開示の目的では、コンテンツ情報はマクロブロックにおけるピクセル値に対応する情報として定義され、非コンテンツ情報はピクチャを処理したり復号するのに必要なその他すべてに対応する。非コンテンツ情報は概ね、その例としては、これに限定されないが、ピクチャヘッダ、スライスヘッダおよびマクロブロックヘッダを含むヘッダで運ばれる。ヘッダは典型的には、ピクチャまたはその一部がどのように処理されており、ピクチャが復号化されビューされることができるかについての情報を運ぶ。非コンテンツ情報は、ピクチャの一部を量子化するのにエンコーダにより使用されていて、ピクチャを未量子化するのに使用されるピクチャの量子化パラメータ（Ｑ１）を含む。以下で詳細に説明するように、コンテンツ情報は概ね、サブマクロブロックに対応し、サブマクロブロックはピクセル領域、ＤＣＴ領域またはラン−レベル領域のいずれかで表されることができる。さまざまな領域については以下で説明される。
【００２９】
ピクチャ２Ａは、飛行機２０６Ａ、雲２０８および背景空（図示せず）を示す。飛行機２０６Ａははマクロブロック１、２、６および７内にあり、雲２０８はマクロブロック８、９、１３および１４内にあり、背景空はマクロブロック１〜２５のすべてにある。ピクチャ２０２Ｂは少し後の場面を示す。ピクチャ２０２Ｂでは、飛行機２０６Ｂは今度はマクロブロック１３、１４、１５および２０内にあり、第２の飛行機２１０がマクロブロック５のピクチャ２０２Ｂに入ってきている。
【００３０】
図３は予測ピクチャ３０２を示す。予測ピクチャ３０２は、マクロブロック１３、１４、１５および２０に飛行機２０６Ａと、マクロブロック８，９、１３および１４に雲２０８を含む。予測ピクチャ３０２はピクチャ２０２Ａに含まれる情報に基づく。具体的には、飛行機２０６Ａは、ピクチャ２０２Ａのマクロブロック１、２、６および７から予測画像３０２のマクロブロック１３、１４、１５および２０に変換され、雲２０８は同様に図２Ａから変換される。ピクチャ２０２Ａのマクロブロック１、２、６および７は図３において点線として示される。当然ながら、飛行機２０６Ａの方向付け、照明、陰および他の光学上の特徴は飛行機２０６Ｂの画像とは正確には一致しない。従って、予測画像３０２はピクチャ２０２Ｂの推定にすぎない。予測ピクチャ３０２と実際のピクチャ２０２Ｂとの相違を補うため、図４に示される残存ピクチャが生成される。残存ピクチャ４０２は、予測ピクチャ３０２と実際のピクチャ２０２Ｂとの相違である。例えば、飛行機２０６Ｂと２０６Ａとの相違は残存飛行機４０４として示される。残存飛行機４０４を飛行機２０６Ａに付加することにより飛行機２０６Ｂが生成される。
【００３１】
残存ピクチャ４０２のマクロブロック５は、フレーム内符号化されたマクロブロックの例である。第２の飛行機２１０は基準ピクチャ２０２Ａから予測できないので、その結果予測フレーム４０２には現れない。
【００３２】
ＭＰＥＧは時間的圧縮と空間的圧縮を使用してコンテンツ情報を圧縮する。時間圧縮は、ピクチャ２０２Ａなどの基準フレームからの情報を使用して、動きベクトルを使いながら予測フレーム４０２を生成することに関わる。基準ピクチャからのコンテンツを有する任意のマクロブロックは、それに関連付けられた少なくとも１つの動きベクトルを有し、動きベクトルはそのブロックのマクロブロックヘッダで運ばれる。動きベクトルは、コンテンツ情報が取り出される、基準フレームにおけるマクロブロックを識別する。
【００３３】
通常は、基準フレームからのマクロブロックはカレントフレームでの画像と正確に一致しない。例えば、図５は、マクロブロック５０２が４つのマクロブロック５０４（１）〜５０４（４）からの情報を受け取る一般的な状況を示す。基準マクロブロック５０４の各１つはマクロブロック５０２に変換されて、４つの基準マクロブロック５０４のそれぞれの一部分のみがマクロブロック５０２で使用されるようにオフセットされる。
【００３４】
ＭＰＥＧ−２は３つのタイプのピクチャ、Ｉピクチャ、ＢピクチャおよびＰピクチャを採用する。Ｉピクチャはフレーム内符号化される、すなわちそのビデオフレームからの空間的圧縮のみを使用して圧縮されるピクチャであり、これはそれらが他のいかなるビデオフレームも参照せずに解凍されることを意味する。ＢピクチャおよびＰピクチャはフレーム間符号化される、すなわちＩピクチャまたはＰピクチャなどの基準ピクチャからの情報を使用して圧縮され、これもまた空間的に圧縮されるピクチャである。Ｐピクチャは前の基準ピクチャからの情報を使用して、「予測される」ピクチャであり、Ｂピクチャは、前の基準ピクチャから、および後続の基準ピクチャからの情報を使用して「双方向に予測される」ピクチャである。実際には、ＢピクチャまたはＰピクチャは、厳密にはフレーム間符号化されたピクチャではなく、代わりにフレーム間符号化されたマクロブロックとフレーム内符号化されたマクロブロックとの組み合わせである。基準ピクチャから予測可能なマクロブロックはフレーム間符号化され、予測できないマクロブロックはフレーム内符号化される。各マクロブロックはそれに関連付けられたマクロブロックヘッダを有し、マクロブロックヘッダは、フレーム間符号化されているのかフレーム内符号化されているのか、マクロブロックを識別する。
【００３５】
表示順のビデオピクチャの典型的なシーケンスは、Ｉ（１）、Ｂ（２）、Ｂ（３）、Ｐ（４）、Ｂ（５），Ｂ（６）、Ｐ（７）、Ｂ（８）、Ｂ（９）、Ｐ（１０）、…Ｐ（Ｎ）、Ｉ（Ｎ＋１）である。ＰピクチャＰ（４）は、ＩピクチャＩ（１）からの情報を使用し、ＢピクチャＢ（２）およびＢ（３）は、ＩピクチャＩ（１）およびＰピクチャＰ（４）からの情報を使用し、ＰピクチャＰ（７）はＰピクチャＰ（４）からの情報を使用し、ＢピクチャＢ（５）およびＢ（６）はピクチャＰ（４）およびＰ（７）からの情報を使用する。Ｉ（１）およびＰ（Ｎ）との間（これを含む）のピクチャは一群のピクチャ（ＧＯＰ）として知られ、典型的にはその数は１２から１６（これを含む）である。ビデオピクチャは表示順には送信されない。代わりに、各フレーム間符号化されたピクチャはその基準ピクチャのすべてが送信された後で送信される。従って、ＧＯＰの送信順番は、Ｉ（１）、Ｐ（４），Ｂ（２）、Ｂ（３）、Ｐ（７）、Ｂ（５）、Ｂ（６）、Ｐ（１０）、Ｂ（８）、Ｂ（９）、・・・Ｐ（Ｎ）、Ｂ（Ｎ−２）、Ｂ（Ｎ−１）である。
【００３６】
テレビに表示するための典型的なピクチャでは、高品質Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ（ＮＴＳＣ）フレームはおよそ１３５０マクロブロックで構成される。一般的なＭＰＥＧ−２標準は、４：２：０および４：２：２を含む。４：２：０標準において、１６´１６マクロブロックは全部で６つのサブマクロブロック（８´８）、すなわち４つの８´８発光ブロックおよび、各軸を２分の１にダウンサンプリングすることにより生成される２つの８´８色差ブロックで表される。４：２：２標準においては、色度はダウンサンプリングされないので、２倍の色度情報がある。従って、４：２：２標準においては、１６´１６マクロブロックは、全部で８つのサブマクロブロックにより表される。マクロブロックのサブマクロブロックはすべて、一般的な動きベクトルにより基準ピクチャ（ＩピクチャまたはＰピクチャ）から時間的圧縮ピクチャ（ＰピクチャまたはＢピクチャ）へと進められる。
【００３７】
ＭＰＥＧ−２における空間的圧縮は、ピクセル領域からＤＣＴ領域としても知られる周波数領域へ変換するために二次元離散コサイン変換（ＤＣＴ）を使用した各サブマクロブロックの変換に基づく。エンコーダ１１２などのＭＰＥＧエンコーダがフレームを空間的に圧縮するステップが図６に示される。エンコーダ１１２はトランス６０２、量子化器６０４、スキャナ６０６、及び２進エンコーダ６０８を含む。トランス６０２は、離散コサイン変換を使用して、ピクチャのピクセル情報６１０の各サブマクロブロックをＤＣＴ領域サブマクロブロック６１２に変換する。ピクセル領域サブマクロブロック６１０は行列ｂとして書き込まれ、その要素はｂ（ｎ，ｍ）として与えられる。但し、ｎおよびｍは０から７（両者を含む）の範囲にある。ＤＣＴ領域サブマクロブロック６１２は行列Ｂとして書き込まれ、その要素はＢ（ｋ，ｊ）として与えられる。但しｋおよびｊは０から７（両者を含む）の範囲にある。トランス６０２は以下の式を使用して、ピクセル領域からＤＣＴ領域へ変換する。
【００３８】
【数１】
2006521771.tif 000003
但し、ｃ（０）＝
【００３９】
【数２】
2006521771.tif 000004
であり、ｎ＞０に対してｃ（ｎ）＝１である。
【００４０】
ゼロ周波数（ＤＣ）成分Ｂ（０，０）はＤＣＴ領域行列６１２の左上コーナーにあり、最も高い周波数に対する係数、Ｂ（７，７）はＤＣＴ領域行列６１２の右下コーナーにある。
【００４１】
人の目は低周波数よりも高周波数に反応しないので、ＤＣＴ係数は同等には処理されない。ゆえに、量子化器６０４は、量子化している間、ＤＣＴ係数のそれぞれに重み因子を適用する。量子化により、ＤＣＴ係数は有理数から整数に変換され、通常は量子化されたＤＣＴ係数のスパース表現、すなわち、係数の振幅のほとんどまたは大部分がゼロに等しいスパース表現が得られる。１つの実施においては、量子化器６０４は以下の重み量子化スキームを採用する：
フレーム間符号化ブロックに対しては、
【００４２】
【数３】
2006521771.tif 000005
フレーム内符号化ブロックに対しては、
【００４３】
【数４】
2006521771.tif 000006
但し、ｉｎｔ（）は整数関数であり、ｗ（ｋ，ｊ）は要素（ｋ，ｊ）の重み因子であり、Ｑは量子化パラメータである。その後、ＭＰＥＧデコーダは以下の逆重み量子化スキームを採用するであろう：
【００４４】
【数５】
2006521771.tif 000007
但し、ｎｉｎｔ（）は最近接整数関数である。当業者は、論じられないが、本発明の範囲内に含まれることを意図される他の量子化スキームも使用可能であることを認識する。
【００４５】
スキャナ６０６は、量子化ＤＣＴ行列（Ｂ’）６１４上でジグザグ走査を行い、（Ｎ＋１）×２のディメンションを有するラン−レベル領域行列（ＲＬ）６１６を生成する。但し、Ｎは量子化ＤＣＴ行列（Ｂ’）６１４における非ゼロ係数の数である。最後に、２進エンコーダまたは可変長エンコーダ（ＶＬＥ）６０８は、ハフマン符号化を使用してラン−レベル領域行列（ＲＬ）６１６のラン−レベルペアをビットストリームに変換する。本発明の好適な実施形態は、ハフマン符号化を使用するＭＰＥＧ標準の観点から述べられていることに留意すべきである。しかしながら、本発明がＭＰＥＧ標準のみに限定されることは意図されず、当業者に既知の他の符号化技術を他の好適な実施形態において使用することができる。
【００４６】
図７Ａおよび図７Ｂは、２つの可能な走査の順番を示す。図７Ａに示す走査の順番は、典型的には、量子化ＤＣＴ行列（Ｂ’）６１４が非インターレースビデオフレームの部分を表す場合に、ＤＣＴ行列を走査するためにスキャナ６０６により実行される。図７Ｂは、典型的にＤＣＴ行列がインターレースビデオフィールドの部分を表す場合に実行される走査パターンを示す。
【００４７】
図８Ａは、例示的な量子化ＤＣＴ領域行列（Ｂ’）６１４を図示し、図８Ｂは、スキャナ６０６が例示的ＤＣＴ領域行列６１４上に図７Ａに図示された走査パターンを採用した後の対応するラン−レベル領域行列（ＲＬ）６１６を示す。ラン−レベル領域では、「ラン」は非ゼロ係数に先行する、ゼロの値を有する連続走査された係数の数を示し、「レベル」は非ゼロ係数の振幅を示す。ゼロ周波数（Ｄ．Ｃ．）係数（Ｂ（０，０）＝ａ）に先行するゼロの値を有する係数の数はゼロなので、Ｄ．Ｃ．係数に対するラン−レベルペアは（０，ａ）である。Ｂ（０，０）とＢ（１，０）との間に入る唯一のゼロ係数はＢ（０，１）なので、Ｂ（１，０）に対するラン−レベルペアは、（１，ｂ）により与えられる。Ｂ（４，１）係数（Ｂ（４，１）＝ｈ）に続く係数はすべてゼロであり、エンドオブブロックマーカーで表され、ラン−レベルペア（０，０）で示される。このように、量子化器６０４およびスキャナ６０６によって処理された後、ＤＣＴ領域行列（Ｂ）６１２における６４個の（有理数）係数はいまや、９つの対のランおよびレベル（１８個の整数）で表される。６４個の数から１８個の整数（レベル）への変換により、例示的なＤＣＴ領域行列６１４を表すのに必要なビット数は低減される。
【００４８】
図８Ｃは、１セットのラン−レベルペア６１６の代替実施形態を示す。フレーム内符号化マクロブロックにおいて、ＭＰＥＧ−２はＤＣレベル、行列６１４のＢ（０，０）要素はより高い周波数レベルとは異なって扱われる。ＤＣ係数はブロック毎に異なってコード化されるので、また人の目はより低い周波数に対して反応するので、フレーム内ブロックのＤＣレベルはＡＣ係数とは別に符号化される。従って、定義によってそのランはゼロでなければならないであろうから、ＤＣレベルに関連付けられたランの値がない。一方、フレーム間符号化ブロックでは、ＤＣレベルを含むブロックのレベルはすべて同一に扱われる。
【００４９】
ＤＳＣＴ１０６などのＭＰＥＧデコーダは逆演算を行って、ビットストリームをフレームに変換する。ＭＰＥＧデコーダは、とりわけ、ビットストリームをラン−レベルペアのセットに変換する２進デコーダ（図示せず）を有する。但し、１セットのラン−レベルペアはピクセルのサブマクロブロックを表す。逆スキャナ（図示せず）は、ラン−レベルペアのセットを、ＤＣＴ量子化係数の８×８行列に変換する。逆量子化器（図示せず）は、各レベル毎に、重み因子で割った量子化因子（Ｑ）の商をレベルに掛ける。最後に逆トランス（図示せず）がレベルをピクセル領域値に変換しなおす。このように、ＭＰＥＧ符号化および復号化は、とりわけ行列演算およびＤＣＴ変換および逆変換のために計算上、非常に複雑となる。
【００５０】
トランスコーダ
図９に示されるのは、トランスコーダ１３４の第１の実施形態の構成要素であり、図１７は第２の実施形態の構成要素を示す。図９を参照すると、トランスコーダ１３４はベクトル長デコーダ９０２（ＶＬＤ）、メモリ９０８を有するプロセッサ９０４およびベクトル長エンコーダ９０６（ＶＬＥ）を含む。とりわけ、ＶＬＤ９０２は入力ストリーム１３６を受信して、ビットストリームからのピクチャヘッダ、スライスヘッダ、マクロブロックヘッダなどのヘッダを解析して、そのヘッダをメモリ９０８に提供する。加えて、ＶＬＤ９０２はまた情報の非ビデオフレームを解析して、非ビデオフレームをメモリ９０８に提供し、ビットストリームからのランレベルペアのセットを解析してプロセッサ９０４に前記ランレベルペアを提供する。
【００５１】
プロセッサ９０４は、とりわけ、処理されたフレームがより少ないビットで表されるようにフレームを処理する。フレーム、ビデオフレームおよび非ビデオフレームは、ＶＬＤ９０２に受信されたのと同じ順番でＶＬＥ９０６を介して送信されるように処理される。
【００５２】
１フレームの情報を処理した後、プロセッサ９０４は処理されたフレームをＶＬＥ９０６に送り出す。とりわけ、ＶＬＥ９０６は処理されたフレームを２進情報に変換して、その２進情報を多重ＭＰＥＧパケットにカプセル化する。ＶＬＥは、これに限定されないが、ハフマン符号化などの周知の技術を使用して、ランレベルペアを整数値のペアから２進シーケンスへと変換する。
【００５３】
メモリ９０８は、基準フレームおよび対応するシェイブされた基準フレームがそれぞれバッファされる基準フレームバッファ９１０Ａおよび９１０Ｂならびにシェイブ基準フレームバッファ９１２Ａおよび９１２Ｂなどの多重バッファを有する。本開示の目的では、シェイブされた基準フレームはフレームのビットサイズが縮小されたものである。メモリ９０８は、非ビデオフレームの情報用およびビデオフレームのヘッダ用のバッファも含む。
【００５４】
機能的には、プロセッサ９０４は、点線９１４で分割されたカスケード式エンコーダおよびデコーダであると考えることができる。逆量子化器モジュール９１６、逆ＤＣＴモジュール９１８、加算器９２０および基準フレームバッファ９１０はデコーダ部分を構成し、加算器モジュール９２２、ＤＣＴモジュール９２４、レートコントローラモジュール９２６および逆量子化モジュール９２８、逆ＤＣＴモジュール９３０、加算器モジュール９３２および基準フレームバッファ９１２はエンコーダ部分を構成する。
【００５５】
プロセッサ９０４のデコーダ部分はフレームをランレベル領域からピクセル領域へと変換する。逆量子化器モジュール９１６はコンテンツ情報をランレベルペアのセットとして受信し、フレームのヘッダの１つ以上で運ばれる最初の量子化パラメータ（Ｑ１）に基づいて、そのセットのレベルを逆量子化する。逆量子化器９１６は未量子化レベルをランレベル領域からＤＣＴ領域に拡大する、すなわち、逆量子化器９１６は逆ジグザグ走査により、１セットのランレベルペアを８×８行列表現に変換する、または同等には、ランレベルペアのセットを走査順に配列した６４個のレベルのアレイに変換する。
【００５６】
逆ＤＣＴモジュール９１８はＤＣＴ領域のコンテンツ情報を受信して、逆離散コサイン変換をＤＣＴ領域情報に適用することによって、未量子化レベルを周波数情報からピクセル情報へと変換しなおす。
【００５７】
加算器モジュール９２０は、逆ＤＣＴモジュール９１８からピクセル情報を受信する。カレントフレームがＩピクチャであれば、ピクセル情報は完全である。しかし、カレントフレームがＰピクチャまたはＢピクチャであれば、ピクセル情報は不完全である。カレントフレームの動きベクトルを使用して、カレントピクチャにない情報を基準フレームバッファ９１０から受信する。加算器モジュール９２０は、基準バッファ９１０からの情報を逆ＤＣＴモジュール９１８からのピクセル情報に加算する。加算器モジュール９２０の出力は完全フレームである。カレントフレームが基準フレーム（ＩピクチャまたはＰピクチャ）であれば、カレントフレームは、後続フレームで使用するための基準フレームバッファ９１０とプロセッサのエンコーダ部分の加算器モジュール９２２の両者に送られる。Ｂピクチャは加算器モジュール９２２にだけ送られる。
【００５８】
カレントフレームがＩピクチャの場合、加算器モジュール９２２はそのカレントフレームをＤＣＴモジュール９２４に提供する。しかしながら、カレントフレームがＢピクチャまたはＰピクチャである場合は、加算器モジュール９２２は残存ピクチャを生成し、その後その残存ピクチャはＤＣＴモジュール９２４に提供される。カレントフレームの動きベクトルを使用して、加算器モジュール９２２は、シェイブされた基準バッファ９１２に格納された予測情報をカレントフレームから減じることにより残存ピクチャを生成する。予測情報は、加算器モジュール９２０が基準フレームバッファ９１０から受信した不足情報に対応する。
【００５９】
ＤＣＴモジュール９２４はコンテンツ情報をピクセル領域からＤＣＴ領域へと変換して、周波数情報のレベルが未量子化される。レートコントローラ９２６は量子化器９３４および閾値化器９３６を含む。レートコントローラ９２６は、量子化器９３４および閾値化器９３６を実行して、カレントフレームの圧縮ビットサイズが所望のビットサイズ（ＮＤ）とおおよそ等しくなるように、カレントフレームのサイズを縮小する。所望のビットサイズは概ねＳＴＳの操作者が提供した、もしくはＤＮＣＳ１１６によって提供できる、または操作者が設定した目標ビットレートに基づいて各ピクチャフレームにおけるビット数を決定するフレーム−レイヤレート制御アルゴリズムよる、パラメータである。
【００６０】
レートコントローラ９２６は、カレントフレームのカレント圧縮ビットサイズを決定し、以下で述べる論理を使用して、そこからシェイブするビット数（ＮＳ）を決定する。レートコントローラ９２６は、圧縮ビットサイズをおよそ（ＮＳ）だけ縮小するようにカレントフレームを量子化もしくは閾値化する、または量子化および閾値化する。
【００６１】
カレントフレームが基準フレームであれば、レートコントローラ９２６はシェイブされたフレームを逆量子化器９２８に提供する。レートコントローラ９２６はまたシェイブされたフレームをスキャナ９３８にも提供し、スキャナ９３８はコンテンツ情報をＤＣＴ領域からランレベル領域に変換する。スキャナ９３８はその後、シェイブされたフレームをＶＬＥ９０６に提供して、ＶＬＥ９０６はコンテンツ情報をランレベル領域から圧縮形式に変換する。
【００６２】
逆量子化器９２８は、レートコントローラ９２６からのシェイブされた基準フレームを受信し、コンテンツ情報を量子化値から周波数情報の未量子化値に変換する。いまや未量子化されているコンテンツ情報は、逆ＤＣＴモジュール９３２に提供され、逆ＤＣＴモジュール９３２はコンテンツ情報をピクセル領域情報へと変換しなおす。
【００６３】
加算器９３４は、いまやピクセル領域であるコンテンツ情報を受信して、カレントフレームの動きベクトルを使用して、不足情報をシェイブ基準フレームバッファ９１２から得る。加算器９３４の出力は完全なシェイブされた基準フレームであり、その後、後続の予測フレーム、すなわちＰピクチャおよびＢピクチャで使用するために、シェイブ基準フレームバッファ９１２にバッファされる。レートコントローラ９２６を詳細に論ずる前に、一定の量子化パラメータ（Ｑ２）が使用される理由について簡単に説明し、閾値化について説明する。
【００６４】
図１０は、χ対再量子化パラメータＱ２のグラフである。但し、χは、再量子化前の代表フレームの総サイズ（ＮＴ（Ｑ１））で除された再量子化後の代表フレームの総サイズ（ＮＴ（Ｑ２））の商として定義される。ゾーン１とされる領域においては、Ｑ２の大きさは元の量子化パラメータであるＱ１からおおよそαまで増加する。αは、ピクチャに対して線形量子化スケールが使用された場合３１に等しく、非線形量子化が使用された場合は１１２に等しい。χのＱ２に対する変化のレート（ｄχ／ｄＱ２）はＱ２＝α、β、δおよびεでは不連続であり、各不連続間ではおおよそ一定である。Ｑ２＝Ｑ１からＱ２＝αまでの間の領域はゾーン１と定義され、この領域では再量子化フレームのサイズがおよそ１５％だけ縮小する。Ｑ２＝βからＱ２＝δへと延びるゾーン２と定義された領域では、再量子化フレームはおよそ６０％から７０％縮小され、Ｑ２＝εからの外側に延びるゾーン３として定義された領域では、再量子化フレームは少なくともおよそ７５％縮小される。図１０に示される結果は代表フレームに対してである。縮小の実際量は、フレームのコンテンツ、ピクチャのタイプおよび他の変数などの変数により変化し得る。たとえそうだとしても、図１０は、ゾーン１における再量子化はサイズの有効な節約にはならないので、ゾーン１と対照的にゾーン２（またはゾーン３）から再量子化パラメータを使用することが通常は好ましいことを示す。
【００６５】
当業者が認識するように、再量子化パラメータＱ２が増加すると、再量子化のために情報が失われ、視聴者にとって低品質のピクチャとなる。従って、再量子化パラメータＱ２の選択によって、ピクチャ品質とサイズとのバランスがとられなければならない。好適には、かかるパラメータは再量子化フレームのサイズをせいぜい１５％ほど縮小するだけなので、再量子化パラメータＱ２はゾーン１からは選択しない。代わりに、フレームのサイズのかかる少しの減少に対しては、閾値化が使用されることが好ましい。再量子化が行われる場合は、１つの好適な実施形態では、再量子化はカレントフレームのサイズをおおよそ所望のサイズＮＤに縮小し、その後閾値化が行われてさらにフレームの総サイズが所望のサイズにより近づくようにサイズを縮小する。
【００６６】
図１１は、例示的な閾値関数１１０２を示し、閾値関数１１０２は、Ｉ（０）からＩ（２）とした走査指標閾値１１０８とＬ（０）からＬ（２）としたレベル閾値１１１０Ａとを有する階段状関数である。レートコントローラ９２６は、閾値関数１１０２より下のレベルをゼロにする。操作位置が走査指標閾値Ｉ（０）とＩ（１）との間の、１１０６Ａとしたレベルは、その絶対値が走査指標閾値Ｉ（０）とＩ（１）間に延びるレベル閾値Ｌ（０）より小さいのでゼロとされる。一方、レベル１１０４Ａは、その絶対値はレベル閾値Ｌ（０）を超えているのでゼロとされない。同様に、レベル１１０４Ｂはゼロとされず、レベル１１０６Ｂおよび１１０６Ｃはゼロとされる。１つの好適な実施形態では、レートコントローラ９２６は、これと並行してフレームの部分のレベルを閾値化する。本実施形態において、その部分を構成するランレベルペアのセットはすべて、それぞれ、同じ閾値関数によって閾値化される。理論的には、以下で詳細に述べるように、レートコントローラ９２６は閾値関数１１０２を縦横に移動させて、その部分のサイズがおおよそ適切な量だけ縮小されるように正しい数のレベルをゼロにする。
【００６７】
レートコントローラ
図１２を参照して、量子化器９３４、閾値化器９３６およびスキャナ９３８に加えて、レートコントローラ９２６は、ＶＬＣテーブルバッファ１２０４、Ｎビットバッファ１２０６、フレームバッファ１２０８、作業バッファ１２１０、ランバッファ１２１２およびレベルバッファ１２１４を有するメモリ１２０２を含む。当業者には既知なように、ハフマン符号化は、ランとレベルの特定ペアを可変長である所定コードに変換する。最も一般的なランレベルペアは最短コードである。ランとレベルの可能なペアは、特定コードを割り当てないものもあり、このようなランレベルペアは２４ビットで表される。すなわち、６ビットエスケープシーケンス、６ビットランシーケンスおよび１２ビットレベルシーケンスで表される。ＶＬＣテーブルバッファ１２０４は、コードを有するランレベルペアをそのコードに対してマップするＶＬＣテーブルを含む。ＮビットテーブルバッファはＶＬＣコードをそのコードのサイズに対してマップするテーブルを含む。このように、レートコントローラ９２６は、以下の式によりカレントフレームの部分の圧縮サイズを決定することができる。
【００６８】
【数６】
2006521771.tif 000008
但し、Ｎｃｏｅｆはフレームの所定部分におけるランレベルペアの数であり、ＶＬＣＪは、その部分のＪ番目のランレベルペアに対する可変長コードのビット数であり、Ｊ番目のランレベルペアがＶＬＣテーブルになければゼロであり、Ｎ＿ｅｓｃａｐｅは、可変長コードが割り当てられていない、その部分におけるランレベルペアの数である。フレームのその部分における各ランレベルペアに対して、レートコントローラ９２６は、まずＶＬＣテーブルを使用してそのペアが関連付けられた特定のコードを有するかどうかを決定し、有している場合は、Ｎビットバッファを使用して特定コードのサイズ（ＶＬＣＪ）を決定する。
【００６９】
カレントフレームはフレームバッファ１２０８にバッファされる。レートコントローラ９２６は、量子化器９３４または閾値化器９３６がフレーム上またはその一部で作業する場合は、作業バッファ１２１０にフレームをコピーする。量子化器９３４がカレントフレームを処理したら、結果はフレームバッファ１２０８にコピーされる。以下で詳細を説明するように、レートコントローラ９２６は、その部分の圧縮サイズがおおよそ目標サイズに等しくなるまで、カレント部分を対話形式で処理する。対話毎に、閾値化器９３６は、フレームのその部分をフレームバッファ１２０８から作業バッファ１２１０にコピーする。
【００７０】
レートコントローラ９２６はカレントフレームを受信すると、スキャナ９３８がＤＣＴ領域コンテンツ情報を走査して、そのフレームに対するランおよびレベルのペアを決定する。ランとレベルは、ランバッファ１２１２とレベルバッファ１２１４にそれぞれバッファされる。ランとレベルはその後ＶＬＣテーブルとＮビットテーブルで使用されて、これらに限定されないが、フレームの総圧縮サイズ（ＮＴ）、フレームの総圧縮コンテンツサイズ（ＣＴ）およびスライスなどのフレームの部分の圧縮コンテンツサイズ（Ｓｓｉｚｅ）などの種々の数量を決定する。総圧縮コンテンツサイズ（ＣＴ）は圧縮時のすべてのコンテンツ情報の総サイズである。フレームの部分の圧縮コンテンツサイズ（Ｓｓｉｚｅ）は、圧縮時のその部分のすべてのコンテンツ情報の総サイズとして定義される。
【００７１】
１つの好適な実施形態において、レートコントローラ９２６はフレームをスライスなどの部分に解析して、その後フレーム全体が処理されるまで順次その部分を処理する。好適には、レートコントローラ９２６は、並行して各部分のサブマクロブロックを処理するようになっている。フレームの部分を処理する前に、トランスコーダは出力トランスポートストリーム１３８に対して、所望のビットサイズを決定する。トランスポートストリーム１３８の所望のビットサイズは、ユーザインターフェース（図示せず）を通って受信されるか、またはＤＮＣＳ１１６から受信される操作者入力から決定される。ユーザ入力から、トランスコーダは圧縮フレームに対する所望のビットサイズ（ＮＤ）を決定する。レートコントローラ９２６は目標ビット数を決定して、その部分からシェイブする目標ビット数（Ｎ＿ｓｈａｖｅ）を決定する。その部分を処理した後、レートコントローラ９２６は、部分の圧縮コンテンツサイズを再計算し、部分の最初の圧縮コンテンツサイズと最終の圧縮コンテンツサイズとの差である節約されたビット数（Ｎ＿ｓａｖｅｄ）を決定する。レートコントローラ９２６はその後、シェイブする目標ビット数（Ｎ＿ｓｈａｖｅ）と節約されたビット数（Ｎ＿ｓａｖｅｄ）との差として定義される縮小誤差（ｅ）、ｅ＝Ｎ＿ｓｈａｖｅ−Ｎ＿ｓａｖｅｄを決定する。縮小誤差は各部分に対して蓄積され、蓄積された縮小誤差（Ｅ）は、後続部分からシェイブされるビット数の決定の際に使用される。フレームのＫ番目の部分に対して、Ｎ＿ｓｈａｖｅは以下の式として求められる。
【００７２】
【数７】
2006521771.tif 000009
但し、ＳｓｉｚｅはＫ番目の部分の最初の圧縮コンテンツサイズであり、ＣＴはフレームの総圧縮コンテンスサイズであり、ＮＳは、フレームからシェイブされる総ビット数であり、Ｅはすでに処理された部分、部分１からＫ−１に対して蓄積された縮小誤差であり、Ｎｓｌｉｃｅはそのフレームの部分の数である。レートコントローラ９２６はまた、以下の式で求められる縮小閾値（ＲＴ）を決定する。
【００７３】
【数８】
2006521771.tif 000010
縮小閾値は、レベルを再量子化すべきか否かを決定する際に使用される。
【００７４】
図１３はレートコントローラ９２６によって実行される例示的な再量子化−閾値化論理を示す。ステップ１３０２で、フレームがレートコントローラ９２６により受信される。フレームは解析され、メモリ１２０２にバッファされる。レートコントローラ９２６は部分毎にハイブリッド再量子化−閾値化スキームを実行する。明確にするために、以下の説明においては、部分はスライスと見なされる。しかしながら、スライスはフレームの部分の非制限的な例であることは理解されるべきであり、当業者が認識するように、スライスはピクチャの任意の部分であり、ピクチャの他のより小さい、または大きい部分を利用し得、それらは本発明の範囲および意図内にある。例えば、メディアプロセッサまたはデジタル信号プロセッサは、以下に述べる技術を使用して処理可能なピクチャの部分を限定する内部キャッシュを有し得る。
【００７５】
レートコントローラ９２６は、とりわけ、蓄積された縮小誤差（Ｅ）およびピクチャタイプ（Ｐ＿Ｔ）などの、フレーム全体を処理するのに使用されるパラメータを初期化する。ピクチャのタイプ、Ｉピクチャ、Ｐピクチャ、Ｂピクチャは、メモリ９０８に格納されるピクチャヘッダから決定される。初期化時は、レートコントローラ９２６はフレームからシェイブされる必要のあるビット量（ＮＳ）も決定する。
【００７６】
ステップ１３０４において、レートコントローラ９２６はスライスコンテンツサイズＳＳＩＺＥ、縮小閾値ＲＴ、スライスからシェイブするビット量（ＮＳＨＡＶＥ）などの数量を決定して、Ｎ＿ＳＡＶＥＤなどのスライス数量を初期化する。
【００７７】
ステップ１３０６では、レートコントローラ９２６はスライスを再量子化すべきかどうかを決定する。概ね、再量子化すべきか否かの決定は少なくとも部分的に、再量子化閾値パラメータ（Ｔ）および縮小閾値（ＲＴ）に基づく。再量子化閾値パラメータ（Ｔ）は、ＤＮＣＳ１１６もしくは操作者によりトランスポンダー１３４に提供されか、またはフレームレイヤレート制御アルゴリズムによって計算される。典型的には、ＲＴがＴより大きければ、スライスは再量子化される。とりわけ、ピクチャタイプおよび／またはスライスを量子化する際に使用される最初の量子化パラメータなどのその他の因子もまた、再量子化すべきか否かに関する決定において使用される。決定が再量子化すべきでない場合は、レートコントローラ９２６はステップ１３１２に進み、そうでなければレートコントローラは１３０８に進む。
【００７８】
ステップ１３０８でレートコントローラ９２６は、カレントスライスのレベルを再量子化して、ステップ１３１０でレートコントローラ９２６は再量子化によって節約されるビット数を決定する。スキャナはスライスのサブマクロブロックを走査し、スライス用のラン−レベルペアの新しいセットを生成する。ラン−レベルペアの新しいセットはランバッファ１２１２とレベルバッファ１２１４にバッファされる。レートコントローラ９２６はＶＬＣテーブルバッファ１２０４を使用して、再量子化されたラン−レベルペアに対する新しいコードを決定し、Ｎビットバッファ１２０６を使用して、コードに対するビット数を決定する。カレントフレームのＫ番目のスライスに関して、節約されたビット数は以下の式で求められる。
【００７９】
【数９】
2006521771.tif 000011
但し、ＶＬＣ＿ＮＥＷＪは新しいｊ番目のラン−レベルペアの圧縮ビットサイズであり、これは、新しいｊ番目のラン−レベルペアがＶＬＣテーブルバッファ１２０４で見つけられる特定コードのうちの１つでない場合はゼロであり、Ｎ＿ｅｓｃａｐｅｎｅｗはＶＬＣテーブルバッファ１２０４で見つけられない、スライスにおけるラン−レベルペアの新しい数である。
【００８０】
次にステップ１３１２で、レートコントローラ９２６はスライスを閾値化すべきかどうかを決定する。典型的には、閾値化の決定は、少なくとも、ステップ１３０４でゼロに初期化され、必要であれば、ステップ１３１０で計算された節約されたビット数Ｎ＿ｓａｖｅｄに基づく。節約されたビット数Ｎ＿ｓａｖｅｄがスライスからシェイブするビット量Ｎ＿ｓｈａｖｅ以上の場合は、レートコントローラ９２６はステップ１３１８に進む。一方、Ｎ＿ｓａｖｅｄがＮ＿ｓｈａｖｅより少ない場合、レートコントローラ９２６はステップ１３１４に進み、スライスを閾値化する。閾値化に関するさらなる詳細は以下に記載される。
【００８１】
次に、ステップ１３１６では、レートコントローラ９２６は節約されたビット量Ｎ＿ｓａｖｅｄを決定する。節約されたビット量は、例えば、ハフマンコードを使用して圧縮形式でスライスを表すの使用されるビット数と圧縮形式のスライスの最初のサイズとの差である。典型的には、節約されたビット量は、正確にはスライスからシェイブする所望のビット数とは一致せず、２つの値の差は蓄積された縮小誤差（Ｅ）に加算される。
【００８２】
ステップ１３１８で、レートコントローラ９２６はフレームの全スライスが処理されたかどうかを決定し、処理された場合は、ステップ１３０２に戻る。そうでなければ、ステップ１３０４に戻り、カレントフレームの次のスライスを処理する。上記で述べた処理はフレームのスライスを処理する観点から述べられた。
【００８３】
表１は、ＤＮＣＳ１１６または操作者により提供され、再量子化すべきかどうかを決定する際にレートコントローラ９２６によって使用される、調整可能パラメータを一覧表にしている。調整可能パラメータは、好適な実施形態においてアレイである再量子化閾値パラメータ（Ｔ）、ピクチャタイプ（Ｐ＿Ｔ）の関数である量子化閾値アレイＱＴおよびスライスにおけるレベルの絶対値の平均に関連付けられたパラメータである、ＬＭＩＮを含む。
【００８４】
【数１０】
2006521771.tif 000012
図１４はさらに、ステップ１３０６においてレートコントローラ９２６により実行されるカレントフレームを再量子化するかどうかを決定するための例示的ステップ１４００を示す。ステップ１４０２では、再量子化フラグが「偽」のデフォルト位置に設定され、カウンタ「Ｊ」はゼロに初期化される。次にステップ１４０４において、レートコントローラ９２６は、縮小閾値ＲＴがＪ＝０に対する再量子化閾値パラメータＴ（Ｊ）より小さいかどうか決定する。条件ＲＴ＜Ｔ（０）が真の場合、レートコントローラ９２６はステップ１４１８に下がって終了するが、この場合は、縮小閾値が小さく、閾値化だけでおおよそ所望のサイズにカレントフレームを縮小するので、再量子化が行われないことを意味する。一方、条件ＲＴ＜Ｔ（０）が偽の場合、レートコントローラ９２６はステップ１４０６に進む。
【００８５】
ステップ１４０６で、レートコントローラ９２６はカウンタＪをインクリメントし、ステップ１４０８で、レートコントローラ９２６は次の条件がすべて真であるかどうか決定する。（ｉ）ＲＴ＜Ｔ（Ｊ），（ｉｉ）Ｑ１ＭＡＸ＜Ｑ２（Ｊ，Ｐ＿Ｔ）および（ｉｉｉ）ＬＡＶＧ＞ＬＭＩＮで、Ｑ１ＭＡＸはスライスを構成するランレベルペアのセットに対応するＤＣＴブロックを再量子化するのに使用された最大量子化パラメータであり、ＬＡＶＧはスライスを構成するレベルの絶対値の平均である。スライスＬＡＶＧの平均絶対レベルが１に等しい場合、これは少なくともスライスのレベルの半分が１の絶対レベルを有することを意味する。それゆえに、２Ｑ１の因子による再量子化は、必ずスライスのレベルの半分以上をゼロにすることになる。従って、このような状況では、再量子化の代わりに閾値化を使用して、スライスのサイズを縮小することが好ましい。すべての３つの条件が真である場合しか、レートコントローラ９２６はステップ１４１６に進まない。一方、３つの条件のうち少なくとも１つが偽であれば、レートコントローラ９２６はステップ１４１０に進み、カウンタ「Ｊ」をインクリメントする。ステップ１４１２においては、レートコントローラ９２６はカウンタＪが４未満かどうかを決定する。レートコントローラ９２６は、ステップ１４０８の３つの条件すべてが真になるかＪ＝４になるかのいずれかまで、ステップ１４０８、１４１０および１４１２をループする。
【００８６】
Ｊ＝４のとき達するステップ１４１２では、レートコントローラ９２６は縮小閾値ＲＴが再量子化閾値パラメータＴ（４）より大きいかどうか決定する。大きければ、レートコントローラ９２６はステップ１４１６に進み、再量子化フラグを「真」に設定する。条件ＲＴ＞Ｔ（４）が満たされない場合は、レートコントローラ９２６は最後のステップ１４１８に下がり、再量子化フラグは尚デフォルト「偽」に設定された状態で終了する。しかしながら、レートコントローラ９２６が、ステップ１４０８または１４１４のいずれかからステップ１４１６に達すると、再量子化フラグは「真」に設定され、その後レートコントローラ９２６は最後のステップ１４１８に下がり終了する。
【００８７】
ステップ１４０８に戻って参照すると、ステップ１４０８の３つの条件は再量子化すべきか否かを決定するための例示的な条件である。３つの条件が使用されると、その結果、縮小閾値およびスライスのレベルの絶対値の平均とともに、最大初期化量子化パラメータおよびピクチャタイプなどの種々の因子が決定に含まれる。当業者は、上記に挙げられた条件は非限定的なリストであり、再量子化をすべきかどうかを選択的に決定するために上記に挙げられたものを超えて他の条件またはそれより多い条件またはそれより少ない条件を使用することもできることを認識する。
【００８８】
１つの好適な実施形態では、典型的には１セットのラン−レベルペアに対する再量子化パラメータＱ２が選ばれて２Ｑ１または４Ｑ１となる。但し、Ｑ１はラン−レベルペアのセットの最初の量子化パラメータである。再量子化パラメータＱ２を選択して２Ｑ１または４Ｑ１のいずれかとすることが計算上効率よくするために行われる。２Ｑ１または４Ｑ１のどちらを使用すべきかの決定は、少なくとも一部には、再量子化されたフレームの所望のサイズに基づく。但し、２Ｑ１か４Ｑ１の選択は実行上の問題であることに注意すべきであり、代替実施形態では、再量子化パラメータＱ２は、任意の量子化パラメータであり得る。典型的には、デフォルト位置はＱ２が２Ｑ１と等しいところであるが、条件ＲＴ＞Ｔ（４）または他の所定の値が真である場合は、Ｑ２の値はＱ２＝４Ｑ１となるように選択される。再量子化パラメータＱ２を選択して２Ｑ１または４Ｑ１とすることにより、再量子化パラメータＱ２は図１０のゾーン２またはゾーン３からそれぞれ選択される。さらに、カレントスライスのラン−レベルペアの各セットは、同じ最初の量子化パラメータで量子化されたのではないこともあり、その場合、ラン−レベルペアの各セットはその最初の量子化パラメータの倍数である再量子化パラメータ、好ましくはＱ２＝２Ｑ１または４Ｑ１を使用して再量子化されることに留意すべきである。または、スライス全体はＱ２＝２Ｑ１ｍａｘなどの一般的な再量子化パラメータを使用して再量子化することが可能である。
【００８９】
図１５を参照して、ステップ１５００は、スライスのレベルを閾値化するための例示的な方法を示す。方法はステップ１５０２で開始する。ステップ１５０４で、レートコントローラ９２６は、スライスのサイズが閾値化後におおよそ所望のサイズになるようにゼロにされる必要のあるレベルのおおよその数（Ｎ＿ｔｈｒｅｓｈ）を決定する。次の式を使用して、カレントフレームのカレントスライスに対するＮ＿ｔｈｒｅｓｈを決定する。
【００９０】
【数１１】
2006521771.tif 000013
但し、ＮｃｏｅｆはＫ番目のスライスのレベルの数であり、ＲＱは再量子化によってゼロにされたレベルの数であり、Ｒｕｎ＿ａｖｇはカレントスライスの平均ラン値であり、Ａ（）はその引数としてＲｕｎ＿ａｖｇを有する重み関数である。ＲＱはステップ１３０４でゼロに初期化されることに注意すべきであり、量子化が行われた場合、ＲＱはステップ１３０８で表にされる。重み関数Ａ（）は、ビットからレベルへの関係をスライスのラン平均の関数として強める。典型的には、ランの平均が増加すると、適用された重みは変化する。例えば、ゼロの平均ランに対しては、ランレベルペアはＶＬＣを使用して効率的に符号化され、その結果Ａ（０）はおおよそ１．２の範囲にあることが実験的に決定される。一方、ランの平均が４である場合、ランレベルペアはＶＬＣを使用して効率的に符号化されず、その場合、Ａ（４）は実験的におよそ０．８の範囲にあることが決定される。
【００９１】
１つの好適な実施形態では、ステップ１３１６で重み関数Ａ（）は、閾値化によって節約された実際のビットに基づいて調整される。これにより、ランの平均の関数として重み関数Ａ（）のオンライン学習／フィードバックが可能となる。
【００９２】
次に、ステップ１５０６で、閾値化パラメータが初期化され、スライスのレベルがバッファされる。
【００９３】
ステップ１５０８で、レートコントローラ９２６は閾値関数のカレント位置に基づいてスライスのレベルに関する閾値化を行う。レートコントローラは、スライスのサブマクロブロック（Ｎｂｌｏｃｋｓ）の数を決定し、スライスの各サブマクロブロックに閾値関数を適用する。レートコントローラ９２６は、各ブロックのどのレベルが閾値関数より下であるかを決定し、それらのレベルをゼロにする。
【００９４】
ステップ１５１０で、レートコントローラ９２６は、ゼロにされたレベルの数がＮ＿ｔｈｒｅｓｈの値により近くなるように縦横に移動させることにより閾値関数を調整するか、またはレートコントローラ９２６は閾値関数を調整しないことを決定する。
【００９５】
ステップ１５１２において、レートコントローラ９２６は、閾値化が完了したかどうかを決定する。レートコントローラ９２６が終了されると、方法はステップ１５１４で終了する。そうでなければ、方法はステップ１５０８にループして戻る。ステップ１５０８になるたびに、スライスのレベルは、ステップ１５０６のバッファされたレベルに応じてリセットされる。
【００９６】
典型的には、閾値化によりゼロに設定されるレベルの数は、正確には、Ｎ＿ｔｈｒｅｓｈの所望の値に等しくないまたはＮ＿ｔｈｒｅｓｈの所望の値の所定範囲内にはない。従って、１つの実施形態では、レートコントローラ９２６は、スライスをサブマクロブロックの第１群および第２群に分ける。レートコントローラ９２６はその後、各群ごとに閾値関数を別々に調整する。第１群および第２群のゼロにされたレベルの総数がそれでもＮ＿ｔｈｒｅｓｈの所定の範囲内にない場合は、レートコントローラ９２６はサブマクロブロックの所定数を第２群から第１群に移す。レートコントローラ９２６は、第２群から第１群にサブマクロブロックを移し、閾値レベルの数を決定し、閾値レベルの数がＮ＿ｔｈｒｅｓｈの所定範囲内にない場合は、ゼロにされたレベルの総数が所定の範囲内になるまでサブマクロブロックを第２群から第１群に移し続ける。
【００９７】
１つの好適な実施形態では、レートコントローラ９２６は、指標および閾値関数の閾値レベルを調整するために図１６にその状態が示されるステートマシンを実行する。ステートマシンは、途中の状態に関して、レベル閾値探索を経てその後に走査指標閾値探索が続くものと見なすことができる。当業者は、図１１に示される閾値関数は、３つのレベルを有する例示的な閾値関数であり、異なる数のレベルを有する閾値関数が本発明の範囲内にあることが意図されると認識するであろう。例えば、ここでこれより説明するように、レートコントローラ９２６は、４つのレベル閾値関数を実行する。ステートマシンにより使用されるパラメータはステップ１５０６で初期化され、表２に示される。
【００９８】
【数１２】
2006521771.tif 000014
パラメータは以下のように定義される。
【００９９】
Ｌ（０）：  図１１において１１１０Ａとされる指標セグメント０のレベル閾値、
Ｉ（０）：  図１１において１１０８Ａとされる指標セグメント０の走査指標閾値、
ＳｐｌｉｔＩｎｄｅｘＶａｌ：  スプリット指標付けが行われた場合の第１群のブロック数、
Φ：  閾値化ウィンドウを定義するための調整可能パラメータ、
ＵＬ：ゼロに閾値化されたレベルの数の数上の上限、
ＬＬ：ゼロに閾値化されたレベルの数の数上の下限、
α（Ｋ）：α（Ｋ）＝１＋５／／（ｐ．  ２６，  ２行目）ＱＡＶＧ、但し／／は切捨てによる整数除算を表し、ＱＡＶＧはスライスの最初の量子化パラメータ（Ｑ１）の平均であり、α（Ｋ）は０より大きい指標に対するレベル閾値を設定するのに使用され、
ｏｆｆｓｅｔ（１，２，３）：０より大きい指標に対する指標閾値を設定するために使用される整調可能なパラメータ、
ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎ：Ｂフレームに関して０、ＩまたはＰフレームに関しては１である。
【０１００】
閾値関数の指標セグメントゼロに対する閾値レベル（Ｌ）は２に初期化され、閾値関数の残りの閾値レベルは次のように求められる。
【０１０１】
Ｌ（ｎ）＝Ｌ（ｎ−１）＋α        （９）
但し、ｎは１から３の範囲である。レベルはインクリメントされるα（Ｋ）である。α（Ｋ）はスライスの最初の量子化パラメータ（Ｑ１）の平均であるＱＡＶＧの関数なので、１つの指標セグメントから次の指標セグメントへのレベル閾値の上昇は、量子化器スケールの影響を受けやすい。
【０１０２】
閾値関数の走査指標閾値Ｉ（０）はレベル探索中（状態ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳおよびＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ）はｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎ（Ｉ（０）＝ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎ）に初期化されてこれに保持され、状態ＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨになる指標探索の開始時にＩＳＴＡＲＴに初期化される。但し、ＩＳＴＡＲＴは以下のように求められる。
【０１０３】
【数１３】
2006521771.tif 000015
但し、ＩＡＶＧはＫ番目のスライスにおけるレベルの平均走査位置であり、γは整調可能なパラメータであり、およそ２．７５である。
【０１０４】
残りの走査指標閾値ｎ＝１〜３に対しては、Ｉ（ｎ）は以下のように求められる。
【０１０５】
Ｉ（ｎ）＝Ｉ（ｎ−１）＋ｏｆｆｓｅｔｎ        （１１）
但し、ｏｆｆｓｅｔｎは表２で特定される。
【０１０６】
走査位置は６３までなので、ｎ＝０〜３のすべての走査指標閾値Ｉ（ｎ）は、確実に６３以下になるようにチェックされる。Ｉ（ｎ）が６３より大きい場合は、単に６３に設定される。
【０１０７】
図１６を参照して、ステートマシンは、途中の状態に関してレベル閾値探索を経て走査指標閾値探索がその後に続くものとして見なすことができる。最初の状態１６０２はＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳである。図１６では、条件式は点線の楕円形内に示され、ステートマシンにより取られる動作は下線が引かれる。
【０１０８】
状態ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳ：
最初の状態１６０２の目的は、閾値化されたレベルのカウント（ｃｎｔ）が目標カウント（Ｎ＿ｔｈｒｅｓｈ）を越えるまでレベル閾値Ｌ（０）をインクリメントすることである。但し、ｃｎｔはゼロにされたレベルの数である。この状態において、ステートマシンがｃｎｔ＞Ｎ＿ｔｈｒｅｓｈを満足する最小閾値レベルを決定しようとするので、閾値関数は横には移動しない。その代わり、Ｉ（０）はｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎに保持され最低レベル閾値Ｌ（０）はαずつインクリメントされる。レベル閾値Ｌ（１）、Ｌ（２）およびＬ（３）はｎ＝１、２および３に対してＬ（ｎ）＝Ｌ（ｎ−１）＋αとして、条件ｃｎｔ＞Ｎ＿ｔｈｒｅｓｈが満たされるまで再計算される。典型的には、１セットのラン−レベルペアのレベルは小さな走査位置の辺りで最も密度が高く存在していて、その結果、指標探索時においては、閾値関数を右にスライドして、例えば、Ｉ（０）＞ｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎにして、Ｉ（１）〜Ｉ（３）を再計算することにより、ｃｎｔを後退させる（少なくさせる）ことになる。
【０１０９】
この状態での反復数を制限するために、不成功の反復の所定回数（ＩＴ）後はαより高いインクリメントが使用され得る。但し、ＩＴは整調可能なパラメータ、例えばＩＴ＝５である。例えば、反復数がＩＴより大きい場合、指標セグメントゼロ（Ｌ（０））に対する閾値レベルは次のように求めることができる
【０１１０】
【数１４】
2006521771.tif 000016
あるいは、二分探索法を採用することができる。ほとんどの場合、特にラン−レベルペアのセットが残存情報を含むＢピクチャおよびＰピクチャでは、最終レベル閾値はＬ（０）＝２の最初の推測であることが多い。
【０１１１】
閾値関数のレベルが、必要に応じて、条件ｃｎｔ＞Ｎ＿ｔｈｒｅｓｈが満たされるように上げられた後、最後のインクリメントがαだった場合、閾値レベルＬ（０）の高さは最小と見なされる。この場合、レベル閾値は最終で、ステートマシンはＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨ状態１６０６に移る。
【０１１２】
しかしながら、代わりにＬ（０）を求めるためにこの状態を通して多数の反復が取られ、最後のインクリメントがαではなかった場合、閾値レベルＬ（０）は最小ではない。この場合、ステートマシンはＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態１６０４に進む。
【０１１３】
ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ：
ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＰＯＳ状態１６０２がＮ＿ｔｈｒｅｓｈを上回ってゼロにして、最後のインクリメントがαより大きかった後、ＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態１６０４になる。典型的には、多数の反復があり、レベルに対するインクリメントが式１２で求められる場合にこの状況が生じる。
【０１１４】
この状況では、閾値レベルＬ（０）は最小ではなく、条件ｃｎｔ＜Ｎ＿ｔｈｒｅｓｈが満たされまで、または閾値レベルＬ（０）が最初の値に戻るまで、指標閾値をｉｎｄｅｘ＿ｔｈｒｅｓｈ＿ｍｉｎに保持しつつＦＩＮＤＩＮＧ＿ＬＥＶＥＬ＿ＮＥＧ状態１６０４がＬ（０）をαずつデクリメントする。条件ｃｎｔ＜Ｎ＿ｔｈｒｅｓｈが満たされると、閾値レベルはデクリメントされすぎ、この場合閾値レベルはα分インクリメントとされる。
【０１１５】
ＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨ：
ＦＡＳＴ＿ＩＮＤＥＸ＿ＳＥＡＲＣＨ状態１６０６の目的は、例えばβ＝４の粗いインリメントで走査指標閾値をインクリメントまたはデクリメントすることにより最終走査指標閾値がある近傍を速やかに見つけることである。最初の走査指標閾値Ｉ（ｎ）（ｎ＝０．３）はステップ１５０６で設定されている。ｃｎｔは指標ウィンドウの下限ＬＬより少なく、ステートマシンの最後の反復でのｃｎｔの値（ｌａｓｔ＿ｃｎｔ）がＬＬ以下であった場合は、指標閾値Ｉ（０）はβずつ減らされる。一方、ｃｎｔが上限ＵＬより大きく、先行するｃｎｔ（ｌａｓｔ＿ｃｎｔ）がＵＬ以上だった場合、指標閾値Ｉ（０）はβずつインクリメントされる。
【０１１６】
ｃｎｔはＵＬより多いが、先行するｃｎｔ（ｌａｓｔ＿ｃｎｔ）がＵＬより少なかった場合、高速指標探索は左に（低周波数方向）行き過ぎてしまった。この場合、指標閾値Ｉ（０）はβ−１ずつインクリメントされ、状態はＭＯＶＩＮＧ＿ＬＥＦＴ状態１６１０に修正される。
【０１１７】
ｃｎｔはＬＬより少ないが、先行するｃｎｔ（ｌａｓｔ＿ｃｎｔ）がＬＬより多かった場合は、高速指標探索は右に（高周波数方向）行き過ぎてしまった。この場合は、指標閾値Ｉ（０）はβ−１ずつデクリメントされ、状態はＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１６０８に修正される。
【０１１８】
ＭＯＶＩＮＧ＿ＲＩＧＨＴ：
ＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１６０８では、ｃｎｔはＵＬに対してチェックされる。（ｃｎｔ＞ＵＬ）であれば、走査指標閾値Ｉ（０）は１ずつインクリメントされる。ｃｎｔがＬＬより少なくなったら、ＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１６０８は１指標行き過ぎてしまった。この場合、走査指標閾値Ｉ（０）は１だけデクリメントされ、ステートマシンは、ＳＰＬＩＴ＿ＩＮＤＥＸ状態１６１２に進み、ここでＳｐｌｉｔＩｎｄｅｘＶａｌはレベルの１ブロックに設定される。
【０１１９】
上記の条件のいずれも満足されない場合、すなわち（ＬＬ＜ｃｎｔ＜ＵＬ）の場合、ステートマシンはＤＯＮＥ状態１６１４に進み、ここでステートマシンは、状態“完了”を返し、停止する。
【０１２０】
ＭＯＶＩＮＧ＿ＬＥＦＴ：
ＭＯＶＩＮＧ＿ＬＥＦＴ状態１６１０では、ｃｎｔはＵＬに対してチェックされる。（ｃｎｔ＞ＵＬ）であれば、走査指標閾値Ｉ（０）は１ずつインクリメントされる。ｃｎｔがＬＬより少なくなったら、ＭＯＶＩＮＧ＿ＬＥＦＴ状態１６１０は１指標行き過ぎてしまった。この場合、走査指標閾値Ｉ（０）は１ずつデクリメントされ、ステートマシンは、ＳＰＬＩＴ＿ＩＮＤＥＸ状態１６１２に進み、ここでＳｐｌｉｔＩｎｄｅｘＶａｌはレベルの１ブロックに設定される。
【０１２１】
上記２つの条件のいずれも満足されない場合、すなわち（ＬＬ＜ｃｎｔ＜ＵＬ）の場合、ステートマシンはＤＯＮＥ状態１６１４に進み、ここでステートマシンは、状態“完了”を返し、停止する。
【０１２２】
ＳＰＬＩＴ＿ＩＮＤＥＸ：
ＳＰＬＩＴ＿ＩＮＤＥＸ状態１７１２は、スライスのレベルをＳｐｌｉｔＩｎｄｅｘＶａｌにより定義されるように２つのセグメントに分割（または分ける）され、スライスのすべてのレベルが等しく処理されるわけではない。ステートマシンがＳＰＬＩＴ＿ＩＮＤＥＸ状態になるまで閾値化演算は、ＳｐｌｉｔＩｎｄｅｘＶａｌ＝０を有するので、この時点までスプリット指標閾値化はない。
【０１２３】
ＳＰＬＩＴ＿ＩＮＤＥＸ状態１７１２の１つの理由は、Ｉ（０）＝ｔ（ｔはＭＯＶＩＮＧ＿ＬＥＦＴ状態１６１０またはＭＯＶＩＮＧ＿ＲＩＧＨＴ状態１６０８によって決定される）の特定値での閾値化によってｃｎｔ＞ＵＬとなるが、Ｉ（０）＝ｔ＋１の閾値化によってｃｎｔ＜ＬＬとなることである。この場合、ｃｎｔがウィンドウ（ＬＬ＜ｃｎｔ＜ＵＬ）内であるように指標閾値Ｉ（０）に対する走査位置を求めることは不可能である。故に、レベルの第１のセグメントにおいて、指標閾値Ｉ（０）はｔに設定され、指標閾値Ｉ（０）の第２にセグメントはｔ＋１に設定される。両セグメントの総ｃｎｔがＵＬより少ない場合、ステートマシンはＤＯＮＥ状態１６１４に進み、ここでステートマシンは状態「完了」を返して停止する。一方、両セグメントに対する総ｃｎｔがＵＬ以上の場合、ＳｐｌｉｔＩｎｄｅｘＶａｌは、より多くのレベルが第１のセグメントから第２のセグメントに移されるようにインクリメントされる。ｃｎｔが条件（ｃｎｔ＜ＵＬ）に達すると、ステートマシンはＤＯＮＥ状態１６１４に進み、ここでステートマシンは状態「完了」を返して停止する。
【０１２４】
以下は２つのパーティションに亘ってスプリット指標付けを行うための例示的な擬似コードである。第１のパーティションは０からＮｂｌｏｃｋｓ−ＳｐｌｉｔＩｎｄｅｘＶａｌ−１までで、第２のパーティションはＮｂｌｏｃｋｓ−ＳｐｌｉｔｉｎｄｅｘＶａｌからＮｂｌｏｃｋｓ−１までである。パラメータＳｐｌｉｔＩｎｄｅｘＶａｌはパーティション間の分割ラインをどこで引くかを制御する。これは、１つの走査指標閾値では閾値化される係数のカウントが大きすぎるが（ＵＬより大きい）、１つ離れた近傍の指標では小さすぎる場合に（ＬＬより小さい）微細なチューニングを効果的に与える。それゆえ、ＳｐｌｉｔＩｎｄｅｘＶａｌが非ゼロに設定されると、第１のパーティションに対しては走査指標Ｉ（０）で閾値関数を開始し、第２のパーティションに対しては走査指標Ｉ（０）＋１で開始して、閾値化が行われる。ＳｐｌｉｔＩｎｄｅｘＶａｌはスライス閾値化の始めにゼロに初期化され、ステートマシンにより修正されて、ＬＬとＵＬ間で定義されたウィンドウ内で閾値化された係数のカウントを動かす。
【０１２５】
【数１５】
2006521771.tif 000017
第２の実施形態
図１７を参照して、本発明の第２の好適な実施形態において、トランスコーダ１３４はＶＬＤ９０２、ＶＬＥ９０６およびプロセッサ１７０２を含む。ＶＬＤ９０２とＶＬＥ９０６はすでに説明したので再度説明はしない。さらに第２の好適な実施形態では、レートコントローラ１７０４は、図１３〜図１６に示す再量子化／閾値化論理を使用して、再量子化もしくは閾値化、または再量子化および閾値化を行うべきか否かを決定する。
【０１２６】
プロセッサ１７０２はレートコントローラ１７０４、加算器１７０６およびメモリ１７０８を含む。メモリ１７０８は、ドリフトバッファ１７１０Ａおよび１７１０Ｂおよび、とりわけ、動きベクトル、ヘッダ、非ビデオフレーム、ＮビットテーブルおよびＶＬＣテーブル用のその他のバッファ（図示せず）を含む。閾値化器９３６およびスキャナ９３８に加えて、レートコントローラ１７０４は、動き補正モジュール１７１２および再量子化器モジュール１７１４を含む。本実施形態では、ピクセル領域において動き補正を適用する代わりに、プロセッサ１７０２は、動き補正をＤＣＴ領域で適用する。
【０１２７】
以下で詳細に説明するように、ピクセル情報のブロックを基準サブマクロブロックからカレントサブマクロブロックに変換することは、サブマクロブロック（行列形式）にウィンドウ関数を掛けることに相当する。ウィンドウ関数はユニタリ直交行列であるので、ピクセルのサブマクロブロックのウィンドウ関数倍の積のＤＣＴ変換は分配的であり、その結果、積は、サブマクロブロックのＤＣＴ表現のウィンドウ関数倍のＤＣＴ表現の行列積に等しい。可能な全動きベクトルのセットは有限であり、メモリ１７０８は、動き補正器が使用するＤＣＴ領域動き補正行列（Ｇ）を含む。ドリフトバッファ１７１０は、格納される２つの基準フレームに対して各サブマクロブロック毎にドリフトを蓄積している。但し、サブバマクロブロックのドリフトは、処理前のサブマクロブロックの未量子化レベルと、処理後、すなわち再量子化および／または閾値化によりレベルのビットサイズが縮小された後の未量子化レベルとの差である。好ましくは、サブマクロブロックのドリフトはアレイ形式で格納されるか、同等には行列形式で格納も可能であり、２つの形式間を交互にマップ可能である。
【０１２８】
レートコントローラ１７０４はカレントフレームに含まれるコンテンツ情報を受信して、スキャナ９３８はそのコンテンツ情報をラン−レベル領域からＤＣＴ領域へと変換する。言い換えると、スキャナ９３８は、ランレベルペアの各セットをその一部またはほとんどがゼロである６４個のレベルに拡大する。レベルは、８×８行列または６４要素アレイのいずれかに配置されることができる。以下で詳細に説明するように、サブマクロブロックのレベルは６４要素アレイで走査順に配列し、サブマクロブロックのドリフトを６４の要素アレイに蓄積することが好ましい。
【０１２９】
動き補正１７１２は、ドリフトバッファ１７１０から蓄積ドリフト（Ｄ）を受信し、動きベクトルを使用して適切な動き補正行列（Ｇ）を選択する。蓄積ドリフトは適切な動き補正行列（Ｇ）を掛けた行列であり、積（ＧＤ）はカレントフレームのサブマクロブロックに加算される。
【０１３０】
Ｉピクチャがレートコントローラ１７０４によって受信されると、動き補正は行われない。但し、レートコントローラ１７０４は、（Ｌ）で表される未量子化レベル用のバッファを含み、その未量子化レベルは加算器１７０６に提供される。レートコントローラ１７０４はまた、（Ｌ’）で表される未量子化縮小レベルを加算器１７０６に提供する。サブマクロブロックに関して、未量子化縮小レベルは、再量子化器１７０４および／または閾値化器９３６によりマクロブロックのサイズが縮小／シェイブされた後の未量子化レベルである。Ｉピクチャにおけるサブマクロブロックのドリフトは、処理前の未量子化レベル（Ｌ）と未量子化縮小レベル（Ｌ’）との間の差である。
【０１３１】
加算器１７０６はドリフトをメモリ１７０８に提供して、そこでそのサブマクロブロックのドリフトをバッファする。メモリがカレントフレームのサブマクロブロックすべてに対してドリフトを有すると、そのフレームのドリフトはドリフトバッファ１７１０に格納される。
【０１３２】
後続の各フレームに対して、レートコントローラ１７０４は、ドリフトをドリフトバッファ１７１０から抽出して、動き補正をそれに適用して、動き補正されたドリフト（ＧＤ）をカレントフレームの未量子化レベルに加算する：（Ｌ）＝（Ｌ）＋（ＧＤ）。ここで（Ｌ）は、カレントフレームのサブマクロブロックに対する未量子化レベルの行列／アレイであり、Ｄは基準サブマクロブロックに対する蓄積ドリフトの行列／アレイであり、（Ｇ）はカレントフレームのサブマクロブロックに対する動きベクトルに関連付けられた動き補正行列である。動き補正されたドリフト（ＧＤ）はまた、加算器１７０６に提供される。レートコントローラ１７０４はカレントフレームのレベルを再量子化／閾値化し、加算器１７０６にカレントフレームの未量子化レベル（Ｌ）と縮小未量子化レベル（Ｌ’）の両方を提供する。そしてサブマクロブロックに対する蓄積ドリフトは、以下の式により求められる。
【０１３３】
【数１６】
2006521771.tif 000018
Ｄ’がカレントフレームのすべてのサブマクロブロックに対して計算された後、カレントフレームの蓄積ドリフトはドリフトバッファ１７１０にバッファされる。
【０１３４】
先に述べたように、フレーム間符号化フレームは、基準フレームにおけるブロックからのピクセル情報を残余フレームのピクセルに加算することによりＭＰＥＧデコーダで生成される。ＭＰＥＧデコーダは、フレーム間符号化フレームのヘッダに含まれる動きベクトルを使用して、ピクセル値のブロックを基準フレームからフレーム間符号化フレームへ変換する。典型的には、動き補正されたブロック、つまり情報が１つ以上の基準フレームから検索されたものは、２つ以上の基準ブロックの部分から構成される。図５は、動きベクトルの両成分が例えば、８ピクセルなどのブロックサイズの整数倍数でない場合に生じる一般的な状況を示す。動き補正されたブロック５０２は、１〜４とされる４つのサブブロック５０８と残余ブロック（図示せず）で構成される。各サブブロック５０８は、基準ブロック５０４の部分である。サブブロック５０８（１）のサイズは（Ａ×Ｂ）（「Ａ」はピクセルの行数であり、「Ｂ」はピクセルの列数である）であり、基準ブロック５０４（１）の右下コーナーに対応する。サブブロック５０８（２）のサイズは（Ａ×（８−Ｂ））であり、基準ブロック５０４（２）の左下コーナーに対応し、サブブロック５０８（３）のサイズは（（８−Ａ）×Ｂ）であり、基準ブロック５０４（３）の右上コーナーに対応し、サブブロック５０８（４）のサイズは（（８−Ａ）×（８−Ｂ）であり、基準ブロック５０４（４）の左上コーナーに対応する。動きベクトル５０６、ｒ１〜ｒ４は、サブブロック５０８（１）〜５０８（４）が適切に位置付けられるように基準ブロック５０４（１）〜５０４（４）を変換する。
【０１３５】
行列形式において、動き補正されたブロック５０２はｄｍｃで表され、以下の式で求められる。
【０１３６】
【数１７】
2006521771.tif 000019
但し、ｄｉは以下の式で求められる８×８行列である。
【０１３７】
【数１８】
2006521771.tif 000020
但し、ｂｉはｉ番目の基準ブロック５０４であり、ｎｒおよびｎｃはそれぞれサブブロック５０８（ｉ）の行数と列数であり、ｈｉｎｒおよびｗｉｎｃは識別サブ行列を有する上下直交行列の形式である。４つのサブブロック５０８のｈ行列は以下の通りであり、
【０１３８】
【数１９】
2006521771.tif 000021
ｗ行列は以下の通りである。
【０１３９】
【数２０】
2006521771.tif 000022
離散コサイン変換を式１５に適用すると以下が生じ、
【０１４０】
【数２１】
2006521771.tif 000023
ｈｉｎｒおよびｗｉｎｃ行列はユニタリ直交であるので、ＤＣＴ演算は分配的である。式１４〜１６における行列のサイズはすべて８×８で、その結果、Ｄ、Ｄｉ、Ｂｉ行列の要素を、図７Ａに示す走査順などの所定の順番に配置することにより、式１６ｂの各成分は以下のように書き換えることができる。
【０１４１】
【数２２】
2006521771.tif 000024
但し、プライムの付いた行列のサイズは６４×１で、ＨｉおよびＷｉ行列の関数であるＧは、ＨｉおよびＷｉ行列から計算された６４×６４である。文字「ｉ」はｉ番目の基準ブロックを示す。図５に示すように「ｉ」は通常は１〜４までである。但し、明確にするために、文字「ｉ」は下にさげられ、これは基準フレームからカレントフレームに延びる動きベクトルの成分の大きさがそれぞれ整数分のブロックであることを意味する。
【０１４２】
すべて同じサイズ（ＮｘＮ）の行列ａ、ｂ、ｃ、ｄおよびｅで、
【０１４３】
【数２３】
2006521771.tif 000025
かつ行列ａの（ｎ，ｍ）成分は以下の式により求められる行列ａ、ｂ、ｃ、ｄおよびｅについて考えてみよう。
【０１４４】
【数２４】
2006521771.tif 000026
ａおよびｂ行列における各要素は、走査順アレイへの１つずつのマッピングを有し、走査順アレイの第１の要素（ａ’０＝ａ０，０）は以下の通りである。
【０１４５】
【数２５】
2006521771.tif 000027
ｆの各要素は、走査順に従ってターム単位でターム上に決定される。例えば、図７Ａで示される走査順を使用すると、Ｎ＝８，ｂ‘０＝ｂ０，０、ｂ’１＝ｂ０，１、ｂ’２＝ｂ１，０・・・ｂ’６３＝ｂ７，７そしてｆ０，０＝ｃ０，０、ｄ０，０、ｆ０，１＝ｃ０，０ｄ１，０、ｆ０，２＝ｃ０，１ｄ０，０、・・・およびｆ０，６３＝ｃ０，７ｄ７，０である。
【０１４６】
同様の方法で、（Ｇ）のＤＣＴ領域動き補正（ＭＣ）行列の要素が求められる。１つの好適な実施形態では、メモリ１７０８は、動き補正されたブロック内のすべての可能な整数ピクセルサブブロック配置を明らかにするためのＧ行列の完全なセットを含む。当業者は承知のように、ＭＰＥＧ−２は整数ピクセル変換の一次結合を経て達成される、サブブロックの半ピクセル変換（ｈａｌｆ  ｐｉｘｅｌ  ｔｒａｎｓｌａｔｉｏｎｓ）を可能とする。明確にするために、基準フレームからフレーム間符号化フレームへとピクセルのブロックを変換する動きベクトルは、整数変換と見なされるが、当業者は半整数変換（ｈａｌｆ−ｉｎｔｅｇｅｒ  ｔｒａｎｓｌａｔｉｏｎｓ）を理解し、かかる変換は本発明の範囲内であるとみなされる。
【０１４７】
動き補正
図１８〜２０は、ラン−レベル領域における動き補正をトランスコードされるフレームに適用するために、トランスコーダ１３４によって実行される例示的な論理である。図１８では、ステップ１８００は、とりわけ、再量子化もしくは閾値化のいずれか、または再量子化および閾値化の両方を使用してフレームのビットサイズを選択的に縮小するトランスコーダ１３４に応答して、トランスコーダ１３４内で動き補正スキームを適用するための１つの実施形態を示す。図１９では、非制限例示的ステップ１９００は動き補正スキームの１つの実施形態を示す。図２０では、非制限例示的ステップ２０００は再量子化もしくは閾値化のいずれか、または再量子化および閾値化の両方により導入され、図１９で示される動き補正スキームで使用される、ドリフトの蓄積の１つの実施形態を示す。図１８〜図２０では、量子化パラメータがＱ１からＱ２に変更された再量子化により処理されたレベルと閾値化によって処理されたレベルとは、例えばｌ’のように、プライムをつけて示されるが、一方、再量子化されていない（量子化パラメータが変更されない）または閾値化されていないレベルは、例えばｌのようにプライムを付けていない。
【０１４８】
図１８を参照して、ステップ１８０２では、プロセッサ１７０２はＶＬＤ９０２からカレントフレームを受信する。カレントフレームは、とりわけ、ヘッダ、および｛ｒ，ｌ（Ｑ１）｝で表される量子化されたラン−レベルペアのセットを含む。カレントフレームがフレーム間符号化されている場合は、とりわけ、動きベクトルも含む。再量子化および／または閾値化の結果は、フレーム間符号化されたフレームのレベルにおけるドリフトである。フレームをピクセル領域値に変換しなおす従来のトランスコーダでは、トランスコードされる前とトランスコードされた後の基準フレームの差に関して標準動き補正を行い、その結果のＤＣＴを行うことにより、ドリフトは補正される。フレームに対する蓄積ドリフトは、蓄積されたサブマクロブロックドリフトの行列、同等には６４要素アレイで構成され、ドリフトはＤＣＴ領域である。Ｉピクチャ、ＧＯＰの最初のピクチャが受信されると、蓄積ドリフト（Ｄ）はゼロに設定される。Ｉピクチャが再量子化および／または閾値化により処理された後、各サブブロックに対するドリフト、つまり、入ってくるレベルと処理されたレベルとの差が決定される。フレーム間符号化されたフレームを補正するのに使用することができるように、蓄積ドリフト（Ｄ）はドリフトバッファ１７１０にバッファされる。
【０１４９】
ステップ１８０４では、レートコントローラ１７０４は、カレントフレームのスライスを処理するために使用されるパラメータを初期化する。とりわけ、レートコントローラ１７０４は、カレントスライスのシェイブするビット量を決定し、量子化パラメータと閾値化パラメータを初期化する。ステップ１８０６では、レートコントローラ１７０４は、カレントフレームがＩピクチャであるかどうかを決定する。カレントフレームがＩピクチャであれば、レートコントローラ１７０４はステップ１８０８に進み、動き補正をカレントフレームのカレントスライスに適用する。典型的には、ＰピクチャおよびＢピクチャも動き補正の一部として再量子化され、これについては以下に述べる。カレントフレームがＩピクチャであると決定された後、またはカレントフレームがＩピクチャでないと決定され、カレントフレームのカレントスライスに動き補正を適用した後、レートコントローラ１７０４はステップ１８１０に進み、スライスを再量子化すべきか、カレントフレームがＩピクチャかどうかを決定する。レートコントローラ１７０４は、両方の条件、すなわち、カレントフレームがＩピクチャであることと、再量子化すべきであることが満たされた場合のみ、ステップ１８１２に進む。上記ですでに述べたように、再量子化するか否かの決定は好ましくは、これに限定されないが、縮小閾値（ＲＴ）、ピクチャタイプ、最大の最初の量子化パラメータおよび他のパラメータなどの多重パラメータに基づく。以下で説明するように、カレントフレームがＢピクチャまたはＰピクチャであれば、ステップ１８０８で行われる動き補正の一部として、レートコントローラ１７０４はカレントスライスを再量子化するかどうかを決定し、再量子化する場合は、カレントスライスを再量子化する。ステップ１８１２では、再量子化器１７１４は、新しい量子化パラメータＱ２を使用してレベルを再量子化した。
【０１５０】
ステップ１８１４では、レートコントローラ１７０４は、カレントスライスを閾値化すべきかどうか決定する。典型的には、すでに述べたように、閾値化するかどうかの決定は、一部には縮小閾値（ＲＴ）、再量子化によって節約されたビット数およびレベルの絶対値の平均などのパラメータに基づく。但し、閾値化の決定にはより少ないパラメータ、異なるパラメータまたはより多くのパラメータを含む他のパラメータを使用することもできる。
【０１５１】
レートコントローラ１７０４はカレントスライスを閾値化することを決定したら、ステップ１８１６に進み、カレントスライスを閾値化する。１つの好適な実施形態では、閾値化は図１６に示されるステートマシンと共に図１５に示される閾値化論理を使用して行われる。閾値化後のレベルはＬ’（Ｑ）（ＱはＱ１、すなわち最初の量子化パラメータまたはＱ２、すなわち最終量子化パラメータ）として表されることに注意すべきである。カレントスライスのレベルが再量子化されなかったら、それらはＱ１の関数であり、それらが再量子化されたら、それらはＱ２の関数である。
【０１５２】
閾値化後、または閾値化されなかった後、レートコントローラ１７０４はステップ１８１８に進み、カレントフレームがＢピクチャであるかどうか決定し、そうであればステップ１８２０に進み、再量子化および／または閾値化により生じたレベルにおけるドリフトを蓄積する。ドリフトはピクチャ群を通して蓄積され、ピクチャの新しい群の始めでゼロにリセットされる。
【０１５３】
ステップ１８２２では、レートコントローラ１７０４は、カレントスライスがカレントフレームの最後のスライスだったかどうか決定し、そうであれば、ステップ１８２４に進む。一方、カレントスライスがカレントフレームの最後のスライスでなければ、レートコントローラ１７０４はステップ１８０４に戻り、終了されるまでカレントフレームのスライスを処理し続ける。
【０１５４】
ステップ１８２４では、スキャナ９３８は、｛ｒ’，ｌ’（Ｑ）｝で表されるラン−レベルペアの新しいセットを生成し、プロセッサ１７０２はカレントフレームが基準フレーム、例えばＩピクチャまたはＰピクチャであれば蓄積ドリフトを更新する。蓄積ドリフトの更新は、ステップ１８２０で計算されたカレント蓄積ドリフト（Ｔ）を蓄積ドリフト（Ｄ）内にバッファすることにより行われる。１つの好適な実施形態では、再量子化および閾値化が並行して行われる。
【０１５５】
ステップ１８２６では、プロセッサ１７０２はカレントフレームの処理されたラン−レベルペア｛ｒ’，ｌ’（Ｑ）｝をＶＬＥ９０６に送って処理する。ＶＬＥ９０６は、ハフマン符号化を使用してラン−レベルペアを圧縮データに変換して、圧縮フレームを送信する。
【０１５６】
図１９を参照して、ステップ１９００は、ＤＣＴ領域で動き補正を適用する例示的な方法を示す。ステップ１９０２では、レートコントローラ１７０４は、スライスのレベルを逆量子化して、ｌとして表される未量子化レベルを生成する。
【０１５７】
ステップ１９０４では、レートコントローラ１７０４は、ＤＣＴ領域ＭＣ行列（Ｇ）および蓄積ドリフト（Ｄ）の選択された行列をメモリ１７０８から抽出する。メモリ１７０８内の各ＤＣＴ領域ＭＣ行列は動きベクトルに関連付けられ、レートコントローラ１７０４は、カレントスライスのマクロブロックに対する動きベクトルを使用して、どのＤＣＴ領域ＭＣ行列（Ｇ）を抽出すべきかを決定する。蓄積ドリフトの選択された行列は、カレントフレームの動き補正されたサブマクロブロックに対する基準フレームサブマクロブロックに対応し、レートコントローラ１７０４は、カレントフレームのヘッダ情報を使用して、蓄積ブロックのどの行列（Ｄｉ）を抽出すべきかを決定する。但し、ｉは蓄積ドリフトの行列が基準フレームの「ｉ番目」のブロックに対応することを示す。言い換えると、カレントフレームの動きベクトルは、蓄積ドリフトの行列をカレントフレームのラン−レベルペアのセットにマップする。カレントフレームがＰピクチャの場合、蓄積ドリフトの行列はＩピクチャまたはＰピクチャなどの先行する基準フレームから選択される。カレントフレームがＢピクチャである場合は、蓄積ドリフトの行列は、ＩピクチャまたはＰピクチャなどの先行する基準フレームから、および後続のＰピクチャ基準フレームから選択される。
【０１５８】
ステップ１９０６では、カレントスライスのラン−レベルペア｛ｒ，ｌ｝の各セット毎に、レートコントローラ１７０４は、蓄積ドリフトＤの関連付けられた行列とのＧ行列の行列乗算により蓄積ドリフトに対する動き補正を計算して、積（ＧＤ）が未量子化レベルに加算される。その後、積（ＧＤ）および未量子化レベル（ｌ）はバッファされる。典型的には図１９で示されるように、カレントフレームにおけるブロックは基準フレームの４つのブロックから情報を受け取り、その結果、１セットのレベルに対して、
【０１５９】
【数２６】
2006521771.tif 000028
。その結果、Ｇ行列は、基準フレームのサブマクロブロックに関連付けられた蓄積ドリフトをカレントフレームの動き補正されたサブマクロブロックにマップする。
【０１６０】
ステップ１９０８では、レートコントローラ１７０４は、カレントスライスが再量子化されるべきかを決定する。典型的には、再量子化すべきか否かの決定は、上記ですでに述べた論理を使用して行われる。
【０１６１】
ステップ１９１０では、量子化１８０６は量子化パラメータＱ２を使用してカレントスライスのレベルを再量子化する。ラン−レベルペアの再量子化されたセット｛ｒ’，ｌ’（Ｑ２）｝で表される。一方、レートコントローラ１７０４がカレントスライスを再量子化しないと決定したとすると、ステップ１９１２で、量子化器１８０６は量子化パラメータＱ１を使用してカレントスライスのレベルを再量子化する。未量子化レベルが量子化レベルｌ（Ｑ）に変換しなおされた後、レートコントローラ１７０４は動き補正が行われる。
【０１６２】
図２０は、ドリフトを蓄積するためにレートコントローラ１７０４が取る例示的なステップを示す。ステップ２００２で、レートコントローラ１７０４は処理されたレベル（ｌ’（Ｑ））を逆量子化して、カレントスライスのレベルのセット毎に未量子化処理レベル（ｌ’）を生成する。カレントフレームがＩピクチャであれば、レートコントローラ１７０４は、最初の量子化レベル（ｌ’（Ｑ１））を逆量子化して、カレントスライスのレベルのセット毎に未量子化非処理レベル（ｌ）を生成する。しかし、カレントフレームがＩ−Ｐピクチャでなければ、動き補正がステップ１９０６で適用されたときに未量子化非処理レベル（ｌ）が生成されバッファされている。この場合、カレントスライスの未量子化非処理レベル（ｌ）はメモリ１７０８から抽出される。
【０１６３】
ステップ２００４では、レートコントローラ１７０４はカレントスライスにおけるラン−レベルペアの各セットに関連付けられているカレント蓄積ドリフトを計算して、一時的アレイ（Ｔ）にカレント蓄積ドリフトをバッファする。カレント蓄積ドリフトは、先の基準フレームからの蓄積ドリフトの動き補正の合計（ＧＤ）に瞬間ドリフト、すなわち、未量子化非処理レベル（ｌ）と未量子化処理レベル（ｌ’）の差を加えたものである。すなわちドリフト＝
【０１６４】
【数２７】
2006521771.tif 000029
。先の基準フレームからの蓄積ドリフト（Ｄ）は、カレントフレームの全体が処理されるまで更新されないので、蓄積ドリフトはカレントフレームのアーチファクトを含まない。
【０１６５】
１つの好適な実施形態では、メモリ１７０８は、Ｂピクチャを適切に処理するために、直前の基準フレーム（ＩピクチャまたはＰピクチャ）とカレント基準フレーム（Ｐピクチャ）の両方に対するドリフトを含むことができるように、ドリフトに値する少なくとも２つのフレームに対するバッファを含む。
【０１６６】
１つの好適な実施形態では、ビデオフレーム、上部ビデオフィールド、下部ビデオフィールドなどの異なるタイプのフレームに対するドリフトがメモリ１７０８に別々に蓄積される。本実施形態では、プロセッサ１７０２は、カレントフレームのヘッダ情報を使用して、カレントフレームがビデオフレームであるかどうか、すなわち非インターレースであるか、上部ビデオフィールドか下部ビデオフィールドかを決定し、その後、動き補正のために、メモリ１７０８から適切なセットのドリフトを抽出し、適切なセットのドリフトを更新する。明確にするために、動き補正のステップは順番どおりに述べたことを重視すべきである。しかしながら、当業者が認識するように、ステップは異なる順番および／または並行して実行可能であろう。１つの好適な実施形態では、計算上の効率を高める際に、これに限定されないが、量子化、逆量子化、新しいラン値の計算、行列の線形演算などのステップが行われる。
【０１６７】
１つの好適な実施形態では、Ｂ−ピクチャは動き補正なしで処理される。言い換えると、Ｂ−Ｐピクチャに関しては、ステップ１９００は省略される。Ｂ−ピクチャは基準ピクチャとして使用されないのでＢ−ピクチャの動き補正は省略することができ、Ｂ−ピクチャにおけるドリフト誤差は蓄積されず、必然的に、後続のピクチャの動き補正に使用される。多くのＭＰＥＧ−２ストリームは多数のＢ−ピクチャを含むので、Ｂ−ピクチャに対して動き補正を行わないことにより計算上の効率が高められる。
【０１６８】
本発明の例示的好適な実施形態が示され、述べられたが、述べられた発明に対する多くの変更、変形または修正が行われ得、そのいずれも本発明の精神から逸脱することがないことは、当業者にとって明らかであろう。それゆえ、変更、変形および修正は、本発明の範囲内であると見なされるべきである。また、本発明の上記の実施形態、特にいかなる「好適な実施形態」も単に実施の可能な非制限例であり、単に本発明の原則の明確な理解を説明しているにすぎないことも重視すべきである。
【図面の簡単な説明】
【０１６９】
本発明の好適な実施形態は、以下の図面を参照してより理解することができる。図面における構成要素は必ずしも一律の縮尺で描かれておらず、本発明の原則を明確に示すことに重点が置かれている。さらに、図面において、いくつかの図を通して、同じ参照番号が対応部分を表す。
【図１】図１は、本発明の好適な実施形態が採用され得る、加入者テレビシステムなどのブロードバンド通信システムのブロック図である。
【図２】図２Ａは、一連のピクチャからの実例となるピクチャである。図２Ｂは、一連のピクチャからの実例となるピクチャである。
【図３】図３は、図２Ｂで示されたピクチャの部分的ピクチャである。
【図４】図４は、残存ピクチャである。
【図５】図５は、動き補正されたブロックのブロック図である。
【図６】図６は、エンコーダのブロック図である。
【図７】７Ａは、ジグザグ走査順の図である。図７Ｂは、ジグザグ走査順の図である。
【図８】図８Ａは、量子化された行列の図である。図８Ｂは、図８Ａに示された、量子化された行列に対するラン−レベルペアのセットの図である。図８Ｃは、図８Ａに示された、量子化された行列に対するラン−レベルペアのセットの図である。
【図９】図９は、トランスコーダの実施形態のブロック図である。
【図１０】図１０は、ビット節約対再量子化パラメータのグラフである。
【図１１】図１１は、閾値関数のグラフである。
【図１２】図１２は、レートコントローラのブロック図である。
【図１３】図１３は、再量子化／閾値化を実行する際に取られるステップのフローチャートである。
【図１４】図１４は、再量子化するべきかを決定するのに取られるステップのフローチャートである。
【図１５】図１５は、閾値化するのに取られるステップのフローチャートである。
【図１６】図１６は、閾値ステートマシンの状態のブロック図である。
【図１７】図１７は、トランスコーダの別の実施形態のブロック図である。
【図１８】図１８は、デジタルストリームを再量子化および閾値化する際に取られるステップのフローチャートである。
【図１９】図１９は、動き補正の際に取られるステップのフローチャートである。
【図２０】図２０は、ドリフトを蓄積する際に取られるステップのフローチャートである。
【図１】
2006521771.tif 000031
【図２】
2006521771.tif 000032
【図３】
2006521771.tif 000033
【図４】
2006521771.tif 000034
【図５】
2006521771.tif 000035
【図６】
2006521771.tif 000036
【図７】
2006521771.tif 000037
【図８】
2006521771.tif 000038
【図９】
2006521771.tif 000039
【図１０】
2006521771.tif 000040
【図１１】
2006521771.tif 000041
【図１２】
2006521771.tif 000042
【図１３】
2006521771.tif 000043
【図１４】
2006521771.tif 000044
【図１５】
2006521771.tif 000045
【図１６】
2006521771.tif 000046
【図１７】
2006521771.tif 000047
【図１８】
2006521771.tif 000048
【図１９】
2006521771.tif 000049
【図２０】
2006521771.tif 000050
【国際調査報告】
2006521771.tif 000051