説明

情報処理装置、情報処理方法

【課題】GPUにて連続的に実行される複数のエフェクト処理の変更に伴うGPUによる操作時間を短縮して全体的な効率の向上を図る。
【解決手段】ユーザより、画像データに対してかけるエフェクトの一部をキャンセルしたり、複数のエフェクトの実行順序を変更する指示が入力されたとき、CPUは、CPUメモリに保存されたエフェクト設定情報を変更し、変更されたエフェクト設定情報をもとに、初期化処理でGPUメモリに確保された入出力バッファをそのまま利用しつつ、それらの入出力バッファの接続情報のみを更新する。CPUは、入出力バッファの接続情報をもとに、GPUにて順次実行されるエフェクト毎の入力バッファおよび出力バッファのアドレス情報をGPUに通知する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、GPU(Graphics Processing Unit)などを用いて画像の処理を行う情報処理装置、情報処理方法に関する。
【背景技術】
【0002】
近年、汎用のコンピュータ・ハードウェアの高性能化・高機能化は目覚しく、以前は専用のハードウェアでのみ実装可能であった画像処理が、汎用のコンピュータ・ハードウェアを利用して行うことが可能となってきた。汎用のコンピュータ・ハードウェアのうち特にCPU(Central Processing Unit)の高速化、主記憶として用いられるRAM(Random Access Memory)の高速化は目覚しく、これにより大容量の画像データに対して複雑なエフェクト処理を実用的な時間で処理することが可能となった。
【0003】
また、並列演算処理に特化して設計された演算処理装置であるGPU(Graphics Processing Unit)は、画像処理のさらなる高速化を可能とするものである。GPUによる並列演算処理は、複数の演算ユニットに対して同じ命令を発行することで、各演算ユニットがそれぞれ独立して同じ命令を実行するというメカニズムによって実現されるのに対し、CPUでは複数の演算ユニットにそれぞれ異なる命令が発行されることで、各演算ユニットがそれぞれ異なる命令を実行する。このため、GPUは画像処理のように一部の演算結果が他の部分に影響しないような処理で優れた性能を発揮し、CPUは逆に逐次型処理に適したものと言える。
【0004】
また最近では、GPUを、画像処理のみならず、他の数値演算にも利用できるように設計されたGPGPU(General−Purpose computing on Graphics Processing Units)という技術分野も存在する。
【0005】
特許文献1には、GPUにデータのエフェクト処理を複数回実行させる際、システムメモリとGPUとの間でのエフェクト処理毎のデータの授受の回数を低減するために、GPUによる複数回のエフェクト処理をGPUメモリに設けられたバッファ間でのデータをやりとりを通じて実行させ、最終的なエフェクト処理の結果をCPUメモリに転送する事項が記載されている。また、CPUは、GPUに実行させる複数のエフェクトの種類と順序をGPUに通知することも記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−98911号公報(段落[0057]、[0068]、[0072])
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1に記載された技術のように、GPUにデータのエフェクト処理を複数回実行させる場合、GPUメモリにエフェクト処理の対象となるデータを保持するバッファと、エフェクト処理の結果のデータを保持するバッファをそれぞれのエフェクト毎に確保し(GPUメモリの初期化)、各エフェクトの実行順序に従って各バッファの接続関係を設定する必要がある。
【0008】
ところで、エフェクトの種類、数、実行順序など、エフェクト内容はユーザにより適宜変更され得る。エフェクト内容の変更は、エフェクトの数の増減時など、CPUメモリに確保すべきバッファの数の変更を伴う場合がある。この理由から、エフェクト内容の変更の都度、CPUメモリの初期化と各バッファの接続関係の設定を行うようにすると、複数のエフェクトのうちの1つをパスしたり、複数のエフェクトの実行順序だけを変更するなど軽微な変更によってもCPUメモリの初期化と各バッファの接続関係の設定などの操作時間が発生し、全体的な効率が低下するおそれがある。
【0009】
以上のような事情に鑑み、本発明の目的は、画像処理ユニットにて連続的に実行される複数のエフェクト処理の変更に伴う画像処理ユニットによる操作時間を短縮して全体的な効率の向上を図ることのできる情報処理装置、情報処理方法を提供することにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の一形態に係る情報処理装置は、画像の処理を実行可能な画像処理ユニットと、前記画像処理ユニットによる、処理毎の処理対象である画像データを保持可能な入力バッファおよび処理結果である画像データを保持可能な出力バッファを提供可能なメモリ部と、前記画像処理ユニットに実行させる複数の種類の処理および当該複数の処理の実行順序をユーザに選択させる入力部と、前記入力部を通してユーザにより選択された情報をもとに、前記メモリ部に前記処理毎の入力バッファおよび出力バッファを確保するとともに、これらのバッファ間の入出力の接続関係を設定し、前記設定された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知する制御部とを具備する。
【0011】
本発明によれば、画像データに対して画像処理ユニットにより複数の処理を連続してかける際、メモリ部上で各処理に割り当てられた入出力バッファ間で画像を入出力して複数の処理を連続して行うことで、画像処理ユニットと他の処理ユニットとの間での画像のやりとりを最小回数(2回)に抑えることができる。これにより、画像処理の高速化を図れる。また、本発明によれば、制御部が、メモリ部に確保された処理毎のバッファ間の入出力の接続関係を設定し、設定された接続関係をもとに、画像処理ユニットにて順次実行される処理毎の入力バッファおよび出力バッファのメモリ部でのそれぞれのアドレス情報を画像処理ユニットに通知するので、画像処理ユニットに実行させる処理の数を減らしたり、処理の実行順序を随時変更することができる。
【0012】
前記入力部は、前記画像処理ユニットに実行させる複数の種類の処理のうち一部の処理をキャンセルする指示をユーザより受け付けることが可能とされ、前記制御部は、前記入力された指示内容に従って前記バッファ間の入出力の接続関係を更新し、前記更新された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知することとしてもよい。
【0013】
また、前記入力部は、前記画像処理ユニットに実行させる複数の処理の実行順序の変更の指示をユーザより受け付けることが可能とされ、前記制御部は、前記入力された指示内容に従って前記バッファ間の入出力の接続関係を更新し、前記更新された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知するようにしてもよい。
【0014】
本発明の別の観点に基づく情報処理方法は、入力部が、画像の処理を実行可能な画像処理ユニットに実行させる複数の種類の処理および当該複数の処理の実行順序をユーザに選択させ、制御部が、前記入力部を通してユーザにより選択された情報をもとに、前記画像処理ユニットによる、処理毎の処理対象である画像データを保持可能な入力バッファおよび処理結果である画像データを保持可能な出力バッファを提供可能なメモリ部に前記処理毎の入力バッファおよび出力バッファを確保するとともに、これらのバッファ間の入出力の接続関係を設定し、前記設定された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知することとしたものである。
【発明の効果】
【0015】
本発明によれば、画像処理ユニットにて連続的に実行される複数のエフェクト処理の変更に伴う画像処理ユニットによる操作時間を短縮して全体的な効率の向上を図れる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施形態に係る情報処理装置の構成を示す図である。
【図2】編集環境画面の例を示す図である。
【図3】デフォーカスのパラメータを設定するためのエフェクトGUIウィンドウを表示した編集環境画面の例を示す図である。
【図4】CPU部とGPU部との間でのエフェクト実行制御に関するシーケンス図である。
【図5】図4のシーケンスにおけるCPUによるGPUメモリの初期化処理の流れを示すフローチャートである
【図6】図4のシーケンスにおけるCPUによるGPUエフェクトの実行制御の流れを示すフローチャートである。
【図7】図4のシーケンスにおけるGPUによるエフェクト処理の流れを示すフローチャートである。
【図8】各エフェクトの入出力バッファの接続関係の例を示す図である。
【図9】3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(B)がユーザからの指示でキャンセルされることによってエフェクト設定情報が変更された場合のCPU部とGPU部との間でのエフェクト実行制御に関するシーケンス図である。
【図10】エフェクト設定情報が変更された場合のCPUによるGPUエフェクトの実行制御の流れを示すフローチャートである。
【図11】更新された各エフェクトの入出力バッファの接続関係を示す図である。
【図12】3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(A)をキャンセルするようにエフェクトの数が変更された場合の各エフェクトの入出力バッファの接続関係を示す図である。
【図13】3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(C)をキャンセルするようにエフェクトの数が変更した場合の各エフェクトの入出力バッファの接続関係を示す図である。
【図14】3つのエフェクト(A)、エフェクト(B)、エフェクト(C)においてエフェクト(B)とエフェクト(C)の実行順序を入れ替えた場合の各エフェクトの入出力バッファの接続関係を示す図である。
【発明を実施するための形態】
【0017】
以下、図面を参照しながら、本発明の実施形態を説明する。
<第1の実施形態>
[情報処理装置の構成]
本実施形態は、CPU(Central Processing Unit)とGPU(Graphics Processing Unit)を搭載したコンピュータ上で、映像編集プログラムを実行させることにより、画像データに対して例えばエフェクトなどの画像処理を行うことのできる情報処理装置に関するものである。
【0018】
図1は、本発明の一実施形態に係る情報処理装置の構成を示す図である。
同図に示すように、この情報処理装置10は、CPU部11、GPU部12、表示インタフェース部14、操作入力インタフェース部15、記憶装置16、これらを相互に接続するバス17を備える。
【0019】
CPU部11は、CPU111(制御部)とメモリ(以下「CPUメモリ112」と記述する。)とを有する。CPU111は、CPUメモリ112に格納された映像編集プログラムに基づき映像編集のための演算処理およびGPU部12での画像データに対するエフェクト処理を制御する。CPU111は、操作入力インタフェース部15に接続された操作入力装置18を通じてユーザより入力された各種の指令を映像編集プログラムの動作に反映させることができる。
【0020】
GPU部12は、GPU121(画像処理ユニット)とメモリ(以下「GPUメモリ122」と記述する。)(メモリ部)とを有する。GPU121は、CPU111による制御のもと、CPUメモリ112から読み出された画像データを、バス17を通じてGPUメモリ122に設けられたバッファに取り込み、この画像データに対するエフェクト処理を、画像を区分するスレッド等の単位毎に並列に実行することができる。
【0021】
表示インタフェース部14は、表示装置19とのインタフェースであり、CPU1部11またはGPU部12よりエフェクトが施された画像データを受け取って描画処理を行い、描画データを表示装置19に供給する。
【0022】
操作入力インタフェース部15は、操作入力装置18とのインタフェースであり、操作入力装置18から入力されたユーザからのデータおよび指令をCPU111に供給する処理などを行う。
【0023】
記憶装置16は、編集前および編集後の動画を構成する各フレームの画像データを保存する。また、記憶装置16には映像編集プログラムも格納されており、この記憶装置16に格納された映像編集プログラムはCPU部11のCPUメモリ112にロードされ、CPU111により解釈されて実行される。
【0024】
[映像編集プログラムの構成]
映像編集プログラムは、映像編集メインプログラムと、エフェクト処理をCPU111に実行させるためのCPU用エフェクトプログラム、エフェクト処理をGPU121に実行させるためのGPU用エフェクトプログラムなどで構成される。CPU用エフェクトプログラムおよびGPU用エフェクトプログラムはそれぞれエフェクトの種類毎に用意されている。これらのエフェクトプログラムは、映像編集プログラムに対して個別に且つ選択的に接続が可能なプラグインとして提供されたものでもよい。
【0025】
映像編集メインプログラムは、エフェクト対象のフレーム、そのフレームの画像データに対して施すエフェクトの種類、そのエフェクト用のパラメータ、複数のエフェクトの実行順序などをユーザ選択させてエフェクト設定情報として入力するためのGUIプログラムを含む。ユーザは、このGUIプログラムをもとに表示装置19の画面に表示された編集環境において、操作入力装置18を使って上記のエフェクト設定情報を入力することができる。入力されたエフェクト設定情報はCPUメモリ112に設けられた所定の領域に保持される。
【0026】
なお、ユーザにより選択されたそれぞれエフェクトについて、CPU用エフェクトプログラムとGPU用エフェクトプログラムのどちらを採用するかは、画像処理の領域が画像の一部である全体であるかどうか、あるいはGPUメモリ122の消費率、CPU111の負荷などによって選択される。例えば、画像の一部に対する処理の場合にはCPU用エフェクトプログラムが、画像全体に対する処理である場合にはGPU用エフェクトプログラムが選択される。また、GPUメモリ122の消費率、CPU111の負荷などを考慮して、選択結果を修正することも行われる。
【0027】
ここで、GPU部12にて複数のエフェクト処理が連続して実行される場合を考える。この場合、GPU121は、GPUメモリ122にエフェクト毎に割り当てられた入出力バッファを用いて複数のエフェクト処理を連続的に実行する。このため、各エフェクトの入出力バッファの接続関係を管理する仕組みが必要となる。本実施形態では、映像編集プログラムが各エフェクトの入出力バッファの接続関係の管理をCPU111に実行させる。
【0028】
[本実施形態の情報処理装置の動作について]
次に、本実施形態の情報処理装置の動作を説明する。
動作の説明は、
1.エフェクト設定
2.GPUメモリの初期化処理
3.エフェクト実行
4.エフェクトの数、実行順序の変更
の順で行う。
【0029】
[1.エフェクト設定]
CPU111は操作入力装置18を使ってユーザより選択された
A.エフェクトの種類(1以上)
B.エフェクト毎のパラメータ
C.複数のエフェクトの実行順序
などのエフェクト設定情報をCPUメモリ112に保存する。
【0030】
これらのエフェクト設定情報をユーザに選択させるための具体例を説明する。
まず、CPU111は、ユーザからの指示に従って動画像におけるシーン選択のための情報を表示装置19に表示する。シーン選択のための情報とは、例えば、そのシーンを代表するフレーム画像の解像度を下げた画像データ(サムネイル画像)などである。シーン選択のための情報の中から、マウスなどの操作入力装置18を使ってエフェクトをかけたいシーンが選択されると、CPU111は、その選択されたシーンに属する1以上のフレームの画像データを記憶装置16からCPUメモリ112に設けられた所定のバッファに読み出す。続いてCPU111は、ユーザからの拡大/縮小率、フレームレートなどの出力条件の入力を受け付ける。CPU111は、CPUメモリ112のバッファに保持された画像データを、当該出力条件に従って出力するように表示インタフェース部14に依頼する。この結果、表示装置19の後述する編集環境画面に、出力条件に従って加工されたフレームの画像データがエフェクト対象の画像データとして表示される。
【0031】
次に、操作入力装置18を使ってユーザより編集開始の指示が入力される。CPU111は編集開始の指示を受けると、表示装置19の後述する編集環境画面に実行可能なエフェクト名のリストを表示する。このリストの中でユーザによって1つのエフェクト名が選択されると、その選択されたエフェクト名に対応するエフェクトプログラムが起動され、画像データに対するエフェクト処理が実行される。
【0032】
図2は編集環境画面40の例を示す図である。同図に示すように、この編集環境画面40には、出力画像表示ウィンドウ41、トラック表示ウィンドウ42、およびエフェクト候補リスト43などが表示される。出力画像表示ウィンドウ41は、出力条件に従って拡大/縮小されたフレームの画像データがエフェクトの対象画像として表示されたり、エフェクトの結果画像が表示されるウィンドウである。トラック表示ウィンドウ42は、ユーザにより選択されたシーンの一部に対応する連続する複数のフレームの画像データを同時に表示できるウィンドウである。このトラック表示ウィンドウ42において水平方向は時間の向きとなっている。時間の位置を選択するスライダー(図示せず)が操作入力装置18を使ってユーザによって右左水平方向に操作されることで、トラック表示ウィンドウ42に同時に表示される複数のフレームの画像データの時間位置が移動される。この切り替えを通じてユーザは選択したシーンを構成するすべてのフレームの画像データを見ることができる。また、ユーザは操作入力装置18を使って、トラック表示ウィンドウ42に表示された複数のフレームの画像データの中から、出力画像表示ウィンドウ41に表示させる1つのフレームの画像データを選択することができる。エフェクト候補リスト43は、出力画像表示ウィンドウ41に表示されたフレームの画像データにかけることのできるエフェクトの種類のリストである。ユーザは出力画像表示ウィンドウ41に表示されたフレームの画像データにかけたいエフェクトの種類をマウスなどの操作入力装置18を使って選択することができる。
【0033】
エフェクト候補リスト43で1つのエフェクト名が選択されると、CPU111は、その選択されたエフェクト名に関する各種のパラメータを設定するためのエフェクトGUIウィンドウを表示する。ユーザはマウス等の操作入力装置18を用いて、エフェクトGUIウィンドウにおいて項目毎のパラメータの調整を行うことができる。
【0034】
例として、エフェクトの種類としてデフォーカスが選択された場合を説明する。デフォーカスが選択されると、図3に示すように、編集環境画面40にデフォーカスのパラメータを設定するためのエフェクトGUIウィンドウ46が表示される。このデフォーカス用のエフェクトGUIウィンドウ46においてユーザはマウス等の操作入力装置18を用いて、ボタン操作によるアイリスの形状の選択、スライダー操作による半径、角度、曲率等のパラメータの調整を行うことができる。
【0035】
CPU111は、エフェクトGUIウィンドウ46においてユーザにより選択されたパラメータに従って、出力画像表示ウィンドウ41に表示されたフレームの画像データに対するエフェクト処理を実行する。このときエフェクト処理は、個々のパラメータの選択操作に対してリアルタイムに実行されて出力画像表示ウィンドウ41に表示されたフレームの画像データに反映されることで、項目毎に最適なパラメータを効率的に選択することができる。
【0036】
パラメータ調整が終了すると、ユーザは選択されたシーンを構成するすべてのフレームの画像データに対して、パラメータの調整結果を含むエフェクトの実行の指示を操作入力装置18を用いてCPU111に入力することができる。この指示は編集環境画面40に設けられた処理出力ボタンをクリックすることなどによって行われる。処理出力ボタンには、図2、図3に示すように、再生ボタン44と記録ボタン45とがある。再生ボタン44がユーザによって操作されると、ユーザによって選択されたフレームの画像データにかけられたパラメータの調整結果を含むエフェクトが、シーンを構成する他のフレームの画像データに対しても同様にかけられて、そのシーンに対応する動画が出力画像表示ウィンドウ41に出力される。ユーザは、この出力画像表示ウィンドウ41に表示された動画をみてエフェクトの結果をシーン全体を通して確認することができる。また、記録ボタン45がユーザによって操作されたときは、ユーザによって選択されたフレームの画像データにかけられたパラメータの調整結果を含むエフェクトが、シーンを構成する他のフレームの画像データに対しても同様にかけられて記憶装置16に書き込まれる。
【0037】
また、フレームの画像データに複数の種類のエフェクト処理を施す場合には、1つのエフェクトの選択とパラメータ調整が完了した後、続けて別の種類のエフェクトの選択とパラメータ調整の操作を繰り返せばよい。この場合、ユーザによるエフェクトの選択順がそのまま各エフェクトの実行順序として設定される。
【0038】
以上のような操作により、エフェクトの種類(1以上)、エフェクト毎のパラメータ、複数のエフェクトの実行順序がエフェクト設定情報として設定される。このエフェクト設定情報はCPUメモリ112の所定の領域に保存される。
【0039】
ここで、個々のフレームの画像データに対して、連続的に3回のエフェクト処理がGPU121によって行われるように設定された場合を想定して、以降の動作を説明する。なお、3回のエフェクト処理はすべて異なる種類のエフェクト処理である必要はない。
【0040】
以降の動作の説明は図4から図6のフローチャートを用いて行うこととする。
図4は、CPU部11とGPU部12との間でのエフェクト実行制御に関するシーケンス図である。
図5は、図4のシーケンスにおけるCPU111によるGPUメモリの初期化処理の流れを示すフローチャートである。
図6は、図4のシーケンスにおけるCPU111によるGPUエフェクトの実行制御の流れを示すフローチャートである。
図7は、図4のシーケンスにおけるGPU121によるエフェクト処理の流れを示すフローチャートである。
【0041】
[2.GPUメモリの初期化処理]
次に、上記のようにGPU121による複数のエフェクト処理が連続して実行されるように設定された場合のGPUメモリ121の初期化処理について説明する。
【0042】
CPU111は、映像編集プログラムに基づいて次のように制御を行う。
まず、CPU111はGPU部12を確保する(図4:S401/S401R、図5:S501)。これにより、CPU111はバス17を通じて接続されているGPU部12を認識し、GPUメモリ122の容量などの情報を取得する。
【0043】
ここでCPU111は、何らかの理由により、GPU部12の認識の失敗したり、GPUメモリ122の容量などの情報の取得に失敗した場合(図5:S502のNO)、その旨を表示するなど所定のエラー処理を行い(図5:S507)、映像編集プログラムを終了する。
【0044】
CPU111は、GPU部12の認識、GPUメモリ122の容量などの情報の取得に成功した場合(図5:S502のYES)、上記複数のエフェクト毎の入出力バッファの領域をGPUメモリ122内に確保することを試みる(図5:S503)。すなわち、CPU111は、CPUメモリ112に保存されたエフェクト設定情報をもとに、エフェクト毎の入出力バッファの領域を確保するための要求を生成してGPU121に送る(図4:S402)。GPU121は、この要求に応じてGPUメモリ122内にエフェクト毎の入出力バッファの領域を確保し、各入出力バッファのアドレス情報をCPU111に通知する(図4:S402R)。何らかの理由により各入出力バッファの確保に失敗した場合(図5:S504のNO)、CPU111は、その旨を表示するなど所定のエラー処理を行い(図5:S507)、映像編集プログラムを終了する。また、CPU111は、各入出力バッファの確保に成功した場合(図5:S504のYES)、これらの入出力バッファを初期化する(図4:S403/S403R、図5:S505)。
【0045】
続いて、CPU111は、CPUメモリ112に保存されたエフェクト設定情報をもとに、エフェクト毎の入出力バッファの接続情報を設定してCPUメモリ112に保存する(図5:S506)。エフェクト毎の入出力バッファの接続情報とは、それぞれのエフェクトがGPUメモリ122のどのアドレス(バッファ)から画像データを取得し、エフェクト処理の結果をGPUメモリ122のどのアドレス(バッファ)に書き出すかを示す情報である。
【0046】
図8は、GPU121により3つのエフェクト処理が連続して実行されるように設定された場合の各エフェクトの入出力バッファの接続関係の例を示す図である。
ここで、エフェクト(A)、エフェクト(B)、エフェクト(C)は連続して実行されるように設定されたものである。CPUメモリ112には、画像データの出力バッファ21−Oと入力バッファ21−Iがそれぞれ映像編集プログラムによって割り当てられ、出力バッファ21−Oにエフェクト対象の画像データが保存される。
【0047】
図8に示す各エフェクトの入出力バッファの接続関係は以下の通りである。
エフェクト(A)には入力バッファ31−Iと出力バッファ31−Oが割り当てられている。エフェクト(B)には入力バッファ32−Iと出力バッファ32−Oが割り当てられている。エフェクト(C)には入力バッファ33−Iと出力バッファ33−Oが割り当てられている。エフェクト(A)に割り当てられた入力バッファ31−Iには、CPUメモリ112に設けられた出力バッファ21−Oに保持された画像データが転送される。この入力バッファ31−Iに保持された画像データに対してGPU121によりエフェクト(A)の処理が実行され、その結果は出力バッファ31−Oに書き出される。出力バッファ31−Oは、エフェクト(B)において入力バッファ32−Iとして用いられる。この入力バッファ32−Iに保存された画像データに対してGPU121によりエフェクト(B)の処理が実行され、その結果は出力バッファ32−Oに書き出される。続いて、その出力バッファ32−Oはエフェクト(C)において入力バッファ33−Iとして用いられる。この入力バッファ33−Iに保存された画像データに対してGPU121によりエフェクト(C)の処理が実行され、その結果は出力バッファ33−Oに書き出される。そして出力バッファ33−Oに保持された画像データは、CPUメモリ112に割り当てられた入力バッファ21−Iに転送される。
【0048】
CPU111は、CPUメモリ112に保存されたエフェクト設定情報をもとに、上記のような各エフェクトの入出力バッファの接続関係を設定する。なお、CPUメモリ112に設けられた出力バッファ21−Oと入力バッファ21−Iは、エフェクト設定情報に拠らずに映像編集プログラムによって設定される。
【0049】
この後、エフェクト対象の画像データに対してGPU121にエフェクト(A)、エフェクト(B)、エフェクト(C)の各処理を実行させるための制御がCPU111によって次のようにして行われる。
【0050】
[3.エフェクト実行]
CPU111は、各バッファの接続関係の設定後、映像編集プログラムからのエフェクトの実行開始の指示を受けてエフェクト実行のためのサブルーチンを呼び出す。図6はこのエフェクト実行のためのサブルーチンのフローチャートである。
【0051】
CPU111は、映像編集プログラムから、エフェクト対象の画像データが保持されたCPUメモリ112上の出力バッファ21−Oのアドレスと、GPU部12からの戻りの画像データを保持するCPUメモリ112上の入力バッファ21−Oのアドレスを取得する(図4:S405、図6:S601)。
【0052】
次に、CPU111は、CPUメモリ112上の出力バッファ21−Oからエフェクト(A)に割り当てられた入力バッファ32−Iにエフェクト対象の画像データを転送する(図4:S406/S406R、図6:S602)。
【0053】
次に、CPU111は、CPUメモリ112に保存された各エフェクトの入出力バッファの接続関係から、エフェクト(A)に割り当てられた入出力バッファ31−I,31−Oのアドレス情報を抽出する(図6:S604)。続いて、CPU111は、CPUメモリ112に保存されたエフェクト設定情報の中からエフェクト(A)のパラメータを抽出する(図6:S605)。この後、CPU111は、エフェクト(A)のGPU用エフェクトプログラムを記憶装置16から読み出し、このGPU用エフェクトプログラムに、入出力バッファ31−I,31−Oのアドレス情報、エフェクト(A)のパラメータ、スレッド数、グリッド数などを引数として付加したエフェクト実行要求をGPU121に転送する(図4:S407、図6:S606)。
【0054】
図7に示すように、GPU121は、エフェクト(A)の実行要求を受けると(図7:S701)、引数として取得した入出力バッファ31−I,31−Oのアドレスをもとに、スレッド毎のアクセス先のアドレスをそれぞれ算出する(図7:S702)。この後、GPU121は、スレッドの単位で、それぞれのアクセス先として算出された入力バッファ31−I上のアドレスのデータに対して、引数として与えられたパラメータを参照しつつ、GPU用エフェクトプログラムに基づくエフェクト処理を並列に実行し、その結果をそれぞれの書き出し先として算出された出力バッファ31−O上のアドレスに書き出す(図7:S703)。この後、GPU121は、エフェクト(A)の処理が完了した旨をバス17を通じてCPU111に通知する(図4:S407R)。以上で、エフェクト(A)の処理が完了となる。
【0055】
CPU111は、GPU121よりエフェクト(A)の処理が完了したことの通知を受けると、次のエフェクト(B)の処理をGPU121に実行させる。すなわち、CPU111は、CPUメモリ112に保存された各エフェクトの入出力バッファの接続関係からエフェクト(B)に割り当てられた入出力バッファ32−I,32−Oのアドレス情報を抽出する(図6:S604)。続いて、CPU111は、CPUメモリ112に保存されたエフェクト設定情報の中からエフェクト(B)のパラメータを抽出する(図6:S605)。そしてCPU111は、エフェクト(B)のGPU用エフェクトプログラムを記憶装置16から読み出し、このGPU用エフェクトプログラムに、入出力バッファ32−I,32−Oの各アドレス情報、エフェクト(B)のパラメータ、スレッド数、グリッド数などを引数として付加したエフェクト実行要求をGPU121に転送する(図4:S408、図6:S606)。
【0056】
GPU121は、エフェクト(B)の実行要求を受けると(図7:S701)、引数として取得した入出力バッファ32−I,32−Oの各アドレス情報をもとに、スレッド毎のアクセス先のアドレスをそれぞれ算出する(図7:S702)。この後、GPU121は、スレッドの単位で、それぞれのアクセス先として算出された入力バッファ32−I上のアドレスのデータに対して、引数として与えられたパラメータを参照しつつ、GPU用エフェクトプログラムに基づくエフェクト処理を並列に実行し、その結果をそれぞれの書き出し先として算出された出力バッファ32−O上のアドレスに書き出す(図7:S703)。この後、GPU121は、エフェクト(B)の処理が完了した旨をバス17を通じてCPU111に通知する(図4:S408R)。以上で、エフェクト(B)の処理が完了となる。
【0057】
CPU111は、GPU121よりエフェクト(B)の処理が完了したことの通知を受けると、前記と同様に、エフェクト(C)の処理をGPU121に同様の制御を通じて実行させるためのエフェクト実行要求をGPU121に転送する(図4:S409、図6:S606)。すなわち、CPU111は、CPUメモリ112に保存された各エフェクトの入出力バッファの接続関係からエフェクト(C)に割り当てられた入出力バッファ33−I,33−Oのアドレス情報を抽出する(図6:S604)。続いて、CPU111は、CPUメモリ112に保存されたエフェクト設定情報の中からエフェクト(C)のパラメータを抽出する(図6:S605)。そしてCPU111は、エフェクト(C)のGPU用エフェクトプログラムを記憶装置16から読み出し、このGPU用エフェクトプログラムに、入出力バッファ33−I,33−Oのアドレス情報、エフェクト(C)のパラメータ、スレッド数、グリッド数などを引数として付加したエフェクト実行要求をGPU121に転送する(図4:S409、図6:S606)。
【0058】
GPU121は、このエフェクト実行要求を受けると、引数として取得した入出力バッファ33−I,33−Oの各アドレス情報をもとに、スレッド毎のアクセス先のアドレスをそれぞれ算出する(図7:S702)。この後、GPU121は、スレッドの単位で、それぞれのアクセス先として算出された入力バッファ33−I上のアドレスのデータに対して、引数として与えられたパラメータを参照しつつ、GPU用エフェクトプログラムに基づくエフェクト処理を並列に実行し、その結果をそれぞれの書き出し先として算出された出力バッファ33−O上のアドレスに書き出す(図7:S703)。この後、GPU121は、エフェクト(C)の処理が完了した旨をバス17を通じてCPU111に通知する(図4:S409R)。以上で、エフェクト(C)の処理が完了となる。
【0059】
CPU111は、エフェクト(C)の処理が完了したことの通知を受けると、出力バッファ33−Oに保持された画像データを、映像編集プログラムによって設定されたCPUメモリ112上の入力バッファ21−Iに取り込む(図4:S410/S410R、図6:S607)。CPUメモリ112上の入力バッファ21−Iに保持された画像データは記憶装置16に記録される。
【0060】
この後、CPU111は記憶装置16から次のフレームの画像データをCPUメモリ112の出力バッファ21−Oに読み込み、この出力バッファ21−Oからエフェクト(A)に割り当てられた入力バッファ31−Iに画像データをバス17を通じて転送する。以後、同様に、画像データに対してGPU部12で各エフェクト処理が施され、CPUメモリ112の入力バッファ21−Iに返ってくる。
【0061】
[4.エフェクトの数、実行順序の変更]
次に、各エフェクトの入出力バッファの接続関係が一度設定された後でエフェクトの数、エフェクトの実行順序を変更する場合の動作を説明する。エフェクトの数、エフェクトの実行順序の変更は、例えば、次のような目的で行われる。たとえば、1つのシーン内の複数のフレーム映像に対して連続的にエフェクト処理が行われているとき、CPU111はユーザからの指示に従ってエフェクト処理を停止させ、ユーザよりエフェクトの数、エフェクトの実行順序の変更内容を受け入れ、以降のフレームの画像データに対するエフェクト処理に変更内容を反映させる。
【0062】
なお、エフェクトの数、エフェクトの実行順序の変更は表示装置19の画面を通して行うことが可能である。例えば、CPU111は、キャンネルするエフェクトをユーザに選択させたり、エフェクトの実行順序の変更の指示をユーザに入力させるための変更操作画面を表示する。CPU111は、この変更操作画面上で操作入力装置18を使ってユーザより入力された変更の指示に従って、CPUメモリ112に保存されたエフェクト設定情報を変更する。
【0063】
図9は、3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(B)がユーザからの指示でキャンセルされることによってエフェクト設定情報が変更された場合のCPU部11とGPU部12との間でのエフェクト実行制御に関するシーケンス図である。
図10は、エフェクト設定情報が変更された場合のCPU111によるGPUエフェクトの実行制御の流れを示すフローチャートである。
【0064】
仮にフレーム1からフレーム300までの画像データをエフェクト対象の画像データとする。いまフレーム200の画像データに対するエフェクト処理の実行中に、ユーザよりエフェクト処理の停止の指示が入力されたとする。CPU111は、この指示を受けて、フレーム200のエフェクト処理が完了したところでエフェクト処理を停止させる。
【0065】
この後、ユーザより3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(B)をキャンセルするようにエフェクトの数を変更する要求が入力されたとする。CPU111は、この変更要求に応じて、CPUメモリ112に保存されたエフェクト設定情報を変更する(図9:S901、図10:S1001)。CPU111は、エフェクト設定情報が変更されると、この変更されたエフェクト設定情報をもとに、初期化処理でGPUメモリ122に確保された入出力バッファをそのまま利用しつつ、それらの入出力バッファの接続情報のみを更新する(図10:S1002)。この後、エフェクト実行のためのサブルーチン(図6)が実行される。
【0066】
図11は更新された各エフェクトの入出力バッファの接続関係を示す図である。同図に示すように、更新後は、エフェクト(A)に割り当てられた出力バッファ31−Oの画像データがエフェクト(C)に割り当てられた入力バッファ33−Iに転送されるように、出力バッファ31−Oと入力バッファ33−Iとの接続関係が設定される。
【0067】
CPU111は、フレーム201以降の画像データに対するエフェクト実行制御においては、更新された各エフェクトの入出力バッファの接続関係に基づいて各エフェクトの実行要求を生成する。したがって、エフェクト(C)のエフェクト実行要求時には、エフェクト(C)に割り当てられた入出力バッファ33−I,33−Oのアドレス情報ととともに、入力バッファ33−Iへの画像データの入力元である出力バッファ31−Oのアドレス情報がGPU121に通知される。これによりGPU121は、出力バッファ31−Oの画像データを入力バッファ33−Iに取り込み、この画像データに対してエフェクト処理を実行して、その結果を出力バッファ33−Oに書き出すように制御を行うことが可能となる。
【0068】
なお、複数のエフェクトのうち、キャンセルするエフェクトはどれでも自由に選択することができる。
図12は3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(A)をキャンセルするようにエフェクトの数が変更された場合の各エフェクトの入出力バッファの接続関係を示す図である。この場合には、CPUメモリ112の出力バッファ21−らに保持された画像データがバス17を通じてエフェクト(B)に割り当てられた入力バッファ32−Iに転送されるように、CPUメモリ112の出力バッファ21−Oと入力バッファ32−Iとが接続される。
【0069】
図13は3つのエフェクト(A)、エフェクト(B)、エフェクト(C)のうちエフェクト(C)をキャンセルするようにエフェクトの数が変更した場合の各エフェクトの入出力バッファの接続関係を示す図である。この場合には、エフェクト(B)に割り当てられた出力バッファ32−Oに保持された画像データがCPUメモリ112の入力バッファ21−に転送されるように、出力バッファ32−OとCPUメモリ112の入力バッファ21−Iとが接続される。
【0070】
また、図14は3つのエフェクト(A)、エフェクト(B)、エフェクト(C)においてエフェクト(B)とエフェクト(C)の実行順序を入れ替えた場合の各エフェクトの入出力バッファの接続関係を示す図である。このように、複数のエフェクトの実行順序を変更する場合も同様に、変更されたエフェクト設定情報をもとに、初期化処理でGPUメモリ122に確保された入出力バッファをそのまま利用しつつ、それらの入出力バッファの接続情報のみを変更すればよい。すなわち、CPU111は、エフェクト(A)に割り当てられた出力バッファ31−Oに保持された画像データが、エフェクト(C)に割り当てられた入力バッファ33−Iに転送されるように出力バッファ31−Oと入力バッファ33−Iとを接続する。また、CPU111は、エフェクト(C)に割り当てられた出力バッファ33−Oに保持された画像データが、エフェクト(B)に割り当てられた入力バッファ32−Iに転送されるように出力バッファ33−Oと入力バッファ32−Iとを接続する。さらに、CPU111は、エフェクト(B)に割り当てられた出力バッファ32−Oに保持された画像データがCPUメモリ112の入力バッファ21−Iに転送されるように、出力バッファ32−OとCPUメモリ112の入力バッファ21−Iとを接続する。その他の実行順序の変更の場合も同様に対応することができる。
【0071】
以上のように、本実施形態によれば、画像データに対してGPU121により複数のエフェクト処理を連続してかける際、GPUメモリ122上で各エフェクトに割り当てられた入出力バッファ間で画像データを入出力して複数のエフェクトを連続して行うことことで、CPUメモリ112とGPUメモリ122との間での画像データをやりとりを最小回数(2回)に抑えることができる。これにより、エフェクト処理の高速化を図れる。
また、本実施形態によれば、エフェクト毎の入出力バッファがGPUメモリ122に確保された後で、GPU121に実行させるエフェクトの数を減らしたり、エフェクトの実行順序を随時変更することができる。また、エフェクトの数の低減、エフェクトの実行順序の変更に際して、改めてGPUメモリ122の初期化処理によって必要な入出力バッファを確保しなおす必要がないので、エフェクトの数の低減、エフェクトの実行順序の変更を実際のエフェクト処理に速やかに反映させることができ、編集処理全体の効率化を期待できる。
【0072】
<変形例1>
上記の実施形態では、GPU121に1回のエフェクト処理を実行させる毎に、そのエフェクトに割り当てられた入出力バッファのアドレス情報をGPU121に転送することとしたが、これに限定されない。例えば、GPU121に実行させるすべてのエフェクトに割り当てられた各入出力バッファのアドレス情報を、初回のエフェクト処理の実行前、あるいはCPUメモリ112からGPUメモリ122にエフェクト対象の画像データが転送される前に、まとめてGPU121に通知してもよい。
【0073】
なお、本発明は以上説明した実施の形態には限定されるものではなく、本発明の技術思想の範囲内で種々の変形が可能である。
【符号の説明】
【0074】
10 情報処理装置
11 CPU部
12 GPU部
111 CPU
112 CPUメモリ
121 GPU
122 GPUメモリ

【特許請求の範囲】
【請求項1】
画像の処理を実行可能な画像処理ユニットと、
前記画像処理ユニットによる、処理毎の処理対象である画像データを保持可能な入力バッファおよび処理結果である画像データを保持可能な出力バッファを提供可能なメモリ部と、
前記画像処理ユニットに実行させる複数の種類の処理および当該複数の処理の実行順序をユーザに選択させる入力部と、
前記入力部を通してユーザにより選択された情報をもとに、前記メモリ部に前記処理毎の入力バッファおよび出力バッファを確保するとともに、これらのバッファ間の入出力の接続関係を設定し、前記設定された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知する制御部と
を具備する情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記入力部は、前記画像処理ユニットに実行させる複数の種類の処理のうち一部の処理をキャンセルする指示をユーザより受け付けることが可能とされ、
前記制御部は、前記入力された指示内容に従って前記バッファ間の入出力の接続関係を更新し、前記更新された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知する
情報処理装置。
【請求項3】
請求項1または2に記載の情報処理装置であって、
前記入力部は、前記画像処理ユニットに実行させる複数の処理の実行順序の変更の指示をユーザより受け付けることが可能とされ、
前記制御部は、前記入力された指示内容に従って前記バッファ間の入出力の接続関係を更新し、前記更新された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知する
情報処理装置。
【請求項4】
請求項1ないし3のいずれか1項に記載の情報処理装置であって、
前記画像処理ユニットが、画像の処理を当該画像を区分する単位毎に並列に実行可能なユニットである
情報処理装置。
【請求項5】
入力部が、画像の処理を実行可能な画像処理ユニットに実行させる複数の種類の処理および当該複数の処理の実行順序をユーザに選択させ、
制御部が、前記入力部を通してユーザにより選択された情報をもとに、前記画像処理ユニットによる、処理毎の処理対象である画像データを保持可能な入力バッファおよび処理結果である画像データを保持可能な出力バッファを提供可能なメモリ部に前記処理毎の入力バッファおよび出力バッファを確保するとともに、これらのバッファ間の入出力の接続関係を設定し、前記設定された接続関係をもとに、前記画像処理ユニットにて順次実行される処理毎の前記入力バッファおよび前記出力バッファの前記メモリ部でのそれぞれのアドレス情報を前記画像処理ユニットに通知する
情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−14279(P2012−14279A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−148192(P2010−148192)
【出願日】平成22年6月29日(2010.6.29)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】