(57)【要約】データをバッファから抽出し且つバッファへロードする装置及び方法が開示される。本方法は、データアクセス命令の実行に応じてデータバッファからのデータの選択を含む。データバッファは、複数のデータ記憶装置を含み、その１つ又はそれ以上は初期的に選択されたデータを有する。従って、複数のデータ記憶装置はビットレベルでアドレス可能な単一のアドレス空間を構成する。選択されたデータがデータバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、ソースデータ記憶装置からからの選択されたデータの一部分は、次のデータ記憶装置からの選択されたデータの一部分と連結され、隣接するユニットとして選択されたデータを構成する。最後に、一旦、選択されたデータが形成されると、選択されたデータは宛先データ記憶装置内に記憶される。
2005502955.tif 000002
【特許請求の範囲】
【請求項１】
データアクセス命令を実行するのに応じて、データバッファからデータを選択し、前記データバッファは、選択されたデータを初期的に含む複数のデータ記憶装置を有し、
選択されたデータが、データバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、隣接するユニットとして選択されたデータを構成するために前記ソースデータ記憶装置から選択されたデータの一部分と前記次のデータ記憶装置からの選択されたデータの残りの部分を連結し、
選択されたデータを宛先データ記憶装置内に記憶する、方法。
【請求項２】
データを選択する前に、前記方法は更に、
データロード命令の実行に応じて、前記データバッファ内の前記複数のデータ記憶装置に及ぶ入力データストリームからのデータを前記データバッファにロードし、
データ変換命令が受信されたときには、データ変換命令の実行に応じて、前記データバッファ内にロードされたデータの順序を逆転させる、請求項１に記載の方法。
【請求項３】
連結することは更に、
前記データバッファの１つ又はそれ以上のデータ記憶装置内のデータの各部分がアクセスされたときには、完全にアクセスされたデータを有する各データ記憶装置についてのデータアクセスフラグをセットし、
前記データバッファの複数のデータ記憶装置から１つのデータ記憶装置を選択し、
前記データ記憶装置のデータアクセスフラグがセットされているときには、前記選択されたデータ記憶装置に入力データストリームからの追加のデータをロードし、
一旦、前記データ記憶装置のロードが完了すると、前記選択されたデータ記憶装置についてのデータアクセスフラグをリセットし、
前記データバッファの各データ記憶装置について、選択、ロード及びリセットを繰返す、請求項１に記載の方法。
【請求項４】
更に、
前記宛先データ記憶装置に含まれるデータを復号し、
前記宛先データ記憶装置内の前記データを復号されたデータで上書きする、
請求項１に記載の方法。
【請求項５】
データを復号することは、更に、
データ検出命令を実行するのに応じて、前記宛先データ記憶装置内の先導するものの位置を決定し、
インデックスとして、前記先導するものの位置を使用してシフト値を決定するシフトテーブルを読出し、
前記シフト値に基づいて前記宛先データ記憶装置をシフトし、
インデックスとして、シフトされた宛先データ記憶装置の値を使用して、ルックアップテーブルから復号シンボルを読出し、
インデックスとして、前記シフトされた宛先データ記憶装置の値を使用して、シンボルルックアップテーブル内の復号シンボル長を読み出す、
ことを含む、請求項４に記載の方法。
【請求項６】
選択することは、更に、
前記データバッファ内のソースデータ記憶装置を示す装置値を受信し、
前記データバッファがビットレベルでアドレス可能なように、データの第１ビットが配置される前記ソースデータ記憶装置内のビットアドレスを受信し、
前記ソースデータ記憶装置から読み出されるべきビットの数を示すビット値を受信し、データが前記データバッファの１つ又はそれ以上のデータ記憶装置に及ぶかどうかが、前記データの最後のビットが前記ソースデータ記憶装置から次のデータ記憶装置内であるときには、データは前記次のデータ記憶装置に及ぶように、前記ソースデータ記憶装置のビットアドレスと前記データのビット値に基づいて決定される、
ことを含む、請求項１に記載の方法。
【請求項７】
前記選択されたデータを宛先データ記憶装置内に記憶することは、更に、
前記宛先データ記憶装置のアドレスを受信し、
前記宛先記憶装置の最下位位置で開始するデータを記憶し、
空の位置のビットがゼロに設定されるように、前記宛先記憶装置の空の位置を、ゼロ伸張する、
ことを含む、請求項１に記載の方法。
【請求項８】
データバッファにロードすることは、更に、
入力データストリームデータが配置される、メモリ装置内のデータのアドレスを受信し、
前記受信されたメモリアドレスから前記入力データストリームデータをアクセスする、
ことを含む、請求項１に記載の方法。
【請求項９】
更に、
ループ展開命令実行するのに応じて、任意の一時点で前記データバッファからアクセスされるビットの最大の数により割られた、データバッファレスのものにより使用されている複数のデータ記憶装置の数に基づいて、予め定められた回数、前記データバッファを展開することを含む、請求項１に記載の方法。
【請求項１０】
データロード命令の実行に応じて、ソースデータ記憶装置からデータバッファ内にデータを記憶し、前記データバッファはデータが記憶された複数のデータ記憶装置を有し、
前記データのサイズが、前記データバッファ内の宛先データ記憶装置の残りの容量を超えたときに、前記データを第１の部分と第２の部分に分割し、
前記宛先データ記憶装置内にデータの第１の部分を記憶し、
前記データバッファの次のデータ記憶装置内にデータの第２の部分を記憶し、
一旦、前記データバッファ装置内に前記データの記憶が完了すると、前記宛先データ記憶装置内で、メモリ装置へデータを移動する、
方法。
【請求項１１】
記憶する前に、この方法は更に、
符号化を要求する内容データを選択し、
符号化されたデータを構成するために選択データを符号化し、
前記ソースデータ記憶装置内に前記符号化されたデータを記憶し、
前記データバッファの前記宛先データ記憶装置内で符号化されたデータのデータロード命令を実行する、請求項１０に記載の方法。
【請求項１２】
記憶することは、更に、
データバッファがビットレベルでアドレス可能なように、データが記憶されるべき前記データバッファの宛先データ記憶装置内の開始位置を示すビットアドレスを受信し、
前記データのビット数を示すデータサイズ値を受信し、
データが初期的に含まれる前記ソースデータ記憶装置のアドレスを受信する、
ことを含む請求項１０に記載の方法。
【請求項１３】
データを分割することは更に、
宛先データ記憶装置の残りの容量を決定し、
受信されたデータサイズに対して、宛先データ記憶装置の残りの容量を比較し、
データサイズが選択されたデータ記憶装置の残りの容量を超えるときには、データを、宛先データ記憶装置の残りの容量に等しいサイズを有する第１の部分とデータの残りの部分を含む第２の部分に分割する、請求項１０に記載の方法。
【請求項１４】
前記データバッファは、前記複数のデータ記憶装置としてデータ記憶レジスタとデータロードレジスタを有し、更に、
前記データ記憶レジスタが追加の容量を含みながら、データを前記ソースデータ記憶装置から前記データ記憶レジスタへ記憶し、
データが前記データ記憶レジスタへ記憶記憶されながら、データロードレジスタ内のデータを前記メモリ装置へロードし、
一旦、前記メモリ装置へのデータのロードが完了すると、ソースデータ記憶装置からデータをデータロードレジスタ内に記憶し、
一旦、前記データ記憶レジスタが充満すると、前記データロードレジスタが前記ソースデータ記憶装置からのデータを記憶するためにデータ記憶レジスタとして機能するように改名され、且つ前記データ記憶レジスタは記憶されたデータを前記メモリ装置にロードするためにデータロードレジスタとして機能するために改名され、前記データ記憶レジスタ内のデータを前記メモリ装置へロードする、
請求項１０に記載の方法。
【請求項１５】
符号化することは更に、
前記選択された内容データの各データ要素のデータ頻度値を決定し、
それぞれのデータ頻度値に基づいて、各データ要素についてのそれぞれの符号化シンボル長を選択し、
符号化されたデータとして１つ又はそれ以上の符号語を構成するために、各データ要素のそれぞれのシンボル長に基づいて、選択された内容データの各データ要素についてのそれぞれの符号化シンボルを選択し、
前記ソースデータ記憶装置を１つ又はそれ以上の符号語で上書きする、
請求項１１に記載の方法。
【請求項１６】
プロセッサにより実行されたときに規定された方法でシステムを機能させるように指示するプログラム命令を含む機械読出し可能な記憶媒体であって、前記プログラム命令は、
データアクセス命令を実行するのに応じて、データバッファからデータを選択し、前記データバッファは、選択されたデータを初期的に含む複数のデータ記憶装置を有し、
選択されたデータが、データバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、隣接するユニットとして選択されたデータを構成するために前記ソースデータ記憶装置から選択されたデータの一部分と前記次のデータ記憶装置からの選択されたデータの残りの部分を連結し、
選択されたデータを宛先データ記憶装置内に記憶する、機械読出し可能な記憶媒体。
【請求項１７】
データを選択する前に、前記方法は更に、
データロード命令の実行に応じて、前記データバッファ内の前記複数のデータ記憶装置に及ぶ入力データストリームからのデータを前記データバッファにロードし、
データ変換命令が受信されたときには、データ変換命令の実行に応じて、前記データバッファ内にロードされたデータの順序を逆転させる、請求項１６に記載の機械読出し可能な記憶媒体。
【請求項１８】
連結することは更に、
前記データバッファの１つ又はそれ以上のデータ記憶装置内のデータの各部分がアクセスされたときには、完全にアクセスされたデータを有する各データ記憶装置についてのデータアクセスフラグをセットし、
前記データバッファの複数のデータ記憶装置から１つのデータ記憶装置を選択し、
前記データ記憶装置のデータアクセスフラグがセットされているときには、前記選択されたデータ記憶装置に前記入力データストリームからの追加のデータをロードし、
一旦、前記データ記憶装置のロードが完了すると、前記選択されたデータ記憶装置についてのデータアクセスフラグをリセットし、
前記データバッファの各データ記憶装置について、選択、ロード及びリセットを繰返す、請求項１６に記載の機械読出し可能な記憶媒体。
【請求項１９】
更に、
前記宛先データ記憶装置に含まれるデータを復号し、
前記宛先データ記憶装置内の前記データを復号されたデータで上書きする、
請求項１６に記載の機械読出し可能な記憶媒体。
【請求項２０】
データを復号することは、更に、
データ検出命令を実行するのに応じて、前記宛先データ記憶装置内の先導するものの位置を決定し、
インデックスとして、前記先導するものの位置を使用してシフト値を決定するシフトテーブルを読出し、
前記シフト値に基づいて前記宛先データ記憶装置をシフトし、
インデックスとして、シフトされた宛先データ記憶装置の値を使用して、ルックアップテーブルから復号シンボルを読出し、
インデックスとして、前記シフトされた宛先データ記憶装置の値を使用して、シンボルルックアップテーブル内の復号シンボル長を読み出す、
ことを含む、請求項１９に記載の機械読出し可能な記憶媒体。
【請求項２１】
選択することは、更に、
前記データバッファ内のソースデータ記憶装置を示す装置値を受信し、
前記データバッファがビットレベルでアドレス可能なように、データの第１ビットが配置される前記ソースデータ記憶装置内のビットアドレスを受信し、
前記ソースデータ記憶装置から読み出されるべきビットの数を示すビット値を受信し、データが前記データバッファの１つ又はそれ以上のデータ記憶装置に及ぶかどうかが、前記データの最後のビットが前記ソースデータ記憶装置から次のデータ記憶装置内であるときには、データは前記次のデータ記憶装置に及ぶように、前記ソースデータ記憶装置のビットアドレスと前記データのビット値に基づいて決定される、
ことを含む、請求項１６に記載の機械読出し可能な記憶媒体。
【請求項２２】
前記選択されたデータを宛先データ記憶装置内に記憶することは、更に、
前記宛先データ記憶装置のアドレスを受信し、
前記宛先記憶装置の最下位位置で開始するデータを記憶し、
空の位置のビットがゼロに設定されるように、前記宛先記憶装置の空の位置を、ゼロ伸張する、
ことを含む、請求項１６に記載の機械読出し可能な記憶媒体。
【請求項２３】
データバッファにロードすることは、更に、
入力データストリームデータが配置される、メモリ装置内のデータのアドレスを受信し、
前記受信されたメモリアドレスから前記入力データストリームデータをアクセスする、
ことを含む、請求項１６に記載の機械読出し可能な記憶媒体。
【請求項２４】
更に、
ループ展開命令実行するのに応じて、任意の一時点で前記データバッファからアクセスされるビットの最大の数により割られた、データバッファレスのものにより使用されている複数のデータ記憶装置の数に基づいて、予め定められた回数、前記データバッファを展開することを含む、請求項１６に記載の機械読出し可能な記憶媒体。
【請求項２５】
プロセッサにより実行されたときに規定された方法でシステムを機能させるように指示するプログラム命令を含む機械読出し可能な記憶媒体であって、前記プログラム命令は、
データロード命令の実行に応じて、ソースデータ記憶装置からデータバッファ内にデータを記憶し、前記データバッファはデータが記憶された複数のデータ記憶装置を有し、
前記データのサイズが、前記データバッファ内の宛先データ記憶装置の残りの容量を超えたときに、前記データを第１の部分と第２の部分に分割し、
前記宛先データ記憶装置内にデータの第１の部分を記憶し、
前記データバッファの次のデータ記憶装置内にデータの第２の部分を記憶し、
一旦、前記データバッファ内に前記データの記憶が完了すると、前記宛先データ記憶装置内で、メモリ装置へデータを移動する、
機械読出し可能な記憶媒体。
【請求項２６】
記憶する前に、更に、
符号化を要求する内容データを選択し、
符号化されたデータを構成するために選択データを符号化し、
前記ソースデータ記憶装置内に前記符号化されたデータを記憶し、
前記データバッファの前記宛先データ記憶装置内で符号化されたデータのデータロード命令を実行する、請求項２５に記載の機械読出し可能な記憶媒体。
【請求項２７】
記憶することは、更に、
データバッファがビットレベルでアドレス可能なように、データが記憶されるべき前記データバッファの宛先データ記憶装置内の開始位置を示すビットアドレスを受信し、
前記データのビット数を示すデータサイズ値を受信し、
データが初期的に含まれる前記ソースデータ記憶装置のアドレスを受信する、
ことを含む請求項２５に記載の機械読出し可能な記憶媒体。
【請求項２８】
前記データ分割することは、更に、
前記選択された内容データの各データ要素のデータ頻度値を決定し、
それぞれのデータ頻度値に基づいて、各データ要素についてのそれぞれの符号化シンボル長を選択し、
符号化されたデータとして１つ又はそれ以上の符号語を構成するために、各データ要素のそれぞれのシンボル長に基づいて、選択された内容データの各データ要素にについてのそれぞれの符号化シンボルを選択し、
前記ソースデータ記憶装置を１つ又はそれ以上の符号語で上書きする、
請求項２５に記載の機械読出し可能な記憶媒体。
【請求項２９】
前記データバッファは、前記複数のデータ記憶装置としてデータ記憶レジスタとデータロードレジスタを有し、更に、
前記データ記憶レジスタが追加の容量を含みながら、データを前記ソースデータ記憶装置から前記データ記憶レジスタへ記憶し、
データが前記データ記憶レジスタへ記憶記憶されながら、データロードレジスタ内のデータを前記メモリ装置へロードし、
一旦、前記メモリ装置へのデータのロードが完了すると、ソースデータ記憶装置からデータをデータロードレジスタ内に記憶し、
一旦、前記データ記憶レジスタが充満すると、前記データロードレジスタが前記ソースデータ記憶装置からのデータを記憶するためにデータ記憶レジスタとして機能するように改名され、且つ前記データ記憶レジスタは記憶されたデータを前記メモリ装置にロードするためにデータロードレジスタとして機能するために改名され、前記データ記憶レジスタ内のデータを前記メモリ装置へロードする、
請求項２５に記載の機械読出し可能な記憶媒体。
【請求項３０】
符号化することは更に、
前記選択された内容データの各データ要素のデータ頻度値を決定し、
それぞれのデータ頻度値に基づいて、各データ要素についてのそれぞれの符号化シンボル長を選択し、
符号化されたデータとして１つ又はそれ以上の符号語を構成するために、各データ要素のそれぞれのシンボル長に基づいて、選択された内容データの各データ要素についてのそれぞれの符号化シンボルを選択し、
前記ソースデータ記憶装置を１つ又はそれ以上の符号語で上書きする、
請求項２６に記載の機械読出し可能な記憶媒体。
【請求項３１】
命令を実行する回路を有するプロセッサと、
複数のデータ記憶装置を有するデータバッファと、
そこに記憶された命令のシーケンスを有する、前記プロセッサに結合された記憶装置を有し、前記命令のシーケンスは、前記プロセッサにより実行されたときに、前記プロセッサに、
データアクセス命令を実行するのに応じて、データバッファのソースデータ記憶装置からデータを選択し、
選択されたデータが、データバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、隣接するユニットとして選択されたデータを構成するために前記ソースデータ記憶装置から選択されたデータの一部分と前記次のデータ記憶装置からの選択されたデータの残りの部分を連結し、
選択されたデータを宛先データ記憶装置内に記憶する、
ことを行わせる、装置。
【請求項３２】
前記プロセッサに、更に、
データロード命令の実行に応じて、ソースデータ記憶装置からデータバッファの宛先データ記憶装置内にデータを記憶し、
前記データのサイズが、前記宛先データ記憶装置の残りの容量を超えたときに、前記データを第１の部分と第２の部分に分割し、
前記宛先データ記憶装置内にデータの第１の部分を記憶し、
前記データバッファの次のデータ記憶装置内にデータの第２の部分を記憶し、
一旦、前記データバッファ内に前記データの記憶が完了すると、前記宛先データ記憶装置内で、メモリ装置へデータを移動する、
ことを行わせる、請求項３１に記載の装置。
【請求項３３】
連結させるめいれは更に前記プロセッサに、
前記データバッファの１つ又はそれ以上のデータ記憶装置内のデータの各部分がアクセスされたときには、完全にアクセスされたデータを有する各データ記憶装置についてのデータアクセスフラグをセットし、
前記データバッファの複数のデータ記憶装置から１つのデータ記憶装置を選択し、
前記データ記憶装置のデータアクセスフラグがセットされているときには、前記選択されたデータ記憶装置に入力データストリームからのデータをロードし、
一旦、前記データ記憶装置のロードが完了すると、前記選択されたデータ記憶装置についてのデータアクセスフラグをリセットし、
前記データバッファの各データ記憶装置について、選択、ロード及びリセットを繰返す、ことを行わせる、請求項３１に記載の装置。
【請求項３４】
前記データバッファは、前記複数のデータ記憶装置としてデータ記憶レジスタとデータロードレジスタを有し、更に、前記プロセッサに、
前記データ記憶レジスタが追加の容量を含みながら、データを前記ソースデータ記憶装置から前記データ記憶レジスタへ記憶し、
データが前記データ記憶レジスタへ記憶記憶されながら、データロードレジスタ内のデータを前記メモリ装置へロードし、
一旦、前記メモリ装置へのデータのロードが完了すると、ソースデータ記憶装置からデータをデータロードレジスタ内に記憶し、
一旦、前記データ記憶レジスタが充満すると、前記データロードレジスタが前記ソースデータ記憶装置からのデータを記憶するためにデータ記憶レジスタとして機能するように改名され、且つ前記データ記憶レジスタは記憶されたデータを前記メモリ装置にロードするためにデータロードレジスタとして機能するために改名され、前記データ記憶レジスタ内のデータをメモリへロードする、
ことを行わせる、請求項３２に記載の装置。
【請求項３５】
前記データバッファは、前記複数のデータ記憶装置が単一のビットレベルアドレス可能なアドレス空間を構成するように、ビットレベルアドレス能力を有する、請求項３１に記載の装置。
【発明の詳細な説明】
【０００１】
発明の分野
本発明は、一般的には、コンテンツの符号化及び復号の分野に関連する。解くに、本発明は、データをバッファから抽出し且つバッファへロードすることに関連する。
【０００２】
発明の背景
メディア応用は、１０年以上もの間マイクロプロセッサの開発を駆り立ててきた。実際には、近年の多くの計算的な向上は、民生用部分内で支配的に、しかし、娯楽の企業部分、向上された教育及び通信目的でも、メディア応用により駆り立てられてきている。それにも関わらず、将来のメディア応用は、より高い計算の要求を、要求する。この結果、今日のパーソナルコンピュータ（ＰＣ）体験は、使用するのが簡単であると共にオーディオ−ビジュアル効果が豊かであり、そして、更に重要なことに、計算は通信を併合する。
【０００３】
従って、オーディオとビデオの再生と共に画像の表示は、現在の計算装置についてのますます人気のある応用となってきている。残念ながら、この種の応用について必要とされるデータの量は、非常に大きい傾向にある。この結果、ネットワーク帯域幅とともに、計算能力、メモリ及びハードディスク記憶の増加は、長く且つより高い品質のオーディオとビデオとともに、長く且つより高い品質の画像の生成と使用を、容易にする。しかしながら、これらの応用により使用されるコンテンツは、一般的には、記憶空間を節約し且つ伝送帯域幅を減少させるために圧縮されたフォーマットで記憶される。
【０００４】
この結果、オーディオ及びビデオのような、コンテンツを扱う応用は、オーディオ及びビデオデータにより課される実再生制約を受ける。オーディオ及びビデオデータのようなコンテンツは、一般的には、ストリーム化され、伝送されたコンテンツは受信されるにつれて再生される。ストリーミングを可能とするために、データは、ネットワーク帯域幅制限を克服し且つ生成要求に合わせるために、伝送前に圧縮される。この結果、オーディオ及びビデオは、ネットワークを介してストリーム化され又は、局所的な装置に記憶されているかどうかに関わらず、実時間で復号されねばならない。更に、計算的な要求は、オーディオ品質とビデオ解像度とフレームサイズが増加するにつれて、増加する。従って、ビデオの逆圧縮は、最も計算的に要求のきびしい要求の人気のある応用の１つである。
【０００５】
残念ながら、現在は、サービス構成要素の帯域幅と品質のコストを安定に維持しながら、計算コストの減少の間に不均衡がある。そのような不均衡は、応用の将来を形作ることが予見される。この結果、常に増加するクラスの新たなアルゴリズムと応用は、計算的な複雑さをトレードオフすることを目的としているので、改善されたオーディオ−ビデオ品質、より小さなビットレート、扱いが簡単なツール等となる。従って、この不均衡は、新たな圧縮標準、新たな処理アルゴリズム及びエンド対エンド応用のパラダイムとなり、ここでは、種々の領域の多くの動作は、符号化及び暗号化から伝送、後処理及び管理の、マルチメディアの適切な配信を保証することが必要である。
【０００６】
動画専門家グループ（ＭＰＥＧ）、ＭＰＥＧ−１、ＭＰＥＧ−２及びＭＰＥＧ−４及オーディオ及びビデオ圧縮と共に、ジョイントフォトグラフィックグループ（ＪＰＥＧ）及びＪＰＥＧ２０００画像圧縮のような、一般的に使用される圧縮アルゴリズムは、２つの技術を組み合わせる。第１に、データは、変換で処理され、そして、量子化される。そして、圧縮は、知覚的に且つ有意なデータを移動することにより達成される。この技術は、元のデータが逆圧縮により正確に回復されないので、損失がある（ロッシー）と呼ばれる。第１ステップの結果は、更にエントロピー符号化技術を使用して圧縮される。エントロピー符号化は、元のデータシンボル（この場合には、量子化された変換係数）を、元のデータシンボルの発生の頻度に依存する長さのシンボルで置きかえる。最もよくある元のデータシンボルは、短いエントロピー符号化シンボルで置きかえられ、そして、最も少ないものは長いエントロピー符号化シンボルで置きかえられる。この結果、エントロピー符号シンボルの長さは、それらのビット長で変わる。
【０００７】
画像復号ステップは、符号化ステップと逆の順序で実行される。エントロピー復号は変換された復号等へ進む。残念ながら、異なるシンボルリンクからの結果のデータ依存性により、エントロピー復号ではデータの並行性がほとんどない。種々の構造命令は、一般的には、変換動作に効果的であるが、しかし、エントロピー復号には使用されない傾向にある。しかしながら、構造命令が多くのレジスタ及び新たな命令と共に増加するにつれて、エントロピー復号とメディア再生に要求される時間の部分は増加する。従って、エントロピー復号の改善は、変換復号の改善に遅れている。
【０００８】
従って、上述の現在ある１つ又はそれ以上の制限を克服する必要がある。
【０００９】
本発明は、例によりそして、限定するのではなく、添付の図面の図で示される。
【００１０】
詳細な説明
データをバッファから抽出し且つバッファへロードする方法及び装置が開示される。本方法は、データアクセス命令の実行に応じてビットアクセス可能なデータバッファからのデータの選択を含む。データが選択されるデータバッファは、複数のデータ記憶装置を含み、その１つ又はそれ以上は初期的に選択されたデータを有する。従って、複数のデータ記憶装置はビットレベルでアドレス可能な単一のアドレス空間を構成する。選択されたデータがデータバッファのソースデータ記憶装置から次のデータ記憶装置に及ぶときには、ソースデータ記憶装置からからの選択されたデータの一部分は、次のデータ記憶装置からの選択されたデータの一部分と連結され、隣接するユニットとして選択されたデータを構成する。最後に、一旦、選択されたデータが形成されると、選択されたデータは宛先データ記憶装置内に記憶される。
【００１１】
以下の記載は、説明の目的のためであり、本発明の徹底的な理解を提供するために、多くの特定の詳細が述べられる。しかしながら、当業者には、本発明は、これらの特定の詳細なしても実行されうることは明らかである。更に、以下の記載は、例を提供し、そして、添付の図面は、説明の目的のための種々の例を示す。しかしながら、これらの例は、単に本発明の全ての可能な実行の徹底的なリストを提供するよりはむしろ本発明の例を提供することが意図されているので、限定する意味に解釈すべきではない。他の例では、良く知られた構造及び装置は、本発明の細部を曖昧にすることを避けるために、ブロック図の形式で示されている。
【００１２】
実施例では、本発明の方法は、機械実行可能な方法で実現される。命令は、その命令でプログラムされた汎用又は特別目的のプロセッサに本発明のステップを実行させるのに使用されることが可能である。代わりに、本発明のステップは、本方法を実行するハードワイアの論理を含む特別のハードウェア構成要素により又は、プログラムされたコンピュータ構成要素とカスタムのハードウェア構成要素の組み合わせにより、実行されうる。
【００１３】
本発明は、本発明に従った処理を実行するためにコンピュータ（又は、他の電子装置又は、システム）をプログラムするために使用されうる命令が記憶された機械又はコンピュータ読出し可能な媒体を含むコンピュータプログラムプロダクトとして提供されてもよい。コンピュータ読出し可能な媒体は、限定はされないが、フレキシブルディスケット、光ディスク、コンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、光磁気ディスク、読出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能なプログラマブル読出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能なプログラマブル読出し専用メモリ（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、等を含んでもよい。
【００１４】
システム
図１を参照すると、本発明の記憶フォーマットが実行されるコンピュータシステム２００の主な構成要素を示すブロック図が記載されている。コンピュータシステム２００は、ディスプレイコントローラ２２０を有する。ディスプレイコントローラ２２０は、例えば、ビデオグラフィックアダプタ（ＶＧＡ）、スーパーＶＧＡ（ＳＶＧＡ）等である。ディスプレイコントローラ１２０は、例えば、ＣＲＴ、フラットパネルディスプレイ等である、ディスプレイ２９０のための画素データを発生する。画素データは、ディスプレイ２９０のリフレッシュの特徴のレート（例えば、６０Ｈｚ、７２Ｈｚ、７５Ｈｚ等）及び表示画像の水平及び垂直解像度（たと６４０ｘ４８０画素、１０２４ｘ７６８画素、８００ｘ６００等）で発生される。ディスプレイコントローラ２２０は、ディスプレイ２９０の特徴レートで画素データの連続するストリームを発生する。
【００１５】
ディスプレイコントローラ２２０は、表示メモリ２２２も設けられ、これは、テキスト、グラフィックス、又は、ディスプレイ２９０への出力のためのビデオモードの、画素データを記憶する。ホストＣＰＵ２１０は、バス２７０を通してディスプレイコントローラ２２０に結合され、そして、ディスプレイ２９０についての表示画像が変わるときに、表示メモリ２２２の内容が更新される。バス２７０は、例えば、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス等を含みうる。システムメモリ２８０は、ホストＣＰＵ２１０に結合されてもよい。
【００１６】
ハードウェアコンテンツ復号器２３０は、例えば、動画専門家グループ（ＭＰＥＧ）ビデオデータのような、ビデオ、オーディオ、画像及び音声データ（”コンテンツ”）を復号するために設けられている。ＭＰＥＧビデオデータは、ＭＰＥＧビデオデータ源（例えば、ＣＤ−ＲＯＭ等）から受信される。代わりに、コンテンツ復号器２３０は、例えば、システムメモリ２８０に記憶された従来のソフトウェア復号器２８２として実装される。一旦、復号されると、復号されたビデオデータは、システムメモリ２７０へ又は、表示メモリ２２２へ出力される。
【００１７】
コンピュータシステム２００は、更に、コンピュータシステム２００により発生された、画像、オーディオ、ビデオ及び音声データのような、コンテンツデータを符号化する責任のあるコンテンツ符号化器２４０を含む。一旦、コンテンツがコンテンツ符号化器２４０により符号化されると、符号化されたコンテンツは、システムメモリ２８０内に記憶され又は、示されていない宛先装置へ、ＣＰＵ２１０により伝送され／ストリームされる。代わりに、コンテンツ符号化器２４０は、例えば、システムメモリ２８０内に記憶されうる従来のソフトウェア符号化器２８４とし実装される。
【００１８】
残念ながら、コンピュータシステム２００のコンテンツ符号化器２４０と共にコンテンツ復号器２３０の両方が、例えば、ハフマン又は算術符号化及び復号のような、上述のエントロピー符号化及び復号中に、ほとんど又は全く並列を使用しない。実際には、異なるシンボル長の結果からのデータ依存性により、エントロピー符号化及び復号ではデータの並列性はほとんどない。多くの単一命令複数データ（ＳＩＭＤ）命令は、（上述のように）変換動作について非常に効果的であるが、そのような命令は、エントロピー符号化及び復号ではほとんど使用されない。
【００１９】
更に加えて、ＳＩＭＤ命令の能力が大きなレジスタと新たな命令と共に増加すると、メディア再生応用での符号化と共にエントロピー復号に要求される時間の部分が増加する。従って、エントロピー復号の改善は、変換復号の改善より遅れている。可変長符号シンボルを伴なうエントロピー圧縮法の例は、限定はされないが、ハフマン符号化と算術符号化を含む。そのように、当業者は、（記載されるように）本発明の教示は、ソフトウェア又はハードウェアコンテンツ復号器／符号化器のいずれかで実行されうることは認識するであろう。
【００２０】
図２を参照すると、図２は、本発明の第１の実施例に従って、コンピュータシステム２００内で使用されうるコンテンツ復号器２５０の構成の一部分を示すブロック図である。記載された実施例では、例えばＭＰＥＧデータ、ＪＰＥＧデータ等である、コンテンツビットストリーム２５２は、例えば、ＭＰＥＧデータ源、ＪＰＥＧデータ源等のようなコンテンツ源から受信され、そして、次のように、復号されそして逆圧縮される。コンテンツ復号器２５０は、ＭＰＥＧ復号器として構成されているが、提供された実施例は例であり、そして、限定する意味に解釈するべきではない。
【００２１】
従って、コンテンツ復号器２５０は、エントロピー復号ブロック３００で、ＭＰＥＧビットストリーム２５２を受信する。しかしながら、従来のエントロピー復号器と対照的に、エントロピー復号ブロック３００は、図３Ａを参照して以下に更に詳細に記載するように、受信されたビットストリーム２５２を復号するために要求される時間の量を最小化するために、ビットレベルのアドレス可能なバッファを使用する。従って、エントロピー復号ブロック３００は、受信されたビットストリーム２５２についての復号シンボル長と共に復号シンボルを決定し、これは、ランレングス復号ブロック２５６に供給される。
【００２２】
ＲＬＤブロック２４４は、逆量子化ブロック（ＩＱブロック）２６２に供給される量子化されたブロック２５８を発生するために、エントロピー復号ブロック３００から、復号シンボルと復号シンボルを受信する。ＩＱブロック２６２は、量子化されたブロック２５８に逆量子化を実行し、量子化されたブロックについての周波数スペクトル２６４を発生する。次に、逆離散コサイン変換（ＩＤＣＴブロック）２６６は、周波数スペクトル２６４を使用して、量子化されたブロック２５８の逆離散コサイン変換を実行し、復号されたブロック２６８を発生する。
【００２３】
一旦発生されると、復号ブロック２６８は、動き補償ブロック（ＭＣＢ）２７０へ供給される。動き補償は、そして、ＭＣＢ２７０により実行され、ＭＰＥＧデータ２７２が再生成される。最後に、カラー変換ブロック２７４は、ピクチャ２８０を生成するために、ＭＰＥＧデータ２７２を、赤、緑、青（ＲＧＢ）カラー空間へ変換する。しかしながら、図１に示されたコンピュータシステム２００のハードウェアコンテンツ復号器２３０又はソフトウェア復号器２８２のような従来のコンテンツ復号器と対照的に、コンテンツ復号器は、図３Ａを使用して更に説明する、エントロピー復号ブロック３００を使用する。
【００２４】
図３Ａを参照すると、エントロピー復号ブロック３００は、データバッファ３０２を使用し、これは複数のデータ記憶装置３０４（３０４−１，．．．３０４−Ｎ）を含む。一実施例では、データバッファ３０２は、１２８ビットのＭＭＸレジスタを含むビットレベルのアドレス可能レジスタを使用する。しかしながら、当業者は、データバッファ３０２のデータ記憶装置はレジスタに限定されずそして一般的には、ディジタルデータを記憶することができる任意のデータ記憶装置を含む。そのように、ビットストリームデータ２５０は受信されるので、ビットストリームデータ２５０はデータバッファ３０２の複数のデータ記憶装置３０４内にロードされる。
【００２５】
残念ながら、ビットストリーム２５０は、可変長の符号化特徴を使用する。上述のように、エントロピー符号化は、最もよくある元のシンボルは、短いエントロピー符号化シンボルで置きかえられ、そして、最も少ないものは長いエントロピー符号化シンボルで置きかえられるように、元のデータシンボルを、元のデータシンボルの発生の頻度に依存する長さの符号化シンボルで置きかえる。このように、変化する長さの符号化シンボルを捕捉するために、データが、データバッファから選択されねばならない。
【００２６】
従って、変化する長さの符号化シンボルを捕捉するための遅延は、従来の復号器内でのエントロピー符号化中のボトルネックを発生する。そして、エントロピー復号ブロック３００は、ビットレベルのアドレス可能なバッファを使用し、これは、変化する長さの使用されている符号化シンボルを補足するために、データバッファ３０２の種々のデータ記憶装置の間に及ぶデータの部分を捕捉することができる。そして、エントロピー復号ブロックは、データバッファ３０２のソースデータ記憶装置３０４内のデータの一部分を選択しそして、エントロピー復号ブロック３００のレジスタファイル３４０内の配置されうる、図３Ｂに示された宛先データ記憶装置３４２内にデータのその部分を記憶しうる。
【００２７】
従って、本発明の教示を使用して、プロセッサ３３０は、データ検出命令に応じて、宛先データ記憶装置内の先導するものの位置を決定しうる。一旦、この位置が決定されると、プロセッサ３３０は、一実施例では、エントロピー復号ブロック３００のキャッシュ３５０内のシフトテーブル３６０（３６０−１，．．．，３６０−Ｎ）を使用する。そして、プロセッサ３３０は、インデックスとして、先導するものの位置を使用してシフト値を得るためにシフトテーブル３６０を読み出す。一旦、シフト値が決定されると、宛先データ記憶装置３４２は、例えば、シフト値に従って、右にシフトされる。一旦、右にシフトされると、プロセッサは、シフトされたデータ記憶装置３４２の値に基づいて復号シンボルを決定するために、キャッシュ３５０の復号テーブル３５２（３５２−１，．．．，３５２−Ｎ）から復号シンボルを読み出す。
【００２８】
最後に、復号シンボル長が、右にシフトされた宛先データ記憶装置３４２の値を使用して復号テーブル３５２から読み出される。従って、ビットレベルのアドレス可能なバッファを使用して、エントロピー復号ブロックは、最小のオーバーヘッドで、データ記憶装置内の符号語又はシンボルを決定することができる。言いかえると、従来のエントロピー復号器と対照的に、エントロピー復号ブロック３００は、しばしばコンテンツ復号器内のエントロピー復号中の実質的に大きな遅延となる、先導するものの位置を決定するために従来のエントロピー復号器により使用される多くのテストを避ける。更に、一旦、符号化シンボルが決定されると、一実施例では、符号語長に基づいて、次の符号化シンボル又は符号語の開始位置を示すために、ポインタが使用される。
【００２９】
図３Ａを参照すると、代わりの実施例では、キャッシュ３５０は復号テーブル３５２のみを有しそして、シフトテーブル３６０を使用しない。従って、上述の実施例では、復号テーブルは、レベル又は大きさ値、次のゼロでない値へのランレングス値と、符号語の長さを含みうる。従って、ビデオストリームデータの部分がデータバッファ３０２内のデータ記憶装置３０４から読み出されるときには、データの選択された部分からルックアップデータを抽出するために、データの選択された部分に、マスクが適用されうる。
【００３０】
このように、ルックアップデータを使用して、復号テーブル３５２は、復号テーブル３５２の１つ内で対応するエントリの１つが検出されるまで、質問される。一実施例では、ルックアップデータのビット長が、符号語長よりも短いときには、符号化テーブルは無効な応答を戻す。従って、追加のビットがルックアップデータに追加され、そして、有効なエントリが戻されるまで復号テーブル３５２に適用される。従って、一旦位置が決定されると、データの選択された部分は、復号テーブル３５２により供給される、レベル／大きさ値、ランレングス値及び符号語値を使用して復号される。更に、一旦、符号化シンボルが決定されると、一実施例では、符号語長に基づいて、次の符号化シンボル又は符号語の開始位置を示すために、ポインタが使用される。
【００３１】
図４を参照すると、図４は、データバッファ３０２のデータ記憶装置３０４内のデータ変換を示す。示された例では、データ記憶装置３０４内のデータは、初期的にリトルエンディアン順序で記憶される。データの初期順序付けは、一般的には、それぞれの計算構造内のデータの構成の方法に基づいている。残念ながら、最も一般的なビデオフォーマットの、ＭＰＥＧは、データを、ビッグエンディアン順序で構成する。この結果、ＭＰＥＧデータの復号は、リトルエンディアン順序からビッグエンディアン順序への変換を必要とする。代わりに、データは、初期的に、ビッグエンディアン順序で記憶され得、それにより変換を避ける。
【００３２】
従って、データ記憶装置３０４内のデータは、データ変換コマンドの実行に応じて逆転される。そして、示された実施例では、バイトの順序は、各サイズのレジスタについて、単一命令により逆転される。しかしながら、代わりの方法では、バイトの順序は、単一命令で、３２ビットレジスタ内で逆転される。従って、そのバイトが３２ビットレジスタ内でスワップされた３２ビットワードは、より大きなレジスタにロードされる。一旦ロードされると、これらの３２ビットワードの順序は、単一命令で逆転される。
【００３３】
図５Ａ−５Ｄを参照すると、図５Ａ−５Ｄは、ソースデータ記憶装置（Ｒ０）３０４−１と第２のデータ記憶装置（Ｒ１）３０４−２を使用する、エントロピー符号化ブロック３００のデータバッファ３０２を示す。示されたように、データバッファ３０２の種々のデータ記憶装置３０４は、ビットレベルのアドレス能力を提供し、これは、コンテンツデータの符号化と復号の両方を促進するために使用され得る。従って、Ｒ０データ記憶装置３０４−１は、初期的に、ビットストリームデータがロードされる。一旦、Ｒ０データ記憶装置が容量を満たされると、Ｒ１データ記憶装置３０４−２は、ビットストリームが記憶される。そして、記載された実施例では、Ｒ０とＲ１データ記憶装置の両方は、読み出されていないビットストリームデータを含む。
【００３４】
図５Ｂを参照すると、図５Ｂは、Ｒ０とＲ１データ記憶装置を示し、ビット境界でアクセスされるデータを示す。この結果、ビットは、データバッファ３０２内でアクセスするためのデータの量を定義する単位である。従って、データ記憶装置のアクセスアドレスの間の最小の差は、１ビットである。従って、記載された実施例では、データバッファ３０２は、複数のビットレベルのアドレス可能なレジスタを含む。しかしながら、当業者は、データを保持できる他の形式のハードウェアも、ビットレベルのアドレス可能なデータ記憶装置として使用されうることは理解されよう。
【００３５】
従って、Ｒ０データ記憶装置３０４−１の初期ビットアドレス３０６は、現在のデータ３１４が選択されるところに設けられ、そして、読み出されるビット数に基づいて、要求されるデータの最後の位置３０８が計算される。更に、一実施例では、データ記憶装置は、それぞれのデータ記憶装置内及びビットストリームデータの各部分がアクセスされたかどうかを決定するための、フラグ３１０をを有する。そして、Ｒ０データ記憶装置３０４−１を参照して、Ｒ０データ記憶装置３０４−１は、読み出されたデータ３１２、現在のデータ３１４及び、読み出されていないデータ３１６を含む。
【００３６】
図５Ｃを参照すると、図５Ｃは、要求されたデータが複数のデータ記憶装置（Ｒ０からＲ１）に及ぶときのデータバッファ３０２の実施例を示す。そのような場合が検出されたときには、レジスタ合併動作が実行される。従って、レジスタ合併動作の実行に応じて、Ｒ０データ記憶装置からの現在のデータが読み出されそして、Ｒ１データ記憶装置からの現在のデータが読み出され隣接するユニットとして宛先データ記憶装置へコピーされる。記載された実施例では、宛先データ記憶装置は、図３Ａに示されたエントロピー復号ブロック３００のレジスタファイル３４０内に含まれうるレジスタである。しかしながら、宛先データ記憶装置は、ディジタルデータを保持できる任意の形式のハードウェアでもよい。
【００３７】
代わりの実施例では、データ範囲の検出に応じて、Ｒ０データ記憶装置内の必要のない又は読み出されたデータは、Ｒ１データ記憶装置へ及ぶデータについての空間を作るためにシフトして出されうる。一旦、読み出されていないデータがＲ０データ記憶装置からシフトして出されると、Ｒ１データ記憶装置内の現在のデータは、Ｒ０データ記憶装置内にシフトされうる。従って、一旦、現在のデータがＲ０データ記憶装置内に含まれると、データは隣接するユニットとして宛先データ記憶装置にコピーされる。一旦、コピーされると、Ｒ０データ記憶装置内の全てのデータは、必要のない読み出されたデータであり、そして従って、Ｒ０データ記憶装置には、新データがロードされることが可能である。
【００３８】
図５Ｄを参照すると、図５Ｄは、データバッファ３０２が環状バッファとして機能する実施例を示す。そして、一旦、現在のデータ範囲が、Ｒ０データ記憶装置３０４−１とＲ１データ記憶装置３０４−２から選択されると、Ｒ０データ記憶装置３０４−１は読み出されていないデータをもはや有しない。従って、図５Ｄに示されたように、Ｒ０データ記憶装置内の全てのデータは、アクセスされ、これはフラグ３１０をセットする結果となる。更に、記載された実施例では、入力データストリームからＲ０データ記憶装置内へのデータのロードを可能とするために、Ｒ０データ記憶装置３０４−１の位置は、バッファ３０２の最後に移動される。従って、記載された実施例では、データバッファは、環状バッファとして機能する。言いかえると、提供された実施例では、次のアクセスの全てのデータは、Ｒ１データ記憶装置３０４−１から選択される。
【００３９】
しかしながら、幾つかの実施例では、データアクセスは、幾つかのビットは一度以上アクセスされるというように重なりあい、一方、他の場合には幾つかのビットは全くアクセスされない。そして、記載された実施例では、データバッファ３０２内でアクセスされる望ましいデータのアドレスを規定する方法が、第１ビットのアクセスが発生するレジスタ番号形式より構成される、第１レジスタＩＤを受信することにより提供される。この方法は、レジスタ内のビット位置により与えられるビットアドレス、アクセスされるビット数及び、（多くの場合には）アクセスビットの範囲が初期ソースレジスタを越えて伸びる場合に幾つかのアクセスデータが配置される第２レジスタ、も含む。
【００４０】
記載された実施例では、現在のデータの開始ビット位置（３０６）と抽出されるべきビット数は、（示されていない）２つの追加のレジスタ内に保持されている。しかしながら、代わりの実施例では、アクセスされるべきデータの仕様は、アクセスされるデータの第１ビットアドレス３０６及びビット数の代わりに、第１ビットアドレス３０６と最後のビットアドレス３０８を受信することにより提供される。最後のビットアドレス３０８は、最後のビットを保持するレジスタ（Ｒ１３０４−２）に関連しうるが、しかし、第１のレジスタ（Ｒ０３０４−１）に関連してもよく、この場合には、第１ビットアドレスとアクセスされるべきビット数の和に等しい。後者の場合には、最後のアドレス３０８は、最後のビットアドレス３０８が第１のレジスタ（Ｒ０３０４−１）の最高のアドレスを超える場合には、他のレジスタ（Ｒ１３０４−２）内の位置を参照しうる。この場合には、バッファ内に単一のアドレス空間が効率的に存在する。
【００４１】
そして、アクセスされたデータは、図３Ｂに示されたように、宛先レジスタ３４２へ転送される。宛先レジスタ３４２又は、データ記憶装置３０４は、データバッファ３０２のデータ記憶装置３０４と同じ又は異なる形式のレジスタでもよい。一実施例では、アクセスされたデータは、レジスタ内の最下位又は最小の桁位置にロードされる（図３Ｂ参照）。更に、データアクセスが要求されるときには、レジスタ合併命令を要求し、データは連結され、それにより、データの隣接するユニットが宛先データ記憶装置３４２にロードされる。
【００４２】
多くの場合には、データバッファ３０４からアクセスされるデータは、宛先データ記憶装置３４２を満たさない。この場合には、宛先データ記憶装置３４２は、ゼロ伸張され、アクセスされるデータの一部ではない宛先レジスタ３４２内のビットがゼロにされる。宛先データ記憶装置３４２のゼロ伸張は、一実施例では、データバッファ内のデータから宛先データ記憶装置３４２にロードするロード命令により実行される（図３Ｂ参照）。更に、フラグ３１０がセットされるときには、それぞれのデータ記憶装置内の全てのデータがアクセスされたことを示し、追加のデータをデータバッファにロードする命令が実行されるときには、フラグは、リセットされる。そして、プロセッサは、フラグをセットするためにロードされるデータを待たない。
【００４３】
しかしながら、代わりの実施例では、レジスタ内の全てのデータがアクセスされたことを決定することは、レジスタ内の最も高いアドレス（レジスタ内のＭＳＢ位置）と、アクセスされた第１のビット３０６のアドレス（ビット位置）とアクセスされるべきビット数の和を比較することにより実行される。そして、この和が、最も高いアドレス（ＭＳＢ位置）よりも大きい場合には、全てのデータがレジスタからアクセスされた。従って、上述の実施例では、レジスタ内の全てのデータがアクセスされたときに、ビットストリーム２５２からのデータは、レジスタ内にロードされそして、現在バッファ内にある他のデータの後に新たにロードされるデータがアクセスされるように、レジスタはバッファの最後に移動される。
【００４４】
最後に、ビットアドレス可能なデータバッファ３０２は、ループ又はロール関数のようなソフトウェアの最適化を扱う。そして、ループは、レジスタ内の全てのデータがアクセスされたかどうかを毎シンボルの復号後に検査する必要がないように、記録される。従って、ループが静的に開かれる回数は、ビットバッファアクセスの最大数により割られたレジスタビット長（バッファレスのもののレジスタ数）に等しい。例えば、ビットバッファ長が１２８ビットであり且つバッファ内のレジスタ数が２である場合には、バッファ内の１２８ビットに等しい、１２８ｘ（２−１）であることが保証される。従って、アクセスされる最大数が１７ビットである場合には、バッファは、７要求に等しい、１２８を１７で割った後にデータが不足しない。従って、バッファは７回開かれることが可能である。
【００４５】
図６を参照すると、図６は、本発明の更なる実施例に従ったコンピュータシステム１００内で使用される、コンテンツ符号化器４００の構成要素を示すブロック図を示す。コンテンツ符号化器４００は、初期的に、画像、オーディオ及びビデオのような、４０２コンテンツデータを受信する。従って、画像ストリーム４０２内のデータの各ブロックについて、符号化器４００は、符号化されたブロックを生成するために５つのステップを実行する。第１の段階では、画像間の時間的な冗長度を利用するために、動き推定ブロック４０４により、動き推定が実行される。従って、動き推定ブロック４０６は、離散コサイン変換（ＤＣＴブロック４０８）に供給される、コンテンツデータ４０２のマクロブロック内の各ブロックについて、動きベクトルを発生する。
【００４６】
そして、ＤＣＴブロック４０８は、元のブロック化データをとり、そして、周波数スペクトルを見つけるためにブロックに離散コサイン変換を実行する。この周波数スペクトル４１０は、量子化ブロック４１２へ供給される。量子化ブロック４１２は、受信された周波数スペクトルの多くの小さな値をゼロにし、それにより、周波数スペクトル内の明確な周波数値の数を減少させる。この量子化ステップは、符号化処理の”損失のある”ステップであり、量子化の程度は量子化マトリクスと量子化係数を使用して規定される。
【００４７】
量子化に続いて、量子化ブロック４１２から受信された量子化されたブロック４１４を使用して、ランレングス及びエントロピー符号化が実行される。ランレングス符号化ブロック（ＲＬＣブロック４１６）は、更にコンテンツデータ４０２を圧縮するために、非ゼロ要素とそれらの間のゼロの数を符号化する。最後に、エントロピー符号化ブロック４５０は、符号化されたビットストリーム４９０を発生するために、受信されたランレングス符号化されたデータから、可変長符号と可変長符号サイズを決定する。しかしながら、従来のエントロピー符号化器と対照的に、エントロピー符号化ブロック４５０は、例えば、図７Ａと７Ｂに示されたメモリ装置内の符号化されたデータシンボルの記憶に先立ち、符号化されたデータシンボルを記憶するために、上述のように、ビットレベルアドレス可能なデータバッファ４８０を使用する。
【００４８】
図７Ａを参照すると、図７Ａは、本発明の例示の実施例に従った、エントロピー符号化ブロックを示す。エントロピー符号化ブロック４５０は、符号化されるべき値を読み又は受信する、マイクロプロセッサ４５２を含む。ＭＰＥＧの場合には、２つの値が受信され、これは、符号化されるレベルとランレングスを含む。得られた値を使用して、プロセッサは、受信されたデータの可変長符号と可変長符号サイズを決定するために、ルックアップテーブル４６２を使用する。そして、一旦、可変長符号シンボルと可変長符号サイズが決定されると、エントロピー符号化ブロック４５０は、データバッファ４８０内に符号化されたシンボルを記憶する。そして、符号化シンボルは、データバッファ４８０が一杯になるまで、データ記憶装置４８２（４８２−１，．．．，４８２−Ｎ）内で符号化される。
【００４９】
しかしながら、上述の技術を使用して、データバッファは、複数のデータ記憶装置を使用するが、単一のアドレス空間を有し、データバッファのデータ記憶装置内にデータ４９４の記憶が完了するときに、追加のデータ又は符号化シンボルが、（４８２−１内に記憶された）第１の部分と第２の部分４９８に分離されそして、図７Ｂに示されたように次のデータ記憶装置４８２−２内に供給される。従って、データ記憶装置４８２は、ポインタを使用し、これは、データが記憶されうる中の次のビット位置を追跡する。更に、一旦、データ記憶装置が満たされると、データ記憶装置シンボルは、メモリへ移動され、そして、上述のように、データ記憶装置は、追加の符号化されたデータシンボルを記憶するのに使用されるように、データバッファ内の最終位置へ移動され、一方他のデータはメモリに書き込まれる。
【００５０】
一実施例では、バッファ内で同じ位置を有するように、データバッファ４８０内のレジスタ４８２は名称が付される。従って、データバッファが宛先レジスタによりアクセスされるときには、データバッファ４８０内のデータ記憶レジスタ４８２−１内のデータは、宛先レジスタ内に記憶され、一方、データバッファ４８０のデータロードレジスタ４８２−２は、メモリからロードされる。記憶レジスタがデータバッファ４８０内にデータを書き込む場合には、データは、データバッファ４８０のデータ記憶レジスタ４８２−１に記憶され、一方、データロードレジスタ４８２−２内のデータはメモリへロードされる。従って、物理的なレジスタは、例えば、図５Ｄに示されたように、データバッファへの連続する書き込み又は記憶を可能とするためにレジスタへロードすることと記憶することの間で切り換えられる。本発明の教示を実行するための手続き的な方法が、記載される。
【００５１】
動作
図８を参照すると、図８は、例えば図３Ａに示された、ビットレベルアドレス可能なバッファ３０２からデータを検索する方法５００を示すフローチャートを示す。処理ブロック５２０で、データアクセス命令が実行されるかどうかが決定される。データアクセス命令の実行に応じて、処理ブロック５２２で、データがデータバッファ３０２から選択される。次に、処理ブロック５２４で、データは、データバッファ３０２内のソースデータ記憶装置３０４−１から次のデータ記憶装置３０４−２に及ぶかどうかが決定される（図５Ｃ参照）。データの範囲が検出されたときに、処理ブロック５３８が実行される。そのようでない場合には、制御フローは処理ブロック５６０へ進む。処理ブロック５３８で、ソースデータ記憶装置３０４−１から選択されたデータの部分と次のデータ記憶装置３０４−２から選択されたデータの部分は、連結されて隣接するユニットとして選択されたデータを構成する。最後に、処理ブロック５６０で、選択されたデータは、宛先データ記憶装置３４２内に記憶される。
【００５２】
図９を参照すると、図９はデータバッファ３０２内の入力ビットストリームデータをロードする追加の方法５０２を示すフローチャートを示す（図５Ａ−５Ｄ参照）。そして、処理ブロック５０４で、データロード命令が実行されたかどうかが決定される。データロード命令の実行に応じて、処理ブロック５０６で、データは、データバッファ内で複数のデータ記憶装置に及ぶデータバッファ３０２内にロードされる。従って、上述のように、データバッファは、一実施例では１２８ビットレジスタの、複数のデータ記憶装置を使用する。更に、上述のレジスタ合併機能は、データバッファが単一のアドレス空間として動作することを可能とし、これは、データがデータバッファ内の１つ又はそれ以上のレジスタに及ぶことを可能とする。
【００５３】
一旦、データバッファがロードされると、処理ブロック５０８が実行される。処理ブロック５０８では、データ変換命令が実行されたかどうかが決定される。従って、データ変換命令の実行に応じて、処理ブロック５１０で、データバッファ３０２のデータ記憶装置３０４内で、データの順序が逆転される（図４参照）。一旦、完了すると、制御フローは図８の処理ブロック５２０へ分岐する。上述の実施例では、データ変換はリトルエンディアン順序からビッグエンディアン順序への変換を含む。しかしながら、データ変換は、記載された例には限定されない。
【００５４】
図１０を参照すると、図１０は、データ範囲を検出する追加の方法５２６を示すフローチャートを示す（図５Ｃ）。従って、処理ブロック５２８で、データバッファ３０２内のデータ記憶装置３０４−１を示す、装置値が受信される。一旦、受信されると、処理ブロック５３０で、ソースデータ記憶装置３０４−１から読み出されるビット数を示す、ビット値が受信される。最後に、処理ブロック５３２で、ソースデータ記憶装置３０４−１内の要求されたデータのアドレス３０６が受信される。最後に、処理ブロック５３４で、要求されたデータ３１４の１つ又はそれ以上のビットが、データバッファ３０２で次のデータ記憶装置３０４−１内にあるかどうかが決定される。
【００５５】
上述のように、データ範囲を決定する技術は、ソースデータ記憶装置３０４−１の残りの容量を、要求されたデータ３１４のビット数を示す受信されたビット値に対して比較することを含む。そして、ビット数が残りの容量を越えるときに、データは次のデータ記憶装置に及ぶ。代わりに、要求されたデータについての開始アドレス３０６と要求されたデータについての停止アドレス３０８が受信され、開始アドレス３０６と停止アドレス３０８が異なるデータ記憶装置を参照するときに、データスパンが検出される。データスパンが検出されたときに、制御フローは、図８の処理ブロック５３８に分岐する。そのようでなければ、制御フローは、図８の処理ブロック５６０へ分岐する。
【００５６】
図１１を参照すると、図１１は選択されたデータを記憶する追加の方法５９０を示すフローチャートを示す（図３Ｂ参照）。そして、処理ブロック５９２で、宛先データ記憶装置のアドレスが受信される。一旦、受信されると、処理ブロック５９４で、データは、最小桁位置（ＬＳＢ）で開始する、宛先データ記憶装置３４２へ記憶される。最後に、処理ブロック５６９で、宛先データ記憶装置３４２の空の最大桁ビット位置（ＭＳＢ）のゼロ伸張が、空の位置をゼロに設定することにより達成される。
【００５７】
図１２を参照すると、図１２は、１つ又はそれ以上のデータ記憶装置に及ぶデータの連結又はレジスタ合併を実行する追加の方法５４０を示すフローチャートを示す（図５Ｃ参照）。処理ブロック５４２で、データ記憶装置３０４−１は、データバッファ３０２から選択される。処理ブロック５４４で、選択されたデータ記憶装置内の全てのデータがアクセスされたかどうかが決定される。一実施例では、この決定は、図５Ａ−５Ｃに示されたアクセスフラグ３１０に基づいている。代わりの実施例では、この決定は開始データポインタ３０６と終了データポインタ３０８が同じレジスタ内にあるかどうかをアクセスすることによりなされる。そのような場合でないときには、データスキャンが検出される。選択されたデータ記憶装置内の全てのデータがアクセスされるときには、処理ブロック５４６で、データアクセスフラグがセットされる。最後に、処理ブロック５４８で、処理ブロック５４２−５４６が、データバッファ内の各データ記憶装置について繰返される。
【００５８】
図１３を参照すると、図１３は、一旦、データ記憶装置内のデータがアクセスされたときに、データバッファのデータ記憶装置内にデータをロードする追加の方法５５０を示す（図５Ａ−５Ｄ）。そして、処理ブロック５５２で、データ記憶装置３０４−１がデータバッファ３０２から選択される。次に処理ブロック５５４で、データアクセスフラグ３１０がセットされているかどうかが決定される。データアクセスフラグ３１０がセットされているときには、処理ブロック５５６で、データは、選択されたデータ記憶装置内に、追加の入力データストリームデータと共にロードされる。最後に、処理ブロック５５８で、処理ブロック５５２−５５６が、データバッファ内の各データ記憶装置について繰り返される。
【００５９】
図１４を参照すると、図１４は、一旦、宛先データ記憶装置３４２内に記憶されたデータを復号する追加の方法５６２を示すフローチャートを示す（図３Ｂ参照）。処理ブロック５６４で、宛先データ記憶装置３４２内のデータは復号される。次に、処理ブロック５８０で、宛先データ記憶装置内のデータは、復号されたデータで上書きされる。
【００６０】
図１５を参照すると、図１５は、図１４の処理ブロック５６４の宛先データ記憶装置内のデータを復号する追加の方法５６６を示すフローチャートを示す。処理ブロック５６８で、データ検出命令が実行されたかどうかが決定される。データ検出命令の実行に応じて、処理ブロック５７０で、例えば、図３Ｂに示されたように、先導するものの位置３４４が宛先データ記憶装置３４２内で決定される。次に、処理ブロック５７２で、シフト値を決定するインデックスとして先導するものの位置を使用して、シフト値が、シフトテーブル３６０から読み出される。処理ブロック５７４で、宛先データ記憶装置３４２は、シフト値に従って、シフトされる。
【００６１】
次に、処理ブロック５７６で、復号シンボルは、インデックスとしてシフトされた宛先データ記憶装置の値に基づいて、ルックアップテーブル３５２から読み出される（図３Ａ参照）。最後に、処理ブロック５７８で、復号シンボル長が、インデックスとしてシフトされた宛先データ記憶装置も使用して、シンボル長ルックアップテーブル３５２から読み出される。そして、データ検出命令は、受信されたビットストリーム内の符号語を検出するために使用される、先導するものの位置を決定するために、従来のエントロピー復号器により使用される、多くの条件テストを避ける。従って、一旦、符号語が検出されると、ポインタが、データバッファ３０２のそれぞれのデータ記憶装置３０４内の次の符号語の先頭をマークするために、使用される。
【００６２】
代わりに、図３Ａを参照して上述したように、キャッシュ３５０は、符号語長値、レベル／大きさ値及びランレングス値を含む復号テーブル３５２へ制限される。そして、記載された実施例では、マスクが、マスクされた／ルックアップデータを決定するために、宛先データ記憶装置３４２に適用される。一旦、マスクされたデータが決定されると、マスクされたデータは、キャッシュ３５０内の復号テーブル３５２へアクセスするために使用される。要求されたデータがテーブル内に含まれる場合には、符号語長値、レベル／大きさ値及びランレングス値は、テーブルからの単一のデータ読出しから抽出される。そのようでなく、データがテーブル内に含まれていない場合には、符号語読出しは、データがテーブル内にないことを示す。そして、処理は、望ましいデータの位置が特定されるまで、キャッシュ３５０の残りのテーブル内で繰り返される。
【００６３】
図１６を参照すると、図１６は、例えば、図７Ａと７Ｂに示されたように、ビットレベルアドレス可能データバッファ４８０内にデータを記憶する方法６００を示す。処理ブロック６３０で、データロード命令が実行されたかどうかが決定される。データロード命令の実行に応じて、処理ブロック６４０で、ロードされるべきデータ４９２のデータサイズ４９４が、データバッファ４８０内の宛先データ記憶装置４８２−１の残りの容量４８４を越えるかどうかが決定される。そのような場合には、処理ブロック６７０が実行される。
【００６４】
そのようでない場合には、データは、データバッファ４８０の宛先データ記憶装置４８２内にロードされ又は記憶される。処理ブロック６７０では、データ４９４は、第１の部分４９６と第２の部分４９８に分割される。一旦、分割されると、処理ブロック６７２で、第１の部分４９６は、宛先データ記憶装置４８２−１内にロードされる。次に、データの第２の部分４９８は、データバッファの次のデータ記憶装置内にロードされる（図７Ｂ参照）。最後に、処理ブロック６７６で、宛先データ記憶装置４８２−１内の、データは、例えば、メモリ装置４９０へ移動される。
【００６５】
図１７を参照すると、図１７は、ビットレベルアドレス可能なデータバッファ４８０内のデータの記憶の前の、データの符号化のための追加の方法６０２を示す。処理ブロック６０４で、データ４１８は、ソースデータ記憶装置から選択される。一旦、選択されると、処理ブロック６０６で、選択されたデータが符号化される。次に、処理ブロック６１８で、符号化されたデータは、ソースデータ記憶装置に記憶される。最後に、処理ブロック６２０で、データロード命令の実行が、データバッファの１つ又はそれ以上のデータ記憶装置内に符号化されたデータをロードするために、実行される。一旦、実行されると、制御フローは、図１６の処理ブロック６３０へ分岐する。
【００６６】
図１８を参照すると、図１８は、データロード命令を実行するのに応じて実行される、追加の方法６３２を示すフローチャートを示す。処理ブロック６３４では、データバッファ４８０の宛先データ記憶装置４８２内のデータの開始アドレス位置が受信される。次に、処理ブロック６３６で、宛先データ記憶装置４８２内に記録されるべきデータのビット数を示すデータサイズ値が受信される。最後に、処理ブロック６３８で、データが初期的に配置されたソースデータ記憶装置アドレスが受信される。一旦、受信されると、制御フローは、図１６の処理ブロック６４０へ分岐する。
【００６７】
図１９を参照すると、図１９は、ロードされるべきデータのデータサイズが図７Ｂ内に示されたデータバッファ４８０内の宛先装置４８２−１の残りの容量を越えるかどうかを決定する追加の方法６４２を示すフローチャートを示す。従って、処理ブロック６４４で、データバッファ４８０内の現在の宛先データ記憶装置４８２−１の残りの容量４８４が決定される。次に、処理ブロック６４６で、受信されたデータサイズ４９４が残りの容量４８４よりも大きいかどうかが決定される。そのような場合には、処理ブロック６４０が実行される。そのようでない場合には、制御フローは、図１６の処理ブロック６５０に分岐する。
【００６８】
処理ブロック６４８では、データサイズ４９４が宛先記憶装置４８２−１の残りの容量４８４を超える。従って、データは、図１６に示されたように、処理ブロック６４０で第１の部分４９６と第２の部分４９８に分割されねばならない。分割は、宛先データ記憶装置４８２−１の残りの容量４８４に等しい受信されたデータ４９２からの幾つかのビットを選択することにより達成される。選択されたデータは、データ４９２の第１の部分４９６を構成し、これは、宛先データ記憶装置内に記憶される。次に、データ４９２の残りの部分が、第２の部分４９８がデータバッファ４８０の次のデータ記憶装置４８２−２内に記憶されるように、第２の部分４９８として使用される。従って、データを分割する能力は、一旦、データバッファ内のそれぞれのデータ記憶装置が満たされると、データがメモリへ書き込まれるように、単一のアドレス空間としてデータバッファを機能させることを可能とする。
【００６９】
図２０を参照すると、図２０は、例えば図３Ａと図７Ｂに示されたデータバッファ４８０が、データバッファ４８０内の複数のレジスタとしてデータ記憶レジスタ４８２−１とデータ記憶レジスタ４８２−２を使用する方法を示す。従って、データバッファ４８０内にデータを記憶するためのデータアクセス命令に応じて、データバッファ４８０内の現在のレジスタがデータ記憶レジスタ４８２−１であるかどうかが決定される。そのような場合のときには、処理ブロック６５６が実行される。処理ブロック６５６で、データ記憶レジスタ４８２−１が追加の容量を含むかどうかが決定される。データ記憶レジスタ４８２−１が追加の容量を含むときには、処理ブロック６５８が実行される。
【００７０】
処理ブロック６５８で、ソースデータ記憶装置からのデータは、データ記憶レジスタ４８２−１内に記憶される。そうでなければ、データ記憶レジスタ４８２−１は満たされ、そして、データロードレジスタ４８２−１として機能しなければならない。ここに記載のように、データロードレジスタ４８２−２は、データロードレジスタ４８２−２がデータで完全に満たされそしてそれゆえにデータがメモリ４９０に書き込まれることを必要とするように、環状バッファとして機能するデータバッファ４８０内で使用される。対照的に、データ記憶レジスタは、追加の容量を有し且つデータロード命令の実行に応じて受信されたデータがロードされる、データレジスタである。
【００７１】
従って、処理ブロック６６０で、データ記憶レジスタは、一旦充満になると、データロードレジとして改名される。次に、処理ブロック６６２で、データロードレジスタ内のデータは、メモリ４９０内に記憶される。次に、処理ブロック６６４で、データロードレジ４８２−２が空かどうかが決定される。そして、データロードレジスタ４８２−２が空になるまで、処理ブロック６６２が繰り返される。一旦、データロードレジスタ４８２−２が空になると、処理ブロック６６６が実行される。処理ブロック６６６で、ソースデータ記憶装置内に追加のデータがあるかどうかが決定される。追加のデータがソースデータ記憶装置内にあるときには、データロードレジスタ４８２−２は、追加のデータがロードされるように、データ記憶レジスタ４８２−１として改名がされる。そのようでないときには、制御フローは、図１７に示されたように、処理ブロック６５０へ戻り、方法は終了する。
【００７２】
最後に、図２１を参照すると、図２１は、図１７に示されたように、処理ブロック６０６の選択されたデータを符号化する追加の方法を示すフローチャートを示す。処理ブロック６１０では、１つ又はそれ以上の記憶されたデータ値が読み出される。次に、処理ブロック６１２で、可変長符号シンボルと可変長符号サイズが、図７Ａに示された、シンボルルックアップテーブルから読み出される。当業者には知られているように、符号化シンボルと長さは、データストリーム内のデータ要素の頻度に基づいて発生される。最後に、処理ブロック６１４で、処理ブロック６１０と６１２は、各記憶されたデータ値について繰り返される。
【００７３】
代わりの実施例
改善されたエントロピー符号化／復号を提供するビットレベルアドレス可能なデータバッファの一実行の幾つかの面が、記載された。しかしながら、ビットレベルアドレス可能なデータバッファの種々の実行は、多くの特徴を、補完する、補足する、及び／又は、置きかえる、こと含む多くの特徴を提供する。特徴は、画像処理システムの一部として、又は、異なる実行のハードウェア／ソフトウェア、符号化器／復号器の一部として、実行されうる。更に、前述の記載は、説明のために、本発明徹底的な理解を提供するために、特定の述語を使用した。しかしながら、当業者には、特定の詳細は本発明を実施するために要求されないことは明らかである。
【００７４】
更に加えて、ここに記載された実施例は、ビットレベルアドレス可能なバッファに向けられているが、本発明の教示は他のシステムにも適用されることは当業者により理解されよう。実際には、ビットレベル動作のバッファリングシステムは、本発明の範囲と精神から離れることなしに、本発明の教示の範囲内である。上述の実施例は、本発明の原理とその特定の応用を最も良く説明するために、選択され且つ記載された。これらの実施例は、選択され、それにより、当業者が、本発明と考えられる特定の使用に適する種々の修正を有する種々の実施例を、最も良く使用することを可能とする。
【００７５】
本発明の種々の実施例の多くの特徴と利点が、本発明の種々の実施例の構造と機能の詳細と共に、前述の記載に述べられたが、この開示は説明のためのみである。幾つかの場合には、ある副組立体のみが、１つのそのような実施例と共に詳細に記載されている。それにも関わらず、そのような副組立体は、本発明の他の実施例で使用されうることは認識され且つ意図される。変更は、詳細になされ、特に、添付の請求項の用語の広い一般的な意味により示される全範囲に、本発明の原理内の構造に関することと部分の管理が、表現される。
【００７６】
本発明は、知られた技術を超える多くの利点を提供する。本発明は、ビットのアクセス及び強いビット操作を使用し又は要求する応用の速度を速める能力を有する。ここに記載の方法は、バッファとして使用されるレジスタからデータを操作し及び抽出することの、改善された効率とより高い性能（速度）を達成し、それにより、エントロピー符号化と復号の速度を向上する。
【００７７】
本発明の特徴は、効率的なリトルエンディアンからビッグエンディアンへの変換を容易にする高速バイト順序逆転動作のような、ビットアクセス及び操作を含む種々の応用について性能の利点を提供する。更に、データバッファは、バイトでなくビットで、アクセスされ、記憶され、そして測定されるデータの量に基づいて、ビット境界でアクセスされ且つ記憶されるデータを保持する。バッファは、循環バッファとして動作する複数のレジスタを含んでもよい。ビットのシーケンスがレジスタからアクセスされるときには、他のレジスタ内のデータは、メモリからロードされる。従って、ビットのシーケンスが１つのレジスタに記憶されるときには、他の中のデータは、メモリに記憶されることが可能である。
【００７８】
データバッファからロードされる又はデータバッファ内に記憶されるビットのシーケンスは、複数のレジスタに及ぶことが可能である。最後に、命令は、ビットバッファからアクセスされるデータ内の先導するものの位置を決定する。先導するものの位置は、宛先レジスタ内のビットをシフトするためのビット数を決定するのに使用され得る。これは、１つの命令で行われ、そして、従来のエントロピー復号実行の条件分岐を避ける。宛先レジスタ内の結果のデータは、ルックアップテーブルをアクセスするために使用される。ビットバッファは、ループソフトウェア最適化を展開することを許可しうる。
【００７９】
例示の実施例とベストモードを開示したが、以下の請求項により定義される本発明の範囲内に残りながら、開示された実施例に、修正及び変形が、なされうる。
【図面の簡単な説明】
【００８０】
【図１】技術的に知られているそして本発明の教示が本発明の一実施例内で実行されうる、従来のコンピュータシステムを示すブロック図である。
【図２】本発明の実施例に従って、図１に示されたコンピュータシステム内で使用されうるコンテンツ復号器を示すブロック図である。
【図３Ａ】本発明の更なる実施例に従った図２に示されたコンテンツ復号器のエントロピー復号ブロックを示すブロック図である。
【図３Ｂ】本発明の更なる実施例に従った宛先データ記憶装置を示す図である。
【図４】本発明の更なる実施例に従ったデータ記憶装置内のデータ変換を示すブロック図である。
【図５Ａ】本発明の更なる実施例に従ったデータバッファの１つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図５Ｂ】本発明の更なる実施例に従ったデータバッファの１つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図５Ｃ】本発明の更なる実施例に従ったデータバッファの１つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図５Ｄ】本発明の更なる実施例に従ったデータバッファの１つ又はそれ以上の記憶装置からのデータの読出しを示すブロック図である。
【図６】本発明の更なる実施例に従った図１に示されたコンピュータシステム内で使用されるコンテンツ符号化器を示すブロック図である。
【図７Ａ】本発明の更なる実施例に従った図６に示されたエントロピー符号化ブロックを示すブロック図である。
【図７Ｂ】本発明の更なる実施例に従った図６に示されたエントロピー符号化ブロックを示すブロック図である。
【図８】本発明の実施例に従って、データバッファからデータをアクセスする方法を示すフローチャートである。
【図９】本発明の更なる実施例に従って、データバッファ内にデータをロードする追加の方法を示すフローチャートである。
【図１０】本発明の更なる実施例に従って、要求されたデータがデータバッファ内の１つ又はそれ以上のデータ記憶装置に及ぶかどうかを検出する追加の方法を示すフローチャートである。
【図１１】本発明の更なる実施例に従って、宛先データ記憶装置内にデータを記憶する追加の方法を示すフローチャートである。
【図１２】本発明の例示の実施例に従って、データバッファの１つ又はそれ以上のデータ記憶装置に及ぶデータを連結する追加の方法を示すフローチャートである。
【図１３】本発明の更なる実施例に従って、データバッファ内の全てのデータがアクセスされたときに、データバッファのデータ記憶装置内にデータをロードする追加の方法を示すフローチャートである。
【図１４】本発明の更なる実施例に従って、選択されたデータを復号する追加の方法を示すフローチャートである。
【図１５】本発明の例示の実施例に従って、宛先データ記憶装置内でデータを復号する追加の方法を示すフローチャートである。
【図１６】本発明の実施例に従って、複数のデータ記憶装置を含むデータバッファ内にデータをロードする方法を示すフローチャートである。
【図１７】本発明の更なる実施例に従って、データバッファ内のロードに先立つデータの符号化を示すフローチャートである。
【図１８】本発明の更なる実施例に従って、データロード命令の実行に応じて実行される追加の方法を示すフローチャートである。
【図１９】本発明の更なる実施例に従って、ロードされたデータが、データバッファ内の宛先データ記憶装置の容量を越えるかどうかを決定する追加の方法を示すフローチャートである。
【図２０】本発明の例示の実施例に従って、データ記憶レジスタとデータロードレジスタを含むデータバッファ内にデータをロードする方法を示すフローチャートである。
【図２１】本発明の更なる実施例に従って、メモリ装置から選択された、データを符号化する追加の方法を示すフローチャートである。
【図１】
2005502955.tif 000003
【図２】
2005502955.tif 000004
【図３Ａ】
2005502955.tif 000005
【図３Ｂ】
2005502955.tif 000006
【図５Ａ】
2005502955.tif 000007
【図５Ｂ】
2005502955.tif 000008
【図５Ｃ】
2005502955.tif 000009
【図５Ｄ】
2005502955.tif 000010
【図６】
2005502955.tif 000011
【図７Ａ】
2005502955.tif 000012
【図７Ｂ】
2005502955.tif 000013
【図８】
2005502955.tif 000014
【図９】
2005502955.tif 000015
【図１０】
2005502955.tif 000016
【図１１】
2005502955.tif 000017
【図１２】
2005502955.tif 000018
【図１３】
2005502955.tif 000019
【図１４】
2005502955.tif 000020
【図１５】
2005502955.tif 000021
【図１６】
2005502955.tif 000022
【図１７】
2005502955.tif 000023
【図１８】
2005502955.tif 000024
【図１９】
2005502955.tif 000025
【図２０】
2005502955.tif 000026
【図２１】
2005502955.tif 000027
【国際公開パンフレット】
2005502955.tif 000028
2005502955.tif 000029
2005502955.tif 000030
2005502955.tif 000031
2005502955.tif 000032
2005502955.tif 000033
2005502955.tif 000034
2005502955.tif 000035
2005502955.tif 000036
2005502955.tif 000037
2005502955.tif 000038
2005502955.tif 000039
2005502955.tif 000040
2005502955.tif 000041
2005502955.tif 000042
2005502955.tif 000043
2005502955.tif 000044
2005502955.tif 000045
2005502955.tif 000046
2005502955.tif 000047
2005502955.tif 000048
2005502955.tif 000049
2005502955.tif 000050
2005502955.tif 000051
2005502955.tif 000052
2005502955.tif 000053
2005502955.tif 000054
2005502955.tif 000055
2005502955.tif 000056
2005502955.tif 000057
2005502955.tif 000058
2005502955.tif 000059
2005502955.tif 000060
2005502955.tif 000061
2005502955.tif 000062
2005502955.tif 000063
2005502955.tif 000064
2005502955.tif 000065
2005502955.tif 000066
2005502955.tif 000067
2005502955.tif 000068
2005502955.tif 000069
2005502955.tif 000070
2005502955.tif 000071
2005502955.tif 000072
2005502955.tif 000073
2005502955.tif 000074
2005502955.tif 000075
2005502955.tif 000076
2005502955.tif 000077
2005502955.tif 000078
2005502955.tif 000079
2005502955.tif 000080
2005502955.tif 000081
2005502955.tif 000082
【国際公開パンフレット（コレクトバージョン）】
2005502955.tif 000083
2005502955.tif 000084
【国際調査報告】
2005502955.tif 000085
2005502955.tif 000086
2005502955.tif 000087
2005502955.tif 000088
2005502955.tif 000089