(57)【要約】【課題】【解決手段】本明細書は、デジタルビデオデータの符号化を向上させるために使用され得る符号化方法に関する。この方法は、ビデオ符号化中の計算数を減じ、場合により電力消費を節減するために、デジタルビデオ装置のエンコーダによって組み込まれ得る。特に、ビデオ符号化方法は、計算が符号化をこれ以上よくしないと思われる時に様々の計算の実行を終了させるために１つ以上のプログラム可能なしきい値を利用しているものとして、説明されている。計算を早めに終了させることによって、ビデオ符号化のために必要な処理の量が減じられ、電力が節約され得る。
2005525028.tif 000002
【特許請求の範囲】
【請求項１】
ビデオ符号化ルーチンのための所定のしきい値を保存することと、
算出された差分値が前記しきい値より大きくなった時に、前記ビデオ符号化ルーチンの少なくとも一部分を終了させることとを具備している、ビデオ符号化ルーチンにおける計算数を減じる方法。
【請求項２】
前記しきい値は、しきい値の差分値を設定するタスクしきい値であり、算出された差分値がこのしきい値より大きくなった時にビデオ符号化ルーチンの少なくとも一部分を終了させることは、前記タスクに関連している差分値が前記しきい値よりも大きくなった時に、現在のビデオフレームと関連している現在のビデオブロックと、異なるビデオフレームに関連している異なるビデオブロックとの間の差分を予測するタスクを終了させることを有している、請求項１の方法。
【請求項３】
前記しきい値は、許容値を規定するイテレーションしきい値であり、算出された差分値が前記しきい値より大きくなった時にビデオ符号化ルーチンの少なくとも一部分を終了させることは、前記しきい値よりも小さい差分値を規定する異なるビデオブロックを特定した時に、現在のビデオフレームに関連している現在のブロックと、異なるビデオフレームに関連している異なるビデオブロックとの比較を終了させることを有している、請求項１の方法。
【請求項４】
第１の差分値を設定するために第１の複数の差分計算を合計することと、
前記第１の差分値をしきい値として設定することと、
第２の差分値を設定するために第２の複数の差分計算を合計することと、
前記第２の差分値が前記しきい値より大きくなった時に、第２の複数の差分計算の合計動作を終了させることとを具備し、
前記第１の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第１の異なるビデオブロックとの間の差分の測度であり、
前記第２の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第２の異なるビデオブロックとの間の差分の測度である、方法。
【請求項５】
所定のタスクのための差分値のしきい値を保存することと、
第１の複数の差分計算を合計して、第１の差分値を設定することと、
前記第１の差分値が前記しきい値より大きくなった時に、第１の複数の差分計算の合計動作を終了させることと、
前記第１の差分値が所定の差分しきい値を決して超えない場合に、前記差分のしきい値を第１の差分値に更新することとを具備し、
前記第１の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第１の異なるビデオブロックとの間の差分の測度である、方法。
【請求項６】
第２の複数の差分計算を合計して、第２の差分値を設定することと、
前記第２の差分値が前記しきい値より大きくなった時に、第２の複数の差分計算の合計動作を終了させることと、
前記第２の差分値が前記しきい値を決して超えない場合に、前記しきい値を前記第２の差分値に更新することとを更に具備し、
前記第２の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第２の異なるビデオブロックとの間の差分の測度である、請求項５の方法。
【請求項７】
ビデオ符号化に対する許容値を設定する所定のイテレーションしきい値を保存することと、
前記しきい値よりも小さい所定の異なる値を規定する、異なるビデオフレームに関連している異なるビデオブロックを特定した時に、現在のビデオフレームに関連している現在のビデオブロックの符号化を終了させることとを具備している、ビデオ符号化ルーチンにおける計算数を減じる方法。
【請求項８】
前記差分値は、現在のビデオブロックと異なるビデオブロックとの間の差分を示す値である、請求項７の方法。
【請求項９】
現在のビデオブロックと異なるビデオブロックとの間の差分を送信し、また、異なるビデオブロックを特定する動きベクトルを送信することによって、現在のビデオブロックを送信することを更に具備している、請求項７の方法。
【請求項１０】
符号化されたビデオブロックを送信する送信機と、
ビデオ符号化に対する許容値を規定するイテレーションしきい値を規定し、そして、前記しきい値よりも小さい差分値を規定する、異なるビデオフレームに関連している異なるビデオブロックを特定した時に、現在のビデオフレームに関連している現在のビデオブロックの符号化を終了させることによって、前記ビデオブロックを符号化するエンコーダとを具備している装置。
【請求項１１】
符号化されたビデオブロックを送信する送信機と、
ビデオ符号化ルーチンのためのしきい値を規定し、そして、算出された差分値が前記しきい値より大きくなった時にビデオ符号化ルーチンの少なくとも一部分を終了させることによって、前記ビデオブロックを符号化するエンコーダとを具備している、MPEG-４に準拠しているビデオストリームを符号化する装置。
【請求項１２】
前記しきい値は、しきい値の差分値を設定するタスクしきい値であり、また、所定のタスクに関連している差分値が前記しきい値よりも大きくなった時に、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している異なるビデオブロックとの間の差分を予測するタスクを終了させることによって、前記エンコーダが、算出された所定の差分値が前記しきい値より大きくなった時にビデオ符号化ルーチンの少なくとも一部分を終了させる、請求項１１の装置。
【請求項１３】
前記しきい値は、十分低い値を規定するイテレーションしきい値であり、また、前記しきい値よりも小さい差分値を規定する異なるビデオブロックを特定した時に、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している異なるビデオブロックとの比較を終了させることによって、算出された差分値が前記しきい値より大きくなった時に、前記エンコーダが、ビデオ符号化ルーチンの少なくとも一部分を終了させる、請求項１１の装置。
【請求項１４】
前記エンコーダは、ビデオ符号化ルーチンのための複数のしきい値を更に規定し、前記様々のしきい値より大きくなった時にビデオ符号化ルーチンの異なる部分を終了させる、請求項１１の装置。
【請求項１５】
前記装置は、デジタルテレビジョンと、ワイヤレス通信装置と、ＰＤＡと、ラップトップコンピュータと、デスクトップコンピュータと、デジタルカメラと、デジタル記録装置と、ビデオ機能を有しているセルラー方式無線電話と、ビデオ機能を有しているサテライト無線電話とのグループから選択される、請求項１１の装置。
【請求項１６】
ワイヤレス装置と関連しているバンド幅を特定することと、
このバンド幅に基いてビデオ符号化ルーチンのための所定のしきい値を選択することと、
ビデオ符号化ルーチンを実行することと、
算出された所定の差分値が前記しきい値より大きくなった時に、ビデオ符号化ルーチンの少なくとも一部分を終了させることとを具備している方法。
【請求項１７】
ビデオ符号化ルーチンにおいて所定の探索空間上に第１の探索を規定することと、
符号化されるイメージブロックに対する第１の合致である、前記探索空間内のイメージブロックを探し当てるために、第１のセットのタスクを実行することと、
前記第１の合致に基いて、前記探索空間のサブセット上に第２の探索を規定することと、
符号化されるイメージブロックに対する第２の合致である、前記サブセット内のイメージブロックを探し当てるために、第２のセットのタスクを実行することとを具備し、
前記第２の合致は、第１の合致よりよい合致である、方法。
【請求項１８】
少なくとも１つのタスクを、このタスクと関連している差分値が所定のタスクしきい値より大きくなった時に、終了させることを更に具備している、請求項１７の方法。
【請求項１９】
前記他のしきい値よりも小さい差分値を与える第１の探索で合致するイメージブロックを特定した時に、前記第１のセットのタスクの実行を終了させることを更に具備している、請求項１７の方法。
【請求項２０】
前記他のしきい値よりも小さい差分値を与える第２の探索で合致するイメージブロックを特定した時に、前記第２のセットのタスクの実行を終了させることを更に具備している、請求項１９の方法。
【請求項２１】
前記第２の合致に基いて、前記探索空間のサブセットのサブセットに関して第３の探索を規定することと、
符号化される前記イメージブロックに対する第３の合致である、前記サブセットのサブセット内のイメージブロックを探し当てるために、第３のセットのタスクを実行することとを具備し、前記第３の合致は、第２の合致よりよい合致である、請求項１７の方法。
【請求項２２】
符号化されたビデオブロックを送信する送信機と、
ビデオ符号化ルーチンにおいて所定の探索空間上に第１の探索を規定し、符号化されるイメージブロックに対する第１の合致である、前記探索空間内のイメージブロックを探し当てるために、第１のセットのタスクを実行し、第１の合致に基いて前記探索空間のサブセット上に第２の探索を規定し、符号化されるイメージブロックに対する第２の合致である、前記サブセット内のイメージブロックを探し当てるために、第２のセットのタスクを実行することによって、前記ビデオブロックを符号化するエンコーダとを具備し、前記第２の合致は、第１の合致よりよい合致である、装置。
【請求項２３】
ビデオ符号化ルーチンにおいて所定の探索空間上に第１の探索を規定し、符号化されるイメージブロックに対する第１の合致である、前記探索空間内のイメージブロックを探し当てるために、第１のセットのタスクを実行し、第１の合致に基いて前記探索空間のサブセット上に第２の探索を規定し、符号化されるイメージブロックに対する第２の合致である、前記サブセット内のイメージブロックを探し当てるために、第２のセットのタスクを実行することによって、MPEG-4規格に準拠しているビデオブロックを符号化する装置であって、前記第２の合致は、第１の合致よりよい合致である、装置。
【請求項２４】
第１の差分値を設定するように第１の複数の差分計算を合計することと、
第１の差分値をしきい値として設定することと、
第２の差分値を設定するように第２の複数の差分計算を合計することと、
第２の差分値が前記しきい値より大きくなった時に、第２の複数の差分計算の合計動作を終了させることとによって、MPEG-4に準拠しているビデオスクリームを符号化する装置であって、前記第１の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第１の異なるビデオブロックとの間の差分の測度であり、前記第２の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第２の異なるビデオブロックとの間の差分の測度である、装置。
【請求項２５】
所定のタスクのための差分値のしきい値のプログラム可能な値を受信することと、
第１の差分値を設定するように第１の複数の差分計算を合計することと、
前記第１の差分値が前記しきい値より大きくなった時に、前記第１の複数の差分計算を終了させることと、
前記第１の差分値が決して所定の差分しきい値を超えない場合に、差分しきい値を第１の差分値に更新することとによって、MPEG-4に準拠しているビデオストリームを符号化する装置であって、前記第１の差分値は、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している第１の異なるビデオフレームとの間の差分の測度である、装置。
【請求項２６】
ビデオ符号化に対する許容値を設定するイテレーションしきい値のプログラム可能な値を受信することと、
前記しきい値よりも小さい差分値を規定する異なるビデオフレームに関連している異なるビデオブロックを特定した時に、現在のビデオフレームに関連している現在のビデオブロックの符号化を終了させることとによって、MPEG-4に準拠しているビデオストリームを符号化する装置。
【請求項２７】
ワイヤレス装置に関連しているバンド幅を特定することと、
このバンド幅に基いてビデオ符号化ルーチンのためのしきい値を選択することと、
前記ビデオ符号化ルーチンを実行することと、
算出された差分値が前記しきい値より大きくなった時に、ビデオ符号化ルーチンの少なくとも一部分を終了させることとによって、MPEG-4規格に準拠しているビデオストリームを符号化する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルビデオ処理、特に、デジタルビデオデータの符号化に関する。
【背景技術】
【０００２】
デジタルビデオ性能は、デジタルテレビジョン、デジタル直接衛星放送システム、ワイヤレス通信装置、パーソナルデジタルアシスタント（PDA）、ラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、デジタル記録装置、セルラー方式、即ち、衛星ラジオ電話等を含む幅広い装置に組み込まれ得る。これらと他のデジタルビデオ装置は、フルモーションビデオシーケンスを作り出し、改良し、送信し、保存し、記録し、再生することについて、従来のアナログビデオシステムに関して顕著な改良を与え得る。
【０００３】
多数の様々のビデオ符号化規格が、デジタルビデオシーケンスを通信するために確立されてきた。例えばMoving Picture Experts Group(MPEG)が、MPEG-1、MPEG-2及びMPEG-4を含む多数の規格を開発してきた。他の規格には、ITU H.263、Apple Computer of Cupertino CaliforniaによるQuickTime方法、Microsoft corporation of Redmond、Washingtonによって開発されたVideo for Windows、Intel corporationによって開発されたIndeo、RealNetworks,Inc.of Seattle、WashingtonによるRealvideo、SuperMac,Inc.によって開発されたCinepakとが含まれる。いまだ開発されていない規格を含むこれらと他の規格は、発展し続けるだろう。
【０００４】
ビデオ符号化規格は、データを圧縮した形で符号化することによって、送信速度の増大を果たす。圧縮によって、イメージフレームを効果的に送信するために、送信される必要があるデータの全量が減じられ得る。例えば、MPEG規格は、圧縮なしで果たされる場合よりも狭いバンド幅でのビデオ及びイメージの送信を容易にするように設計された画像及びビデオの圧縮方法を使用している。特に、MPEG規格は、フレーム間の圧縮を提供するために、時間相関もしくはフレーム間相関として言及される、連続したイメージフレーム間の類似性を利用したビデオ符号化方法を組み入れている。フレーム間の圧縮方法は、イメージフレームのピクセルベースの描写を動き描写に変換するというように、複数のフレームにわたるデータの冗長さを利用している。更に、ビデオ符号化方法は、イメージフレーム内の動き描写が更に圧縮され得るフレーム内圧縮を果たすために、空間相関もしくはフレーム内相関として言及される、イメージフレーム内の類似性を利用し得る。フレーム内圧縮は、典型的には、離散コサイン（DCT）符号化のような、静止画像を圧縮するための従来の処理に基いている。
【０００５】
圧縮方法を支持するために、多くのデジタルビデオ装置は、デジタルビデオシーケンスを圧縮するエンコーダと、デジタルビデオシーケンスを伸長するデコーダと、を有している。多くの例では、エンコーダとデコーダとは、ビデオイメージのシーケンスを規定するフレーム内のピクセルブロックに関して作用する統合されたエンコーダ／デコーダ（CODEC）を有している。例えば、MPEG-4規格では、送信装置のエンコーダは、典型的には、送信される所定のビデオイメージフレームを、夫々が小さなイメージブロックを有している複数のマクロブロックに分割する。イメージフレーム内の各マクロブロックのために、エンコーダは、直前のビデオフレーム内のマクロブロックを探索して、最も類似したマクロブロックを特定し、そして、２つのマクロブロック間の差分を、送信のために、前のフレームからのどのマクロブロックが符号化のために使用されるかを示す動きベクトルと共に符号化する。受信装置のデコーダは、動きベクトルと符号化された差分とを受信し、ビデオシーケンスを生成するように、動き補償を実行する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ビデオ符号化方法は、多くの計算を必要とする。特に、ビデオブロックを送信済みの前のビデオブロックと比較する処理では、多数の計算が必要である。向上された符号化方法は、計算資源が制限されていて電力消費が問題であるワイヤレス装置もしくは他の携帯用ビデオ装置で特に使用されるために、非常に好ましい。
【課題を解決するための手段】
【０００７】
ビデオ符号化方法は、効果的なビデオ符号化のために更なる計算が不要であると判断された時にその計算を終了させることによって、ビデオ符号化を向上させ得るものとして、説明されている。例えば、ビデオ符号化方法は、ビデオ符号化ルーチンのために所定のしきい値を規定することと、算出された差分値が前記しきい値より大きくなった時にビデオ符号化ルーチンの少なくとも一部分を終了させることとを有し得る。
【０００８】
以下に詳しく説明されるように、しきい値は、タスクレベル、イテレーションレベル、もしくは両方のレベルで規定され得る。例えば、所定のタスクしきい値が、しきい値の差分値を設定し得る。この場合、ビデオ符号化ルーチンの少なくとも一部分を終了させることは、所定のタスクに関連している差分値がしきい値よりも大きくなると、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している異なるビデオブロックとの間の差分を予測する所定のタスクの終了を有し得る。異なるビデオフレームに関連している異なるビデオブロックは、前のビデオフレームの前のビデオブロックか、複数のフレームのシーケンスの内の次のビデオフレームの次のビデオブロックであり得る。
【０００９】
更に、イテレーションしきい値が、ビデオ符号化中の所定のイテレーションのために容認できる値を規定し得る。この場合、ビデオ符号化ルーチンの少なくとも一部分を終了させることは、タスクを終了させる、例えば、しきい値より小さい所定の差分値を規定する、異なるビデオブロックを特定した時に、現在のビデオフレームに関連している現在のビデオブロックと、異なるビデオフレームに関連している異なるビデオブロックとの比較を終了させることを有し得る。
【００１０】
こうした方法は、ハードウェア、ソフトウェア、ファームウェア、もしくはこれらの任意の組み合わせで、実行され得る。こうした方法は、計算資源がより制限されていて電力消費が問題となるワイヤレスデジタルビデオ装置か他の携帯用ビデオ装置において、特に効果的であり得る。こうした方法は、ソフトウェアに組み込まれている場合、本明細書で説明されているように実行されると１つ以上の符号化方法を行うプログラムコードを有している、コンピュータで読み取り可能な媒体に向けられ得る。様々の実施形態の更なる詳細は、添付図面と以下の説明とに説明されている。他の特徴と、目的と、利点とは、説明と図面と請求項とから明らかになるだろう。
【発明を実施するための最良の形態】
【００１１】
一般に、本開示は、デジタルビデオデータの符号化を改良するために用いられ得る符号化方法に向けられている。これらの方法は、ビデオ符号化中の計算数を減らし、場合により電力消費を節減するために、デジタルビデオ装置のエンコーダによって実行され得る。このように、これらの方法は、MPEG4などの標準規格に係わるビデオ符号化を改良でき、計算データ資源がより制限されていて電力の消費が１つの問題となっているワイヤレス装置内でのビデオ符号化の実行をより容易にすることができる。更に、これらの方法は、動き予測を行う公的規格や他の規格との相互運用に影響を与えない。
【００１２】
具体的には、ビデオ符号化方法が、様々の計算の実施をこれらの計算がこの符号化を良くしそうもない時に終了させるために１つ以上のプログラム可能なしきい値を利用するものとして、説明されている。早い時期に計算を終了させることによって、ビデオ符号化に必要とされる処理量が減じられ、電力が節減され得る。プログラム可能なしきい値が、所望のレベルの符号化の質を得られるように選択されてもよい。一部の例では、しきい値が、更なる計算は非生産的であることが分かっている時にのみ、計算を終了させ得る。別の例では、また、しきい値が、符号化が容認できると見なされた時に、たとえ更なる計算が、現在のビデオブロックと探索空間内のビデオブロックとの間のもっとよいビデオブロックの合致を特定する可能性があるとしても、計算を終了させ得る。後者では、計算数が減らされる利点が、処理速度の上昇や、電力の節減や、これら両方について、符号化中によりよいビデオブロックの合致を特定する利点より重要である。
【００１３】
様々の実施形態が、以下に、更に詳しく説明されている。異なる実施形態は、タスク終了方法もしくはイテレーション終了方法として特徴付けられ得る。本開示では、用語“タスク”が、現在のビデオブロックを探索空間内の他のビデオブロックと比較するために使用される一般的な１セットの計算を指す。即ち、１つのタスクとは、現在のビデオブロックと探索空間内の他のビデオブロックとの間の一回の比較を指す。例えば、１つのタスクは、現在のビデオブロックの複数のピクセルを前記他のビデオブロックの複数のピクセルと比較するために複数回の計算を実行することを含んでいてもよい。例えば、６４回の計算（１つのイメージブロックの場合）もしくは２５６回の計算（１つのマクロブロックの場合）が、１つのタスクを有し得る。各タスクの間、計算が、各タスクのための進行中の差分値を規定するように累算される（時として、差測定基準として言及される）。ある所定のタスクを終了させるかどうかの決定は、各計算の後になされるか、あるいは、サブセットの計算の後、即ち、このタスクのサブセットを規定している整数の計算の後に、なされ得る。後者では、整数が、符号化ルーチンに更なる柔軟性を与えるようにプログラムされ得る。
【００１４】
以下に更に詳しく説明されるように、こうした方法は、ある所定のタスクにとって更なる計算がいつ不要となるかを特定するために用いられ得る。例えば、第２のタスクのためのサブセットの計算が、合計で、前に計算された第１のタスクに関連している差分値よりも大きい差分値を算出した時は、第２のタスクを実行しても第１のタスクよりも小さい差分値を算出し得ないことから、第２のタスクのための更なる計算が不要であることが知られている。この場合、第２のタスクは、符号化方法を無駄にせずに終了され、第３のタスクの実行が、より早く開始され得る。
【００１５】
他の実施形態が、以下に、“イテレーション終了方法”として特徴付けられている。本開示では、用語“イテレーション”が、ビデオ符号化中に実行される一般的な１セットのタスクを指す。現在のビデオブロックに関連している一連のタスクが、一回のイテレーションである。即ち、一回のイテレーションとは、現在のビデオブロックが探索空間内の１セットの前回のビデオブロック（もしくは、次のビデオブロック）と比較される、一連の比較である。個々の比較の各々は、複数回の計算を有している１つのタスクである。かくして、探索空間は、一回のイテレーションの間に現在のビデオブロックと比較される１セットのビデオブロックを規定する。イテレーションの各比較は、１回のタスクとして言及されており、各タスク、即ち、各比較は、複数回の計算を有し得る。一部の例では、イテレーションが、探索空間での第１の探索を規定することと、探索空間での第１の合致を特定することと、サブセット内での第２の合致を特定することとを含み得る。この場合、第１の合致、第２の合致、もしくは、これら両方を特定する夫々のプロセスが、途中で終了され得る。
【００１６】
終了方法は、上述されたようなタスクレベルか、イテレーションレベルか、タスクレベルとイテレーションレベルとの両方で実行され得る。１つの例では、イテレーションしきい値が、効果的なビデオ符号化に対する許容値、即ち、適正な値を規定している。このような例で、イテレーションしきい値によって容認され得ると見なされる方法で現在のビデオブロックに合致する異なるビデオブロックを特定するイテレーションが実行されている場合には、イテレーションは終了され、符号化される次のビデオブロックが、探索空間と比較され得る。この場合は、多くの不要なタスクの実行が、回避され得る。
【００１７】
以下に説明される方法は、符号化されるビデオブロックを前のビデオフレーム内の前のビデオブロックと比較するという状況で説明されている。しかしながら、同方法が、符号化されるビデオブロックを次のビデオフレームのビデオブロックと比較する時にも用いられ得ることが理解されるだろう。一部の例では、符号化されるビデオブロックが、１つ以上の前のビデオフレームの様々のビデオブロック並びに次のビデオフレームの様々のビデオブロックと比較される、双方向の動き予測が用いられている。要するに、これらの方法は、符号化されるビデオブロックが、前のビデオフレーム内の所定のビデオブロックや次のビデオフレーム内の所定のビデオブロックといった様々のビデオブロックと比較される時にはいつでも、用いられ得る。
【００１８】
こうした方法は、多くの利点を与え得る。例えば、こうした方法は、ビデオ符号化に必要な計算数を減じ、そして、符号化処理を加速させ得る。更に、計算数が減じられることによって、電力が節減される。これは、電池式装置の場合に特に効果的である。これらの方法は、動き予測を行う幅広い様々のデジタルビデオ符号化規格にとって有用であり得る。しかしながら、本明細書では、殆どの詳細がMPEG−4規格との関連で説明されている。
【００１９】
図１は、データ資源装置４が通信リンク６を超えて所定の受信装置８までビデオデータの符号化されたシーケンスを送信する、１つの例示的なシステム２を示しているブロック図である。データ資源装置４と受信装置８とは、どちらもデジタルビデオ装置である。特に、データ資源装置４は、Moving Picture Experts Groupによって開発されたMPEG-4のような、幅広いビデオ圧縮規格のうちの所定の１つの規格を用いて、ビデオデータを符号化して、送信する。他の規格には、Moving Picture Experts Groupによって開発されたMPEG-１、MPEG-２、もしくは、他のMPEG規格と、Apple Computer of Cupertino Californiaによって開発されたQuickTime技術と、Microsoft Corporation of Redmond、Washingtonによって開発されたVideo for Windowsと、Intel Corporationによって開発されたIndeoと、SuperMac Incによって開発されたCinepakと、これらと同様のものとを含み得る。
【００２０】
通信リンク６が、ワイヤレスリンクか、物理的通信ラインか、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくは、インターネットなどの地球規模のネットワークのようなパケットベースのネットワークか、公衆交換電話網(PSTN)か、様々のリンク及びネットワークの組み合わせかを有し得る。即ち、通信リンク６は、データ資源装置４から受信装置８へとビデオデータを送信するための、所定の適当な通信媒体、もしくは、場合により異なるネットワーク及びリンクの集合を表している。
【００２１】
データ資源装置４は、ビデオデータを符号化及び送信し得る所定のデジタルビデオ装置であってよい。例えば、データ資源装置４は、デジタルビデオシーケンスを保存するメモリ２２と、シーケンスを符号化するビデオエンコーダ２０と、符号化されたシーケンスを通信リンク６を通じて送信する送信機１４とを有している。一部の例では、データ資源装置４は、また、ビデオシーケンスを捕捉し、この捕捉されたシーケンスをメモリ２２中に保存するカメラなどのイメージセンサー（図１には示されず）を有していてよい。受信装置８は、ビデオデータを受信し、復号し得る所定のデジタルビデオ装置であってよい。例えば、受信装置８は、符号化されたデジタルビデオシーケンスを受信する受信機１５と、シーケンスを復号するデコーダ１６と、ユーザーにシーケンスを見せるための表示器１８とを有し得る。
【００２２】
データ資源装置４と受信装置８との例となる装置は、コンピュータネットワークに配置されたサーバーと、ワークステーションもしくは他のデスクトップコンピュータ・デバイスと、ラップトップコンピュータのようなモバイルコンピュータ・デバイスとを含んでいる。他の例は、デジタルテレビジョンと、デジタルカメラと、デジタルビデオカメラや他のデジタル記録装置のようなデジタルテレビジョン放送サテライト及び受信装置と、セルラー方式電話やビデオ性能を有しているサテライト無線電話のようなデジタルテレビジョン電話と、他のワイヤレスビデオ装置と、これらと同様のものとを含んでいる。
【００２３】
一部の例では、データ資源装置４と受信装置９とは、各々が、ビデオデータを符号化及び復号化するエンコーダ／デコーダ（ＣＯＤＥＣ）（図示されず）を有している。この場合、データ資源装置と受信装置との両方が、メモリと表示器だけでなく送信機と受信機をも有し得る。以下に説明される多くの符号化方法は、エンコーダを有しているデジタルビデオ装置との関連で説明されている。しかしながら、エンコーダがＣＯＤＥＣの一部を構成し得ることが、理解される。
【００２４】
データ資源装置４は、例えば、ビデオデータを符号化するために、ビデオイメージシーケンス内のピクセルブロックに関して作用する。例えば、データ資源装置４のエンコーダ２０は、送信される１つのビデオイメージフレームを、多数の小さなイメージブロックを有している幾つかのマクロブロックに分割する。イメージフレーム内の各マクロブロックのために、データ資源装置４のエンコーダ２０が、送信済みの前のビデオフレーム（もしくは次のビデオフレーム）のためのメモリ２２に保存されたマクロブロックを探索し、類似したマクロブロックを特定し、これらマクロブロック間の差分を、符号化のために使用された前のフレームからの所定のマクロブロックを特定する動きベクトルと共に、符号化する。データ資源装置４は、符号化処理の間、本明細書で説明されているように計算数を減らして電力を節減するために、様々のタスクかイテレーションを終了させ得るプログラム可能なしきい値を支持し得る。
【００２５】
受信装置８の受信機１５が、動きベクトルと、符号化されたビデオデータとを受信し、そして、デコーダ１６が、動き補償方法を行って、表示器１８によってユーザーに見せるためのビデオシーケンスを生成する。受信装置８のデコーダ１６は、また、エンコーダ／デコーダ（ＣＯＤＥＣ）としても使用され得る。この場合、データ資源装置と受信装置との両方が、デジタルビデオシーケンスを符号化、送信、受信、並びに復号する能力を有し得る。
【００２６】
図２は、本明細書に説明されている方法に係わってデジタルビデオシーケンスを圧縮するビデオエンコーダ２０を内蔵しているデータ資源装置４のような、例示的なデジタルビデオ装置１０を示しているブロック図である。例示的なデジタルビデオ装置１０は、モバイルコンピュータ・デバイスと、パーソナルデジタルアシスタント（PDA）と、ワイヤレス通信装置と、無線電話と、これらと同様のものなどのようなワイヤレス装置として説明されている。しかしながら、本明細書の方法は、ワイヤレス装置だけに制限されるものではなく、ワイヤレスでない装置を含む他のデジタルビデオ装置にも容易に応用され得る。
【００２７】
図２の例では、デジタルビデオ装置１０が、送信機１４とアンテナ１２とによって圧縮されたデジタルビデオシーケンスを送信する。ビデオエンコーダ２０は、ビデオシーケンスを符号化し、符号化されたデジタルビデオシーケンスを、送信前に、ビデオメモリ２２中に一時記憶する。メモリ２２は、また、符号処理時にビデオエンコーダ２０によって使用されるためのコンピュータで読み取り可能な支持及びデータも保存し得る。メモリ２２は、シンクロナスダイナミックランダムアクセスメモリ（SDRAM）か、FLASHメモリか、電気的に消去できるプログラム可能な読み取り専用メモリ（EEPROM）か、これと同様のメモリかを有している。一部の例では、デジタルビデオ装置１０は、ビデオシーケンスを捕捉するイメージセンサー２３を有している。例えば、イメージセンサー２３は、ビデオシーケンスを捕捉し、これらを符号化のためにメモリ２２に保存し得る。イメージセンサー２３は、また、“リアルタイムの”ビデオ符号化を向上させるために、ビデオエンコーダ２０に直接連結されてもよい。
【００２８】
以下に詳しく説明されるように、エンコーダ２０は、ビデオエンコーダ２０によって実行される符号化アルゴリズムを規定もしくは制限するプログラム可能なしきい値を受信し得るデジタルシグナルプロセッサ（DSP）２４を使用している。ＤＳＰ２４と動き予測器２６とは、符号化アルゴリズムを実行し、プログラム可能なしきい値に基いて、様々のタスクもしくはイテレーションを終了し得る。この結果、ビデオ符号化は、単純にされ、具体的には、不要な計算をなくし、場合によって、符号化が好ましいと見なされたときには計算数を減じることができる。
【００２９】
図３は、メモリ２２に保存され得る例示的なマクロブロック３１を示している。MPEG規格と他のビデオ符号化スキームとは、ビデオ符号化中に、マクロブロックを使用する。従って、本明細書に説明されているビデオ符号化を向上させる符号化方法は、同様に、マクロブロックに関して作用する。MPEG規格では、用語“マクロブロック”は、ビデオイメージフレームのサブセットを形成する１６×１６ピクセル値集合を指す。各ピクセル値は、データのバイトで表され得るが、より多数か少数のビットもまた、所望の結像品質を果たすために、各ピクセルを規定するように使用され得る。１つのマクロブロックは、多数のより小さな８×８ピクセルイメージブロック３２を有し得る。一般に、本明細書で説明されている符号化方法は、所定のサイズのブロック、例えば、必要に応じて、１６バイト×１６バイトマクロブロックか、８バイト×８バイトイメージブロックか、異なるサイズのマクロブロックを用いて作業し得る。
【００３０】
符号化の間、符号化される現在のイメージフレームに関連している現在のビデオブロックが、前のイメージフレームの様々のビデオブロックと比較される。前のフレーム内の類似したビデオブロックを特定すると、現在のビデオブロックと前のフレーム内の類似したビデオブロックとの間の差分が、前のフレーム内の類似したビデオブロックを特定する動きベクトルと共に、送信され得る。このように、ビデオデータのストリームの送信に必要なバンド幅は、著しく小さくされ得る。本明細書で説明されている符号化方法は、計算数を減らして、符号化中の電力消費を節減するように、様々のタスクかイテレーションかを早めに終了させることによって、符号化処理を向上させ得る。
【００３１】
符号化されたビデオブロックを受信すると、受信装置８（図１）が、動き補償方法を行い、表示器１８によってユーザーに表示するためのビデオシーケンスを生成する。例えば、受信装置８は、前に受信されたイメージフレームの前に受信されたブロックをメモリ（図示されず）に保存し得る。受信装置８のデコーダ１６は、送信された動きベクトルによって特定されている前に受信されたビデオブロックにアクセスし、そして、この特定されているビデオブロックを、動きベクトルと共に送信された差分に従って修正することによって、ビデオブロックを復号させ得る。このようにして、ビデオシーケンスは、符号化なしに果たされ得る比較的小さなバンド幅で送信され得る。
【００３２】
図４は、メモリに保存され得る例示的な探索空間４１を示している。この探索空間４１は、前に送信されたイメージフレーム（もしくはあるシーケンス中の所定のフレームの次のイメージフレーム）に対応している、ビデオブロックの一時記憶された集合である。探索空間は、必要に応じて、前のイメージフレーム全体を、もしくは、前のイメージフレームのサブセットを有し得る。一般に、探索空間が大きくなるほど、ビデオ符号化中に、より多数の計算が行われる。これは、探索空間が大きくなるほど、符号化される現在のブロックと比較されるブロックをより多く規定するからである。即ち、比較的大きな探索空間の場合は、一回のイテレーションにつきより多くのタスクが行われる。再び、現在のイメージフレームは、適正な合致を特定するために探索空間４１内の幾つかのブロックと比較され、よって、現在のブロックと前のフレーム内の類似したイメージブロックとの間の差分が、前のフレームの類似したイメージブロックを特定する動きベクトルと共に送信され得る。
【００３３】
図５は、ビデオエンコーダ２０の例示的な構成要素を更に詳しく示しているブロック図である。示されているように、例示的なビデオエンコーダ２０は、動き予測器２６に連結されたデジタルシグナルプロセッサ（DSP）２４を有している。例えば、動き予測器２６は、ビデオ符号化処理を加速させるように設計された複数のハードウェア構成要素を有し得る。別個の動き予測器２６は、ハードウェア機能性がデジタルシグナルプロセッサ２４中にプログラムされ得ることから、すべての実施形態において不要となり得る。それにも関わらず、比較エンジン５６を有している専用の動き予測器２６は、ビデオ符号化中に行われる計算の実行を著しく加速させ得る。ＤＳＰ２４と動き予測器２６とは、符号化される様々のブロックを、符号化処理中にこれらのブロックが比較される探索空間に加えて更に保存するメモリ２２に連結され得る。メモリ２２は、また、送信機１４（図２）による送信前に、符号化されたビデオデータを一時記憶し得る。
【００３４】
ＤＳＰ２４は、MPEG-4規格に従って働くビデオ圧縮アルゴリズムのような、様々のビデオ符号化アルゴリズムを実行し得る。ＤＳＰ２４は、ビデオ符号化処理を加速させるために、動き予測器２６にアクセスし得る。動き予測器２６は、ＤＳＰ２４からハードウェアで実行できるコマンドを受信して、コマンドを実行すると比較結果をＤＳＰ２４に報告するインタフェース制御ユニット５２を有し得る。動き予測器２６は、また、現在のイメージブロックと探索空間との比較が成され得るように、メモリ２２に保存された所定のビデオデータにアクセスし、場合によりこれを分割するメモリ制御ユニット５４を有し得る。
【００３５】
ＤＳＰ２４は、ビデオ符号化処理中にタスクの終了かイテレーションの終了かが起こり得る様々のシナリオを規定する１つ以上のしきい値を保存し得る。しきい値は、特定のタスクの計算が、充分にタスクを実行する前に終了される時を規定するプログラム可能なしきい値であってよい。また、しきい値は、所定のイテレーションが、効果的なビデオ符号化のために容認され得る前のビデオブロックをいつ特定するかを規定するプログラム可能なしきい値であってよい。この場合、イテレーションの更なるタスクが、終了され、現在のビデオブロックが、容認できると見なされた前のビデオブロックを用いて、符号化され得る。
【００３６】
インタフェース制御ユニット５２は、動き予測器２６のハードウェア内で様々の態様のビデオ符号化アルゴリズムを実行させるＤＳＰ２４によって出されたコマンドを受信し得る。特に、動き予測器２６は、符号化される現在のビデオブロックと既に送信済みの前のビデオフレームに関連している前のビデオブロックとを比較する比較エンジン５６を使用し得る。前のビデオブロックは、メモリ制御ユニット５４によって規定されている、探索空間内のビデオブロックであってよい。再び、こうした方法は、次のイメージフレームを探索空間を形成する時にも使用され得る。いずれにせよ、ＤＳＰ２４からのコマンドを受信すると、インタフェース制御ユニット５２とメモリ制御ユニット５４とが、比較エンジン５６で比較されるデータを列に入れ得る。そして、比較エンジン５６が、ビデオ符号化の分野でよく知られている絶対差分の和(SAD)方法、もしくは、二乗差分の和（SSD）のような比較方法を利用して、符号化される現在のビデオブロックと前のビデオブロックとを比較し得る。他の比較方法もまた、使用され得る。
【００３７】
SAD方法は、符号化される現在のブロックのピクセル値と、この現在のブロックが比較されている前のブロックのピクセル値との間の絶対差分計算を実行するタスクを含んでいる。これらの絶対差分計算の結果が、現在のビデオブロックと、この現在のビデオブロックが比較されている前のビデオブロックとの間の差分を示す差分値を規定するために、合計され、即ち、累算される。８×８ピクセルイメージブロックの場合は、差分６４が、算出され、合計され得る。１６×１６ピクセルマクロブロックの場合は、差分２５６が、算出され、合計され得る。以下に説明されるように、タスクしきい値が、規定され、並びに／もしくは、更新され得る。そして、累算された差分値が所定のタスクしきい値を超えると、このタスクの計算が終了され得る。この場合、更なる計算は不要である。かくして、所定のタスクは、このタスクの差分値がタスクしきい値を超えると、終了され得る。かくして、不要な計算が、回避される。
【００３８】
比較エンジン５６は、例えば、複数のしきい値を保存及び更新するように１つ以上のしきい値レジスタを有し得る。このしきい値レジスタに保存されている値は、所定のタスクの計算か全イテレーションかが早めに終了され得るかどうかを判断するために、比較エンジン５６によって実行されている現在の合計と比較され得る。このようにして、計算が回避され、ビデオ符号化速度が加速され、電力が節約され得る。
【００３９】
SSD方法は、また、符号化される現在のブロックのピクセル値と、この現在のブロックが比較されている前のブロックのピクセル値との差分計算を実行するタスクを含んでいる。このSSD方法では、絶対差分計算の結果が二乗され、この二乗された値が、現在のビデオブロックと、この現在のビデオブロックが比較されている前のビデオブロックとの間の差分を示す差分値を規定するために、合計され、即ち、累算される。また、SSD方法が使用されている場合、タスクしきい値は、規定され、並びに／もしくは、更新され得る。そして、タスクの計算は、累算された差分値がタスクしきい値を超えると、終了され得る。
【００４０】
タスクが実行されると、このタスクのしきい値が、初期化され、比較エンジン５６のしきい値レジスタの範囲内で更新され得る。例えば、ＤＳＰ２４は、イテレーションの間に更新され得るようなプログラム可能な値をしきい値レジスタにロードし得る。所定のタスクが実行され、それがしきい値よりも小さい差分値を算出した場合、このしきい値は、異なる値に更新され得る。計算中、算出された差分値がしきい値より大きくなった場合、１つのタスクが終了されて、次のタスクが開始され得る。一部の例では、タスクしきい値が、第１のタスクの計算がしきい値より大きくなった時に第１のタスクを終了させる最初の差分値に初期化され得る。他の例では、タスクしきい値は、第１のタスクのために算出された差分値によって初期化され得る。後者の場合は、前のタスクがより小さい差分値を与えたと見なされた場合にのみ次のタスクが終了されることから、一部のシナリオの場合にのみ好ましい。
【００４１】
ＤＳＰ２４は、タスクしきい値を定めるのに加えて、イテレーションしきい値を有するようにプログラムされることもできる。再び、本明細書では、一回のイテレーションとは、一連のタスク、即ち、符号化されるある所定の現在のブロックで成される複数の比較を指す。即ち、複数の計算を有している１つのタスクは、現在のビデオブロックを前のビデオブロックと比較するのに使用され、一回のイテレーションの次のタスクは、同じ現在のビデオブロックを、探索空間内の異なる前のビデオブロックと比較するのに使用される。一回のイテレーションの全タスクを実行すると、現在のビデオブロックに最も合致する所定の前のビデオブロックが特定され得る。即ち、最も合致している前のビデオブロックとは、これのための符号化される現在のビデオブロックを比較するタスクが最も小さい差分値を算出するビデオブロックである。
【００４２】
イテレーションしきい値をＤＳＰ２４にプログラミングすることによって、一回のイテレーションが、質の低下を最小限に抑えながらブロックを符号化するのに充分であると見なされ、合致する前のビデオブロックを特定すると、早めに終了される。符号化の質のレベルは、適当なしきい値を選択することによって、選択され得る。例えば、現在のビデオブロックを前のビデオブロックと比較するタスクが、イテレーションしきい値よりも小さい差分値を算出した場合には、前のビデオブロックがビデオ符号化のために容認できると示され得る。かくして、現在のビデオブロックが、現在のビデオブロックとビデオ符号化のために容認できると示された前のビデオブロックとの間の差分を一時記憶することによって、符号化され得る。続いて、現在のビデオブロックが、前のビデオブロックを特定する動きベクトルと共に差分を送信することによって、届けられ得る。
【００４３】
イテレーションを終了させることによって、処理速度が向上され、必要な計算の数が、著しく減じられ得る。特に、一回のイテレーションの次のタスクに関連している全計算が、回避され得る。このような符号化方法は、所定のイテレーションの次のタスク（行われた場合）が容認できると示された所定のビデオブロックよりよい合致を実際に特定する可能性があるため、十分に低い符号化を提供するかもしれない。しかし、計算数が減少されることは、符号化が低水準となる可能性があることより大事であり得る。符号化が容認され得る場合、計算数の減少と、関連している電力の節約とが、ビデオ解像度の向上などの、より最適な符号化が行われ得たという利点より大事であり得る。一部の例では、イテレーションしきい値は、解像度の向上及びイメージの質に関する利点と、計算数の減少及び電力商品の節減に関する利点との間のバランスを取って選択され得る。
【００４４】
図６は、ビデオ符号化に必要な比較を加速させるために使用され得る比較エンジン５６のより詳しいブロック図である。比較エンジン５６は、符号化される現在のブロックと、この現在のブロックが比較される前のビデオブロックとを格納するために、２つの内部高速メモリ６０、６２を有している。特に、比較エンジン５６は、符号化される現在のブロックを保存するために、探索空間メモリ６０を有している。更に、比較エンジン５６は、既に送信済みの最も類似したビデオを特定するために全データを保存するように、探索空間メモリ６２を有している。MPEG規格を支持している所定の実施形態では、例えば、ブロックメモリ６０は、送信される所定のマクロブロックを保存し得、他方で、探索空間メモリ６２は、前に送信されたビデオフレームのような、前に送信された複数のマクロブロックを保存し得る。例えば、典型的なブロックは、８×８ピクセルのものから構成され、マクロブロックは、１６×１６ピクセルのブロックから構成され、探索空間は、４８×４８ピクセルのブロックから構成され得るが、本明細書は、これらの態様に限定されていない。
【００４５】
差分ユニット６４が、メモリ６０、６２からビデオデータを取り出すためのアドレス発生ロジックを有している。符号化処理中、メモリコントロールユニット５４（図５）は、符号化される現在のブロックをメモリ２２から取り出し、この現在のブロックを比較エンジンのメモリ６０に保存する。更に、メモリコントロールユニット５４は、前のビデオフレーム内の探索空間を取り出し、この探索空間に対応しているビデオデータを探索空間メモリ６２内に保存する。例えば、ＤＳＰ２４は、メモリコントロールユニット５４に、特定されたビデオデータを比較エンジンの夫々の内部メモリ６０、６２に送信するようにさせる。
【００４６】
差分ユニット６４は、１つ以上の差分値（時として差分測定基準と言及される）を算出するようにビデオデータ間のピクセル単位の比較を実行する。メモリ６０、６２内の全探索空間だけでなく符号化される現在のブロックをも内部に格納することによって、比較エンジンが、探索と探索の間にメモリ２２にアクセスする必要がない。従って、ビデオエンコーダ２０は、従来の構造と比べて上昇された符号化速度を果たし得る。
【００４７】
差分値、即ち、差分測定基準を算出するために、差分ユニット６４が、メモリ６０に保存されている現在のブロックと、探索空間メモリ６２内の様々のブロックとの間の差分を示す出力を作り出すように所定数のアルゴリズムを使用し得る。上述されたように、差分ユニット６４は、符号化されるブロックと前のビデオフレームのブロックとの間の絶対差分の和（SAD）もしくは二乗差分の和（SSD）を算出し得る。代わって、差分計算器６４が、平均二乗誤差（MSE）か、正規化された相互相関関数（NCCF）か、他の適当な比較アルゴリズムかを実行し得る。差分ユニット６４が差分値を算出しており、対応する動きベクトルが、最も小さい差分値を与える所定の探索空間内の所定のブロックのために特定されると、保留されていた結果が、DSP２４へと送信され得る。
【００４８】
計算数を減じ、符号化速度を上昇させ、電力消費を節減するために、DSP２４と動き予測器２６とによって実行される符号化アルゴリズムが、符号化ルーチン中に、タスクか、イテレーションか、タスク及びイテレーションの両方かを終了させる１つ以上のしきい値を支持し得る。上述されたように、こうしたしきい値は、タスクしきい値かイテレーションしきい値として特徴付けられ得る。必要に応じて、こうしたしきい値は、比較エンジン５６の１つ以上のしきい値レジスタ６５内にロードされるか更新され得る。しきい値比較ユニット６６は、しきい値レジスタ６５内に保存されているしきい値を、差分ユニット６４によって合計された現時点の差分値と比較するために使用され得る。このようにして、差分ユニット６４がSADもしくはSSD方法に従って合計を算出することから、しきい値、例えばタスクしきい値かイテレーションしきい値との比較が、ハードウェア内で非常に敏速に行われ得る。次に、タスクしきい値とイテレーションしきい値とを関与させている他の実施形態が、以下に説明される。
【００４９】
図７は、所定のビデオフレームのブロックが、前に送信済みのフレームのブロックとの間の差分と動きベクトルとを利用して符号化される、ビデオ符号化方法を示しているフローチャートである。示されているように、DSP２４が、１つ以上の符号化しきい値（７１）を規定する。例えば、DSP２４は、１つ以上のタスクしきい値かイテレーションしきい値かを有するようにプログラムされ得る。タスクしきい値より大きくなったことに応えたタスクの終了と、イテレーションしきい値より大きくなったことに応えたイテレーションの終了との更なる詳細が、以下に説明される。符号化のしきい値は、符号化処理を向上させるために、終了され得る時を規定する。
【００５０】
ビデオエンコーダ２０は、動き予測器２６内の比較エンジン５６を起動させるなどによって、符号化される現在のブロック（M）を前のブロック（N）と比較するように、タスクを実行する（７２）。夫々の比較は、本明細書では、１つのタスクだと言及されており、典型的には、公知のSSD方法かSAD方法かに従って差分ユニット６４を使用するなどによってブロック（M）のピクセル値が前のブロック（N）のピクセル値から引かれる、複数の差分計算を有している。複数のタスクが、漸進的に実行される。即ち、各個々のタスクを実行した後に、ビデオエンコーダ２０が、実行すべき更なるタスクがあるかどうかを判断し（７３）、もしある場合は、更なるタスクを実行する（７２）。一回の所定のイテレーションのために多数のタスクを実行する前進的な処理が、ループ状で、フローチャートに示されている。このループでは、前のブロックのうちの次の１つを考えるように各タスクが実行されるにつれて、値Nが増加される（７４）。タスク数、即ち、比較数は、探索空間の大きさによって規定される。かくして、探索空間が現在のブロック（M）と比較されるＸ個の前のブロックを有している場合、X個のタスクがこのイテレーションのために実行され、所定のブロックのためのこのイテレーションは、N=Xとなった時に終了する。以下に更に詳しく説明されるように、所定の個々のタスクの計算は、タスクしきい値が超えられた時に終了される。
【００５１】
所定のイテレーションのための全タスクが実行されると、即ち、ブロック（M）と探索空間内の前のブロックとの間の全比較が実行される（７３の“いいえ”ブランチ）と、ブロック（M）が符号化され得る（７５）。特に、現在のブロック（M）が、タスクが元も小さい差分値を算出した前のブロック（N）を特定することによって、符号化され得る。ブロック（M）が、符号化のために使用されるブロック（N）を特定する動きベクトルと、最も小さい差分値を与えるブロック（M）とブロック（N）との間の差分とを利用して、符号化される。
【００５２】
続いて、ビデオエンコーダ２０が、実行される必要のある更なるイテレーションがあるかどうか（７６）、即ち、符号化される現在のフレーム内に更なるブロックがあるかどうかを判断する。もしあれば、更なるブロックが、上述された方法に類似した方法で、探索空間と比較される。次のイテレーションの実行が、符号化される他のブロックを特定する値（M）を増加させ（７７）、必要に応じて探索空間を更新し（７８）、そして、値（N）を再設定するものとして、フローチャートに示されている。上述されたように、各イテレーションのために複数のタスクが実行され、所定のイテレーションのための現在のブロック（M）が、所定のブロック（M）の符号化のために使用されるブロック（N）を特定する動きベクトルに加えて、所定の現在のブロック（M）と最も小さい差分値を与える探索空間内のブロック（N）との間の差分を利用して、符号化される。以下に詳しく示されるように、イテレーションの計算は、イテレーションしきい値が超えられた時に、終了され得る。この場合、多数のタスクの実行が、回避され得る。
【００５３】
所定のビデオフレームのための全イテレーションが実行されると、即ち、ビデオフレームの全ブロックが実行されると（７６の“いいえ”ブランチ）、ビデオエンコーダ２０が、ビデオデータを送信機１４に送信でき、そして、送信機１４が、ビデオフレーム（８０）の符号化されたブロックを送信できる。
【００５４】
図８は、ブロック（N）が探索空間内の前のブロックと比較されるタスクの実行を示している更に詳しいフローチャートである。即ち、図８に示されている方法は、図７の項目７２に対応し得る。示されているように、差分ユニット６４は、絶対差分計算もしくは二乗差分計算のようなタスクの計算（８１）を実行し、続いて、この計算を合計し、このタスクによって規定された現在の差分値を算出する（８２）。即ち、この合計は、ブロック（N）と、このブロック（N）と比較されている探索空間内のビデオブロックとの間の差分値（時として差分測定基準と言及される）の現行概算値を有し得る。この合計が、タスクしきい値よりも大きくなると（８３の“はい”ブランチ）、タスクが終了される。
【００５５】
例えば、しきい値比較ユニット６６が、しきい値レジスタ６５内に保存されたタスクしきい値を差分ユニット６４内に保存された差分値の現時点での合計と、周期的に比較する。MPEG-4規格に関われば、マクロブロックが差分ユニットによって比較される場合、しきい値比較ユニット６６が、大きなマクロブロックを集合的に規定している小さなイメージブロックのために、タスク比較後の差分値の合計を周期的に実行し得る。差分ユニット６４によって算出された合計、即ち、現時点の差分値が、しきい値レジスタ６５内に保存されているタスクのしきい値よりも大きくなると（８３の“はい”ブランチ）、タスクが終了される。かくして、終了されるタスクのための計算が避けられることから、このイテレーションのための次のタスクが、より早く開始され得る。このように、終了によって、計算数が減じられ、かくして、符号化処理において時間と電力とが節約される。
【００５６】
合計がタスクしきい値よりも大きくならない（８３の“いいえ”ブランチ）限りは、このタスクのための更なる計算がなくなる（８４の“はい”ブランチ）まで、更なる計算が繰り返し実行される。続いて、しきい値レジスタ６５内に保存されているタスクしきい値が、合計（８５）によって更新され得る。上述されたように、６４の計算（１つのイメージブロックの場合）か、２５６の計算（１つのマクロブロックの場合）かが、全タスクを有し得る。合計、即ち、差分値がタスクしきい値よりも大きくなると、タスクが早めに終了されることから（８３の“はい”ブランチ）、これらの計算の幾つかが回避され得る。そして、幾つかの計算を回避することによって、符号化処理の速度が上昇され、電力が節約され得る。タスクしきい値を比較エンジン５６内のローカルしきい値レジスタ６５内にロード及び更新することによって、現時点の比較が、非常に早く行われる。
【００５７】
タスクしきい値は、イテレーションの途中に更新され得る。図８の例では、第１のタスク、即ち、第１のセットの計算が、タスクしきい値を初期化する。その後、このイテレーションのために、次のタスクが、タスクしきい値と比較される。次のタスクに関連している差分値がタスクしきい値よりも大きくなると、このタスクは、現時点のビデオブロックを符号化するためにより適したビデオブロックを特定しないことが分かっていることから、このタスクが終了され得る。図８に示されたルーチンによって、しきい値が、更なる計算が非生産的であることが分かった時にタスクを終了させることから、特によい符号化が行われる。
【００５８】
一部の例では、各計算後に、合計とタスクしきい値との比較が行われない。例えば、構造を単純にするように、合計をタスクしきい値と比較する前に多数の計算の結果を合計することが望ましい。更に、合計をタスクしきい値と比較する前に実行される計算の数が、プログラムされ得る。例えば、２５６の計算が１つの全タスクを有する場合、８回の計算のサブセットの後に、タスクの現時点の差分値の比較が、行われ得る。この場合、合計の比較前に実行される計算数を規定するプログラム可能な値は、８まで設定される。
【００５９】
図９は、図８に示されているタスクルーチンのわずかな変更を示している。この例では、初期化タスクしきい値が、最初のタスクしきい値をDSP２４にプログラミングすることによって設定される（９１）。ここでは、第１のタスクさえもが、この第１のタスクの差分値合計が初期化されたタスクしきい値を越えると、終了され得る。タスク計算は、絶対差分計算もしくは二乗差分計算のように実行され（９２）、この計算が合計される（９３）。再び、この合計が、ブロック（N）と、このブロック（N）と比較されている探索空間内のビデオブロックとの間の差分値の現行概算値を有し得る。合計が、タスクしきい値よりも大きくなる（９４の“はい”ブランチ）と、タスクが終了される。しかしながら、合計がタスクしきい値よりも大きくならない（９４の“いいえ”ブランチ）限り、このタスクのための更なる計算がなくなる（９５）まで、更なる計算が繰り返し実行される。続いて、タスクしきい値は、合計によって更新され得る（９６）。特定のイテレーションのための後に続く全タスクが、更新されたしきい値と比較される。かくして、所定のイテレーションのための全タスクを実行（図７）した後に、最もよい合致を与える、例えば最も小さい差分値を算出するビデオブロックが、特定され得る。重要なことに、所定のタスクのための差分値が前のタスクの値よりも大きくなるといつでも、様々のタスクが終了され（周期的に更新されるしきい値によって規定されているように）、最もよい合致が特定され、同時に、計算数が減じられる。
【００６０】
図８及び９は、所定のタスクのための更なる計算がよりよいビデオブロックの合致を特定させる（図８の場合）シナリオ、もしくは、所定のタスクのための更なる計算がよりよいビデオブロックの合致を特定させる見込みがない（図９の場合）シナリオを特定することによる、個々のタスクの終了を示している。図１０は、個別に、もしくは、図８及び９に示されているタスク終了方法と組み合わせて使用され得るもう１つの終了方法を示している。
【００６１】
図１０の方法は、いつイテレーションが終了されるのかを特定するのに使用され得ることから、イテレーション終了方法と呼ばれている。例えば、イテレーションしきい値が、特定された前のビデオブロックが効果的な符号化のために容認され得る合致であるかどうかを判断するものとして、設定され得る。この場合、イテレーションが、早めに終了され、そして、符号化される現在のビデオブロックに対する容認され得る合致であると特定されたビデオブロックが、符号化のために使用され得る。図１０に説明されている方法は、イテレーションの次のタスクが（行われた場合）充分によいと示されたビデオブロックよりもよい合致を実際に特定するかもしれないことから、十分に低い符号化を果たす可能性がある。それでも、計算数の減少と、進行中の電力の節約とは、符号化が低水準になり得ることよりも重要となり得る。
【００６２】
図７を再び参照すると、符号化プロセスが、符号化しきい値を規定する（７１）ことによって始まり得る。例えば、イテレーションしきい値が、イテレーションしきい値をDSP２４にプログラミングすることによって、規定され得る。続いて、符号化処理が、図７に示されている多数のイテレーションにわたって、第１のブロック（N）が符号化されると共に始まり、イテレーションごとに多数のタスクを実行する。図１０は、一回のイテレーションの実行を更に詳しく示している。ビデオエンコーダ２０は、上述されたように動き予測器２６の比較エンジン５６を起動させることなどによって、現在のブロックを前のブロック（N）と比較する（１０１）。一部の例では、現在のブロックを前のブロック（N）と比較するタスクが、図８及び９の原則に従って実行され得る。こうした例では、タスクしきい値は、場合により、所定のタスクのための計算を早めに終了させる。
【００６３】
各個々のタスクを実行すると、ビデオエンコーダ２０が、タスクに関連している差分値がイテレーションしきい値よりも小さいかどうかを判断する（１０２）。再び、比較エンジン５６は、算出された差分値とイテレーションしきい値との間の比較がハードウェア内で非常に敏速になされ得るように、イテレーションしきい値がロードされた１つ以上のローカルしきい値レジスタ６５を有し得る。この場合、しきい値比較ユニット６６が、しきい値レジスタ６５内に保存されたイテレーションしきい値と、各タスクの後に差分ユニット６４によって算出された差分値とを比較し得る。差分値は、探索空間メモリ６２内に保存された他の前のビデオブロック、例えば、マクロブロックによって規定されてもよい。どんな場合であれ、ビデオエンコーダ２０は、所定のタスクのために算出された差分値をイテレーションしきい値と比較する。所定のタスクの差分値がイテレーションしきい値よりも小さい場合、即ち、現在のブロックとブロック（N）との間の差分値がイテレーションしきい値よりも小さい場合、ブロック（N）は、容認され得ると示されることができ、動き予測方法に従って現在のブロックを符号化する（１０５）のに使用される。即ち、イテレーションは早めに終了され、容認され得る合致が探索空間内で特定されると、このイテレーションのための次のタスクを回避する。所定のタスクが、イテレーションしきい値よりも小さい差分値を算出しない限り、ビデオエンコーダ２０が、現在のブロックと前のブロック（N）とを比較し（１０１）、更なるタスクが探索空間によって規定されると（１０３の“はい”ブランチ）値（N）を増加させる（１０４）ことによって、イテレーションのための複数のタスクを繰り返し実行する。
【００６４】
所定のイテレーションのための全タスクを実行する（１０３の“いいえ”ブランチ）と、最もよい合致が、現在のブロックを符号化する（１０５）際に使用されるために特定され得る。しかしながら、一部の例では、所定のイテレーションのための全タスクを実行した（１０３の“いいえ”ブランチ）後、動き予測符号化方法が、これは、しきい値よりも小さい差分値を有している所定のビデオブロックが特定されないことから、意図的に回避され得る。この場合、現在のビデオブロックを符号化する処理が、当分野で知られているフレーム内もしくは空間的な相互関連付け方法のようなフレーム内の符号化方法のみを有している。どんな場合でも、符号化されたブロックは、符号化されるビデオフレームのための次のイテレーションが実行され得ることから、メモリ２２内に保存され得る。
【００６５】
最もよい合致とは、差分計算が差分ユニット６４によって実行されて合計された時に最も小さい差分値を算出する探索空間メモリ６２内に保存された前のビデオブロック（もしくは次のビデオブロック）のことを指している。動き予測方法が用いられるとき、現在のブロックと最も合致するこの前の（もしくは次の）ビデオブロックが、現在のデータブロックを符号化する（１０５）ために使用され得る。この場合、現在のビデオブロックは、符号化に使用される前のビデオブロックを特定する動きベクトルに加えて差分をも保存することによって、符号化され得る。
【００６６】
イテレーションが早めに終了される（１０２の“はい”ブランチ）と、続いて、最もよい合致が特定され得る。しかし、最もよい合致は、イテレーションしきい値が超えられることから、特定される。かくして、イテレーションの早めの終了が、イテレーションしきい値よりも小さい差分値を作り出すタスクに応じて早めに終了されると、早めに終了したこのタスクに関連している前のビデオブロックが、容認され得る、即ち、効果的なビデオ符号化に“十分近い”とされる。何が“十分近い合致”を成立させるかは、イテレーションしきい値に依存し、異なるシナリオ及び異なるデジタルビデオ装置により変化する。例えば、一部の例では、ビデオ解像度について符号化計算を制限することが、更に好ましい。他の例では、多数の計算が必要な場合にさえも最もよい合致を見つけることが更に好ましい。更なる他の例では、イテレーションしきい値が、バンド幅の測定値か他のビデオ送信パラメータかに基いて動的に選択され得る。
【００６７】
図１１は、例示的なビデオ送信パラメータの関数としてのイテレーションしきい値の動的な選択を示しているフローチャートである。示されているように、デジタルビデオ装置１０が、ビデオ送信のために利用できるバンド幅を特定し（１１１）、利用可能なバンド幅に基いてイテレーションしきい値を選択する（１１２）。続いて、デジタルビデオ装置１０が、選択されたイテレーションしきい値を利用して符号化ルーチンを実行する（１１３）。このように、利用可能なバンド幅が十分な時間にわたって全計算を実施することを可能にした時に、高品質の符号化が行われ得、バンド幅が制限要因となっている場合は、比較的低品質の符号化が行われる。  
図１２は、ビデオ符号化を向上させるために用いられ得る更なる方法を示しているフローチャートである。この例では、イテレーションは、所定の探索空間上にの複数の探索を有している。探索空間は、前のビデオフレームか、前のビデオフレームのサブセットか、次のビデオフレームか、次のビデオフレームのサブセットかによって規定される。示されているように、デジタルビデオ装置１０が、探索空間での第１の探索を規定し（１２１）、第１のセットのタスクを実行して、第１の合致を探し当てる（１２２）。続いて、デジタルビデオ装置１０が、第１の合致に基いて第２の探索を規定し（１２３）、第２のセットのタスクを実行して、第２の合致を探し当てる（１２４）。第２の探索は、探索空間のサブセットで実行されることができ、このサブセットは、第１の合致の近くで発見された探索空間のイメージブロックによって規定されている。第２の合致は、第１の合致よりもよい合致物であってよい。図１２の方法は、ビデオ符号化のために効果的な容認され得る合致をより敏速に探し当てるために用いられ得る。
【００６８】
例えば、第１のセットのタスクは、所定の探索空間上に実行される大雑把な探索に対応し得る。特に、雑な探索では、符号化されるビデオブロックを探索空間の各Ｎ組のビデオブロックと比較し得るのみである。第２のセットのタスクは、所定の探索空間のサブセット上に実行される丁寧な探索に対応し得る。このサブセットは、第１の合致の周囲に規定されている。かくして、第１の探索は、ビデオ符号化のために効果的な類似したビデオブロックを有していそうな探索空間の所定領域を大雑把に探し当てるために用いられ、第２の探索は、効果的なビデオ符号化のために容認され得る探索空間内でビデオブロックを特定するために用いられ得る。例として、第１の探索中に実行されるタスクは、探索空間内の各１０組のビデオブロックを符号化されるビデオブロックと比較することを有し得る。第２の探索中、実行されるタスクは、サブセットの全てのビデオブロック、もしくは、サブセットからの幾つかのビデオブロックを、符号化されるビデオブロックと比較することを有し得る。例として、第２の探索中に実行されるタスクは、探索空間のサブセット内の各５組のビデオブロックを符号化されるビデオブロックと比較することを有し得る。更に、方法は、第２の合致に基いて第３の探索を規定することと、第３のセットのタスクを実行して符号化されるイメージブロックにとって第３の合致であるイメージブロックの探索空間を探し当てることとを有し得る。第３の合致は、第２の合致よりよい合致である。第４、第５、第６及びこれ以降の探索が、また、実行されてもよい。
【００６９】
本明細書に説明されている様々の終了方法が、図１２に示されている探索方法と組み合わせて用いられ得る。例えば、図１２に示されている方法を実行する間、所定のタスクに関連している差分値がタスクしきい値を超えると、このタスクが終了され得る。また、図１２に示されている方法は、更に、第１の探索で、イテレーションしきい値よりも小さい差分値を与える合致しているイメージブロックを特定すると第１のセットのタスクを終了させる能力を有し得る。更に、この方法は、第２の探索で、他のイテレーションしきい値よりも小さい差分値を与える合致しているイメージブロックを特定すると第２のセットのタスクを終了させる能力を有してもよい。このように、上述された１つ以上の終了方法が、図１２に示されている探索方法と組み合わせて用いられ得る。
【００７０】
多数の異なる実施形態が説明されてきた。説明された方法は、ビデオ符号化のために必要な計算数を減じることができ、符号化処理を加速させ得る。更に、計算数が減じられると、電力消費の節減が果たされる。これは、特に電池式装置の場合に有用である。この方法は、MPEG-4規格を含んだ幅広いデジタルビデオ符号化規格の内のいずれかにとって役立つ。説明されているように、計算の終了は、タスクレベル、イテレーションレベル、もしくは、両方のレベルで行われ得る。更に、一部の例では、終了しきい値は、バンド幅のような１つ以上の送信パラメータの関数として動的に規定され得る。現在のビデオブロックを前のビデオフレームの前のビデオブロックと比較するということに関連付けて、あらゆる詳細が説明されてきたが、こうした方法は、現在のビデオブロックが次のビデオフレームの次のビデオブロックと比較される時にも用いられ得ることが、理解されるだろう。即ち、こうした方法は、符号化されるビデオブロックが前もしくは次のイメージフレームのビデオブロックと比較されるビデオ符号化において、もしくは、符号化されるビデオブロックが前と次両方のイメージフレームのビデオブロックと比較される双方向の動き予測ルーチンで、用いられ得る。
【００７１】
こうした方法は、ハードウェアか、ソフトウェアか、ファームウェアか、これらの所定の組み合わせで使用され得る。ソフトウェアで使用される場合、こうした方法は、あるプログラムコードを有しているコンピュータで読み取り可能な媒体を意図されることができる。このプログラムコードとは、MPEG-4規格に準拠しているビデオストリームを符号化する装置で実行されている時に、上述された１つ以上の方法を実行するものである。この場合、コンピュータで読み取り可能な媒体は、シンクロナスダイナミックランダムアクセスメモリ（SDRAM）のようなランダムなアクセスメモリ（RAM）や、読取専用メモリ（ROM）や、不揮発性ランダムアクセスメモリ（NVRAM）や、電気的に消去できるプログラミング可能な読み取り専用メモリ（EEPRM）や、フラッシュメモリ等を有し得る。
【００７２】
このプログラムコードは、コンピュータで読み取り可能な指示の形でメモリに保存され得る。この場合、DSP２４のようなプロセッサが、本明細書に説明されている１つ以上の方法を実施するために、メモリ内に保存されているこうした指示を実行し得る。上述されたように、DSP２４が、符号化処理を加速させるように、動き予測器２６の様々のハードウェア構成要素を起動させ得る。これら及び他の実施形態は、添付請求項の範囲内である。
【図面の簡単な説明】
【００７３】
【図１】所定のデータ資源装置が、ビデオデータの符号化されたシーケンスを受信装置に送信する１つの例示的なシステムを示しているブロック図である。
【図２】デジタルビデオシーケンスを圧縮するビデオエンコーダを内蔵している１つの例示的なデジタルビデオ装置を示しているブロック図である。
【図３】ビデオデータの１つの例示的なマクロブロックの概略的な説明図である。
【図４】１つの例示的な探索空間の概略的な説明図である。
【図５】１つの例示的なビデオエンコーダを更に詳しく示しているブロック図である。
【図６】ビデオエンコーダの１つの例示的な比較エンジンを更に詳しく示しているブロック図である。
【図７】ビデオ符号化方法を示しているフローチャートである。
【図８】ビデオ符号化方法を示しているフローチャートである。
【図９】ビデオ符号化方法を示しているフローチャートである。
【図１０】ビデオ符号化方法を示しているフローチャートである。
【図１１】ビデオ符号化方法を示しているフローチャートである。
【図１２】ビデオ符号化方法を示しているフローチャートである。
【図１】
2005525028.tif 000003
【図２】
2005525028.tif 000004
【図３】
2005525028.tif 000005
【図４】
2005525028.tif 000006
【図５】
2005525028.tif 000007
【図６】
2005525028.tif 000008
【図７】
2005525028.tif 000009
【図８】
2005525028.tif 000010
【図９】
2005525028.tif 000011
【図１０】
2005525028.tif 000012
【図１１】
2005525028.tif 000013
【図１２】
2005525028.tif 000014
【国際調査報告】
2005525028.tif 000015
2005525028.tif 000016
2005525028.tif 000017