特許第6186429号(P6186429)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社スクウェア・エニックス・ホールディングスの特許一覧

特許6186429情報処理装置、制御方法、プログラム、及び記録媒体
<>
  • 特許6186429-情報処理装置、制御方法、プログラム、及び記録媒体 図000002
  • 特許6186429-情報処理装置、制御方法、プログラム、及び記録媒体 図000003
  • 特許6186429-情報処理装置、制御方法、プログラム、及び記録媒体 図000004
  • 特許6186429-情報処理装置、制御方法、プログラム、及び記録媒体 図000005
  • 特許6186429-情報処理装置、制御方法、プログラム、及び記録媒体 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6186429
(24)【登録日】2017年8月4日
(45)【発行日】2017年8月23日
(54)【発明の名称】情報処理装置、制御方法、プログラム、及び記録媒体
(51)【国際特許分類】
   H04N 19/423 20140101AFI20170814BHJP
   H04N 19/436 20140101ALI20170814BHJP
   H04N 19/127 20140101ALI20170814BHJP
   H04N 19/136 20140101ALI20170814BHJP
   H04N 19/176 20140101ALI20170814BHJP
【FI】
   H04N19/423
   H04N19/436
   H04N19/127
   H04N19/136
   H04N19/176
【請求項の数】11
【全頁数】12
(21)【出願番号】特願2015-510959(P2015-510959)
(86)(22)【出願日】2013年4月12日
(86)【国際出願番号】JP2013002501
(87)【国際公開番号】WO2014167609
(87)【国際公開日】20141016
【審査請求日】2015年9月17日
(73)【特許権者】
【識別番号】592044813
【氏名又は名称】株式会社スクウェア・エニックス・ホールディングス
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(72)【発明者】
【氏名】岩崎 哲史
【審査官】 畑中 高行
(56)【参考文献】
【文献】 特開2006−186911(JP,A)
【文献】 特開2010−130696(JP,A)
【文献】 特開2005−151017(JP,A)
【文献】 特開2003−101793(JP,A)
【文献】 特開2003−125403(JP,A)
【文献】 特開平09−214981(JP,A)
【文献】 特開2009−260977(JP,A)
【文献】 特開2005−295075(JP,A)
【文献】 特開2003−224851(JP,A)
【文献】 特開2000−092330(JP,A)
【文献】 特開2010−161542(JP,A)
【文献】 特開2002−112266(JP,A)
【文献】 米国特許出願公開第2013/0021350(US,A1)
【文献】 Pablo Montero et al.,Parallel Zigzag Scanning and Huffman Coding for a GPU-Based MPEG-2 Encoder,2010 IEEE International Symposium on Multimedia (ISM),IEEE,2010年12月13日,p.97-104
【文献】 Ngai-Man Cheung et al.,Video Coding on Multicore Graphics Processors,IEEE Signal Processing Magazine,IEEE,2010年 3月25日,Vol.27, No.2,p.79-89
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00−19/98
(57)【特許請求の範囲】
【請求項1】
中央処理ユニット(CPU)とグラフィックス処理ユニット(GPU)を有し、画像を符号化する情報処理装置であって、
前記GPUは、
符号化対象の画像を分割して得られた、所定の画素数を有する複数のブロックを取得する取得手段と、
前記取得手段により取得された前記複数のブロックの各々について、空間冗長性を排除した中間ブロックを生成する排除手段と、
前記排除手段により生成された各中間ブロックのデータ列を解析し、該データ列における、値が所定の範囲に含まれるデータの位置を特定する特定情報を生成する解析手段と、
前記複数のブロックの各々について、前記中間ブロックの少なくとも一部のデータ及び該中間ブロックに対応する前記特定情報を記憶手段に出力する出力手段と、
を有し、
前記CPUは、
前記複数のブロックの各々について、対応する前記特定情報を前記記憶手段から読み出す読出手段と、
前記読出手段により読み出された前記特定情報を参照し、前記記憶手段から該特定情報に対応する前記少なくとも一部のデータを読み出して圧縮処理を実行する圧縮手段と、
を有し、
各中間ブロックについて、データ列に含まれる、値が前記所定の範囲に含まれるデータの数が予め定められた数より多い場合に、
前記解析手段は、該データ列の各データが示す値を所定値で除して得られた新たなデータ列について、前記中間ブロックのデータ列の各データが示す値を所定値で除した回数を含めて前記特定情報を生成し、
前記出力手段は、前記新たなデータ列に含まれる、値が前記所定の範囲に含まれるデータのみをデータ列順に並べ、前記少なくとも一部のデータとして出力する
ことを特徴とする情報処理装置。
【請求項2】
前記解析手段は、前記所定値で除した回数を、前記特定情報において識別可能に含めることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記解析手段は、前記中間ブロックのデータ列に含まれる、値が前記所定の範囲に含まれるデータの数が前記予め定められた数以下となるまで、前記中間ブロックのデータ列の各データが示す値を所定値で除すことを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記出力手段は、各中間ブロックについて、データ列に含まれる、値が前記所定の範囲に含まれるデータのみをデータ列の順に並べ、前記少なくとも一部のデータとして出力することを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項5】
前記解析手段は、各中間ブロックについて、データ列の各データの値が前記所定の範囲に含まれるか否かの情報をデータ列順に並べることで、前記特定情報を生成することを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項6】
前記値が所定の範囲に含まれるデータは、前記中間ブロックのデータ列のうち、データ値が非ゼロ値であるデータであることを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項7】
前記値が所定の範囲に含まれるデータは、前記中間ブロックのデータ列のうち、画質に影響を与えると予め定められたデータであることを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項8】
前記排除手段は、
前記複数のブロックの各々を直交変換する変換手段と、
前記変換手段により直交変換された各ブロックを量子化する量子化手段と、
前記量子化手段により量子化された各ブロックを、画素に対応するデータを所定の順番に並べることで、前記中間ブロックのデータ列を生成する生成手段と、
を有し、
前記圧縮手段は、前記少なくとも一部のデータと前記特定情報とから特定した前記中間ブロックのデータ列を可逆圧縮する
することを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
【請求項9】
中央処理ユニット(CPU)とグラフィックス処理ユニット(GPU)を有し、画像を符号化する情報処理装置の制御方法であって、
前記GPUが、符号化対象の画像を分割して得られた、所定の画素数を有する複数のブロックを取得する取得工程と、
前記GPUが、前記取得工程において取得された前記複数のブロックの各々について、空間冗長性を排除した中間ブロックを生成する排除工程と、
前記GPUが、前記排除工程において生成された各中間ブロックのデータ列を解析し、該データ列における、値が所定の範囲に含まれるデータの
位置を特定する特定情報を生成する解析工程と、
前記GPUが、前記複数のブロックの各々について、前記中間ブロックの少なくとも一部のデータ及び該中間ブロックに対応する前記特定情報を記憶手段に出力する出力工程と、
前記CPUが、記複数のブロックの各々について、対応する前記特定情報を前記記憶手段から読み出す読出工程と、
前記CPUが、前記読出工程において読み出された前記特定情報を参照し、前記記憶手段から該特定情報に対応する前記少なくとも一部のデータを読み出して圧縮処理を実行する圧縮工程と、
を有し、
各中間ブロックについて、データ列に含まれる、値が前記所定の範囲に含まれるデータの数が予め定められた数より多い場合に、
前記GPUは前記解析工程において、該データ列の各データの値を所定値で除して得られた新たなデータ列について、前記中間ブロックのデータ列の各データが示す値を所定値で除した回数を含めて前記特定情報を生成し、
前記GPUは前記出力工程において、前記新たなデータ列に含まれる、値が前記所定の範囲に含まれるデータのみをデータ列順に並べ、前記少なくとも一部のデータとして出力する
ことを特徴とする情報処理装置の制御方法。
【請求項10】
コンピュータを、請求項1乃至のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項11】
請求項1に記載のプログラムを記録した、コンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、制御方法、プログラム、及び記録媒体に関し、特にCPUとGPUとを利用する符号化技術に関する。
【背景技術】
【0002】
近年、インターネット等のネットワークを利用した動画配信の分野では、予め符号化した動画データを配信するだけでなく、生成した動画フレームをリアルタイムに符号化し、得られた動画データを配信することも行われている。
【0003】
このようなリアルタイムに符号化を行って動画データを配信するコンテンツの1つには、ネットワークを介してゲーム画面を提供するゲームコンテンツがある。動画配信サーバはGPUが生成したゲーム画面を、所定の符号化形式に従って符号化し、動画データとして配信することで、クライアント機器において表示されるゲーム画面を提供することができる。
【0004】
GPUは、CPUに比べて多くの演算コアを備え、並列処理に特化するものである。符号化技術の中には、GPUの並列処理能力に着目し、GPUを使用した符号化を行うものもある(特許文献1)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−017535号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
一方、GPUは多くの演算コアを備えるため、個々の演算コアの処理能力はCPUに比べて限定的なものとなる。具体的にはCPUとGPUとでは、予め用意される命令セットが異なる。例えば32bitのビット列中から値が1のビットをカウントする演算をする場合、典型的にはGPUがビットを順番に指定して簡素な命令を繰り返し発行して処理を実行するのに対し、CPUは予め用意された命令セットを実行するのみで所望の演算結果を得ることができる。即ち、GPUは並列処理に特化するものである反面、処理を実行するために必要な命令発行が多く、処理内容によっては結果が得られるまでに時間を要することがあった。
【0007】
上述した特許文献1は、符号化処理を単にGPUで実行しており、このようなCPU及びGPUの特性を考慮して分散処理を行うものではなかった。
【0008】
本発明は、上述の問題点に鑑みてなされたものであり、CPUとGPUとを用いることで符号化処理を効率化する情報処理装置、制御方法、プログラム、及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【0009】
前述の目的を達成するために、本発明の情報処理装置は、以下の構成を備えることを特徴とする。具体的には情報処理装置は、中央処理ユニット(CPU)とグラフィックス処理ユニット(GPU)を有し、画像を符号化する情報処理装置であって、GPUは、符号化対象の画像を分割して得られた、所定の画素数を有する複数のブロックを取得する取得手段と、取得手段により取得された複数のブロックの各々について、空間冗長性を排除した中間ブロックを生成する排除手段と、排除手段により生成された各中間ブロックのデータ列を解析し、該データ列における、値が所定の範囲に含まれるデータの位置を特定する特定情報を生成する解析手段と、複数のブロックの各々について、中間ブロックの少なくとも一部のデータ及び該中間ブロックに対応する特定情報を記憶手段に出力する出力手段と、を有し、CPUは、複数のブロックの各々について、対応する特定情報を記憶手段から読み出す読出手段と、読出手段により読み出された特定情報を参照し、記憶手段から該特定情報に対応する少なくとも一部のデータを読み出して圧縮処理を実行する圧縮手段と、を有することを特徴とする。
【発明の効果】
【0010】
このような構成により本発明によれば、CPUとGPUとを用いることで符号化処理を効率化することが可能となる。
【0011】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【0012】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
図1】本発明の実施形態に係るPC100の機能構成を示したブロック図
図2】本発明の実施形態に係るPC100で実行される符号化処理を例示したフローチャート
図3】本発明の実施形態に係るGPU104が実行するデータ生成処理を例示したフローチャート
図4】本発明の実施形態に係るデータ生成処理における中間データのスキャン順序の一例を示した図
図5】本発明の実施形態に係るデータ生成処理で生成される出力用データのデータ構成を示した図
【発明を実施するための形態】
【0013】
[実施形態]
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下に説明する一実施形態は、情報処理装置の一例としての、CPUとGPUとを備え、符号化処理を行うPCに本発明を適用した例を説明する。しかし、本発明は、CPU及びGPUを備え、それらを使用して符号化処理を行うことが可能な任意の機器に適用可能である。
【0014】
《PC100の構成》
図1は、本発明の実施形態に係るPC100の機能構成を示すブロック図である。
【0015】
CPU101は、PC100が有する各ブロックを制御する。具体的にはCPU101は、例えばROM102や記録媒体107に格納されている各ブロックの動作プログラムを読み出し、RAM103に展開して実行することにより、各ブロックの動作を制御する。
【0016】
ROM102は、書き換え可能な不揮発性メモリである。ROM102は、各ブロックの動作またはPC100の動作に必要となるパラメータ等の情報を記憶する。RAM103は、揮発性メモリである。RAM103は、各ブロックの動作プログラムの展開領域としてだけでなく、各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【0017】
GPU104は、画面描画に係る処理を行う。GPU104は、並列処理を行うために複数の演算コアを有し、画面描画に係る処理を並行して実行する。例えば描画する画面が3Dシーンの特定の視点に係る画面である場合、GPU104は3Dシーンの描画範囲に含まれる描画オブジェクトを後述の記録媒体107から読み出し、GPUメモリ105に展開する。そしてGPU104は、GPUメモリ105に展開した描画オブジェクトに対して所定の描画パラメータに応じた演算処理を実行し、接続されたVRAM106に画面を生成(描画)する。
【0018】
記録媒体107は、例えばHDD等の着脱可能な記録装置である。本実施形態では記録媒体107が符号化対象の動画データの各フレーム、及び後述の符号化処理により符号化された符号化動画データが記録される。
【0019】
操作入力部108は、例えばマウスやキーボード等のPC100に接続されたユーザインタフェースである。操作入力部108は、ユーザインタフェースに対する操作入力がなされたことを検出すると、対応する制御信号をCPU101に出力し、該操作入力を通知する。
【0020】
《符号化処理》
このような構成をもつ本実施形態のPC100における動画データの符号化処理について、図2のフローチャートを用いて具体的な処理を説明する。該フローチャートに対応する処理は、CPU101が、例えば記録媒体107に記憶されている対応する処理プログラムを読み出し、RAM103に展開して実行することにより実現することができる。
【0021】
なお、本符号化処理は、例えば動画データの符号化を行うアプリケーションにおいて、符号化開始の指示入力がなされたことを記録媒体107が検出した際に開始されるものとして説明する。しかしながら、本発明は動画データの符号化処理に限られるものではなく、後述のような処理工程で行われる静止画データの符号化処理にも適用可能である。また、以下に説明する符号化処理は、本発明が適用される符号化処理を限定するものではなく、1つの例示的な符号化形式における処理工程を概念的に説明するものである。即ち、本実施形態の符号化処理において説明する各処理工程は、符号化対象や採用される符号化形式に応じて適宜変更されてよいことは容易に理解されよう。
【0022】
S201で、CPU101は、符号化対象の動画データ(対象動画データ)の情報をGPU104に通知する。対象動画データの情報は、記録媒体107に格納された対応する動画ファイルの格納場所の情報等、GPU104が符号化対象のデータを特定可能な情報であってよい。
【0023】
S202で、GPU104は、対象動画データの情報を参照し、対象動画データのうちの符号化を行うフレームの画像(対象ピクチャ)を読み出し、GPUメモリ105に展開する。
【0024】
S203で、GPU104は、GPUメモリ105に読み出された対象ピクチャを、並列処理の実行単位である、予め定められた画素数を有するブロックに分割する。なお、対象ピクチャは実際にブロックに分割される必要はなく、例えばGPUメモリ105上のメモリアドレスに対して、ブロックを定義するものであってよい。また、本実施形態では詳細を述べないが、対象ピクチャに対してフレーム内予測あるいはフレーム間予測を行う場合は、以下の並列処理とは別に、ピクチャに対して予測処理が行われる。
【0025】
S204で、GPU104は、ブロックの各々にGPU104の演算コアを割り当てる。そしてGPU104は、各ブロックについて離散コサイン変換処理(DCT)等の直交変換処理及び量子化処理を並列に実行し、各ブロックの空間冗長性を除去する。なお、予測処理が行われている場合は、予測結果が反映されたブロックが本ステップの処理対象となる。また、本実施形態では説明を簡単にするため、各ブロックにGPU104の1つの演算コアが割り当てられるものとして説明するが、本発明の実施はこれに限られるものではない。通常、GPU104における演算コアの割り当てポリシーはGPUドライバに依存するものであり、例えば単位画素について1コア等、適宜効率的な割り当てがなされてよい。
【0026】
S205で、GPU104は、符号化処理においてGPU104による処理が完了した中間データから出力用のデータを生成するデータ生成処理を実行する。
【0027】
本実施形態のPC100では、GPU104及びCPU101を用いて符号化処理を実行する。つまり、符号化処理の過程でGPU104により処理された、GPUメモリ105上の中間データは、CPU101がアクセス可能なRAM103に移動する必要がある。しかしながら、GPU104が中間データをRAM103に出力する場合、不図示のバスを介して転送される必要があるが、このときバスの転送帯域を占有してしまい、他の処理が遅延する可能性がある。例えばブロックが8×8画素で構成され、中間データであるブロック内の各データが16bitの値で構成される場合、1つのブロックについて16bit×8×8=1024bitの情報が出力されることになる。即ち、対象ピクチャの画素数にもよるが、効率化のために並列処理された複数のブロックそれぞれについて中間データが出力されると、ブロック数に応じた容量のデータが1フレームについて転送されることになる。
【0028】
このため、本実施形態のデータ生成処理では中間データをより少ない情報量で構成できるようにデータ変換を行う。なお、中間データは後述するように可変長符号化処理において可逆圧縮されるため、出力用データは中間データのデータ列を特定可能なように構成される。
【0029】
〈データ生成処理〉
ここで、本実施形態のGPU104が実行するデータ生成処理について、図3のフローチャートを用いて詳細を説明する。
【0030】
S301で、GPU104は、空間冗長性を除去した各ブロックに含まれるデータ(中間データ)を、後段の可逆圧縮の圧縮率が高くなる効率的な順序でスキャンを開始する。なお、本発明の実施においてスキャンの順序はこれに限られるものではなく、例えば図4に示されるような低い周波数成分(直流成分)から高い周波数成分への順序(所謂ジグザグスキャン)等、他の順序でスキャンが行われてもよい。また、以下の説明では1つのブロックに対応する中間データに対する処理を説明するが、複数のブロックについて本データ生成処理は並行して実行されてよい。
【0031】
S302で、GPU104は、スキャンした1データの値が非ゼロ値であるか否かを判断する。GPU104は、スキャンした1データの値が非ゼロ値であると判断した場合は処理をS303に移し、ゼロであると判断した場合は処理をS306に移す。
【0032】
S303で、GPU104は、スキャンした非ゼロ値のデータ数が閾値である28個を超えたか否かを判断する。
【0033】
本実施形態の符号化処理では、GPU104において複数のブロックについての直交変換処理や量子化処理等を並行して行うため、処理後の出力用データの出力も並列実行される。この場合、RAM103における書き込みアドレスの競合が起きることを回避するために、各ブロックに対応する出力用データの書き込み開始アドレスを、該出力用データのデータサイズを考慮して調整する必要がある。一方、CPU101が後述の可逆圧縮処理を行うためにRAM103に書き込まれた各ブロックのデータ(出力用データ)を読み出す際には、各ブロックのデータの読み出しアドレスが連続していることが好ましい。具体的には、RAM103からのデータ読み出しにおいて非連続のアドレス変更に係るプリチャージの発生等により読み出し遅延が生じうるため、各ブロックのデータは、CPU101における処理順にRAM103に書き込まれることが好ましい。
【0034】
このため、本実施形態のデータ生成処理では、出力用データが一定のデータサイズに収まることの判断基準として、中間データに含まれる非ゼロ値のデータ数の閾値を設けている。本実施形態のデータ生成処理において生成される出力用データは、図5に示されるように、ブロックのスキャン順におけるデータ列において各データが非ゼロ値であるか否かを示す後述のビット列と、非ゼロ値であるデータとで構成する。該出力用データは、含まれる2種類の情報から、中間データのスキャン順におけるデータ列を特定することが可能な構成となっている。つまり、本ステップでは、該出力用データのうち、後者の非ゼロ値であるデータの数が閾値を超えることによって書き込み開始アドレスの競合が生じることを回避するため、上述の判断を行う。
【0035】
GPU104は、スキャンした非ゼロ値のデータ数が閾値を超えると判断した場合は処理をS308に移し、閾値を超えないと判断した場合は処理をS304に移す。
【0036】
S304で、GPU104は、スキャンした1データが非ゼロ値であるか否かを示すビット列(特定情報)の対応ビットを1に設定する。ビット列は、中間データ内のデータ数分存在すればよく、例えばブロックが8×8=64画素で構成されていた場合、1bit×64個=64bitのデータ列で構成することができる。本ステップにおいてGPU104は、予めGPUメモリ105上に確保した64bitの領域のビットを、スキャンした順における対応位置のビットを選択して、値を設定することになる。つまり、本ステップと後述のS306の処理により、該ビット列は、先頭ビットから順に、各ビットが中間データ内のデータをスキャンした順における非ゼロ値であるか否かを示す値を列挙した形式となる。
【0037】
中間データには、一般的にその値がゼロであるデータが高い頻度で存在する。即ち、中間データ内の各データが16bitである場合は、値がゼロであるデータであったとしてもCPU101は16bit分のデータを読み出す必要がある。本実施形態のPC100では、符号化処理のCPU101に係る処理において、高い頻度で存在するゼロの読み出し回数を低減することで、CPU101における後述の可逆圧縮処理に要する時間を低減する。つまり、後述の可逆圧縮処理においてCPU101は、該ビット列を読み出すことで、のスキャン順に並べ替えられた中間データのデータ列において、各データが非ゼロ値であるか否かの情報を把握することができる。
【0038】
S305で、GPU104は、非ゼロ値であるスキャンした1データを、ビット列に続くデータとして確保した領域に追加で書き込む。即ち、ビット列を設けることで、後述の可逆圧縮処理におけるゼロであるデータの読み出しは排除することができるため、RAM103に書き込むべき非ゼロ値のみを後続の領域に追加する。
【0039】
一方、S302においてスキャンした1データが非ゼロ値でないと判断した場合、GPU104はS306で、ビット列の対応ビットを0に設定する。なお、対応ビットが予め0で初期化されている場合、本ステップが不要であることは容易に理解されよう。
【0040】
S307で、GPU104は、中間データに含まれる全てのデータをスキャンしたか否かを判断する。GPU104は、全てのデータをスキャンしたと判断した場合は本データ生成処理を完了し、未スキャンのデータが存在すると判断した場合は処理をS302に戻す。
【0041】
このように、S304乃至S307の処理を繰り返し行うことで、予め決められたデータサイズの出力用データを生成することができる。例えば、上述のように中間データ内に各々16bitの値を有するデータが8×8=64個存在する場合、S303の処理により非ゼロ値のデータ数が28個以下であることが保証されるため、出力用データは64bit+16bit×28=512bit分の固定長データとして構成することができる。即ち、後述のRAM103への書き込みにおいて、複数のブロックの出力用データを書き込みアドレスが連続するように書き込むことができる。
【0042】
一方、S303においてスキャンした非ゼロ値のデータ数が閾値を超えると判断した場合、GPU104はS308で、中間データの全てのデータを2で除して得られた新たな中間データについて、S301からの処理を行う。2で除する計算は、例えばビットシフト演算でよく、これによりデータ値が1、−1であったデータの数を低減することができる。なお、本ステップを1度実行しただけでは、中間データの非ゼロ値のデータ数が閾値以下に収まらない場合は、繰り返し本ステップの処理を実行すればよい。このようにデータ数の調整を行う場合、本ステップの実行回数、即ち2で除した回数が例えばビット列の先頭位置等に識別可能に含められればよい。
【0043】
なお、中間データの非ゼロ値のデータ数が閾値を超える場合、画質への影響度が低いと思われる、例えば+2、+1、−1、−2等のデータ値の絶対値が予め定められた閾値以下であるデータをゼロデータとみなすことで、非ゼロ値のデータ数の調整を行ってもよい。また、画質への影響度が低いと思われるデータをゼロとみなす該手法は、非ゼロ値のデータ数が閾値を超える場合に限らず実行されてもよい。
【0044】
このようにデータ生成処理を実行することで出力用データを生成した後、GPU104はS206で、GPUメモリ105に生成した各ブロックの出力用データをRAM103に転送して各ブロックに対応する開始アドレスから書き込む。
【0045】
S207で、CPU101は、RAM103に書き込まれた各ブロックの出力用データを読み出し、該データ中のビット列を参照しながら可逆圧縮処理を適用して、1フレームに係る符号化動画データを生成する。本ステップで行う可逆圧縮処理は、ハフマン符号化等の所謂エントロピー符号化(可変長符号化)処理である。CPU101は、本ステップの処理において出力用データから中間データのデータ列の構成を特定した上で、適切な符号を割り当てて圧縮処理を行う。
【0046】
S208で、CPU101は、対象動画データに符号化がなされていない異なるフレームが存在するか否かを判断する。CPU101は、対象動画データに符号化がなされていない後続フレームが存在すると判断した場合は処理をS202に移し、存在しないと判断した場合は本符号化処理を完了する。なお、本ステップにおける判断は一例であり、例えばGPU104とCPU101との処理がそれぞれ並行して行われている場合、本ステップの実行時には既に次のフレームについてGPU104の処理が開始していてもよい。このような場合は処理をS202に移すのではなく、CPU101は符号化処理のうちのGPU104に係る処理が完了するまで待機してS207の処理を実行するように構成されてよい。
【0047】
なお、本実施形態ではPC100におけるバスの転送帯域の占有を回避しつつ、CPU101のメモリ読み出しに要する時間を低減する好適な一態様について説明した。しかしながら、CPUとGPUとを用いた符号化処理の効率化はこれに限らず実現可能である。例えば、バスの転送帯域が広く、データ転送における問題が生じない場合は、ビット列に続く出力用データは非ゼロ値のデータのみではなく、中間データの全てのデータが含まれていてもよい。即ち、各データが非ゼロ値であるか否かの情報を示すビット列さえCPU101が把握できれば、読み出す必要がないゼロデータのアドレスを把握することができるため、メモリ読み出しに要する時間を低減することはできる。また例えば、値が所定の範囲(ゼロとみなしてよい範囲)に含まれるデータの、中間データのデータ列における位置が特定できれば、少なくともメモリ読み出しに係る処理時間を低減することができる。このため、ビット列とは異なる形式を有する情報がRAM103に書き込まれてもよい。
【0048】
またさらに、本実施形態ではCPU101とGPU104の各々が効率的に実行可能な処理の特性に応じて、符号化処理の各工程を分離して実行するものとして説明した。具体的には、所定の演算式で実行可能な簡単な演算を複数のブロックについて並列実行可能な処理(空間冗長性を排除する処理)は、並列計算が得意であるGPU104に割り当てた。また圧縮後のデータサイズが変動的である故に並列実行が困難である処理(可逆圧縮処理)は、ビット解析等の複雑なビット演算が得意であるCPU101に割り当てた。換言すれば、複雑なビット演算に処理時間を要するGPU104には該演算を行う処理をなるべく割り当てず、演算コアが少なく並列処理による効率化が見込めないCPU101には並列演算を行う処理をなるべく割り当てないようにした。しかしながら、本発明の実施はこのようなCPU101及びGPU104の特性に応じて切り分けられて実行されずとも、符号化処理の効率化は見込める。例えばGPU104においてビット演算に要する時間に比べて並列演算による効率化が見込める場合は、GPU104において中間データのランレングス符号化を行ったデータを出力用データとしてRAM103に書き込んでもよい。これにより、CPU101はメモリ読み出しに係る時間を短縮した上に、可逆圧縮に係る処理時間を短縮することも可能である。即ち、CPU101による処理において、中間データそのもののメモリ読み出しに係る時間よりも読み出し時間を短縮可能な出力用データをGPU104が生成することでも、符号化処理の効率化は実現可能である。
【0049】
以上説明したように、本実施形態の情報処理装置は、CPUとGPUとを用いることで符号化処理を効率化することができる。具体的には情報処理装置において、GPUは、符号化対象の画像を分割して得られた、所定の画素数を有する複数のブロックを取得し、各ブロックについて、空間冗長性を排除した中間ブロックを生成する。さらにGPUは、各中間ブロックのデータ列を解析し、該データ列における、値が所定の範囲に含まれるデータの位置を特定する特定情報を生成し、各ブロックの各々について、中間ブロックの少なくとも一部のデータ及び対応する特定情報を記憶装置に出力する。またCPUは、複数のブロックの各々について、対応する特定情報を参照し、記憶装置から該特定情報に対応する少なくとも一部のデータを読み出して圧縮処理を実行する。
【0050】
[その他の実施形態]
本発明に係る情報処理装置は、コンピュータを情報処理装置として機能させるプログラムによっても実現可能である。該プログラムは、コンピュータが読み取り可能な記録媒体に記録されることにより、あるいは電気通信回線を通じて、提供/配布することができる。
【0051】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
図1
図2
図3
図4
図5