(57)【要約】  ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける方法を提供する。  ディジタル信号の４つ未満のサンプルの関数として、近似フィルタ・サンプルを生成する。４つ未満のサンプルの関数として補正値を生成し、近似フィルタ・サンプルを補正値で修正することによって、フィルタ・サンプルを生成する。
2005516453.tif 000002
【特許請求の範囲】
【請求項１】
ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける方法であって、
前記ディジタル信号の４つ未満のサンプルの関数として近似フィルタ・サンプルを生成するステップと、
前記４つ未満のサンプルの関数として補正値を生成するステップと、
前記補正値によって前記近似フィルタ・サンプルを修正することによって、フィルタ・サンプルを生成するステップとから成る方法。
【請求項２】
請求項１記載の方法において、前記４つ未満のサンプルは、２つのサンプルのみである、方法。
【請求項３】
請求項２記載の方法において、前記２つのサンプルは、第１固定小数点数Ａ、および第２固定小数点数Ｂであり、前記近似フィルタ・サンプルを生成するステップは、（Ａ＋Ｂ＋１）＞＞１を計算するステップを含む、方法。
【請求項４】
請求項３記載の方法において、前記信号プロセッサは、関数（Ｘ＋Ｙ＋１）＞＞１を計算する命令を有するマイクロプロセッサであって、前記命令を用いてＡ＋Ｂ＋１＞＞１の計算を実行する、方法。
【請求項５】
請求項４記載の方法において、前記プロセッサは、ＳＳＥまたはＳＳＥ２を備えたインテル社のマイクロプロセッサであり、前記命令はＰＡＶＧＢ命令である、方法。
【請求項６】
請求項４記載の方法において、前記プロセッサは、ＳＳＥまたはＳＳＥ２を備えたインテル社のマイクロプロセッサであり、前記命令はＰＡＶＧＷ命令である、方法。
【請求項７】
請求項３記載の方法において、前記近似フィルタ・サンプルを生成するステップは、更に、（Ａ＋（（Ａ＋Ｂ＋１）＞＞１）＋１）＞＞１を計算するステップを含む、方法。
【請求項８】
請求項３記載の方法において、前記近似フィルタ・サンプルを生成するステップは、
Ｅ＝（（Ａ＋Ｂ＋１）＞＞１）＜＜Ｓを計算するステップと、
Ｆ＝（（Ａ＋Ｂ＋１）＞＞１）＜＜Ｒを計算するステップと、
前記近似フィルタ・サンプルをＥ＋Ｆとして計算するステップと、
を備え、ＳおよびＲが正の固定小数点数である方法。
【請求項９】
請求項８記載の方法において、前記補正値を生成するステップは、
Ｑ＝〜（Ａ「排他的論理和」Ｂ）を計算するステップと、
数値１でＱをマスクするステップと、
Ｇ＝Ｑ＜＜（Ｓ−１）を計算するステップと、
Ｈ＝Ｑ＜＜（Ｒ−１）を計算するステップと、
前記補正値をＧ＋Ｈとして計算するステップと、
を備える、方法。
【請求項１０】
請求項９記載の方法において、前記フィルタ・サンプルを生成するステップは、
前記補正値と前記近似フィルタ・サンプルとを加算することによって、前記フィルタ・サンプルを計算するステップと、
前記フィルタ・サンプルをＮ−１ビットだけ右にシフトするステップであって、Ｎが正の固定小数点数である、ステップとを備える、方法。
【請求項１１】
請求項３記載の方法において、前記近似フィルタ・サンプルを生成するステップは、更に、
Ｅ＝（（Ａ＋Ｂ＋１）＞＞１）＞＞（Ｎ−１−Ｓ）を計算するステップと、
Ｆ＝（（Ａ＋Ｂ＋１）＞＞１）＞＞（Ｎ−１−Ｒ）を計算するステップと、
ＥとＦを加算するステップと、
を含み、Ｎ、Ｓ、Ｒが正の固定小数点数であって、Ｎ≧Ｓ＞Ｒである、方法。
【請求項１２】
請求項１１記載の方法において、前記補正値を生成するステップは、
Ｑ＝〜（Ａ「排他的論理和」Ｂ）を計算するステップと、
数値１でＱをマスクするステップと、
Ｇ＝Ｑ＜＜（Ｓ−１）を計算するステップと、
Ｈ＝Ｑ＜＜（Ｒ−１）を計算するステップと、
前記補正値をＧ＋Ｈとして計算するステップとを備える方法。
【請求項１３】
請求項１２記載の方法において、前記フィルタ・サンプルを生成するステップは、前記補正値と前記近似フィルタ・サンプルとの加算として、前記フィルタ・サンプルを計算するステップを備える方法。
【請求項１４】
請求項２記載の方法において、前記２つのサンプルは固定小数点数であって、前記補正値を生成するステップは、
前記補正値を、前記２つのサンプルの排他的論理和（ＸＯＲ）として計算するステップと、
前記補正値を１の整数でマスクするステップとを備える方法。
【請求項１５】
請求項１４記載の方法において、前記補正値を生成するステップは、前記マスクするステップの前に、前記補正値のビット毎の補数を生成するステップを更に備える方法。
【請求項１６】
請求項２記載の方法において、前記２つのサンプルは固定小数点数Ａ、Ｂであって、前記補正値を生成するステップは、
（Ａ「排他的論理和」Ｂ）ＯＲ（Ａ「排他的論理和」（Ａ＋Ｂ＞＞１））として前記補正値を計算するステップと、
前記補正値を１の数値でマスクするステップとを備える方法。
【請求項１７】
請求項２記載の方法において、前記２つのサンプルは固定小数点数Ａ、Ｂであって、前記補正値を生成するステップは、
（Ａ「排他的論理和」（Ａ＋Ｂ＞＞１））として前記補正値を計算するステップと、
前記補正値と数値１とのビット毎の論理積を取るステップとを備える方法。
【請求項１８】
請求項１記載の方法において、前記フィルタ・サンプルを生成するステップは、前記補正値を前記近似フィルタ・サンプルに加算するステップを備える方法。
【請求項１９】
請求項１記載の方法において、前記フィルタ・サンプルを生成するステップは、前記補正値を前記近似補間サンプルから減算するステップを備える方法。
【請求項２０】
請求項２記載の方法において、前記マイクロプロセッサは、ＭＭＸＴＭ／ＳＳＥを備えたインテル社のマイクロプロセッサであって、前記２つのサンプルは、８ビット固定小数点数であり、前記近似フィルタ・サンプルを生成するステップ、前記補正値を生成するステップ、および前記フィルタ・サンプルを生成するステップは、以下の命令を実行することを含み、
【表１】
2005516453.tif 000025
ここで、Ａ＿ＲＥＧは初期状態において前記２つのサンプルの一方を含むレジスタであり、Ｂ＿ＲＥＧは前記２つのサンプルの他方を含むレジスタであり、Ｃ＿ＲＥＧは初期状態において前記２つのサンプルの他方を含むレジスタであり、ＣＯＮＳＴは８ビット数値０ｘ０１を含む定数である、方法。
【請求項２１】
請求項２記載の方法において、前記マイクロプロセッサは、ＭＭＸＴＭ／ＳＳＥを備えたインテル社のマイクロプロセッサであって、前記２つのサンプルは、８ビット数値であり、前記近似フィルタ・サンプルを生成するステップ、前記補正値を生成するステップ、および前記フィルタ・サンプルを生成するステップは、以下の命令を実行することを含み、
【表２】
2005516453.tif 000026
ここで、Ａ＿ＲＥＧは初期状態において前記２つのサンプルの一方を含むレジスタであり、Ｂ＿ＲＥＧは前記２つのサンプルの他方を含むレジスタであり、Ｃ＿ＲＥＧは初期状態において前記２つのサンプルの他方を含むレジスタであり、ＣＯＮＳＴは８ビット数値０ｘ０１を含む定数である、方法。
【請求項２２】
請求項１記載の方法において、前記４つ未満のサンプルは３つのみのサンプルである、方法。
【請求項２３】
請求項２２記載の方法において、前記２つのサンプルは、第１固定小数点数Ａ、第２固定小数点数Ｂ、および第３固定小数点数Ｃであり、前記近似フィルタ・サンプルを生成するステップは、
Ｍ＝（Ａ＋Ｂ＋１）＞＞１を計算するステップと、
Ｎ＝（Ｃ＋０＋１）＞＞１を計算するステップと、
前記近似フィルタ・サンプルを、Ｘ＝（Ｍ＋Ｎ＋１）＞＞１として計算するステップと、
を備える方法。
【請求項２４】
請求項２３記載の方法において、前記補正値を生成するステップは、
前記補正値を、（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ））ＯＲ（Ｍ「排他的論理和」Ｎ）として計算するステップと、
前記補正値を１の数値でマスクするステップとを備える方法。
【請求項２５】
請求項２３記載の方法において、前記補正値を生成するステップは、
（Ａ「排他的論理和」Ｂ）ＯＲ  Ｃ  ＯＲ（Ｍ「排他的論理和」Ｎ）として前記補正値を計算するステップと、
前記補正値を１の数値でマスクするステップとを備える方法。
【請求項２６】
請求項２２記載の方法において、前記２つのサンプルは、第１固定小数点数Ａ、第２固定小数点数Ｂ、および第３固定小数点数Ｃであり、前記近似フィルタ・サンプルを生成するステップは、
Ｍ＝（Ｂ＋Ｃ＋１）＞＞１を計算するステップと、
Ｘ＝（Ａ＋Ｍ＋１）＞＞１として前記近似フィルタ・サンプルを計算するステップとを備える方法。
【請求項２７】
請求項２６記載の方法において、前記補正値を生成するステップは、
補正値をＡ「排他的論理和」Ｍとして計算するステップと、
補正値を１の数値でマスクするステップとを備える方法。
【請求項２８】
請求項２６記載の方法において、前記補正値を生成するステップは、
前記補正値を（Ｂ「排他的論理和」Ｃ）ＯＲ（Ａ「排他的論理和」Ｍ）として計算するステップと、
前記補正値を１の数値でマスクするステップとを備える方法。
【請求項２９】
ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける方法であって、
第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として、近似フィルタ・サンプルを生成するステップであって、Ａ、Ｂ、ＣおよびＤが固定小数点数である、ステップと、
（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するステップであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、ステップと、
前記補正値をマスクするステップと、
前記近似フィルタ・サンプルを前記補正値で修正することによって、フィルタ・サンプルを生成するステップとから成る方法。
【請求項３０】
請求項２９記載の方法において、前記近似フィルタ・サンプルを生成するステップは、
Ｍ＝Ａ＋Ｂ＋１＞＞１を計算するステップと、
Ｎ＝Ｃ＋Ｄ＋１＞＞１を計算するステップと、
前記近似フィルタ・サンプルをＭ＋Ｎ＋１＞＞１として計算するステップとを備える方法。
【請求項３１】
請求項３０記載の方法において、前記信号プロセッサは、関数Ｘ＋Ｙ＋１＞＞１を計算する命令を有するマイクロプロセッサであって、前記命令を用いてＭを計算する前記ステップを実行し、前記命令を用いてＮを計算する前記ステップを実行し、前記命令を用いて前記近似フィルタ・サンプルを計算する前記ステップを実行する、方法。
【請求項３２】
請求項３１記載の方法において、前記マイクロプロセッサは、ＳＳＥまたはＳＳＥ２を備えたインテル社のマイクロプロセッサであり、前記命令はＰＡＶＧＢ命令である、方法。
【請求項３３】
請求項３１記載の方法において、前記マイクロプロセッサは、ＳＳＥまたはＳＳＥ２を備えたインテル社のマイクロプロセッサであり、前記命令はＰＡＶＧＷ命令である、方法。
【請求項３４】
請求項２９記載の方法において、前記マイクロプロセッサは、ＭＭＸＴＭ／ＳＳＥを備
えたインテル社のマイクロプロセッサであって、前記Ａ、Ｂ、Ｃ、およびＤは、８ビット固定小数点数であり、前記近似フィルタ・サンプルを生成するステップ、前記補正値を生成するステップ、および前記フィルタ・サンプルを生成するステップは、以下の命令を実行することを含み、
【表３】
2005516453.tif 000027
ここで、Ａ＿ＲＥＧは初期状態においてＡを含むレジスタであり、Ｂ＿ＲＥＧは初期状態においてＢを含むレジスタであり、Ｃ＿ＲＥＧは初期状態においてＣを含むレジスタであり、Ｄ＿ＲＥＧはＤを含むレジスタであり、ＣＯＮＳＴは８ビット数０ｘ０１を含む定数であり、Ｍ＿ＲＥＧは初期状態においてＡを含むレジスタであり、Ｎ＿ＲＥＧは初期状態においてＣを含むレジスタである、方法。
【請求項３５】
ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける方法であって、
第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として、近似フィルタ・サンプルを生成するステップであって、Ａ、Ｂ、ＣおよびＤが整数である、ステップと、
（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するステップであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、ステップと、
前記補正値をマスクするステップと、
前記近似フィルタ・サンプルを前記補正値で修正することによって、フィルタ・サンプルを生成するステップと、
から成る方法。
【請求項３６】
請求項３５記載の方法において、前記近似フィルタ・サンプルを生成するステップは、
Ｍ＝Ａ＋Ｂ＋１＞＞１を計算するステップと、
Ｎ＝Ｃ＋Ｄ＋１＞＞１を計算するステップと、
前記近似フィルタ・サンプルをＭ＋Ｎ＋１＞＞１として計算するステップとを備える方法。
【請求項３７】
請求項３６記載の方法において、前記信号プロセッサは、関数Ｘ＋Ｙ＋１＞＞１を計算する命令を有するマイクロプロセッサであって、前記命令を用いてＭを計算する前記ステップを実行し、前記命令を用いてＮを計算する前記ステップを実行し、前記命令を用いて前記近似フィルタ・サンプルを計算する前記ステップを実行する、方法。
【請求項３８】
請求項３７記載の方法において、前記マイクロプロセッサは、ＳＳＥまたはＳＳＥ２を備えたインテル社のマイクロプロセッサであり、前記命令はＰＡＶＧＢ命令である、方法。
【請求項３９】
請求項３７記載の方法において、前記マイクロプロセッサは、ＳＳＥまたはＳＳＥ２を備えたインテル社のマイクロインテル社のマイクロプロセッサであり、前記命令はＰＡＶＧＷ命令である、方法。
【請求項４０】
請求項３９記載の方法において、前記マイクロプロセッサは、ＭＭＸＴＭ／ＳＳＥを備えたインテル社のマイクロプロセッサであって、前記Ａ、Ｂ、Ｃ、およびＤは、８ビット数であり、前記近似フィルタ・サンプルを生成するステップ、前記補正値を生成するステップ、および前記フィルタ・サンプルを生成するステップは、以下の命令を実行することを含み、
【表４】
2005516453.tif 000028
ここで、Ａ＿ＲＥＧは初期状態においてＡを含むレジスタであり、Ｂ＿ＲＥＧは初期状態においてＢを含むレジスタであり、Ｃ＿ＲＥＧは初期状態においてＣを含むレジスタであり、Ｄ＿ＲＥＧはＤを含むレジスタであり、ＣＯＮＳＴは８ビット数０ｘ０１を含む定数であり、Ｍ＿ＲＥＧは初期状態においてＡを含むレジスタであり、Ｎ＿ＲＥＧは初期状態においてＣを含むレジスタである、方法。
【請求項４１】
ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける方法であって、
第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として、近似フィルタ・サンプルを生成するステップであって、Ａ、Ｂ、ＣおよびＤが固定小数点数である、ステップと、
（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するステップであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、ステップと、
前記補正値をマスクするステップと、
前記近似フィルタ・サンプルを前記補正値で修正することによって、フィルタ・サンプルを生成するステップと、
から成る方法。
【請求項４２】
ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける方法であって、
Ｍ１＝（Ａ＋Ｂ＋１）＞＞１を生成するステップであって、ＡおよびＢが前記ディジタル信号におけるサンプルである、ステップと、
Ｍ２＝（Ｃ＋Ｄ＋１）＞＞１を生成するステップであって、ＣおよびＤが前記ディジタル信号におけるサンプルである、ステップと、
Ｍ３＝（Ｅ＋Ｆ＋１）＞＞１を生成するステップであって、ＥおよびＦが前記ディジタル信号におけるサンプルである、ステップと、
Ｍ４＝（Ｇ＋Ｈ＋１）＞＞１を生成するステップであって、ＧおよびＨが前記ディジタ
ル信号におけるサンプルである、ステップと、
Ｎ１＝（Ｍ１＋（Ｍ３＞＞１）＋（Ｍ３＞＞２））＞＞２を生成するステップと、
Ｎ２＝（Ｍ２＋（Ｍ２＞＞１）＋（Ｍ４＞＞２））＞＞２を生成するステップと、
Ｍ１＋Ｎ１−Ｎ２としてフィルタ・サンプルを生成するステップとから成る方法。
【請求項４３】
コンピュータ・プログラム生産物であって、
ディジタル信号を量子化するコンピュータ・プログラム・コードを内部に具現化したコンピュータ読み取り可能記憶媒体を備え、前記コンピュータ・プログラム・コードが、
前記ディジタル信号の４つ未満のサンプルの関数として近似フィルタ・サンプルを生成するコードと、
前記４つ未満のサンプルの関数として補正値を生成するコードと、
前記近似フィルタ・サンプルを前記近似値によって修正することにより、フィルタ・サンプルを生成するコードとを備えている、コンピュータ・プログラム生産物。
【請求項４４】
ディジタル・信号におけるサンプルをフィルタ処理するシステムであって、
前記ディジタル信号におけるサンプルを格納するメモリと、
前記メモリに結合され、
Ａ）前記ディジタル信号の４つ未満のサンプルの関数として近似フィルタ・サンプルを生成するステップと、
Ｂ）前記４つ未満のサンプルの関数として補正値を生成するステップと、
Ｃ）前記近似フィルタ・サンプルを前記近似値によって修正することにより、フィルタ・サンプルを生成するステップと、
を実行するように動作可能なプロセッサとを備えているシステム。
【請求項４５】
コンピュータ・プログラム生産物であって、
ディジタル信号を量子化するコンピュータ・プログラム・コードを内部に具現化したコンピュータ読み取り可能記憶媒体を備え、前記コンピュータ・プログラム・コードが、
第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として近似フィルタ・サンプルを生成するコードであって、Ａ、Ｂ、Ｃ、およびＤが固定小数点数である、コードと、
（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するコードであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、コードと、
前記補正値をマスクするコードと、
前記近似フィルタ・サンプルを前記補正値で修正することによって、フィルタ・サンプルを生成するコードとを備えているコンピュータ・プログラム生産物。
【請求項４６】
ディジタル信号におけるサンプルをフィルタ処理するシステムであって、
前記ディジタル信号におけるサンプルを格納するメモリと、
前記メモリに結合され、
Ａ）第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として近似フィルタ・サンプルを生成するステップであって、Ａ、Ｂ、Ｃ、およびＤが固定小数点数である、ステップと、
Ｂ）（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として、補正値を生成するステップであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、ステップと、
Ｃ）前記補正値をマスクするステップと、
Ｄ）前記近似フィルタ・サンプルを前記補正値で修正することによって、フィルタ・サンプルを生成するステップと、
を実行するように動作可能なプロセッサとを備えているシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、整数算出演算を実行する技術に関する。より詳細には、ビデオ・エンコーダおよびデコーダにおいて量子化および予測計算を実行する技術に関する。
【背景技術】
【０００２】
著作権に関する注意
この明細書において明記する開示内容には、著作権保護の対象となる資料を含む部分がある。即ち、本発明の特定的な実施形態をコンピュータ・システムにおいて実施するためのソース・コード命令が含まれている。著作権所有者は、特許商標庁に出願された通りの明細書の複製には何等意義を唱えない。それ以外については、あらゆる著作権を保有するものとする。
【０００３】
ビデオ通信（例えば、テレビジョン、テレビ会議、ストリーミング・メディア等）では、ビデオ・フレームのストリームが伝送チャネルを通じて受信機に送信される。個々の用途に応じて、ビデオに付随するオーディオ情報が送信される場合もある。ビデオ・データは一般に大量である。例えば、典型的なテレビジョン画像の空間解像度は、フレーム当たり約２７０×４８０画素である。８ビットを用いて１画素をディジタル的に表現し、毎秒３０フレームでビデオを送信しようとすると、毎秒約８３Ｍビットのデータ・レートが必要となる。しかしながら、伝送チャネルの帯域幅は制限されているのが通例である。したがって、生のディジタル・ビデオ・データのリアル・タイム送信は、一般に実現可能ではない。同様に、生のディジタル・ビデオ・データの格納も、格納用メモリ量が通例限られているので、不可能である。
【０００４】
このため、ビデオ・データは、一般に、送信および／または格納の前に圧縮されている。Ｈ．２６１、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４、Ｈ．２６３等を含む、ビデオ圧縮用に種々の規格が出現している。圧縮技術は、一般に、ビデオ・ストリームの各ピクチャ内、およびストリームにおけるピクチャ間における情報の冗長性を利用する。例えば、ビデオ・データを圧縮するために一般に用いられている技法の１つでは、ピクチャ・データに対して数学的変換（例えば、離散余弦変換）を行って、ピクチャ・データを二次元空間周波数ドメインに変換する。人の視力は一般に空間周波数が高い程感度が落ちるという事実を利用して（即ち、対応する空間周波数が高い変換ピクチャ・データの方が、対応する空間周波数が低い変換ビデオ・データよりも、一層厳格に量子化される）、次いで、変換されたピクチャ・データを量子化する（即ち、データの分解能を低下させて、データを表すのに必要なビット数を削減する）。受信機において、逆変換を受信ビデオ・データに適用して、ビデオを再現する。
【０００５】
別の一般的な技術では、ビデオ・ストリームにおいて新たなピクチャを送信する代わりに、新たなピクチャと直前のピクチャとの差を送信する。ビデオ・ストリームにおいて連続するピクチャは類似することが多いので、ピクチャ自体を送信するのに必要なビット数よりも遥かに少ないビット数を用いて、差情報を送信することができる。
【０００６】
ビデオを送信するために必要なビット数は、更に、エンコーダおよびデコーダにおいて予測技術を用いて削減することができる。例えば、エンコーダは、直前のピクチャに基づいてビデオ・ストリーム内の現ピクチャを「予測」することができ、次いでその予測と実際のピクチャとの間の誤差を計算することができる。予測ピクチャと実際のピクチャとの間の誤差は、実際のピクチャと直前のピクチャとの間の誤差よりも小さくなる傾向がある。誤差が小さくなるので、誤差を表すのに必要なビットも少なくなり、したがって送信に
必要なビット量も減少する。受信機では、デコーダが予測ピクチャを生成し、受信した誤差情報とこれを組み合わせて、実際のピクチャを生成する。
【０００７】
ビデオ・ストリームにおいてピクチャの予測を生成する技術の１つでは、モーション推定を伴う。モーション推定技術の１つでは、現ピクチャを８×８の画素ブロックに区分する。各ブロック毎に、例えば、現ピクチャに隣接するビデオ・ストリーム内の他の実際のピクチャまたは予測ピクチャのような基準ピクチャ内において、ブロックに対する最適(best fit)を求める。一旦最適が得られたなら、モーション・ベクトルを決定する。これは、基本的に、最適ブロックが基準ピクチャ内のどこに位置するかを示す。次いで、フレームの各ブロック毎にモーション・ベクトルおよび誤差を受信機に送信する。受信機では、基準ピクチャ、モーション・ベクトル、および誤差情報を用いて、現ピクチャを再生する。
【０００８】
前述の技術に類似したもの、およびその他の技術を組み合わせることによって、ビデオ品質を所望のレベル未満に低下させずに、圧縮度を高めることができる。例えば、ＭＰＥＧ−１、ＭＰＥＧ−２、およびＭＰＥＧ−４規格では、ビデオ・ストリームにおけるピクチャを予測し、実際のピクチャと予測ピクチャとの間の差を計算する。次いで、差の離散余弦変換（ＤＣＴ）を計算し、ＤＣＴ係数を量子化する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
典型的なビデオ・システムでは、ビデオ・データは整数として表わされ処理される。固定小数点データを処理する技術の一層の効率向上が求められている。  
【課題を解決するための手段】
【００１０】
本発明による一実施形態では、信号プロセッサにおいて、ディジタル信号におけるサンプルをフィルタ処理する方法を提供する。この方法は、ディジタル信号の４つ未満のサンプルの関数として近似フィルタ・サンプル(approximate filtered sample) を生成するステップを含む。また、この方法は、４つ未満のサンプルの関数として補正値を生成するステップと、近似フィルタ・サンプルを補正値で修正することによって、フィルタ・サンプルを生成するステップとを含む。
【００１１】
本発明による別の実施形態では、ディジタル信号を量子化するコンピュータ・プログラム・コードが内部に具現化されているコンピュータ読み取り可能記憶媒体を備えたコンピュータ・プログラム生産物を提供する。コンピュータ・プログラム・コードは、ディジタル信号の４つ未満のサンプルの関数として近似フィルタ・サンプルを生成するコードを含む。また、コンピュータ・プログラム・コードは、４つ未満のサンプルの関数として補正値を生成するコードと、近似フィルタ・サンプルを補正値で修正することによって、フィルタ・サンプルを生成するコードとを含む。
【００１２】
本発明による更に別の実施形態では、ディジタル信号におけるサンプルをフィルタ処理するシステムを提供する。このシステムは、ディジタル信号におけるサンプルを格納するメモリと、メモリに結合されたプロセッサとを備えている。プロセッサは、Ａ）ディジタル信号の４つ未満のサンプルの関数として近似フィルタ・サンプルを生成するステップを実行するように動作可能である。また、プロセッサは、Ｂ）４つ未満のサンプルの関数として補正値を生成するステップと、Ｃ）近似フィルタ・サンプルを近似値によって修正することにより、フィルタ・サンプルを生成するステップとを実行するように動作可能である。
【００１３】
本発明の第２の態様では、ディジタル信号におけるサンプルをフィルタ処理する信号プ
ロセッサにおける別の方法を提供する。この方法は、第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として、近似フィルタ・サンプルを生成するステップを含み、Ａ、Ｂ、ＣおよびＤは固定小数点数である。加えて、この方法は、（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するステップであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、ステップと、補正値をマスクするステップとを含む。更に、この方法は、近似フィルタ・サンプルを補正値で修正することによって、フィルタ・サンプルを生成するステップを含む。
【００１４】
本発明による別の実施形態では、ディジタル信号を量子化するコンピュータ・プログラム・コードを内部に具現化したコンピュータ読み取り可能記憶媒体を備えたコンピュータ・プログラム生産物を提供する。コンピュータ・プログラム・コードは、第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として近似フィルタ・サンプルを生成するコードであって、Ａ、Ｂ、Ｃ、およびＤが固定小数点数である、コードと、（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するコードであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、コードとを含む。また、コンピュータ・プログラム・コードは、補正値をマスクするコードと、近似フィルタ・サンプルを補正値で修正することによって、フィルタ・サンプルを生成するコードとを含む。
【００１５】
本発明の第３の態様では、ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける更に別の方法を提供する。この方法は、第１サンプルＡ、第２サンプルＢ、第３サンプルＣ、および第４サンプルＤの関数として、近似フィルタ・サンプルを生成するステップを含み、Ａ、Ｂ、ＣおよびＤは整数である。加えて、この方法は、（（Ａ「排他的論理和」Ｂ）ＡＮＤ（Ｃ「排他的論理和」Ｄ））ＯＲ（Ｍ「排他的論理和」Ｎ）として補正値を生成するステップであって、Ｍ＝Ａ＋Ｂ＋１＞＞１およびＮ＝Ｃ＋Ｄ＋１＞＞１である、ステップと、補正値をマスクするステップとを含む。加えて、この方法は、近似フィルタ・サンプルを補正値で修正することによって、フィルタ・サンプルを生成するステップを含む。
【００１６】
本発明による第４の態様では、ディジタル信号におけるサンプルをフィルタ処理する信号プロセッサにおける更にまた別の方法を提供する。この方法は、Ｍ１＝（Ａ＋Ｂ＋１）＞＞１を生成するステップであって、ＡおよびＢがディジタル信号におけるサンプルである、ステップと、Ｍ２＝（Ｃ＋Ｄ＋１）＞＞１を生成するステップであって、ＣおよびＤがディジタル信号におけるサンプルである、ステップとを含む。また、この方法は、Ｍ３＝（Ｅ＋Ｆ＋１）＞＞１を生成するステップであって、ＥおよびＦがディジタル信号におけるサンプルである、ステップと、Ｍ４＝（Ｇ＋Ｈ＋１）＞＞１を生成するステップであって、ＧおよびＨがディジタル信号におけるサンプルである、ステップとを含む。加えて、この方法は、Ｎ１＝（Ｍ１＋（Ｍ３＞＞１）＋（Ｍ３＞＞２））＞＞２を生成するステップと、Ｎ２＝（Ｍ２＋（Ｍ２＞＞１）＋（Ｍ４＞＞２））＞＞２を生成するステップとを含む。更に、この方法は、Ｍ１＋Ｎ１−Ｎ２としてフィルタ・サンプルを生成するステップとを含む。
【００１７】
多数の利点が本発明によって得られる。例えば、特定的な一実施形態では、ディジタル・サンプルのフィルタリングを実行する際、従来のフィルタリング技術に比較して、計算にかかる手間が少なくて済む。本発明のその他の特徴および利点は、以下の詳細な説明および添付図面から明白であろう。
【発明を実施するための最良の形態】
【００１８】
（システムの概要）
図１は、本発明の数種類の実施形態を利用可能なビデオ・エンコーダ１００の一例の簡略データ・フロー図である。ビデオ・エンコーダ１００は、符号化するビデオ・データを受け、符号化ビデオを生成する。符号化するビデオは、一連のピクチャから成り、ビデオ・エンコーダ１００は、一連の符号化ピクチャを生成する。ピクチャには、例えば、非インターレース・ビデオのフレーム（非インターレース・ビデオのフィールドと呼ぶこともある）、インターレース・ビデオのフレーム、インターレース・ビデオのフィールド等が考えられる。各入力ピクチャは、画素のアレイから成り、各画素は、通例では、符号無し整数として表され、通例１６ビットの内８ビットを用いる。各入力ピクチャは減算器１１０に供給され、減算器１１０は、入力ピクチャから予測ピクチャを減算して、予測誤差を求める。予測ピクチャは、予測部１３２によって生成する。
【００１９】
当業者には周知であろうが、ビデオ・ストリームにおけるピクチャ全てを、予測を用いて符号化しなければいけない訳ではない。つまり、一部のピクチャについては、予測部１３２は予測ピクチャを生成しない。予測せずに符号化したピクチャを以後「イントラ」ピクチャと呼び、予測して符号化したピクチャを以後「非イントラ」ピクチャと呼ぶ。したがって、イントラ・ピクチャでは、予想誤差は単に入力誤差に過ぎない。
【００２０】
予測誤差は、次に離散余弦変換（ＤＣＴ）計算部１１２に供給され、予測誤差のＤＣＴ係数を生成する。ＤＣＴ係数は量子化器１１４に供給され、量子化器１１４はＤＣＴ係数を量子化する。典型的なビデオ情報では、量子化器１１４が生成する量子化ＤＣＴ係数の多くは、０であることが多い。量子化ＤＣＴ係数は、可変長コーダ１１６に供給され、例えば、ハフマン・コード等を用いて、量子化ＤＣＴ係数を符号化し、符号化ピクチャを生成する。
【００２１】
量子化器１１４が生成した量子化ＤＣＴ係数は、逆量子化器１２０にも供給され、逆量子化器の出力は、逆ＤＣＴ計算部１２２に供給される。逆ＤＣＴ計算部１２２は、復号予測誤差を生成し、これを加算器１２４に供給する。加算器１２４は、復号予測誤差と対応する予測ピクチャとを加算し、復号ピクチャを生成する。また、入力ピクチャはモーション推定部１３０にも供給され、モーション推定部１３０はモーション・ベクトルおよびモード情報を生成し、予測部１３２に供給する。予測部１３２は、モーション・ベクトル、モード情報、および復号ピクチャに基づいて、予測ピクチャを生成する。
【００２２】
例えば、図１に示すエンコーダ１００のようなビデオ・エンコーダは、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせで実施することができる。図２は、代表的なコンピュータ１５０の簡略ブロック図であり、コンピュータ・システム１５０上でソフトウェアを実行し、図１に示したエンコーダのエレメントの一部または全部を実施することができる。この図は、単に例示に過ぎず、当然本願の特許請求の範囲を限定する訳ではない。当業者には、他の変形、変更、および代替が認められよう。
【００２３】
ある実施形態では、システム・バス１５２を通じてサブシステムが相互接続されている。プリンタ、キーボード、固定ディスク１５４、およびその他のような追加のサブシステムが示されている。周辺および入出力（Ｉ／Ｏ）デバイスは、あらゆる数の、シリアル・ポート１５６のような、当技術分野において公知の手段によって、コンピュータ・システムに接続することができる。例えば、シリアル・ポート１５６は、コンピュータ・システムをモデムに接続するために用いることができ、一方、モデムはインターネットのような広域ネットワークに接続する。システム・バス１５２による相互接続によって、中央プロセッサ１６０は各サブシステムと通信し、システム・メモリ１６２または固定ディスク１５４からの命令の実行、およびサブシステム間の情報の交換を制御することができる。サブシステムおよび相互接続の別の構成も、当業者であれば、容易に実現可能である。システム・メモリ１６２および固定ディスク１５４は、コンピュータ・プログラムを格納する
ための有形媒体の例である。その他の種類の有形媒体には、フロッピ・ディスク、リムーバブル・ハード・ディスク、ＣＤ−ＲＯＭおよびバー・コードのような光記憶媒体、ならびにフラッシュ・メモリ、リード・オンリ・メモリ（ＲＯＭ）、およびバッテリでバックアップしたメモリのような半導体メモリが含まれる。
【００２４】
中央プロセッサ１６０は、個々のビデオ符号化の実施に要求されるスループットを処理するのに適していれば、いずれのプロセッサでもよい。例えば、中央プロセッサ１６０は、例えば、ＭＭＸＴＭメディア増強技術およびＳｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＳＥ）またはＳｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎｓ２（ＳＳＥ２）を備えたインテル社のプロセッサ、ＮＥＣ社のＶＲ５２３４プロセッサ、Ｅｑｕａｔｏｒ社のＭＡＰ−ＣＡＴＭプロセッサ、フィリップス社のＴＭ−１３００プロセッサ等がある。
【００２５】
（モーション推定／圧縮）
モーション推定／圧縮は、ビデオの圧縮／伸張に用いられる技術の１群であり、ビデオ・ストリームにおけるピクチャ間の類似性を利用する。通例、モーション推定は、符号化の際に適用される技術であり、モーション補償は復号化の際に適用される技術である。これらの技術では、１つ以上の以前のピクチャまたは後続のピクチャを用いて現ピクチャを「予測」する。
【００２６】
モーション推定では、「予測」するピクチャは、マクロブロックと呼ばれる画素のブロックに区分されることが多い。各マクロブロック毎に、隣接ピクチャ（基準ピクチャと呼ぶ）において当該マクロブロックに類似した画素のブロック（基準ブロックと呼ぶ）を選択する。基準ピクチャ内における類似ブロックの位置は、モーション・ベクトルによって示される。次いで、受信機にマクロブロック自体を送る代わりに、マクロブロックと基準ブロックとの差を、モーション・ベクトルと共に送る。受信機では、モーション・ベクトルを用いて基準ブロックの位置を突き止め、次いで差情報でこれを変更することによって、マクロブロックを再生することができる。
【００２７】
基準ピクチャ内において基準ブロックを選択するための技術が、数多く開発されている。通例、基準ブロックを選択するには、マクロブロックと基準ブロックとの間の不一致を測定するコスト関数を最小化しようとする。多くの技術では、画素精度未満で、位置する基準ブロックを選択することができる。例えば、半画素モーション推定（半サンプル・モードと呼ぶこともある）では、半画素の分解能で基準ブロックを突き止めることができる。半サンプル・モードでは、基準ブロックが半画素の境界に位置する場合、基準ブロック内の画素間で補間を行うことによって、基準ブロックを構成する画素を決定する。例えば、基準ブロック内のある画素が２つの実際の画素の間に位置する場合、基準ブロック内の画素の値は、２つの実際の画素の平均として選択することができる。基準ブロックにおいてある画素が４つの実際の画素の中心に位置する場合、基準ブロックにおけるその画素の値は、４つの実際の画素の平均として選択することができる。このように、半サンプル・モードでは、基準ピクチャ内の画素間で補間を行うことによって、基準ブロックを構成する画素を決定する。
【００２８】
１／４画素モーション推定（１／４サンプル・モードと呼ぶこともある）では、１／４画素の分解能で基準ブロックの位置を突き止めることができる。半サンプル・モードの場合と同様、基準ブロックが半画素または１／４画素の境界に位置する場合、基準ピクチャにおける画素間で補間を行うことによって、基準ブロックを構成する画素を決定する。当業者には公知であろうが、１／４画素境界に位置する画素を生成する場合、通例、基準ピクチャ内にある複数の画素をフィルタ処理する。
【００２９】
大域モーション補償（ＧＭＣ：Global motion compensation）は、モーション推定／補償に用いられる別の技術である。当業者には公知であろうが、ＧＭＣは大域空間変換を用いて、基準ピクチャに基づいて予測マクロブロックを生成する。当業者には公知であろうが、ＧＭＣ変換は、通例、基準ピクチャ内にある複数の画素をフィルタ処理し、予測画素を生成することを伴う。
【００３０】
本開示は、画素の効率的な補間および／またはフィルタリングのために用いることができる技術の実施形態について説明する。
（２画素の効率的な平均化）
前述のように、ビデオ符号化および復号化では、２つ以上の画素間の補間、および／または複数の画素のフィルタリングを計算しなければならないことが多い。ＭＭＸＴＭ／ＳＳＥを備えたインテル社のプロセッサが提供する命令は、かかる補間を効率的に計算するために用いることができる。それは、パック平均命令(packed average instructions) ＰＡＶＧＢ（８ビット数）およびＰＡＶＧＷ（１６ビット数）である。パック平均命令は、６４ビットまたは１２８ビット・レジスタあるいはメモリ位置にパックされるオペランドに対して処理を行う。これらの命令は、２つの符号無し整数ＡおよびＢの平均を（Ａ＋Ｂ＋１）＞＞１として計算する。「＞＞１」という演算子は、１ビット右シフトを示す。つまり、パック平均命令は、ＡおよびＢならびに１を加算し、その結果を１ビットだけ右にシフトする。
【００３１】
［（Ａ＋Ｂ＋１）＞＞１］の結果は、ｎビットで表すことができる。ここで、ＡおよびＢはｎビットの整数である。しかしながら、ｎビット固定小数点数ＡおよびＢを加算した結果オーバーフローが発生する可能性がある（即ち、和を表すにはｎ＋１ビットが必要となる）。かかるオーバーフローが生ずると、（Ａ＋Ｂ＋１）＞＞１を計算する際に、最初に和（Ａ＋Ｂ＋１）を計算し、次いで右にシフトする場合、エラーが出る虞れがある。したがって、ＭＭＸＴＭ／ＳＳＥを備えたインテル社のプロセッサは、パック平均命令を実行する際にこれを考慮に入れて、Ａ＋Ｂ＋１を加算した結果オーバーフローが生じても、正しい結果が得られるようにしている。即ち、ＰＡＶＧＢ命令では、中間和（Ａ＋Ｂ＋１）を９ビット数として計算し、ＰＡＶＧＷ命令では、中間和（Ａ＋Ｂ＋１）を１７ビット数として計算する。
【００３２】
１ビット右にシフトする前にＡおよびＢの和に１を加算することによって、この演算の結果を、最も近い整数に切り上げる。例えば、Ａが３でＢが４とすると、ＡおよびＢの平均の浮動小数点結果は３．５となる。パック平均命令は４の結果を生成する。つまり、パック平均命令は、浮動小数点結果３．５を４に切り上げる訳である。
【００３３】
図３は、ＰＡＶＧＷ命令の動作を示す簡略図である。この例では、ＰＡＶＧＷ命令のオペランドは、６４ビット・レジスタ１８０および１８２に格納され、演算の結果はレジスタ１８０に再度格納される。この命令の実行の前には、レジスタ１８０は４つの符号無し固定小数点１６ビット数Ａ１、Ａ２、Ａ３およびＡ４を含む。これらはレジスタに「パック」された数値である。同様に、レジスタ１８２は４つのパックされた符号無し固定小数点１６ビット数Ｂ１、Ｂ２、Ｂ３およびＢ４を含む。次いで、レジスタ１８０および１８２における各対応する数値対に対して、関数（Ａ＋Ｂ＋１）＞＞１を計算し、次いで、図３に示すように、パックされた符号無し固定小数点１６ビット数として結果をレジスタ１８０に格納する。
【００３４】
しかしながら、場合によっては、２つの整数の平均の浮動小数点結果を０側に切り下げることが望ましい場合もある（即ち（Ａ＋Ｂ）＞＞１を計算する）。インテル社のプロセッサのような汎用プロセッサは、かかる演算を実行する命令を備えていない。したがって、かかる計算は多数の命令を用いて実行しなければならない。図４は、演算（Ａ＋Ｂ）＞
＞１を実行する従来の方法を示す簡略フロー図であり、ここでＡおよびＢは符号無し８ビット整数である。最初にステップ２０２において、値ＡおよびＢを１６ビット格納位置に移動させ、これらの加算が１６ビットを用いて実行できるようにする。前述のように、８ビット整数の加算では、その結果オーバーフローが生ずる可能性がある。したがって、１６ビットを用いてオーバーフロー・エラーを回避する。次いで、ステップ２０４において、数ＡおよびＢを加算する。次に、ステップ２０６において、和を１ビットだけ右にシフトする。最後に、ステップ２０８において、結果を８ビット格納位置に格納する。
【００３５】
従来の方法（即ち、図４のフロー）にしたがって（Ａ＋Ｂ）＞＞１を実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ言語）の一例を以下に提示する。このコンピュータ・コード例では、固定小数点８ビット値Ａ１、Ａ２、．．．がレジスタｍｍ（）にパックされ、固定小数点８ビット値Ｂ１、Ｂ２、．．．がレジスタｍｍ１にパックされる。値（Ａ１＋Ｂ１）＞＞１、（Ａ２＋Ｂ２）＞＞１、．．．を計算し、パックした固定小数点８ビット値として格納する。
【００３６】
【表１】
2005516453.tif 000003
この例に見られるように、（Ａ＋Ｂ）＞＞１を計算するために１１個の命令が用いられている。
【００３７】
図５は、本発明による方法の一実施形態を示す簡略フロー図である。即ち、図５は、ある所望の関数に応じて２つの値ＡおよびＢ間の補間値を生成する際に用いることができる方法２５２を示す。例えば、所望の関数を（Ａ＋Ｂ）＞＞１とすることができる。ステップ２５２において、ＡおよびＢに基づいて、補間の近似値を生成する。ステップ２５４において、ＡおよびＢに基づいて補正値を生成する。次いで、ステップ２５６において、ステップ２５２で生成した近似値を、ステップ２５４で生成した補正値で修正し、所望の関数に応じた補間値を生成する。
【００３８】
図６は、本発明による具体的な一実施形態を示す簡略フロー図である。即ち、図６は、所望の関数（Ａ＋Ｂ）＞＞１に応じて２つの整数ＡおよびＢ間の補間値を生成する方法３００を示す。ステップ３０２において、（Ａ＋Ｂ）＞＞１の近似値Ｘを（Ａ＋Ｂ＋１）＞＞１として生成する。ステップ３０４において、ＡおよびＢのビット毎の排他的論理和（以後「ＸＯＲ」または「排他的論理和」で示す）として、補正値Ｑを生成し、更にマスク０ｘ０１とビット毎にＡＮＤを取る。ステップ３０４で生成した補正値は、ＡおよびＢの値に応じて、０または１の値を取ることを当業者は認めよう。次いで、ステップ３０６に
おいて、近似値Ｘから補正値Ｑを減算し、所望の関数（Ａ＋Ｂ）＞＞１に応じた補間値を生成する。
【００３９】
前述のように、インテル社のＩＡ−３２プロセッサは（Ａ＋Ｂ＋Ｃ）＞＞１を計算するためにパック平均命令を備えている。このため、ＩＡ−３２プロセッサを用いた実施態様では、図６のステップ３０２は、パック平均命令を用いて実行することができる。図６に示すフローを実行するコンピュータ・コード（インテル社のＩＡ−３２のアセンブリ言語）の一例を以下に提示する。このコンピュータ・コード例では、８ビット整数Ａ１、Ａ２、．．．をレジスタｍｍ（）にパックし、８ビット整数Ｂ１、Ｂ２、．．．をレジスタｍｍ１にパックする。値（Ａ１＋Ｂ１）＞＞１、（Ａ２＋Ｂ２）＞＞１、．．．を計算し、パックした８ビット整数として格納する。
【００４０】
【表２】
2005516453.tif 000004
ここで、ｍｍ＿０１０１は、例えば、８つのパックした整数に対して、パックした８ビット値０ｘ０１を含む定数であり、ｍｍ＿０１０１は０ｘ０１０１０１０１０１０１０１０１である。この例に見られるように、（Ａ＋Ｂ）＞＞１を計算するために５つの命令が用いられている。比較すると、図４に関連付けて先に説明した従来のコンピュータ・コード例は１１個の命令を必要とする。つまり、この特定的な実施形態では、約１２０％の速度向上（１１命令／５命令）が得られる。
【００４１】
（４つの画素の効率的な平均化）
前述の実施形態は、２つの画素値を効率的に補間即ち平均化する方法を提供した。ビデオの符号化および復号化では、４つの画素値を平均することが必要となることが多い。モーション推定／補償では、例えば、画素の２×２アレイの中心における画素値を補間することが必要な場合もある。例えば、関数（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞２に応じて４つの固定小数点画素値Ａ、Ｂ、ＣおよびＤ間の補間値を計算することが望ましい場合もある。この関数は４つの値の浮動小数点平均を０側に切り下げる。同様に、関数（Ａ＋Ｂ＋Ｃ＋Ｄ＋１）＞＞２に応じて４つの固定小数点画素値Ａ、Ｂ、ＣおよびＤ間の補間値を計算することが望ましい場合もある。この関数は、浮動小数点平均がある整数よりも０．７５未満だけ大きい場合、４つの値の浮動小数点平均を０側に切り下げる。それ以外の場合、浮動小数点平均は０から遠ざかる方向に切り上げる。例えば、浮動小数点平均が３．５の場合３に切り下げられ、浮動小数点平均が３．７５の場合４に切り上げられる。
【００４２】
図７は、演算（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞２を計算する従来の方法を示す簡略フロー図であり、Ａ、Ｂ、ＣおよびＤは符号無し８ビット整数である。まず、ステップ４０２において、値Ａ、Ｂ、ＣおよびＤを１６ビット格納位置に移動させ、１６ビットを用いてその加算を実行して、オーバーフロー・エラーを回避できるようにする。次いで、ステップ４０４において、数値Ａ、Ｂ、ＣおよびＤを合計する。次に、ステップ４０６において、和を１ビットだけ右にシフトする。最後に、ステップ４０８において、結果を８ビット格納位置に格納する。
【００４３】
従来の方法（即ち、図７）に応じて関数（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞２を実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ言語）の一例を以下に提示する。この
コンピュータ・コード例では、８ビット整数Ａ１、Ａ２、．．．がレジスタｍｍ（）にパックされ、８ビット整数Ｂ１、Ｂ２、．．．がレジスタｍｍ１にパックされ、８ビット整数Ｃ１、Ｃ２、．．．がレジスタｍｍ２にパックされ、８ビット整数Ｄ１、Ｄ２、．．．がレジスタｍｍ３にパックされる。値（Ａ１＋Ｂ１＋Ｃ１＋Ｄ１）＞＞２、（Ａ２＋Ｂ２＋Ｃ２＋Ｄ２）＞＞２、．．．を計算し、パックした８ビット整数として格納する。
【００４４】
【表３】
2005516453.tif 000005
この例に見られるように、（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞２を計算するために、２１個の命令が用いられている。
【００４５】
同様に、従来の方法に応じて関数（Ａ＋Ｂ＋Ｃ＋Ｄ＋１）＞＞２を実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ言語）の一例を以下に提示する。値Ａ１＋Ｂ１＋Ｃ１＋Ｄ１＋１）＞＞２、（Ａ２＋Ｂ２＋Ｃ２＋Ｄ２＋１）＞＞２、．．．を計算し、パックした８ビット整数として格納する。
【００４６】
【表４】
2005516453.tif 000006
この例に見られるように、（Ａ＋Ｂ＋Ｃ＋Ｄ＋１）＞＞２を計算するために、２３個の命令が用いられている。
【００４７】
図８は、本発明による別の実施形態を示す簡略フロー図である。即ち、図８は、所望の関数（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞２に応じて４つの整数Ａ、Ｂ、ＣおよびＤ間の補間値を生成する方法４５０を示す。ステップ４５２において、値Ｍを（Ａ＋Ｂ＋１）＞＞１として生成し、ステップ４５４において、値Ｎを（Ｃ＋Ｄ＋１）＞＞１として生成する。次いで、ステップ４５６において、所望の平均の近似値Ｘを（Ｍ＋Ｎ＋１）＞＞１として計算する。ステップ４５８において、補正値Ｑを以下の式にしたがって計算する。
【００４８】
【数１】
2005516453.tif 000007
ここで、「ＯＲ」はビット毎のＯＲ演算を示す。次いで、ステップ４６０において、近似値Ｘから補正値Ｑを減算し、所望の関数（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞１に応じた補間値を生成
する。
【００４９】
図８に示すフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ言語）の一例を以下に提示する。このコンピュータ・コード例では、８ビット整数Ａ１、Ａ２、．．．がレジスタｍｍ（）にパックされ、８ビット整数Ｂ１、Ｂ２、．．．がレジスタｍｍ１にパックされ、８ビット整数Ｃ１、Ｃ２、．．．がレジスタｍｍ２にパックされ、８ビット整数Ｄ１、Ｄ２、．．．がレジスタｍｍ３にパックされる。値（Ａ１＋Ｂ１＋Ｃ１＋Ｄ１）＞＞２、（Ａ２＋Ｂ２＋Ｃ２＋Ｄ２）＞＞２、．．．を計算し、パックした８ビット整数として格納する。
【００５０】
【表５】
2005516453.tif 000008
ここで、ｍｍ＿０１０１は、８つのパックした整数に対して、パックした８ビット値０ｘ０１を含む定数であり、ｍｍ＿０１０１は０ｘ０１０１０１０１０１０１０１０１である。この例に見られるように、（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞１を計算するために１３つの命令が用いられている。比較すると、図７に関連付けて先に説明した従来のコンピュータ・コード例は２１個の命令を必要とする。つまり、この特定的な実施形態では、約６０％の速度向上（２１命令／１３命令）が得られる。
【００５１】
図９は、本発明による更に別の実施形態を示す簡略フロー図である。即ち、図９は、所望の関数（Ａ＋Ｂ＋Ｃ＋Ｄ＋１）＞＞２に応じて、４つの整数Ａ、Ｂ、ＣおよびＤ間で補間値を生成する方法４８０を示す。ステップ４８２において、値Ｍを（Ａ＋Ｂ＋１）＞＞１として生成し、ステップ４８４において、値Ｎを（Ｃ＋Ｄ＋１）＞＞１として生成する。次いで、ステップ４８６において、所望の平均の近似値Ｘを（Ｍ＋Ｎ＋１）＞＞１として計算する。ステップ４８８において、補正値Ｑを次の式にしたがって生成する。
【００５２】
【数２】
2005516453.tif 000009
ここで「ＯＲ」はビット毎のＯＲ演算を示す。次いで、ステップ４９０において、補正値Ｑを近似値Ｘから減算し、所望の関数（Ａ＋Ｂ＋Ｃ＋Ｄ＋１）＞＞１に応じた補間値を生成する。
【００５３】
図９に示すフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブ
リ言語）の一例を以下に提示する。このコンピュータ・コード例では、８ビット整数Ａ１、Ａ２、．．．がレジスタｍｍ（）にパックされ、８ビット整数Ｂ１、Ｂ２、．．．がレジスタｍｍ１にパックされ、８ビット整数Ｃ１、Ｃ２、．．．がレジスタｍｍ２にパックされ、８ビット整数Ｄ１、Ｄ２、．．．がレジスタｍｍ３にパックされる。値（Ａ１＋Ｂ１＋Ｃ１＋Ｄ１＋１）＞＞２、（Ａ２＋Ｂ２＋Ｃ２＋Ｄ２＋２）＞＞２、．．．を計算し、パックした８ビット整数として格納する。
【００５４】
【表６】
2005516453.tif 000010
ここで、ｍｍ＿０１０１はパックした８ビット値０ｘ０１を含む定数である。この例に見られるように、（Ａ＋Ｂ＋Ｃ＋Ｄ＋１）＞＞１を計算するために１３つの命令が用いられている。比較すると、先に説明した従来のコンピュータ・コード例は２３個の命令を必要とする。つまり、この特定的な実施形態では、約８０％の速度向上（２３命令／１３命令）が得られる。
【００５５】
（他のフィルタリング関数の効率的な実施態様）
前述の実施形態は、画素値の補間に関して説明した。しかしながら、前述の実施形態は他の状況においても同様に用いることができる。例えば、前述の実施形態を用いると、種々の形式のデータ（例えば、ビデオ、オーディオ、地震(seismic) 、通信等）に種々のフィルタリング機能を実行することができる。
【００５６】
（１．Ｆ＝Ｋ（Ａ＋Ｂ＋１）＞＞Ｎ）
他の実施形態は、データをフィルタ処理するのに有用な他の関数の効率的な実施形態を提供する。かかる関数の１つは、
【００５７】
【数３】
2005516453.tif 000011
であり、ＡおよびＢは符号無し整数、ＫおよびＮは符号無し固定小数点フィルタリング・パラメータである。この関数は、例えば、ビデオのフィルタリングおよび補間、画像のサイズ変更等に有用である。
【００５８】
図１０は、本発明による更に別の実施形態を示す簡略フロー図である。即ち、図１０は、式（３）に明記した関数を実行する方法５００を示し、ｋは２Ｓ＋２Ｒとして表すことができ、ＳおよびＲは符号無し整数で、Ｓ＞Ｒである。経験的に、本実施形態は、値Ａ、ＢおよびＫが範囲［０、２５５］以内にある整数である場合に、エラーのない結果を生成する。ここで、Ｎは範囲［０、７］以内の固定小数点数である。しかしながら、本実施形態は異なる範囲についても同様に精度の高い結果が得られることは言うまでもない。
【００５９】
ステップ５０４において、関数Ｍ＝（Ａ＋Ｂ＋１）＞＞１に応じて値Ｍを生成する。ＩＡ−３２プロセッサを用いる実施態様では、Ｍは、ＰＡＶＧＢまたはＰＡＶＧＷ関数を用いて生成することができる。ステップ５０６において、値Ｑを次の式にしたがって生成する。
【００６０】
【数４】
2005516453.tif 000012
ここで、記号「〜」は、ビット毎の補数を示す。
ステップ５０８において、値ＥをＭ＜＜Ｓとして生成する。ここで、「＜＜Ｓ」は、Ｓビットだけ左にシフトすることを示す。同様に、ステップ５１０において、値ＦをＭ＜＜Ｒとして生成する。ステップ５１２において、値ＧをＱ＜＜（Ｓ−１）として生成し、ステップ５１４において、値ＨをＱ＜＜（Ｒ−１）として生成する。次いで、ステップ５１６において、Ｅ、Ｆ、ＧおよびＨの和としてＸを計算する。最後にＸを（Ｎ−１）ビットだけ右にシフトし、所望の結果を生成する。
【００６１】
図１１は、本発明による更に別の実施形態を示す簡略フロー図である。図１０と同様、図１１は、式（３）に明記した関数を実行する方法５５０を示し、ｋは２Ｓ＋２Ｒとして表すことができ、ＳおよびＲは符号無し整数であり、Ｓ＞Ｒである。また、図１０と同様、値Ａ、Ｂ、およびＫは範囲［０、２５５］以内の整数であり、Ｎは範囲［０、７］以内の固定小数点数である。しかし、図１１は、（Ａ＋Ｂ＋１）＜２５６およびＳ≦Ｎのときに、式（３）に明記した関数を実行する一層効率的な方法５５０を示す。
【００６２】
ステップ５５２および５５４において、図１０のステップ５０４および５０６に関してそれぞれ説明したように、値ＭおよびＱを生成する。ステップ５５６において、（Ｎ−１−Ｓ）が０未満か否か判定を行う。ＮＯの場合、フローはステップ５５８に進み、ＥをＭ＞＞（Ｎ−１−Ｓ）として生成する。ＹＥＳの場合、フローはステップ５６０に進み、値ＥをＭ＜＜１として生成する。次に、ステップ５６２において、値ＦをＭ＞＞（Ｎ−１−Ｒ）として生成する。ステップ５６８において、値ＧをＱ＞＞（Ｎ−Ｓ）として生成し、ステップ５７０において、値ＨをＱ＞＞（Ｎ−Ｒ）として生成する。最後に、ステップ５７２において、ＸをＥ、Ｆ、ＧおよびＨの和として計算する。
【００６３】
ＩＡ−３２プロセッサを用いた実施態様では、図１１に関して説明した方法は、従来の実施態様と比較して、約１４０％の速度上の利点が得られることがわかっている。
（２．Ｆ＝（４０（Ａ＋Ｂ＋１）−１２（Ｃ＋Ｄ＋１）＋６（Ｅ＋Ｆ＋１）−２（Ｇ＋Ｈ＋１））＞＞６）
ＭＰＥＧ−４ビデオ符号化における１／４画素補間に一般に用いられている別の有用な関数は、次の通りである。
【００６４】
【数５】
2005516453.tif 000013
ここで、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、およびＨは、符号無し整数である。
図１２は、本発明による別の実施形態を示す簡略フロー図である。即ち、図１２は、式（５）に明記した関数を実行するための方法６００の一実施形態を示す。経験によって、８ビット値では、方法６００は６０％の時間では正しい結果を生成し、３０．５％の時間では値１の誤りを生じ、０．５％の時間では値２の誤りを生ずることがわかっている。
【００６５】
ステップ６０２、６０４、６０６および６０８において、値Ｍ１、Ｍ２、Ｍ３およびＭ４を、それぞれ、（Ａ＋Ｂ＋１）＞＞１、（Ｃ＋Ｄ＋１）＞＞１、（Ｅ＋Ｆ＋１）＞＞１、および（Ｇ＋Ｈ＋１）＞＞１として生成する。方法６００をＩＡ−３２プロセッサにおいて実行する場合、ステップ６０２、６０４、６０６および６０８は、例えば、パック平均命令を用いて実行することができる。
【００６６】
次に、ステップ６１０において、値Ｎ１を、（Ｍ１＋（Ｍ３＞＞１）＋（Ｍ３＞＞２））＞＞２として生成する。ステップ６１２において、値Ｎ２を（Ｍ２＋（Ｍ２＞＞１）＋（Ｍ４＞＞２））＞＞２として生成する。最後に、ステップ６１４において、近似結果ＸをＭ１＋Ｎ１−Ｎ２として生成する。Ｘは、前述のように、ＸがＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、ＧおよびＨのある値に対する所望の結果とは異なる場場合もあるという点で、近似である。図１２に関して説明した実施形態を実施するＩＡ−３２アセンブリ言語の一例を、添付した補足資料に提示する。
【００６７】
（３．Ｆ＝（Ａ＋Ｂ＋２）＞＞１）
図１３は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１３は、所望の関数（Ａ＋Ｂ＋２）＞＞１に応じて、２つ整数ＡおよびＢに基づいて値を生成する方法６５０を示す。この実施形態は、例えば、一層複雑なフィルタリング機能を実行する際のステップとして用いることができる。
【００６８】
ステップ６５２において、（Ａ＋Ｂ＋２）＞＞１の近似値Ｘを、（Ａ＋Ｂ＋１）＞＞１として生成する。ステップ６５４において、Ａ「排他的論理和」Ｂのビット毎の補数（以後「〜」で示す）として補正値Ｑを生成し、更にマスク０ｘ０１とビット毎にＡＮＤを取る。次いで、ステップ６５６において、補正値Ｑを近似値Ｘに加算して、所望の関数（Ａ＋Ｂ＋２）＞＞１の結果を生成する。
【００６９】
図１３に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約１６０％の速度向上（１３命令／５命令）が得られる。
【００７０】
（４．Ｆ＝（２Ａ＋２Ｂ＋１）＞＞２）
図６に関して説明した実施形態にしたがって値（２Ａ＋２Ｂ＋１）＞＞２を計算できる（即ち、値（Ａ＋Ｂ）＞＞１を計算する）ことがわかっている。この実施形態は、例えば、一層複雑なフィルタリング機能を実行する際のステップとして用いることができる。
（５．Ｆ＝（２Ａ＋Ｂ＋Ｃ＋１）＞＞２）
図１４は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１４は、所望の関数（２Ａ＋Ｂ＋Ｃ＋１）＞＞２に応じて３つの整数Ａ、ＢおよびＣに基づいて値を生成する方法７００を示す。この実施形態は、例えば、一層複雑なフィルタリン
グ機能を実行する際のステップとして用いることができる。
【００７１】
ステップ７０２において、値Ｍを（Ｂ＋Ｃ＋１）＞＞１として生成する。次いで、ステップ７０４において、近似値Ｘを（Ａ＋Ｍ＋１）＞＞１として生成する。ステップ７０６において、補正値ＱをＡ「排他的論理和」Ｍとして生成し、マスク０ｘ０１とビット毎にＡＮＤを取る。次にステップ７０８において、近似値Ｘから補正値Ｑを減算し、所望の関数（２Ａ＋Ｂ＋Ｃ＋１）＞＞２の結果を生成する。
【００７２】
図１４に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約２３０％の速度向上（２０命令／６命令）が得られる。
【００７３】
（６．Ｆ＝（３Ａ＋Ｂ＋１）＞＞２）
図１５は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１５は、所望の関数（３Ａ＋Ｂ＋１）＞＞２に応じて、整数ＡおよびＢに基づいて値を生成する方法７５０を示す。この実施形態は、例えば、一層複雑なフィルタ機能を実行する際のステップとして用いることができる。
【００７４】
ステップ７５２において、値Ｍを（Ａ＋Ｂ＋１）＞＞１として生成する。次いで、ステップ７５４において、近似値Ｘを（Ａ＋Ｍ＋１）＞＞１として生成する。ステップ７５６において、補正値ＱをＡ「排他的論理和」Ｍとして生成し、マスク０ｘ０１とビット毎にＡＮＤを取る。次にステップ７５８において、近似値Ｘから補正値Ｑを減算し、所望の関数（３Ａ＋Ｂ＋１）＞＞２の結果を生成する。
【００７５】
図１５に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約２２０％の速度向上（１９命令／６命令）が得られる。
【００７６】
（７．Ｆ＋（Ａ＋Ｂ＋Ｃ＋１）＞＞２）
図１６は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１は、所望の関数（Ａ＋Ｂ＋Ｃ＋１）＞＞２に応じて、３つの整数Ａ、ＢおよびＣに基づいて値を生成する方法８００を示す。この実施形態は、例えば、一層複雑なフィルタリング機能を実行する際に１つのステップとして用いることができる。
【００７７】
ステップ８０２において、値Ｍを（Ａ＋Ｂ＋１）＞＞１として生成する。ステップ８０４において、値Ｎを（Ｃ＋０＋１）＞＞１として生成する。次いで、ステップ８０６において、近似値Ｘを（Ｍ＋Ｎ＋１）＞＞１として生成する。ステップ８０８において、補正値Ｑを以下の式にしたがって生成する。
【００７８】
【数６】
2005516453.tif 000014
次に、ステップ８１０において、近似値Ｘから補正値Ｑを減算し、所望の関数（Ａ＋Ｂ＋Ｃ＋１）＞＞２の結果を生成する。
【００７９】
図１６に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約６０％の速度向上（１８命令／１１命令）が得られる。
【００８０】
（８．Ｆ＝（２Ａ＋２Ｂ）＞＞２）
図６に関して説明した実施形態にしたがって値（２Ａ＋２Ｂ）＞＞２を計算できる（即ち、（Ａ＋Ｂ）＞＞１を計算する）ことがわかっている。この実施形態は、例えば、一層複雑なフィルタリング機能を実行する際に１つのステップとして用いることができる。
【００８１】
（９．Ｆ＝（２Ａ＋Ｂ＋Ｃ）＞＞２）
図１７は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１７は、所望の関数（２Ａ＋Ｂ＋Ｃ）＞＞２に応じて、３つの整数Ａ、ＢおよびＣに基づいて値を生成する方法８５０を示す。この実施形態は、一層複雑なフィルタ機能を実行する際に１つのステップとして用いることができる。
【００８２】
ステップ８５２において、値Ｍを（Ａ＋Ｍ＋１）＞＞１として生成する。ステップ８５６において、補正値Ｑを以下の式にしたがって生成する。
【００８３】
【数７】
2005516453.tif 000015
次に、ステップ８５８において、近似値Ｘから補正値Ｑを減算し、所望の関数（２Ａ＋Ｂ＋Ｃ）＞＞２の結果を生成する。
【００８４】
図１７に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約１００％の速度向上（１８命令／９命令）が得られる。
【００８５】
（１０．Ｆ＝（３Ａ＋Ｂ）＞＞２）
図１８は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１８は、所望の関数（３Ａ＋Ｂ）＞＞２に応じて、整数ＡおよびＢに基づいて値を生成する方法９００を示す。この実施形態は、例えば、一層複雑なフィルタリング機能を実行する際に１つのステップとして用いることができる。
【００８６】
ステップ９０２において、値Ｍを（Ａ＋Ｂ＋１）＞＞１として生成する。次いで、ステップ９０４において、近似値Ｘを（Ａ＋Ｍ＋１）＞＞１として生成する。ステップ９０６において、補正値Ｑを以下の式にしたがって生成する。
【００８７】
【数８】
2005516453.tif 000016
次に、ステップ９０８において、近似値Ｘから補正値Ｑを減算して、所望の関数（３Ａ＋Ｂ）＞＞２の結果を生成する。
【００８８】
図１８に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約４０％の速度向上（１３命令／９命令）が得られる。  
【００８９】
（１１．Ｆ＝（Ａ＋Ｂ＋Ｃ）＞＞２）
図１９は、本発明による別の特定的な実施形態を示す簡略フロー図である。即ち、図１
９は、所望の関数（Ａ＋Ｂ＋Ｃ）＞＞２に応じて、３つの整数Ａ、ＢおよびＣに基づいて値を生成する方法９５０を示す。この実施形態は、例えば、一層複雑なフィルタリング機能を実行する際に１つのステップとして用いることができる。
【００９０】
ステップ９５２において、値Ｍを（Ａ＋Ｂ＋１）＞＞１として生成する。ステップ９５４において、値Ｎを（Ｃ＋０＋１）＞＞１として生成する。次いで、ステップ９５６において、近似値Ｘを（Ｍ＋Ｎ＋１）＞＞１として生成する。ステップ９５８において、補正値Ｑを次の式にしたがって生成する。
【００９１】
【数９】
2005516453.tif 000017
次に、ステップ９６０において、近似値Ｘから補正値Ｑを減算して、所望の関数（Ａ＋Ｂ＋Ｃ））＞＞２の結果を生成する。
【００９２】
図１９に示したフローを実行するコンピュータ・コード（インテル社のＩＡ−３２アセンブリ・コード）の一例を補足資料に提示する。この特定的な実施形態では、約５０％の速度向上（１６命令／１１命令）が得られる。  
【００９３】
（別例）
前述の実施形態は、ＭＭＸＴＭ／ＳＳＥを備えたインテル社のプロセッサを用いた特定的な実施形態を参照しながら説明した。しかしながら、他のプロセッサとでも同様に、種々の実施形態を実施可能であることは言うまでもない。例えば、（Ａ＋Ｂ＋１）＞＞１を計算する命令を備えているプロセッサであれば、いずれでも用いることができる。更に、特定の実施形態のステップの一部または全部を、ハードウェアで実施することも可能である。加えて、本発明による実施形態は、整数に関して説明したが、他の実施形態も整数と共に用いることができることは言うまでもない。当業者には、他の多くの変形物、代替物、および同等物も認められよう。
【００９４】
本発明の別の実施形態では、これまでに開示した発明の組み合わせまたは下位の組み合わせ(sub-combination) も可能であるという利点がある。理解を容易にするために、アーキテクチャのブロック図、およびフロー図におけるステップは集合化されている。しかしながら、ブロックの組み合わせ、新たなブロックの追加、ブロックの再構成等も、本発明の代替実施形態では想起されることは言うまでもない。
【００９５】
以上、特定的な実施形態を参照しながら本発明について説明してきた。他の実施形態も当業者には明白であろう。したがって、本発明は、添付した特許請求の範囲に示されている以外で限定されるというようには解釈しないものとする。
補足資料：ソース・コード・リスト
【００９６】
関数：（４０（Ａ＋Ｂ＋１）−１２（Ｃ＋Ｄ＋１）＋６（Ｅ＋Ｆ＋１）−２（Ｇ＋Ｈ＋１）＞＞６
【表７】
2005516453.tif 000018
【００９７】
関数：（Ａ＋Ｂ＋２）＞＞１
【表８】
2005516453.tif 000019
【００９８】
関数：（３Ａ＋Ｂ＋１）＞＞２
【表９】
2005516453.tif 000020
【００９９】
関数：（Ａ＋Ｂ＋Ｃ＋１）＞＞２
【表１０】
2005516453.tif 000021
【０１００】
関数：（２Ａ＋Ｂ＋Ｃ）＞＞２
【表１１】
2005516453.tif 000022
【０１０１】
関数：（３Ａ＋Ｂ）＞＞２
【表１２】
2005516453.tif 000023
【０１０２】
関数：（Ａ＋Ｂ＋Ｃ）＞＞２
【表１３】
2005516453.tif 000024
【図面の簡単な説明】
【０１０３】
【図１】ビデオ・エンコーダの一例の簡略化したデータ・フロー図。
【図２】本発明の種々の実施形態による方法を実施可能な、代表的コンピュータ・システムにおける基本的なサブシステムを示す、簡略ブロック図。
【図３】Ｓｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎｓ（ＳＳＥ）またはＳｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎ２（ＳＳＥ２）を用いた、インテル社のプロセッサのパック平均命令の動作を示す簡略図。
【図４】演算（Ａ＋Ｂ）＞＞１を計算する従来の方法を示す簡略フロー図であり、ＡおよびＢは符号なし８ビット整数である。
【図５】本発明の一実施形態にしたがって値ＡおよびＢ間で補間を行う方法の簡略フロー図。
【図６】本発明の一実施形態にしたがって２つの整数ＡおよびＢ間の補間を生成する方法の簡略フロー図。
【図７】演算（Ａ＋Ｂ＋Ｃ＋Ｄ）＞＞２を計算する従来の方法を示す簡略フロー図であり、Ａ、Ｂ、ＣおよびＤは符号なし８ビット整数である。
【図８】本発明の一実施形態にしたがって、４つの固定小数点値Ａ、Ｂ、ＣおよびＤ間の補間を生成する方法の簡略フロー図。
【図９】本発明の別の実施形態にしたがって、４つの整数Ａ、Ｂ、ＣおよびＤ間の補間を生成する方法の簡略フロー図。
【図１０】本発明の一実施形態にしたがってディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１１】本発明の別の実施形態にしたがってディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１２】本発明の更に別の実施形態にしたがってディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１３】本発明の別の実施形態にしたがって、関数（Ａ＋Ｂ＋Ｃ＋１）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１４】本発明の別の実施形態にしたがって、関数（２Ａ＋Ｂ＋Ｃ＋１）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１５】本発明の別の実施形態にしたがって、関数（３Ａ＋Ｂ＋１）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１６】本発明の別の実施形態にしたがって、関数（Ａ＋Ｂ＋Ｃ＋１）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１７】本発明の別の実施形態にしたがって、関数（２Ａ＋Ｂ＋Ｃ）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１８】本発明の別の実施形態にしたがって、関数（３Ａ＋Ｂ）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１９】本発明の別の実施形態にしたがって、関数（Ａ＋Ｂ＋Ｃ）＞＞２に応じてディジタル・サンプルをフィルタ処理する方法の簡略フロー図。
【図１】
2005516453.tif 000029
【図２】
2005516453.tif 000030
【図３】
2005516453.tif 000031
【図４】
2005516453.tif 000032
【図５】
2005516453.tif 000033
【図６】
2005516453.tif 000034
【図７】
2005516453.tif 000035
【図８】
2005516453.tif 000036
【図９】
2005516453.tif 000037
【図１０】
2005516453.tif 000038
【図１１】
2005516453.tif 000039
【図１２】
2005516453.tif 000040
【図１３】
2005516453.tif 000041
【図１４】
2005516453.tif 000042
【図１５】
2005516453.tif 000043
【図１６】
2005516453.tif 000044
【図１７】
2005516453.tif 000045
【図１８】
2005516453.tif 000046
【図１９】
2005516453.tif 000047
【国際調査報告】
2005516453.tif 000048
2005516453.tif 000049