図面 (/)

技術 デルタカラー圧縮用のビットパッキング

出願人 エーティーアイ・テクノロジーズ・ユーエルシー
発明者 メーディサイーディハーレドマンモーアラシュハリリガボールシネスレイジャン
出願日 2017年7月12日 (2年8ヶ月経過) 出願番号 2019-501587
公開日 2019年9月5日 (6ヶ月経過) 公開番号 2019-525583
状態 未査定
技術分野 TV信号の圧縮,符号化方式
主要キーワード グリッド構成 判別ブロック ピクセル深度 アドレス指定能力 プロセッシングデバイス 圧縮値 バイナリストリーム 製造ツール
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2019年9月5日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (10)

課題・解決手段

コンプレッサは、ブロック内の複数のピクセルデルタカラー圧縮値を決定し、ブロック内の複数のピクセルを複数のグループに細分し、デルタ値を表す圧縮ビットストリームを送信するように構成されている。圧縮ビットストリームは、デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、複数のグループのうち対応するグループのデルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、デルタ値を含むグループのグループ最小ビット数を使用して符号化されたデルタ値と、を有する。デコンプレッサは、ブロックヘッダと、複数のグループヘッダと、符号化されたデルタ値と、に基づいて、圧縮ビットストリームを展開するように構成されている。

概要

背景

メモリ帯域幅の管理は、システムオンチップ(SOC)の命令プロセッサ相互接続するバス上で、及び、SOCと例えばダイナミックランダムアクセスメモリDRAM)等の外部メモリとの間のインタフェースを介して、高帯域幅フローを生成するSOC等の処理システムにおける課題である。例えば、グラフィックス処理は、スクリーン上に表示されるシーンの三次元(3-D)モデルピクセルとしてレンダリングするために使用される。以下の目的のために、完全な画像はフレームと呼ばれ、フレーム内のピクセル数は、スクリーンのピクセル解像度によって決定される。フレーム内の各ピクセルの色は、特定の色範囲又は色域に亘る異なる色を表す特定の数のビットによって表される。例示すると、特定のピクセルが256色の何れを表すかを示すために8ビット値を使用することができる。ピクセルを表すために使用されるビット数は、通常、ピクセルの色深度又はビット深度と呼ばれる。各のフレームを表すために使用されるビットの総数は、各ピクセルを表すために使用されるビット数及びディスプレイ内のピクセル数に比例して増加する。シーン内動きは、例えば30フレーム/秒(fps)等の特定のフレームレートで連続するフレームを表示することによって表される。よって、バス又はインタフェースを介した伝送のためにグラフィックス処理ユニット(GPU)によってビットが生成される速度は、フレーム速度に比例して増加する。次世代のGPUは、より高いピクセル解像度、より大きな色深度又は色域、及び、より高いフレームレートをサポートする等の異なる方法によって、レンダリングされた画像の品質を改善することを試みてきた。したがって、GPU、ディスプレイ及び外部メモリ等のシステム内の異なる要素間で通信されるトラフィックの量が大きくなり、継続的に増加している。

添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。

概要

コンプレッサは、ブロック内の複数のピクセルのデルタカラー圧縮値を決定し、ブロック内の複数のピクセルを複数のグループに細分し、デルタ値を表す圧縮ビットストリームを送信するように構成されている。圧縮ビットストリームは、デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、複数のグループのうち対応するグループのデルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、デルタ値を含むグループのグループ最小ビット数を使用して符号化されたデルタ値と、を有する。デコンプレッサは、ブロックヘッダと、複数のグループヘッダと、符号化されたデルタ値と、に基づいて、圧縮ビットストリームを展開するように構成されている。

目的

メモリ帯域幅の管理は、システムオンチップ(SOC)の命令プロセッサを相互接続するバス上で、及び、SOCと例えばダイナミックランダムアクセスメモリ(DRAM)等の外部メモリとの間のインタフェースを介して、高帯域幅のフローを生成するSOC等の処理システムにおける課題である

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ブロック内の複数のピクセルデルタ値を決定することであって、各デルタ値は、前記複数のピクセルのうち1つのピクセルの色と前記複数のピクセルから選択された基準ピクセル基準色との間の差を表す、ことと、前記複数のピクセルを複数のグループに細分することと、前記デルタ値を表す圧縮ビットストリームを送信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、を含む、方法。

請求項2

前記ブロック内の複数のピクセルのデルタ値を決定することは、色差及び前記デルタ値の符号を表すために所定数のビットを使用して各デルタ値を決定することを含み、前記圧縮ビットストリーム内のビットの総数は、前記複数のピクセルの前記デルタ値を表すために使用される前記所定数のビットの前記複数のピクセルに亘る合計未満である、請求項1の方法。

請求項3

前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すための最小ビット数(M)と、Mと前記デルタ値を表すのに十分なビット数の最大値を表す第2ビット数との間の差を表すのに十分な第1ビット数(B)と、を示すビットを含み、前記複数のグループヘッダの各々は、Mと前記複数のグループのうち対応するグループの前記デルタ値を表すグループ最小ビット数との間の差を示すビットを含む、請求項1の方法。

請求項4

前記ブロックヘッダを表すビットは、M及びBの全てのとり得る組み合わせを表すのに十分な第3ビット数を含み、前記第3ビット数によって表される符号化値を形成するために、M及びBの値の組み合わせを符号化することであって、前記ブロックヘッダは前記符号化値を含む、ことをさらに含む、請求項3の方法。

請求項5

前記ブロック内の複数のピクセルを複数のグループに細分することは、異なるグループ構成に従って、前記複数のピクセルを前記複数のグループに細分することと、前記異なるグループ構成を使用して生成された前記圧縮ビットストリーム内のビットの総数を比較することと、前記比較に基づいて、前記複数のグループを細分するための前記異なるグループ構成のうち1つのグループ構成を選択することと、を含む、請求項1の方法。

請求項6

各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、当該グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、をさらに含む、請求項1の方法。

請求項7

前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示すバイパスビットを、前記ブロックヘッダに含めることと、前記ブロック内の前記複数のピクセルに関連する全ての前記デルタ値がゼロに等しいと判別したことに応じて、前記バイパスビットを前記ブロックヘッダに含めるのをバイパスすることと、をさらに含む、請求項6の方法。

請求項8

グループ内のピクセルの前記デルタ値の最大絶対値が2の累乗に等しいと判別したことに応じて、前記最大絶対値又は前記最大絶対値未満を有する前記デルタ値が最大の符号化ビット値によって表されるように、前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を符号化することと、前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを表すために、トレーリングビットを前記最大の符号化ビット値に追加することと、をさらに含む、請求項6の方法。

請求項9

ブロック内の複数のピクセルのデルタ値を表す圧縮ビットストリームを受信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、前記複数のピクセルのうち1つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す前記デルタ値を回復するために、前記ブロックヘッダと、前記複数のグループヘッダと、前記符号化された前記デルタ値と、に基づいて、前記圧縮ビットストリームを展開することと、を含む、方法。

請求項10

前記圧縮ビットストリームを展開することは、色差及び前記デルタ値の符号を示す所定数のビットによって表される前記デルタ値を回復することを含み、前記圧縮ビットストリーム内のビットの総数は、前記複数のピクセルの前記デルタ値を表すために使用される前記所定数のビットの前記複数のピクセルに亘る合計未満である、請求項9の方法。

請求項11

前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数(M)と、Mと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第2ビット数との間の差を表すのに十分な第1ビット数(B)と、を示すビットを含み、前記複数のグループヘッダの各々は、Mと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、請求項9の方法。

請求項12

前記ブロックヘッダを表すビットは、M及びBの全てのとり得る組み合わせを表すのに十分な第3ビット数を含み、前記第3ビット数によって表されるM及びBの値の組み合わせの符号化値を復号することであって、前記ブロックヘッダは前記符号化値を含む、ことをさらに含む、請求項11の方法。

請求項13

前記対応するグループヘッダに含まれるビットに基づいて、各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、前記グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、をさらに含む、請求項9の方法。

請求項14

前記ブロック内の前記複数のピクセルに関連する少なくとも一部の前記デルタ値がゼロに等しくない場合に前記ブロックヘッダ内のバイパスビットを検出することであって、前記バイパスビットは、前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示す、ことと、前記バイパスビットの値に基づいて前記グループヘッダを復号することと、をさらに含む、請求項13の方法。

請求項15

グループ内のピクセルの前記デルタ値の最大絶対値が2の累乗に等しいと判別することと、前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を復号することと、最大の符号化ビット値と、前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを示すトレーリングビットと、に基づいて、前記最大の符号化ビット値によって表されるデルタ値を復号することと、をさらに含む、請求項13の方法。

請求項16

コンプレッサを備えるデバイスであって、前記コンプレッサは、ブロック内の複数のピクセルのデルタ値を決定することであって、各デルタ値は、前記複数のピクセルのうち1つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す、ことと、前記ブロック内の前記複数のピクセルを複数のグループに細分することと、前記デルタ値を表す圧縮ビットストリームを送信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、を行うように構成されている、デバイス。

請求項17

前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数(M)と、Mと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第2ビット数との間の差を表すのに十分な第1ビット数(B)と、を示すビットを含み、前記複数のグループヘッダの各々は、Mと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、請求項16のデバイス。

請求項18

前記ブロックヘッダを表すビットは、M及びBの全てのとり得る組み合わせを表すのに十分な第3ビット数を含み、前記コンプレッサは、前記第3ビット数によって表される符号化値を形成するために、M及びBの値の組み合わせを符号化することであって、前記ブロックヘッダは前記符号化値を含む、ことを行うように構成されている、請求項17のデバイス。

請求項19

前記コンプレッサは、各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、全て正の値又は全て負の値であるグループの前記デルタ値の符号を示すビットをドロップすることと、前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すためのビットを、前記グループヘッダに含めることと、を行うように構成されている、請求項16のデバイス。

請求項20

前記コンプレッサは、グループ内のピクセルの前記デルタ値の最大絶対値が2の累乗に等しいと判別したことに応じて、前記最大絶対値又は前記最大絶対値未満を有する前記デルタ値が最大の符号化ビット値によって表されるように、前記グループ最小ビット数未満のビットを使用して前記グループ内の前記デルタ値を符号化することと、前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを表すために、トレーリングビットを前記最大の符号化ビット値に追加することと、を行うように構成されている、請求項19のデバイス。

請求項21

デコンプレッサを備えるデバイスであって、前記デコンプレッサは、ブロック内の複数のピクセルのデルタ値を表す圧縮ビットストリームを受信することであって、前記圧縮ビットストリームは、前記デルタ値を表すのに十分なビット数の範囲を示すブロックヘッダを表すビットと、前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数をそれぞれ示す複数のグループヘッダと、前記デルタ値を含む前記グループの前記グループ最小ビット数を使用して符号化された前記デルタ値と、を有する、ことと、前記複数のピクセルのうちの1つのピクセルの色と前記複数のピクセルから選択された基準ピクセルの基準色との間の差を表す前記デルタ値を回復するために、前記ブロックヘッダと、前記複数のグループヘッダと、前記符号化された前記デルタ値と、に基づいて、前記圧縮ビットストリームを展開することと、を行うように構成されている、デバイス。

請求項22

前記ブロックヘッダは、前記グループのうち何れかのグループの前記デルタ値を表すのに十分な最小ビット数(M)と、Mと前記デルタ値を表すのに十分なビット数の最大値を表すのに十分な第2ビット数との間の差を表すのに十分な第1ビット数(B)と、を示すビットを含み、前記複数のグループヘッダの各々は、Mと前記複数のグループのうち対応するグループの前記デルタ値を表すのに十分なグループ最小ビット数との間の差を示すビットを含む、請求項21のデバイス。

請求項23

前記ブロックヘッダを表すビットは、M及びBの全てのとり得る組み合わせを表すのに十分な第3ビット数を含み、前記デコンプレッサは、前記第3ビット数によって表されるM及びBの値の組み合わせの符号化値を復号することであって、前記ブロックヘッダは前記符号化を含む、ことを行うように構成されている、請求項22のデバイス。

請求項24

前記デコンプレッサは、前記対応するグループヘッダに含まれるビットに基づいて、各グループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを判別することと、グループの前記デルタ値が全て正の値又は全て負の値であると判別したことに応じて、当該グループの前記グループヘッダから前記デルタ値の符号を示すビットを除くことと、グループの前記デルタ値が正の値と負の値との混合であると判別したことに応じて、前記グループの前記デルタ値が正の値と負の値との混合であることを示すビットを、当該グループの前記グループヘッダに含めることと、を行うように構成されている、請求項21のデバイス。

請求項25

前記デコンプレッサは、前記ブロック内の前記複数のピクセルに関連する少なくとも一部の前記デルタ値がゼロに等しくない場合に前記ブロックヘッダ内のバイパスビットを検出することであって、前記バイパスビットは、前記対応するグループの前記デルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合であるか否かを示すビットを前記グループヘッダが含むか否かを示す、ことと、前記バイパスビットの値に基づいて前記グループヘッダを復号することと、を行うように構成されている、請求項24のデバイス。

請求項26

前記デコンプレッサは、グループ内のピクセルの前記デルタ値の最大絶対値が2の累乗に等しいと判別することと、前記グループ最小ビット数未満のビットを使用して前記グループ内のデルタ値を復号することと、最大の符号化ビット値と、前記最大の符号化ビット値が前記最大絶対値又は前記最大絶対値未満を示すか否かを示すトレーリングビットと、に基づいて、前記最大の符号化ビット値によって表されるデルタ値を復号することと、を行うように構成されている、請求項24のデバイス。

背景技術

0001

メモリ帯域幅の管理は、システムオンチップ(SOC)の命令プロセッサ相互接続するバス上で、及び、SOCと例えばダイナミックランダムアクセスメモリDRAM)等の外部メモリとの間のインタフェースを介して、高帯域幅フローを生成するSOC等の処理システムにおける課題である。例えば、グラフィックス処理は、スクリーン上に表示されるシーンの三次元(3-D)モデルピクセルとしてレンダリングするために使用される。以下の目的のために、完全な画像はフレームと呼ばれ、フレーム内のピクセル数は、スクリーンのピクセル解像度によって決定される。フレーム内の各ピクセルの色は、特定の色範囲又は色域に亘る異なる色を表す特定の数のビットによって表される。例示すると、特定のピクセルが256色の何れを表すかを示すために8ビット値を使用することができる。ピクセルを表すために使用されるビット数は、通常、ピクセルの色深度又はビット深度と呼ばれる。各のフレームを表すために使用されるビットの総数は、各ピクセルを表すために使用されるビット数及びディスプレイ内のピクセル数に比例して増加する。シーン内動きは、例えば30フレーム/秒(fps)等の特定のフレームレートで連続するフレームを表示することによって表される。よって、バス又はインタフェースを介した伝送のためにグラフィックス処理ユニット(GPU)によってビットが生成される速度は、フレーム速度に比例して増加する。次世代のGPUは、より高いピクセル解像度、より大きな色深度又は色域、及び、より高いフレームレートをサポートする等の異なる方法によって、レンダリングされた画像の品質を改善することを試みてきた。したがって、GPU、ディスプレイ及び外部メモリ等のシステム内の異なる要素間で通信されるトラフィックの量が大きくなり、継続的に増加している。

0002

添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなるであろう。異なる図面における同じ参照記号の使用は、類似又は同一のアイテムを示す。

図面の簡単な説明

0003

いくつかの実施形態による、処理システムのブロック図である。
いくつかの実施形態による、処理システムの一部のブロック図である。
いくつかの実施形態による、デルタカラー圧縮及びビットパッキングを実行する方法のフローチャートである。
いくつかの実施形態による、異なるグループ構成のピクセルのグループに細分することができるピクセルのブロックのブロック図である。
いくつかの実施形態による、ブロック内のピクセルのデルタ値を表す圧縮ビットストリームのブロック図である。
いくつかの実施形態による、全て正のデルタ値又は全て負のデルタ値を表すのに使用されるビット数を減らす方法のフローチャートである。
いくつかの実施形態による、2の累乗に等しい最大デルタ値を有するグループ内のデルタ値を符号化する方法のフローチャートである。
いくつかの実施形態による、2の累乗に等しい最大デルタ値を有するグループ内のデルタ値を復号する方法のフローチャートである。
いくつかの実施形態による、圧縮アルゴリズムの機能をバイパスするか否かを決定する方法のフローチャートである。

実施例

0004

本明細書で説明するように、ビデオグラフィックス画像(又は、他のビットストリーム)によって消費される帯域幅は、基準ピクセルの色、及び、他のピクセルの色と基準ピクセルの色との間の差を表すデルタ値に基づいてブロック内のピクセルの色を表すためのデルタカラー圧縮を実行することによって減らすことができる。コンプレッサは、各ブロック内のピクセルを複数のグループに細分する。コンプレッサは、グループi内のピクセルのデルタ値を表すのに必要なビットの最小数B_iを決定し、ブロックのグループ内のデルタ値を表すビットの数の最小値を表すビットの最小数(M)を決定する。また、コンプレッサは、ビットの最小数と、ブロックのグループ内のデルタ値を表すのに必要なビットの数の最大値を表すビットの最大数と、の間の差を示すのに必要なビット数(B)を決定する。M及びBの値は、結果として生じる圧縮されたピクセルデータに関連して、コンプレッサからデコンプレッサに送信されるブロックヘッダに含まれる。M及びBの値は、ブロックヘッダに含めるために別々に符号化されてもよいし、M及びBの値の組み合わせは、M及びBについての全てのとり得る組み合わせを表す符号化を使用して符号化されてもよい。また、コンプレッサは、Mと組み合わせて、対応するグループ内のデルタ値を表すビット数を示す、B_iとM(B_i−M)との間の差の値を含むグループヘッダを生成する。コンプレッサは、対応するグループヘッダによって示されるビット数を使用して、各グループ内のピクセル毎のデルタ値を圧縮することができ、デコンプレッサは、ブロックヘッダ及びグループヘッダ内の情報を使用して、圧縮された情報を展開することができる。コンプレッサのいくつかの実施形態は、圧縮アルゴリズムを異なるグループ構成に適用し、最高レベルの圧縮をもたらす最良のグループ構成を選択する。コンプレッサは、選択されたグループ構成を示すブロックヘッダ内の情報を含む。

0005

各グループ内のデルタ値は、ゼロ、正又は負の数であってもよい。そのため、グループ内のデルタ値毎に1つの符号ビットが必要とされる。コンプレッサのいくつかの実施形態は、グループ内のデルタ値の特性に基づいて、ブロック内のピクセルを表すのに使用されるビット数をさらに減らす。例えば、各デルタ値の符号を表すビットは、グループ内の全てのデルタ値が正(ゼロを含む)又は負(ゼロを含む)の何れかである場合、ドロップ(削除)されてもよい。コンプレッサは、グループが全て正、全て負、又は、混合であるかどうかを示すためのビットをグループヘッダに含めることができ、これにより、デコンプレッサは、デルタ値を展開する方法を知ることができる。コンプレッサのいくつかの実施形態は、選択された1ビットコード及び2ビットコードが異なるビット値で開始する限り、1つの構成(例えば、全てが正)用の1ビット、及び、他の2つの構成(例えば、全てが負及び混合)用の2ビットを使用する。これにより、デコンプレッサは、コードを区別することができる。他の可能性は、異なるグループに対して異なる1ビット及び2ビットコードを使用する代わりに、全てのグループの符号ビットを共に組み合わせて、全ての符号ビットに1つのコードを割り当てることである。デルタ値毎に1ビットを取り除くことによって節約されるビット数が、グループの符号を表すために追加されるビット数よりも多い場合には、圧縮における純益が生じる。本明細書で説明するように、グループ内のピクセルのデルタ値の最大絶対値が2の累乗に等しい場合、グループ内のデルタ値を表すのに使用されるビット数を減らすことができる。いくつかの変形例では、これらの機能を有効又は無効にするために、バイパスビットが各ブロックヘッダに含まれる。ブロック内の全てのデルタ値がゼロの場合(すなわち、ブロック内の全てのピクセルが同じ色値を有する場合)には、バイパスビットがドロップされてもよい。

0006

図1は、いくつかの実施形態による、処理システム100のブロック図である。処理システム100は、例えばダイナミックランダムアクセスメモリ(DRAM)110等の1つ以上の外部メモリに接続された処理デバイス105を含む。処理デバイス105は、CPU又はGPU等の複数の計算ユニット111,112,113,114(まとめて「計算ユニット111〜114」と呼ばれる)を含む。例えば、処理デバイス105は、基板上に形成されたアクセラレーテッドプロセッシングユニットAPU)又はアクセラレーテッドプロセッシングデバイスAPD)等のシステムオンチップ(SOC)であってもよい。計算ユニット111〜114の各々は、異なる命令を同時に処理することができる複数のプロセッサコアを含む。また、計算ユニット111〜114は、キャッシュ算術論理演算ユニット浮動小数点演算ユニット分岐予測ロジックメモリ又はバスインタフェース等のように、プロセッサコアによって共有される1つ以上のリソースを含む。

0007

処理デバイス105は、計算ユニット111〜114又は処理デバイス105内の他のエンティティによって使用され得る命令又はデータを記憶するためのデータ記憶ユニット115,120を含む。データ記憶ユニット115,120のいくつかの実施形態は、DRAMを用いて実装される。メモリコントローラ(MC)125は、メモリインタフェース130を介して処理デバイス105とDRAM110との間のデータフローを調整するために使用される。メモリコントローラ125は、DRAM110から情報を読み出し、DRAM110に情報を書き込むことを制御するために使用されるロジックを含む。計算ユニット111〜114は、バス135を使用して、データ記憶ユニット115,120と、メモリコントローラ125と、又は、処理システム100内の他のエンティティと、互いに通信することができる。例えば、計算ユニット111〜114は、通常、信号をバス135にアサートし、対応する計算ユニット111〜114にアドレス指定された信号をバス135から受信するための物理層インタフェース又はバスインタフェースを含む。また、処理デバイス105のいくつかの実施形態は、処理デバイス105内のエンティティの間の通信を容易にするためのノースブリッジ又はサウスブリッジ等の1つ以上のブリッジを含む。

0008

処理デバイス105は、オペレーティングシステム(OS)、又は、処理デバイス105内でワークロードを生成する1つ以上のアプリケーション140を実装する。OS/アプリケーション140の単一のインスタンス図1に示されているが、処理デバイス105のいくつかの実施形態は、オペレーティングシステム又は1つ以上のアプリケーションの複数のインスタンスを実装する。例えば、計算ユニット111〜114上で実行する仮想マシンは、オペレーティングシステム又は1つ以上のアプリケーションの個別のインスタンスを実行することができる。

0009

処理デバイス105のいくつかの実施形態は、グラフィックス処理を実行して、3Dモデルによって表されるシーンをレンダリングし、スクリーン145上に表示するための画像を生成する。例えば、計算ユニット111〜114のうち1つ以上は、バス135及びインタフェース130を介して、DRAM110に記憶された3Dモデルを表す情報にアクセスすることができる。次に、計算ユニット111〜114は、アクセスされた情報を使用して、シーンの一部をレンダリングし、スクリーン145上に表示するための画像を生成する。計算ユニット111〜114は、レンダリングされた画像を表す情報を、バス135を介してスクリーン145に送信する。情報は、処理システム100内のエンティティ間でビットストリームとして伝達される。本明細書で説明するように、計算ユニット111〜114、DRAM110、データ記憶ユニット115、データ記憶ユニット120、スクリーン145、又は、処理システム100内の他のエンティティによって生成されるトラフィック量は、特に、ビデオ又はグラフィックス情報を表すビットストリームを生成するグラフィックスアプリケーションのために、メモリインタフェース130、バス135、又は、処理システム100内の他の相互接続において利用可能な帯域幅に大きな負担をかける可能性がある。

0010

例えばスクリーン145上に表示するための画像を表すピクセルの色等のビデオ又はグラフィックス情報を表すビットストリームを圧縮するために、デルタカラー圧縮及びビットパッキングが使用される。計算ユニット111〜114(又は、ビットストリームを生成する処理システム100内の他のエンティティ)のいくつかの実施形態は、デルタカラー圧縮及びビットパッキングを実行するためのコンプレッサ(図1には示されていない)を実装する。コンプレッサは、対応する計算ユニット111〜114上で実行可能なハードウェアファームウェアソフトウェア、又は、これらの組み合わせとして実装される。コンプレッサは、計算ユニット111〜114又は他のエンティティから情報を受信するスタンドアロンエンティティとして実装されてもよい。コンプレッサのいくつかの実施形態は、フレームを構成するブロック内のピクセルのデルタ値を計算する。例えば、各ブロックは、画像の正方形部分を表す8×8セットのピクセル(例えば、64ピクセル)を含むことができる。各デルタ値は、対応するピクセルの色と、複数のピクセルから選択された基準ピクセルの基準色と、の間の差を表す。コンプレッサは、ブロック内のピクセルを、8つの8×1グループのピクセル又は8つの4×2グループのピクセル等のグループに細分することができる。次に、コンプレッサは、非圧縮ビットストリームよりも少ないビット数を使用して、デルタ値を表す圧縮ビットストリームを生成することができる。例えば、本明細書で説明するように、コンプレッサは、ピクセルのブロックに関連するブロックヘッダと、細分されたピクセルのグループに関連するグループヘッダと、符号化されたデルタ値と、を含む圧縮ビットストリームを生成することができる。グループ毎のデルタ値は、ブロックヘッダ及び対応するグループヘッダに含まれる情報によって示されるように、異なる数のビットを使用して符号化される。デコンプレッサ(図1には示されていない)は、本明細書で説明するように、圧縮ビットストリームを展開して、非圧縮ビットストリーム内のビットを回復することができる。

0011

図2は、いくつかの実施形態による、処理システムの一部200のブロック図である。一部200は、ハードウェア、ファームウェア、ソフトウェア、又は、これらの組み合わせで実装されたコンプレッサ205及びデコンプレッサ210を含む。コンプレッサ205及びデコンプレッサ210のいくつかの実施形態は、図1に示す処理システム100内の異なる位置に実装される。例えば、コンプレッサ205は、計算ユニット111〜114のうち1つの計算ユニットの一部として実装(又は、計算ユニット111〜114からビットを受信するように構成)されてもよく、デコンプレッサ210は、DRAM110又はスクリーン145の一部として実装(又は、DRAM110若しくはスクリーン145にビットを提供するように構成)されてもよい。コンプレッサ205は、場合によっては、フレーム内のピクセルの色を表す非圧縮ビットストリーム215を受信する。コンプレッサ205は、本明細書で説明するデルタカラー圧縮及びビットパッキング技術のいくつかの実施形態に従って非圧縮ビットストリーム215を圧縮して、デコンプレッサ210に提供される圧縮ビットストリーム220を生成する。デコンプレッサ210は、圧縮ビットストリーム220を展開して、非圧縮ビットストリーム225を回復する。非圧縮ビットストリーム225は、非圧縮ビットストリーム215と同じビットを含み、又は、圧縮が可逆若しくは不可逆であるか、圧縮ビットストリーム220の伝送においてエラーが発生したか否かに応じて、異なるビットを含む。

0012

図3は、いくつかの実施形態による、デルタカラー圧縮及びビットパッキングを実行する方法300のフローチャートである。方法300は、図2に示すコンプレッサ205のいくつかの実施形態において実施される。方法300は、例えば8×8ブロック(64バイトのブロックサイズを使用することによってメモリのアドレス指定能力を保存する)等のピクセルのブロックに適用される。また、メモリのアドレス指定能力は、他のサイズのピクセルのブロックを選択して、これらが例えば64バイト等の特定のバイト数に揃えられるようにすることによって、他のケースにおいて保存されてもよい。方法300のいくつかの実施形態は繰り返して実行されてもよいし、方法300の複数のインスタンスは、スクリーン上に表示する画像を表すピクセルのブロック等の複数のブロックに対してデルタカラー圧縮及びビットパッキングを実行するために(例えば、図1に示す計算ユニット111〜114に実装された複数のプロセッサコア上で)同時又は並行して実行されてもよい。方法300に従って圧縮されたビットストリームの展開は、本明細書で説明するように、図2に示すデコンプレッサ210のいくつかの実施形態によって実行される。

0013

ブロック305において、コンプレッサは、ブロック内のピクセルの中から基準ピクセルを選択し、基準ピクセルの色値を決定する。例えば、8ビットの色深度(又は、色域)がピクセルの色を表すために使用される場合、基準ピクセルの色値を8ビット値によって表してもよい。いくつかの変形例では、コンプレッサは、潜在的な基準ピクセルとして2つ以上のピクセルを選択し、次に、基準として使用するために、潜在的な基準ピクセルから1つのピクセルを選択する。潜在的な基準ピクセルを識別する情報は、対応するブロックヘッダに含まれる。次いで、コンプレッサは、基準ピクセルの色値とブロック内の他のピクセルの色値との間の差を表すデルタ値を定義する。ピクセルのデルタ値は、基準ピクセルの色及びピクセルの色の相対値に応じて、正又は負であってもよい。デルタ値を表すのに十分なピクセル数は、ブロック内のピクセルのとり得るデルタ値の範囲によって異なる。例えば、ピクセルが8ビットの色深度で表される場合、ピクセルのデルタ値は、−255〜+255の範囲にある。8ビットは、0〜255の範囲にあるデルタ値の絶対値を表すのに十分であり、デルタ値の符号を表すために1つの付加ビットが必要である。いくつかの実施形態では、デルタ値の符号は、負の数を偶数に、正の数を奇数に変換することによって表される。例えば、一連のデルタ値{0,1,−1,2,−2,3,−3}は、正のデルタ値及び負のデルタ値を正の偶数及び正の奇数にそれぞれ符号化する連続数{0,1,2,3,4,5,6}に変換されてもよい。他の例では、値0〜2n−1−1を、正のデルタ値を表すために使用してもよく、値2n−1〜2n−1を、負のデルタ値を表すために使用してもよい。正のデルタ値及び負のデルタ値を全て正の数に変換する他の符号化も使用することができる。

0014

ブロック310において、コンプレッサは、ブロックをピクセルのグループに細分する。例えば、いくつかの変形例では、コンプレッサは、ブロックを、8×1構成で配置されたピクセルの8つのグループ、又は、4×2構成で配置されたピクセルの8つのグループに細分する。いくつかの変形例では、ピクセルグループ内のピクセルの値は、本明細書で説明するように、全て正の数に変換される。

0015

ブロック315において、コンプレッサは、各グループ(i)内のデルタ値を表すのに十分なグループ最小ビット数(B_i)を決定する。正のデルタ値及び負のデルタ値が一連の正の数に変換されている場合、グループ最小ビット数は、




を用いて決定される。ここで、M_iは、グループ内のピクセルの最大デルタ値である。例えば、第1グループ(i=1)内のデルタ値は、0〜6の範囲のデルタ値を有することができ、そのため、第1グループのデルタ値を3ビット(B_i=3)で表すことができる。第2グループ(i=2)内のデルタ値は、0〜13の範囲のデルタ値を有することができ、そのため、第2グループのデルタ値を4ビット(B_i=4)で表すことができる。第3グループ(i=3)内のデルタ値は、0〜22の範囲のデルタ値を有することができ、そのため、第3グループのデルタ値を5ビット(B_i=5)で表すことができる。この例では、残りのグループのデルタ値も3〜5ビットで表される。

0016

ブロック320において、コンプレッサは、ブロックのグループのうち何れか1つのグループ内のデルタ値を表すのに十分なビットの最小数に等しい最小ビット数(M)を決定する。最小ビット数(M)は、




に従って、ブロック内の各グループを表すのに十分なグループの最小ビット数の最小値をとることによって決定される。よって、上記の例のように、グループのデルタ値を3〜5ビットで表すことができる場合、ブロックの最小ビット数M=3である。

0017

ブロック325において、コンプレッサは、Mと、ブロック内のデルタ値を表すのに十分なビットの最大数と、の間の差を表すのに十分なビット数(B)を決定する。最大ビット数は、ブロック内の各グループを表すのに十分なグループ最小ビット数の最大値をとることによって決定される。したがって、ビット数(B)は、




に従って決定されてもよい。よって、上記の例のように、グループのデルタ値を3〜5ビットで表すことができる場合、ブロック内のグループのビット数B=2である。

0018

ブロック330において、コンプレッサは、M及びBを表すビットを含むブロックヘッダを生成する。ブロックヘッダのいくつかの実施形態は、Mを表すための第1ビット数と、Bを表すための第2ビット数と、を含む。例えば、ピクセルが8ビットの色深度で表される場合、ブロックヘッダ内の4ビットを使用してMを表し、ブロックヘッダ内の4ビットを使用してBを表してもよい。この場合、グループ内のデルタ値を表すために最大で9ビットが必要になる可能性がある。ブロックヘッダのいくつかの実施形態は、M及びBの値の全てのとり得る組み合わせを表すために、代替的にいくつかのビットを含む。これは、ブロックヘッダに含まれるビットの総数を減らす。例えば、以下の表は、M及びBの値の個別の符号化と、M及びBの同じ値の組み合わされた符号化と、を示している。

0019

ブロック335において、コンプレッサは、グループi毎にグループヘッダを生成する。グループヘッダのいくつかの実施形態は、対応するグループのBi−Mの値を表すための1つ以上のビットを含む。同じビット数が量Bi−M及び量Biを表すために使用されるM=0の場合を除いて、量Bi−Mを表すには、量Biを表すのに十分なビット数と比較してより少ないビットで十分である。その結果、各グループ内のデルタ値を表すのに十分なビット数を表すために量Bi−Mを使用することは、コンプレッサからデコンプレッサに送信される必要のあるビット数全体を減らすことができる。例えば、ブロックがピクセルに対して8ビットの色深度を使用している場合、量M及びBが個別に符号化されていれば、量M及びBの各々は4ビットで表される。量Bi−Mは、8×Bビットが8つのグループ全ての量Bi−Mを表すのに十分であるように、Bビットを使用して表されてもよい。

0020

ブロック340において、コンプレッサは、デルタ値を表すためにBiビットを使用してグループi毎のデルタ値を符号化する。ブロック315の例に戻ると、第1グループ(i=1)内のデルタ値は3ビット(B_i=3)を用いて符号化され、第2グループ(i=2)内のデルタ値は4ビット(B_i=4)を用いて符号化され、第3グループ(i=3)内のデルタ値は5ビット(B_i=5)を用いて符号化される。

0021

ブロック345において、コンプレッサは、ブロックヘッダ、グループヘッダ及び符号化されたデルタ値をデコンプレッサに送信する。例えば、計算ユニット111〜114に関連するコンプレッサは、図1に示すように、ブロックヘッダ、グループヘッダ及び符号化されたデルタ値を、バス135を介してメモリコントローラ125又はスクリーン145に送信する。

0022

ブロック350において、デコンプレッサは、ブロックヘッダ、グループヘッダ及び符号化されたデルタ値を表すビットを含むビットストリームを受信する。デコンプレッサは、ブロックヘッダ及びグループヘッダ内の情報を使用してデルタ値を表す非圧縮ビットを回復するために、ビットストリームを展開することができる。例えば、デコンプレッサは、ブロックヘッダからBの値を読み出し、この値を用いて全てのグループの量Bi−Mを表すビット数(すなわち、ブロックが8つのグループに細分されている場合の8×Bビット)を決定する。また、デコンプレッサは、ブロックヘッダからMの値を読み出す。デコンプレッサは、グループ毎に、対応するグループヘッダから量Bi−Mの値を読み出し、値Bi−Mを値Mと組み合わせて、対応するグループの量Biの値を決定する。デコンプレッサは、符号化されたデルタ値を正しく復号することができるように、符号化されたデルタ値を表すビットを解析するために量Biの値を使用する。例えば、或るグループの量Bi=3である場合、デコンプレッサは、符号化されたデルタ値の各々がビットストリームにおいて3ビットで表されると判別する。

0023

図4は、いくつかの実施形態による、異なるグループ構成においてピクセルのグループに細分することができるピクセルのブロック400のブロック図である。ブロック400は、8×8グリッドで配置された64個のピクセル405(明確にするために、1つのみが参照符号で示されている)を含む。しかしながら、ブロック400の他の実施形態では、異なるパターンで配置された異なる数のピクセルを含む。ブロック400は、例えば、図2に示すコンプレッサ205等のコンプレッサによって、ピクセルのグループに細分される。第1グループ構成では、ブロック400は、それぞれ8×1グリッド構成で配置された8つのグループ410(明確にするために、1つのみが参照符号で示されている)に細分される。第2グループ構成では、ブロック400は、それぞれ4×2グリッド構成で配置された8つのグループ415(明確にするために、1つのみが参照符号で示されている)に細分される。ブロック400をより多くの又はより少ないグループに細分するために、他のグループ構成が使用されてもよい。

0024

コンプレッサのいくつかの実施形態は、ブロック400が2つ以上の異なるグループ構成に従って異なるグループに細分される場合に、ピクセル405のデルタ値を符号化するのに必要なビット数を決定する。例えば、2つの異なるグループ構成の図示の場合では、ブロック400は、第1グループ構成によるグループ410と、第2構成によるグループ415と、に細分されてもよい。次に、コンプレッサは、異なるグループ構成に従ってピクセル405のデルタ値を符号化するのに必要なビット数を推定するために、図3に示す方法300の一部を実行する。次いで、コンプレッサは、ビット数の異なる値を比較し、圧縮ビットストリーム内のビット数が最小になるグループ構成を選択する。次に、選択されたグループ構成は、例えば、図3に示す方法300のいくつかの実施形態に従って、ビットストリームを圧縮するために使用される。

0025

図5は、いくつかの実施形態による、ブロック内のピクセルのデルタ値を表す圧縮ビットストリーム500のブロック図である。ビットストリーム500は、例えば図3に示す方法300のいくつかの実施形態を実行することによって、図2に示す圧縮ビットストリーム220を形成するために、コンプレッサ205のいくつかの実施形態によって生成される。図5に示すビットストリーム500は、8ビットの色深度を有するピクセルの色値に基づいて決定されたピクセルのデルタ値に基づいて、生成される。しかしながら、より多い又はより少ないビット数を有する色深度も使用することができる。

0026

ビットストリーム500は、ブロック内の何れかグループのデルタ値を表すのに十分な最小ビット数(M)を表すビットで形成されたブロックヘッダ505を含む。また、ブロックヘッダ505は、Mと、ブロック内のデルタ値を表すのに十分なビットの最大数と、の間の差を表すのに十分なビット数(B)を表すビットも含む。値M及びBの各々は4ビットで表されるので、ブロックヘッダ505は、8ビットのピクセル深度に対して少なくとも8ビットを含む。しかしながら、本明細書で説明するように、値M及びBを個別に表すのではなく、少数のビットをブロックヘッダ505に含めて、値M及びBの全てのとり得る組み合わせを表すことができる。さらに、後述するように、圧縮アルゴリズムのいくつかの実施形態は、ブロックヘッダ505内のビット数を変更する機能を実施する。

0027

また、ビットストリーム500は、ブロックのデルタ値の各グループに関連するグループヘッダ510,515を含む。例えば、グループヘッダ510は、グループ1のB1−Mの値を表すビットを含み、グループヘッダ515は、グループ2のB2−Mの値を表すビットを含む。本明細書で説明するように、Bビットは、グループのBi−Mの値を表すのに十分であるので、グループヘッダ510,515は、Bビットを含む。しかしながら、後述するように、圧縮アルゴリズムのいくつかの実施形態は、グループヘッダ510,515内のビット数を変更する機能を実施する。

0028

さらに、ビットストリーム500は、グループヘッダ510,515に対応するグループの符号化されたデルタ値を含む。例えば、ビットストリーム500は、グループヘッダ510に関連するグループ1の符号化されたデルタ値520を含む。符号化されたデルタ値520は、符号化されたデルタ値毎にBiビットで表されてもよい。例えば、グループ1の8つの符号化されたデルタ値520の各々がBi=3ビットで表される場合、符号化されたデルタ値520は24ビットで表される。しかしながら、後述するように、圧縮アルゴリズムのいくつかの実施形態は、符号化されたデルタ値520を表すのに十分なビット数を変更する機能を実施する。

0029

図6は、いくつかの実施形態による、全て正のデルタ値又は全て負のデルタ値を表すのに使用されるビット数を減らす方法600のフローチャートである。方法600の異なる変形例では、デルタ値が全て正の値又は全て負の値であるか否かを判別する目的で、ゼロは正又は負とみなされる。方法600は、図2に示すコンプレッサ205のいくつかの実施形態によって実施される。対応する展開処理は、方法600に従って生成された圧縮ビットストリームを復号するために、図2に示すデコンプレッサ210のいくつかの実施形態において実施される。

0030

ブロック605において、コンプレッサは、グループ内のデルタ値が全て正の値、全て負の値、又は、正の値と負の値との混合を有するかどうかを判別する。次に、コンプレッサは、全て正の値、全て負の値、又は、正の値と負の値との混合を示すためのビットを、対応するグループヘッダに追加することができる。グループ内のデルタ値の3つのとり得る状態を表すには、2ビットで十分である。

0031

判別ブロック610において、コンプレッサは、グループ内のデルタ値が全て正の値を有するか否かを判別する。有する場合、コンプレッサは、ブロック615において、グループ内のデルタ値から符号ビットをドロップする。ブロック620において、コンプレッサは、グループ内のデルタ値が全て正の値を有することを示すために、対応するグループヘッダ内の第1符号ビットを1に設定する。図示した実施形態では、対応するグループヘッダ内の第2符号ビットの値は0又は1の何れかに設定されてもよいし、第2符号ビットは、ビット数をさらに減らすために、対応するグループヘッダから省かれてもよい。グループ内のデルタ値が全て正の値を有しない場合、方法は、判別ブロック625に移行する。

0032

判別ブロック625において、コンプレッサは、グループ内のデルタ値が全て負の値を有するか否かを判別する。有する場合、コンプレッサは、ブロック630において、グループ内のデルタ値から符号ビットをドロップする。ブロック635において、コンプレッサは、グループ内のデルタ値が全て負の値を有することを示すために、対応するグループヘッダ内の第1符号ビット及び第2符号ビットを0に設定する。グループ内のデルタ値が全て負の値を有しない場合、方法は、判別ブロック640に移行する。

0033

ブロック640において、コンプレッサは、グループ内のデルタ値が正の値と負の値との混合を有することを示すために、対応するグループヘッダ内の第1符号ビットを0に設定し、対応するグループヘッダ内の第2符号ビットを1に設定する。

0034

図6に示す方法600は、対応するグループ内のデルタ値が全て正、全て負、又は、混合であるか否かを示すために、各グループヘッダ内の1つ又は2つの符号ビットを使用する。しかしながら、いくつかの実施形態では、コンプレッサは、ブロック内のグループの状態の全てのとり得る組み合わせを表すために、より少ない数のビットを使用する。例えば、8つのグループ内のデルタ値の3つのとり得る状態は、3^8=6561の異なる組み合わせに対応し、これは、2^13=8192であって、2^12=4096であることから、13ビットで表すことができる。グループ及びブロックの状態の組み合わせを表すビットは、ブロックヘッダに含まれてもよい。

0035

図7は、いくつかの実施形態による、2の累乗に等しい最大デルタ値を有するグループ内のデルタ値を符号化する方法700のフローチャートである。方法700は、図2に示すコンプレッサ205のいくつかの実施形態において実施される。

0036

ブロック705において、コンプレッサは、デルタ値を表す非圧縮ビットを読み出す。ブロック710において、コンプレッサは、本明細書で説明するように、デルタ値を全て正の値にマッピングする。コンプレッサは、符号最適化が使用されていることを示すために1つの付加ビットを追加し、デルタ値が全て負の値、又は、正の値と負の値との混合である場合には、デルタ値の符号を示すために1つ以上の付加ビットを追加する。例えば、コンプレッサは、図6に示す方法600のいくつかの実施形態に従って、付加ビットの値を決定することができる。

0037

判別ブロック715において、コンプレッサは、グループ内のピクセルのデルタ値の最大絶対値が2の累乗(例えば、k>0の場合、2k)に等しいか否かを判別する。等しい場合、ブロック710においてグループが全て正の値にマッピングされているので、グループ内のデルタ値を表すために、k+1ビットが必要とされる。グループ内のピクセルのデルタ値の最大絶対値が2の累乗に等しくない場合、コンプレッサは、ブロック720において、例えば図3に示す方法300のいくつかの実施形態に従って、非圧縮ビットを圧縮する。グループ内のピクセルのデルタ値の最大絶対値が2の累乗に等しい場合、コンプレッサは、ブロック725において、(k+1ビットを使用する代わりに)kビットを使用して各デルタ値を符号化する。

0038

kビットを使用してデルタ値を符号化することによって、2k又は2k−1に等しいデルタ値を、同じkビット数で表すことになる。縮退を解決するために、判別ブロック730において、コンプレッサは、デルタ値が2k又は2k−1に等しいか否かを判別する。等しい場合、コンプレッサは、(ブロック735において)トレーリングビットを追加し、対応するデルタ値が2k−1又は2kに等しいか否かを示すようにトレーリングビットの値を設定する。デルタ値が2k又は2k−1に等しくない場合、コンプレッサは、(ブロック740において)トレーリングビットを追加することをバイパスする。

0039

図7に示す例示的な圧縮アルゴリズムは、デルタ値の2つの縮退した符号化値を区別するために、トレーリングビットを使用する。しかしながら、いくつかの変形例では、より少ない数のビットを使用して基本的な符号化を実行することができる(例えば、k>0の場合にデルタ値の最大絶対値2kまでの範囲のデルタ値を符号化するために、kビット未満のビットを使用することができる)。次に、結果として生じる縮退を解決するために、追加のトレーリングビットが使用される。例えば、ブロック内のデルタ値が0、1、2、3、4、5である場合、デルタ値の最大絶対値は5(2^2+1又はk=2)である。したがって、デルタ値の最大絶対値が2^2=4よりも大きいので、各デルタ値を表すために3ビットが必要である。よって、全てのデルタ値を表すには、合計6×3=18ビットが必要である。しかしながら、ブロック715において評価されたデルタ値の最大絶対値が2^n+1に等しい場合、2^n−1、2^n、2^n+1に等しいデルタ値は全て、2^n−1の縮退値として符号化される。追加のトレーリングビットは、2^n−1、2^n、2^n+1の縮退値を区別するために、デルタ値に追加される。例えば、「1」のトレーリングビットが2^n−1に追加され、「01」の2つのトレーリングビットが2^nに追加され、「00」の2つのトレーリングビットが2^n+1に追加される。次に、入力データストリーム0、1、2、3、4、5は、一連のバイナリ値00、01、10、111、1101、1111に圧縮される。圧縮バイナリストリーム内のビットの総数は、2+2+2+3+4+4=17であり、これは、この例において1ビットの節約となる。

0040

コンプレッサのいくつかの実施形態は、2の累乗の最適化が対応するブロックに対して使用されているかどうかを示すために、ビットをブロックヘッダに追加する。例えば、このビットは、ビット数が減らされていないとコンプレッサが判別した場合に、2の累乗の最適化が使用されていないことを示すために設定(又は、リセット)されてもよい。追加のビットを追加するとアルゴリズム圧縮レートが低下するが、いくつかの変形例では、2の累乗の最適化が使用されているかどうかを示すために追加ビットが存在する場合、デコンプレッサは、ビットストリームを展開するのに必要な処理サイクルをより少なくすることができ、これにより、デコンプレッサに必要なクロックサイクル数を減らすことができる。

0041

図8は、いくつかの実施形態による、2の累乗に等しい最大デルタ値を有するグループ内のデルタ値を復号する方法800のフローチャートである。方法800は、図2に示すデコンプレッサ210のいくつかの実施形態において実施される。デコンプレッサは、方法800を使用して、図7の方法700に示す圧縮アルゴリズム等の対応する圧縮アルゴリズムに従って圧縮されたビットストリームを展開する。

0042

ブロック805において、デコンプレッサは、ブロックのグループ内のピクセルのデルタ値を表すビットを読み出す。デコンプレッサは、ブロックヘッダ及び対応するグループヘッダに含まれる情報を使用して、量Biの値を事前に決定している。グループ内のデルタ値は、Biビットを使用して符号化される。

0043

判別ブロック810において、デコンプレッサは、デルタ値を表すビットによって示されるビット値が最大の符号化ビット値2^(Bi)−1に等しいか否かを判別する。等しくない場合、デコンプレッサは、ブロック715において、ビット値に等しいデルタ値を設定する。デコンプレッサが、デルタ値を表すビットによって示されるビット値が2^(Bi)−1に等しいと判別した場合、方法800は、判別ブロック820に移行する。

0044

判別ブロック820において、デコンプレッサは、トレーリングビットを読み出し、トレーリングビットが0又は1に等しいか否かを判別する。トレーリングビットが0に等しい場合、デコンプレッサは、ブロック825において、デルタ値が2^(Bi)−1に等しいと判別する。トレーリングビットが1に等しい場合、デコンプレッサは、ブロック830において、デルタ値が2^(Bi)に等しいと判別する。トレーリングビットとデルタ値との関連付けは任意であり、いくつかの実施形態では、逆のルール(opposite convention)が使用されてもよい。

0045

図9は、いくつかの実施形態による、圧縮アルゴリズムの機能をバイパスするか否かを決定する方法900のフローチャートである。方法900は、図2に示すコンプレッサ205のいくつかの実施形態において実施される。対応する展開処理は、方法900に従って生成された圧縮ビットストリームを復号するために、図2に示すデコンプレッサ210のいくつかの実施形態において実施される。

0046

ブロック905において、コンプレッサは、コンプレッサによって実施される圧縮アルゴリズムの1つ以上の最適化に従ってブロック内のピクセルのデルタ値を符号化することによって、節約されるビット数を決定する。例えば、コンプレッサは、図3に示す方法300のいくつかの実施形態に従って、デルタ値を符号化するのに十分な第1ビット数を決定することができる。また、コンプレッサは、図6に示す方法600、図7に示す方法700又は図8に示す方法800のいくつかの実施形態に従って実施される機能等の追加の最適化機能が実施される場合、デルタ値を符号化するのに十分な第2ビット数を決定することができる。節約されるビット数は、第1ビット数と第2ビット数との間の差に等しい。

0047

ブロック910において、コンプレッサは、1つ以上の最適化に従う、符号化デルタ値の圧縮をサポートするために、ブロックヘッダ又はグループヘッダに追加されるビット数を決定する。例えば、コンプレッサは、図3に示す方法300のいくつかの実施形態に従ってデルタ値を符号化するのをサポートするために、ブロックヘッダ及びグループヘッダ内の値を表すのに必要とされる第1ビット数を決定することができる。また、コンプレッサは、図6に示す方法600、図7に示す方法700又は図8に示す方法800のいくつかの実施形態に従って実施される機能等の追加の最適化機能が実施される場合、デルタ値を符号化するのをサポートするために、ブロックヘッダ及びグループヘッダ内の値を表すのに必要とされる第2ビット数を決定することができる。追加されるビット数は、第1ビット数と第2ビット数との間の差に等しい。

0048

判別ブロック915において、コンプレッサは、節約されるビット数が追加されるビット数より大きいか否かを判別する。大きい場合、コンプレッサは、(ブロック920において)符号化されたデルタ値を圧縮するために追加の機能を使用していることを示すために、ブロックヘッダ内のバイパスビットをFALSE(又は、の他の値)に設定する。節約されるビット数が追加されるビット数未満である場合、方法900は、判別ブロック925に移行する。

0049

判別ブロック925において、コンプレッサは、ブロック内のピクセルのデルタ値の全てがゼロに等しいか否かを判別する。等しくない場合、コンプレッサは、(ブロック930において)符号化されたデルタ値を圧縮するための追加の機能の使用をバイパスしていることを示すために、ブロックヘッダ内のバイパスビットをTRUE(又は、他の値)に設定する。ブロック内のピクセルの全てのデルタ値がゼロに等しい場合、ブロック935においてブロックヘッダからバイパスビットをドロップして、ビット数をさらに減らすことができる。

0050

いくつかの実施形態では、上述したデバイス及び技術は、図1図8を参照して上述した処理システム等の1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップと呼ばれる)を含むシステムにおいて実施される。これらのICデバイスの設計及び製造において、電子設計自動化(EDA)及びコンピュータ支援設計CADソフトウェアツールが使用されてもよい。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムアクセス可能コンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよく、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。

0051

コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体、又は、非一時的な記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システムMEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム(例えば、システムRAM又はROM)に内蔵されてもよいし、コンピュータシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよいし、コンピュータシステム(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に着脱可能に取り付けられてもよいし、有線又は無線ネットワークを介してコンピュータシステム(例えば、ネットワークアクセス可能なストレージ(NAS))に接続されてもよい。

0052

いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、有形に実装された1つ以上の実行可能命令のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行された場合に、1つ以上のプロセッサを操作して、上述した技術の1つ以上の態様を実行する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスクストレージデバイス、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス等のソリッドステート記憶デバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコードアセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。

0053

上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。

0054

利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある機能は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な機能と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ