IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人東北大学の特許一覧

特開2023-157778並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム
<図1>
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図1
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図2
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図3
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図4
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図5
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図6
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図7
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図8
  • 特開-並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023157778
(43)【公開日】2023-10-26
(54)【発明の名称】並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラム
(51)【国際特許分類】
   H04N 19/436 20140101AFI20231019BHJP
   H04N 19/51 20140101ALI20231019BHJP
【FI】
H04N19/436
H04N19/51
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022067899
(22)【出願日】2022-04-15
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】中村 健
(72)【発明者】
【氏名】小林 大祐
(72)【発明者】
【氏名】大森 優也
(72)【発明者】
【氏名】佐藤 雅之
(72)【発明者】
【氏名】岩崎 裕江
(72)【発明者】
【氏名】小林 広明
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159KK13
5C159MA05
5C159NN01
5C159UA02
5C159UA33
5C159UA37
(57)【要約】
【課題】性能を維持しつつ、チップ間の転送量を削減することができる。
【解決手段】入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ装置である。並列映像エンコーダ装置は、各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて管理テーブルを参照し、転送済みであれば自チップのメモリにread要求をし、転送中であれば隣接チップへの転送要求をせずに受信を待ち、未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、管理テーブルの状態を更新する。
【選択図】図5
【特許請求の範囲】
【請求項1】
入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ装置であって、
各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、
フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、
転送済みであれば自チップのメモリにread要求をし、
転送中であれば隣接チップへの転送要求をせずに受信を待ち、
未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する符号化処理部、
を含む並列映像エンコーダ装置。
【請求項2】
現フレームの符号化処理が開始される前に参照画像の一部を事前転送範囲に応じて事前に転送する事前転送部を更に含み、
前記符号化処理部は、現フレームの符号化処理が開始された後は、事前転送範囲の情報と前記管理テーブルの情報との両方に基づいて、転送の状態を判定する、請求項1に記載の並列映像エンコーダ装置。
【請求項3】
1つの参照フレームが複数の符号化フレームにわたって参照される場合は、前記管理テーブルを参照される間継続して利用し、当該参照フレームがこれ以上参照されないことが確認された時点で前記管理テーブルの全ブロックの値を初期化し、新たな参照フレームの前記管理テーブルとして利用する、請求項1又は請求項2に記載の並列映像エンコーダ装置。
【請求項4】
入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ処理方法であって、
各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、
フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、
転送済みであれば自チップのメモリにread要求をし、
転送中であれば隣接チップへの転送要求をせずに受信を待ち、
未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する、
処理をコンピュータに実行させる並列映像エンコーダ処理方法。
【請求項5】
入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ処理プログラムであって、
各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、
フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、
転送済みであれば自チップのメモリにread要求をし、
転送中であれば隣接チップへの転送要求をせずに受信を待ち、
未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する、
処理をコンピュータに実行させる並列映像エンコーダ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラムに関する。
【背景技術】
【0002】
HEVC(High Efficiency Video Codec)、VVC(Versatile Video Coding)、H.26xといった映像エンコーダの高解像度化への要求に対応するため、複数のエンコーダモジュールを用いた画面分割型の並列処理アーキテクチャがしばしば用いられる。この手法は古くはMPEG-2におけるHDTVエンコーダから近年のHEVCにおける8Kエンコーダに至るまで、複数の先行事例がある。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】M Ikeda, et al., “An MPEG-2 Video Encoder LSI with Scalability for HDTV based on Three-layer Cooperative," DATE’ 99: Design, automation and test in Europe Conference, Jan. 1999.
【非特許文献2】F. M. Sampaio, et al. “Hybrid Scratchpad Video Memory Architecture for Energy-Efficient Parallel HEVC” IEEE Transactions on Circuits and Systems for Video Technology, Vol.29, Issue 10, Oct. 2018
【発明の概要】
【発明が解決しようとする課題】
【0004】
映像符号化では各フレームで生成されるローカルデコード画像を次フレーム以降の符号化時に参照画像として用いる。画面分割による効率低下を招かないためには、図1に示すように分割境界を跨ぐ動き探索/動き補償を行うためにチップ間での参照画像の共有が必要となる(「/」は「又は」を意味する)。従来手法では、次フレーム以降で参照される可能性のあるローカルデコード画像の領域を全て、生成直後に隣接チップに事前に転送する方法が一般的である(例えば非特許文献1参照)。
【0005】
参照画像を事前に転送する従来手法では、映像によっては分割境界を跨ぐ動きが少ないことから、転送された参照画像の多くの部分が参照されずに廃棄されることがあり、必ずしも効率が良いとは言えなかった。また、必要とされる参照画像範囲を予測したうえで事前に転送する方法もあった(例えば非特許文献2参照)。しかし、予測が外れた時に参照画像が利用できず、符号化効率が低下する課題があった。
【0006】
開示の技術は、上記の点に鑑みてなされたものであり、性能を維持しつつ、チップ間の転送量を削減することができる並列映像エンコーダ装置、並列映像エンコーダ処理方法、及び並列映像エンコーダ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本開示の第1態様は、入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ装置であって、各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、転送済みであれば自チップのメモリにread要求をし、転送中であれば隣接チップへの転送要求をせずに受信を待ち、未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する符号化処理部、を含む。
【0008】
本開示の第2態様は、入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ処理方法であって、各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、転送済みであれば自チップのメモリにread要求をし、転送中であれば隣接チップへの転送要求をせずに受信を待ち、未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する、処理をコンピュータに実行させる。
【0009】
本開示の第3態様は、入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ処理プログラムであって、各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、転送済みであれば自チップのメモリにread要求をし、転送中であれば隣接チップへの転送要求をせずに受信を待ち、未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する、処理をコンピュータに実行させる。
【発明の効果】
【0010】
開示の技術によれば、性能を維持しつつ、チップ間の転送量を削減することができる。
【図面の簡単な説明】
【0011】
図1】分割境界を跨ぐ動き探索/動き補償を行うチップ間を模式的に示す図である。
図2】チップ間の即時転送を模式化した図である。
図3】エンコーダモジュールが持つ管理テーブルの一例を示す図である。
図4】並列映像エンコーダ装置のハードウェア構成を示すブロック図である。
図5】本実施形態の並列映像エンコーダ装置の機能的な構成を示すブロック図である。
図6】第1実施形態に係る並列映像エンコーダ装置によるフローチャート1の処理の流れを示すフローチャートである。
図7】第1実施形態に係る並列映像エンコーダ装置によるフローチャート2の処理の流れを示すフローチャートである。
図8】フレームの事前転送範囲を説明する図である。
図9】第2実施形態に係る並列映像エンコーダ装置によるフローチャート3の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、開示の技術の実施形態の一例を、図面を参照しつつ説明する。なお、各図面において同一又は等価な構成要素及び部分には同一の参照符号を付与している。また、図面の寸法比率は、説明の都合上誇張されており、実際の比率とは異なる場合がある。
【0013】
まず、本開示の各実施形態の技術の概要について説明する(以下、各実施形態に共通する事項について本実施形態と記載する)。本実施形態では、エンコーダモジュールをチップ単位とし、エンコーダモジュールの各々に管理テーブルを有する。本実施形態では、管理テーブルを用いて隣接チップに必要な参照画像を要求する即時転送を効率的に行うことで、性能を維持しつつチップ間データ転送量を効率的に削減する。図2は、チップ間の即時転送を模式化した図である。図2の自チップが着目するエンコーダモジュールを示し、上チップが隣接エンコーダモジュールを示している。本実施形態では、動き探索/動き補償の実行時に管理テーブルを用いる(図2中のtable 25E(以下、符号省略))。動き探索/動き補償は、ME/MC(Motion Estimation/Motion Compensation)と表記する。チップには、エンコーダモジュールとしての各種処理を実行するためのCPU(Central Processing Unit)21Eを備える。ME/MCに係る処理はCODEC 22Eを用いて実行される。参照画像データ自体は各チップのCache 23E又はDRAM(Dynamic Random Access Memory) 24Eに保存される(図2中の(R))。図2の(a1)~(a3)は管理テーブルで管理されるブロック単位を示し、(a1)は上領域、(a2)は自領域、(a3)は下領域を示し、上チップ、自チップ、下チップに対応する。なお参照画像の各ブロックのメモリ上の格納アドレスは隣接チップから転送されたデータも元々自チップにあるデータも含めて、ブロックの座標とフレーム番号から一意に決まるという前提である。特定の8x8画素ブロックが転送済みか否かの情報は各チップが該当ブロックを受信したか否かで判断することにより各チップに閉じて管理可能である。そのためチップ(モジュール)間で管理テーブルの情報をやりとりする必要はない。
【0014】
本実施形態では、図3に示すように、エンコーダモジュールは、参照画像の転送状態(自チップに転送済みか等)を8x8画素等のブロック単位で管理する管理テーブルを持ち、ブロックの状態に応じた処理を行う。(a1)上領域の色付き部分が自チップに転送済みのブロックである。転送済みの場合は、自チップのメモリにread要求を行う。ここでいうチップのメモリは、Cache 23E又はDRAM 24E(以下同様)である。未転送の場合は、隣接チップへの転送要求を行い、転送完了後、データを自チップのメモリに格納する。また、転送待ちの場合は、重複した転送要求を行わないように制御する。これにより帯域の小さなチップ間転送のデータ量を抑え、転送待ちによる遅延を抑制することができる。
【0015】
また、第1実施形態においては、参照される確率が高い領域の参照画像については、従来技術と同様に事前に転送しておくことで、バースト的なチップ間転送の増加を抑制し、転送遅延をより小さくすることが可能となる。
【0016】
本実施形態の技術により空いた帯域を他のデータ転送に割り当てることが可能となり、チップ間インタフェースの帯域削減、及びハードウェアコストの削減が可能となる。また本実施形態の技術は映像エンコーダにおいて、より効果を発揮するが、映像デコーダ装置にも適用が可能である。
【0017】
以下、本実施形態の構成について説明する。
【0018】
図4は、並列映像エンコーダ装置100のハードウェア構成を示すブロック図である。
【0019】
図4に示すように、並列映像エンコーダ装置100は、CPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、ストレージ14、入力部15、表示部16、通信インタフェース(I/F)17、及び複数のエンコーダモジュールとしてのチップ18(以下、単にチップと記載する)を有する。各構成は、バス19を介して相互に通信可能に接続されている。
【0020】
CPU11は、中央演算処理ユニットであり、各種プログラムを実行したり、各部を制御したりする。すなわち、CPU11は、ROM12又はストレージ14からプログラムを読み出し、RAM13を作業領域としてプログラムを実行する。CPU11は、ROM12又はストレージ14に記憶されているプログラムに従って、上記各構成の制御及び各種の演算処理を行う。本実施形態では、ROM12又はストレージ14には、並列映像エンコーダ処理プログラムが格納されている。
【0021】
ROM12は、各種プログラム及び各種データを格納する。RAM13は、作業領域として一時的にプログラム又はデータを記憶する。ストレージ14は、HDD(Hard Disk Drive)又はSSD(Solid State Drive)等の記憶装置により構成され、オペレーティングシステムを含む各種プログラム、及び各種データを格納する。
【0022】
入力部15は、マウス等のポインティングデバイス、及びキーボードを含み、各種の入力を行うために使用される。
【0023】
表示部16は、例えば、液晶ディスプレイであり、各種の情報を表示する。表示部16は、タッチパネル方式を採用して、入力部15として機能してもよい。
【0024】
通信インタフェース17は、端末等の他の機器と通信するためのインタフェースである。当該通信には、例えば、イーサネット(登録商標)若しくはFDDI等の有線通信の規格、又は、4G、5G、若しくはWi-Fi(登録商標)等の無線通信の規格が用いられる。
【0025】
[第1実施形態]
次に、第1実施形態に係る並列映像エンコーダ装置100の各機能構成について説明する。図5は、本実施形態の並列映像エンコーダ装置の機能的な構成を示すブロック図である。各機能構成は、CPU11がROM12又はストレージ14に記憶された並列映像エンコーダ処理プログラムを読み出し、RAM13に展開して実行することにより実現される。
【0026】
図5に示すように、並列映像エンコーダ装置100は、機能的には、事前転送部102と、符号化処理部110とを含んで構成されている。並列映像エンコーダ装置100ではこれらの機能的な処理部をそれぞれのエンコーダモジュール毎に有する。並列映像エンコーダ装置100では、各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態がブロック単位で管理される。
【0027】
事前転送部102は、現フレームの符号化処理が開始される前に参照画像の一部を事前転送範囲に応じて事前に転送しておく。事前転送部102の処理は、後述するフローチャート1において説明する。
【0028】
符号化処理部110は、フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて管理テーブルを参照して、転送の状態に応じた処理を行う。転送済みであれば自チップのメモリにread要求をする。転送中であれば隣接チップへの転送要求をせずに受信を待つ。未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、テーブル状態を更新する。
【0029】
また、第1実施形態では符号化処理部110は、現フレームの符号化処理が開始された後は、事前転送範囲の情報と管理テーブルの情報との両方に基づいて、転送の状態を判定する。
【0030】
また、符号化処理部110は、1つの参照フレームが複数の符号化フレームにわたって参照される場合は、管理テーブルを参照される間継続して利用し、当該参照フレームがこれ以上参照されないことが確認された時点で管理テーブルの全ブロックの値を初期化し、新たな参照フレームの管理テーブルとして利用する。
【0031】
次に、第1実施形態に係る並列映像エンコーダ装置100の作用について説明する。図6及び図7は、第1実施形態に係る並列映像エンコーダ装置100における並列映像エンコーダ処理の流れを示すフローチャートである。CPU11がROM12又はストレージ14から並列映像エンコーダ処理プログラムを読み出して、RAM13に展開して実行することにより、各エンコーダモジュールにおいて処理が実行される。第1実施形態では、図6に示すフローチャート1に従い事前転送を行った後、図7に示すフローチャート2に従い即時転送をする。フローチャート1の各処理は、各エンコーダモジュールのCPU21Eが、実行する処理である。図8は、フレームの事前転送範囲を説明する図である。フローチャート2は、各エンコーダモジュールのCPU21Eが、符号化処理部110として実行する、フレームに対するME/MC及び符号化処理(以下、符号化処理)である。
【0032】
フローチャート1では、フレーム(n1~n6)の順に処理していくことを例に説明する。ステップS1-1及びS1-2の事前転送に係る処理が、事前転送部102としての処理である。ステップS1-3~S1-5は符号化処理部110としての処理である。
【0033】
ステップS1-1でフレーム(n1)の符号化処理を実施する際に事前転送に係る処理を実行する。ステップS1-1において、CPU21Eは、現フレーム(n1)の符号化時に、参照フレーム(n0)に対する参照範囲をもとに、参照画像の一部のフレーム(n2)における事前転送範囲を決定する。ここでの参照範囲は、参照フレーム(n0)を参照画像とする符号化処理を行う際の範囲である。事前転送範囲は、例えば、分割領域毎に上下の分割境界から垂直方向にどの程度離れた画素までが参照されたかという履歴(参照範囲)に基づき事前転送の垂直画素幅を決定する、等すればよい。この場合は送信側から受信側のチップに対して、どの垂直範囲の参照画像データを転送したか、情報を伝達することを想定する。
【0034】
ステップS1-2で次のフレーム(n2)に移り、フレーム(n2)の符号化処理を実施する際に事前転送に係る処理を実行する。ステップS1-2において、CPU21Eは、現フレーム(n2)について、参照画像であるローカルデコード画像が生成された直後に、前のフレーム(n1)で決められた事前転送範囲に基づいて、上又は下側の分割画像を担当するチップに参照画像を転送する。
【0035】
ステップS1-3で次のフレーム(n3)に移り、フレーム(n2)の符号化処理を実施する。ステップS1-3において、CPU21Eは、現フレーム(n3,n4,n5,n6)について、参照フレーム(n2)を参照画像とし、事前転送範囲の情報と管理テーブルの情報とに基づいて、符号化処理を行う。符号化処理は、必要な参照画像を自チップのメモリに要求するか、隣接チップに要求するかを決定しながら行う。符号化処理は、図7のフローチャート2を参照して詳細を説明する。
【0036】
ステップS1-4において、CPU21Eは、ステップS1-3で用いた参照フレームについて、当該参照フレームへの参照がこれ以上ないか否かを判定する。判定は、Decode Picture Bufferサイズ等から閾値判定により確認すればよい。参照がない場合にはステップS1-5へ移行する。参照がある場合には、ステップS1-3に戻り、次のフレーム(nn)について符号化処理を実施する。
【0037】
ステップS1-5において、CPU21Eは、参照フレーム(n2)への参照がこれ以上ないことが確認された時点で管理テーブルの全ブロックの値を初期化し、新たな参照フレーム用の管理テーブルとして再利用する。以降、フレームがある場合には、フローチャート1のステップS1-1~S1-5の処理を再び実行する。
【0038】
次に図7のフローチャート2のフレームの符号化処理について説明する。
【0039】
ステップS2-1において、CPU21Eは、対象とするフレームを指定し、当該フレームの各CU(Coding Unit)の各符号化処理において、必要な参照フレームと参照範囲を決定する。ここでは、空間的・時間的に隣接する処理済みCUのME/MC処理結果及び符号化処理結果に基づいて、当該CUの動き探索方法や動き探索範囲を決定し、それに基づき必要な参照フレームと参照範囲を決定する。図8の例では、対象とするフレーム(n3,n4,n5,n6)について、参照フレーム(n2)が参照される。
【0040】
ステップS2-2において、CPU21Eは、参照範囲に含まれる8x8ブロック(x,y)全てについて、以下の処理対象に設定する。対象とするブロックを要求元MEブロックとする。
【0041】
ステップS2-3において、CPU21Eは、要求元MEブロックにおいて、同ブロックが事前転送範囲か否かを確認する。事前転送範囲は例えば8x8ブロックの垂直座標のみで判断できるものとする。事前転送範囲でない場合はステップS2-4へ移行し、事前転送範囲である場合はステップS2-5へ移行する。
【0042】
ステップS2-4において、CPU21Eは、事前転送の範囲外の場合に、続いて転送用I/Fにある管理テーブルのブロック(x,y)の情報を確認し、転送の状態を判定する。状態が転送済みの場合はステップS2-5へ移行する。状態が未転送の場合はステップS2-7へ移行する。状態が転送中の場合はステップS2-11へ移行する。
【0043】
ステップS2-5において、CPU21Eは、状態が転送済みの場合に要求元MEブロックでメモリにread要求する。
【0044】
ステップS2-6において、CPU21Eは、readが完了するのを待機し、read完了後に次のステップS2-14へ移行する。
【0045】
ステップS2-7において、CPU21Eは、状態が未転送の場合に転送用I/Fから隣接チップに転送要求し、ブロック(x,y)の状態を転送中に変更する。ステップS2-8で転送の完了を確認する。
【0046】
ステップS2-9において、CPU21Eは、転送完了後、受信データを要求元MEブロックに転送する。そしてステップS2-14へ移行する。また、一定時間後にステップS2-10を行う。
【0047】
ステップS2-10において、CPU21Eは、一定時間後、データをメモリにwriteしブロック(x,y)の状態を転送済みに変更する。
【0048】
ステップS2-11において、CPU21Eは、状態が転送中の場合に、転送用I/Fの転送待ちキューに要求情報を追加する。ステップS2-12で転送の完了を確認する。
【0049】
ステップS2-13において、CPU21Eは、転送完了を確認した後、要求元MEブロックに転送する。そしてステップS2-14へ移行する。
【0050】
ステップS2-14において、CPU21Eは、全ての8x8ブロックのデータが制限時間内に揃ったかを判定する。揃っている場合はステップS2-15へ移行し、揃っていない場合はステップS2-16へ移行する。
【0051】
ステップS2-15において、CPU21Eは、ME処理を行う。
【0052】
ステップS2-16において、CPU21Eは、揃っていない場合にME処理エラーとして他の符号化モードを選択する等の対処をする。
【0053】
ステップS2-17において、CPU21Eは、フレーム内の全てのCUについて、符号化処理が終了したか否かを判定する。終了した場合には処理を終了し、終了していない場合にはステップS2-1に戻って処理を繰り返す。
【0054】
以上説明したように第1実施形態の並列映像エンコーダ装置100によれば、性能を維持しつつ、チップ間の転送量を削減することができる。
【0055】
[第2実施形態]
第2実施形態では、第1実施形態のような事前転送は行わず、図9のフローチャート3に示す通りに即時転送をする。第1実施形態に比べてより実装が簡易になる。また、第2実施形態の並列映像エンコーダ装置100は機能的には、符号化処理部110を含み、事前転送部102は備えない。
【0056】
ステップS3-1において、CPU21Eは、対象とするフレームを指定し、当該フレームの各CU(Coding Unit)の各符号化処理において、必要な参照フレームと参照範囲を決定する。
【0057】
ステップS3-2において、CPU21Eは、参照範囲に含まれる8x8ブロック(x,y)全てについて、以下の処理対象に設定する。対象とするブロックを要求元MEブロックとする。
【0058】
ステップS3-4において、CPU21Eは、事前転送の範囲外の場合に、続いて転送用I/Fにある管理テーブルのブロック(x,y)の情報を確認し、転送の状態を判定する。状態が転送済みの場合はステップS3-5へ移行する。状態が未転送の場合はステップS3-7へ移行する。状態が転送中の場合はステップS3-11へ移行する。
【0059】
ステップS3-5において、CPU21Eは、状態が転送済みの場合に要求元MEブロックでメモリにread要求する。
【0060】
ステップS3-6において、CPU21Eは、readが完了するのを待機し、read完了後に次のステップS3-14へ移行する。
【0061】
ステップS3-7において、CPU21Eは、状態が未転送の場合に転送用I/Fから隣接チップに転送要求し、ブロック(x,y)の状態を転送中に変更する。ステップS3-8で転送の完了を確認する。
【0062】
ステップS3-9において、CPU21Eは、転送完了後、受信データをメモリにwriteすると同時に状態を転送済みに変更する。
【0063】
ステップS3-10において、CPU21Eは、要求元MEブロックに状態の変更を通知する。そして、ステップS3-5へ移行する。
【0064】
ステップS3-11において、CPU21Eは、状態が転送中の場合に、転送用I/Fの転送待ちキューに要求情報を追加する。ステップS3-12で転送の完了を確認する。
【0065】
ステップS3-13において、CPU21Eは、転送完了を確認した後、要求元MEに転送完了を通知する。そして、ステップS3-5へ移行する。
【0066】
ステップS3-14において、CPU21Eは、全ての8x8ブロックのデータが制限時間内に揃ったかを判定する。揃っている場合はステップS3-15へ移行し、揃っていない場合はステップS3-16へ移行する。
【0067】
ステップS3-15において、CPU21Eは、ME処理を行う。
【0068】
ステップS3-16において、CPU21Eは、揃っていない場合にME処理エラーとして他の符号化モードを選択する等の対処をする。
【0069】
ステップS3-17において、CPU21Eは、フレーム内の全てのCUについて、符号化処理が終了したか否かを判定する。終了した場合には処理を終了し、終了していない場合にはステップS3-1に戻って処理を繰り返す。
【0070】
以上説明したように第2実施形態の並列映像エンコーダ装置100によれば、性能を維持しつつ、簡易にチップ間の転送量を削減することができる。
【0071】
なお、上記各実施形態でCPUがソフトウェア(プログラム)を読み込んで実行した並列映像エンコーダ処理を、CPU以外の各種のプロセッサが実行してもよい。この場合のプロセッサとしては、FPGA(Field-Programmable Gate Array)等の製造後に回路構成を変更可能なPLD(Programmable Logic Device)、GPU(Graphics Processing Unit)、及びASIC(Application Specific Integrated Circuit)等の特定の処理を実行させるために専用に設計された回路構成を有するプロセッサである専用電気回路等が例示される。また、並列映像エンコーダ処理を、これらの各種のプロセッサのうちの1つで実行してもよいし、同種又は異種の2つ以上のプロセッサの組み合わせ(例えば、複数のFPGA、及びCPUとFPGAとの組み合わせ等)で実行してもよい。また、これらの各種のプロセッサのハードウェア的な構造は、より具体的には、半導体素子等の回路素子を組み合わせた電気回路である。
【0072】
また、上記各実施形態では、並列映像エンコーダ処理プログラムがストレージ14に予め記憶(インストール)されている態様を説明したが、これに限定されない。プログラムは、CD-ROM(Compact Disk Read Only Memory)、DVD-ROM(Digital Versatile Disk Read Only Memory)、及びUSB(Universal Serial Bus)メモリ等の非一時的(non-transitory)記憶媒体に記憶された形態で提供されてもよい。また、プログラムは、ネットワークを介して外部装置からダウンロードされる形態としてもよい。
【0073】
以上の実施形態に関し、更に以下の付記を開示する。
【0074】
(付記項1)
メモリと、
前記メモリに接続された少なくとも1つのプロセッサと、
を含み、
前記プロセッサは、
入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ処理装置であって、
各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、
フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、
転送済みであれば自チップのメモリにread要求をし、
転送中であれば隣接チップへの転送要求をせずに受信を待ち、
未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する、
ように構成されている並列映像エンコーダ装置。
【0075】
(付記項2)
入力画像を分割し複数のエンコーダモジュール間で参照画像を相互に転送する並列映像エンコーダ処理を実行するようにコンピュータによって実行可能なプログラムを記憶した非一時的記憶媒体であって、
各エンコーダモジュールが管理テーブルを有し、当該管理テーブルにおいて隣接エンコーダモジュールで生成された参照画像の転送状態をブロック単位で管理し、
フレームの符号化処理において、動き探索又は動き補償に必要な参照画像を要求する場合に、参照範囲に含まれる各ブロックについて前記管理テーブルを参照し、
転送済みであれば自チップのメモリにread要求をし、
転送中であれば隣接チップへの転送要求をせずに受信を待ち、
未転送であれば隣接チップへの転送要求を出し受信した後に自チップのメモリに格納し、前記管理テーブルの状態を更新する、
非一時的記憶媒体。
【符号の説明】
【0076】
100 並列映像エンコーダ装置
102 事前転送部
110 符号化処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9