JP5343703B2 - 復号処理装置、復号処理方法、およびプログラム - Google Patents

復号処理装置、復号処理方法、およびプログラム Download PDF

Info

Publication number
JP5343703B2
JP5343703B2 JP2009124180A JP2009124180A JP5343703B2 JP 5343703 B2 JP5343703 B2 JP 5343703B2 JP 2009124180 A JP2009124180 A JP 2009124180A JP 2009124180 A JP2009124180 A JP 2009124180A JP 5343703 B2 JP5343703 B2 JP 5343703B2
Authority
JP
Japan
Prior art keywords
processing
decoding
vertical
processing block
width
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009124180A
Other languages
English (en)
Other versions
JP2010273190A (ja
Inventor
俊 松浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2009124180A priority Critical patent/JP5343703B2/ja
Priority to US12/780,216 priority patent/US9179158B2/en
Priority to CN2010101812662A priority patent/CN101895746B/zh
Publication of JP2010273190A publication Critical patent/JP2010273190A/ja
Application granted granted Critical
Publication of JP5343703B2 publication Critical patent/JP5343703B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Description

この発明は、例えば、マクロブロックなどの予め決められた所定の処理ブロック単位で符号化された動画像データの復号処理を行う装置、当該装置において用いられる復号処理のための方法、プログラムに関する。
近年、MPEG−2(Moving Picture Experts Group phase 2)、MPEG−4(Moving Picture Experts Group phase 4)、H.264(MPEG-4 Advanced Video Coding)、マイクロソフト社が開発したVC−1などの動画像符号化方式が用いられるようになっている。
これらの動画像符号化方式でデータ圧縮(符号化)された動画像を利用する場合には、復号処理を行う。そして、上述したような動画像符号化方式でデータ圧縮された動画像データの動画像復号処理を、マルチプロセッサ上で負荷分散により並列化処理する場合、例えば、マクロブロックを最小処理単位として各プロセッサに分担させることになる。
ここで、マクロブロックは、図11に示すように、所定のピクチャ幅、ピクチャ高を有する1画面分(1フレーム分)の画像を、縦横が16ピクセルの小領域(正方形の画素ブロック)に分割した場合の当該小領域を意味する。
そして、MPEG−4、H.264、VC−1など近年の動画像符号化方式の場合には、目的とするマクロブロックを復号処理する場合、処理対象のマクロブロックの左、左上、上、右上の各マクロブロックの復号結果を参照することが規定されている。
例えば、図12に示すように、塗り潰して示した中央部分のマクロブロックが、処理対象のマクロブロックであるとする。この場合、当該処理対象のマクロブロックの画像データを復号するためには、その周囲の左、左上、上、右上の4つのマクロブロックの復号結果が必要になる。
このため、処理対象のマクロブロックの復号処理は、当該処理対象のマクロブロックの左、左上、上、右上の少なくとも4つのマクロブロックの復号処理が終了してから開始しなければならない。
逆に言えば、上述したようなマクロブロックの処理順序関係さえ保たれていれば、どのようなマクロブロック⇔プロセッサ分担をしても矛盾なく復号処理できる。すなわち、マクロブロックの処理順序関係さえ保たれていれば、どのプロセッサがどのような順番でどのマクロブロックを処理するかは自由である。
上述のような状況下において、種々の復号処理に関する方式が開発され提案されている。例えば、後に記す特許文献1、2には、各マクロブロックの処理状態(実行中・処理完了など)を管理して走査しながら(可能であれば並列に)マクロブロック処理を行っていく仕組みが開示されている。
具体的に、特許文献1、2では、図13に示すように、あるマクロブロックに対して1マクロブロック行下のマクロブロック行で、2つ左のマクロブロックを同時に処理するように並列化している。
つまり、図13において、プロセッサ1、2、3が示すように、ピクチャ幅分の1マクロブロック行をプロセッサひとつで担当し、ひとつ下の1マクロブロック行は別のプロセッサが担当している。
各プロセッサ1、2、3は、1マクロブロック行について左から順番に処理を行うようにするとともに、1つ上のマクロブロック行に対して、2マクロブロック分遅れたタイミングで処理を行うようにしている。
また、後に記す特許文献3では、イントラマクロブロックとインターマクロブロックとの間に依存関係がないという点に注目し、1マクロブロック行をインターマクロブロックの直前で区切ってプロセッサ分担の境界を決めて復号処理を行うことが開示されている。
また、後に記す特許文献4では、用いるデコーダの数に応じて画面を横に分割(スライス)し、これを複数のデコーダで分担して処理する方式が記載されている。ここで画面横に分割とは、画面の垂直方向に複数の領域に分割することを意味している。
特開2006−129284号公報 特開2006−129285号公報 特開2008−072647号公報 特開2006−319944号公報
ところで、MPEG−4、H.264、VC−1等の動画像符号化方式で符号化された動画像データを復号する場合に、実行効率を上げるためには以下に示す(a)〜(c)の問題点を考慮しなければならない。
すなわち、
(a)異なるプロセッサに割り当てられたマクロブロック間の順序関係により発生する、プロセッサの待ち時間
(b)マクロブロックの処理順序を正しく制御するための仕組みの複雑度
(c)参照するマクロブロックの処理結果を通信する必要があるので、その通信頻度とデータ転送のコスト
についてである。
上述した特許文献1、2に記載された技術の場合、各マクロブロックの処理状態が管理されるので、上述の(a)の問題については効果的に解消することができる。しかしながら、仕組みが複雑になることが懸念され、上述の(b)の問題が十分に解消できないとの指摘がある。
また、上述した特許文献1、2に記載された技術の場合、マクロブロック単位に復号処理を行う複数のプロセッサ間で、上のマクロブロック行の処理結果を通信する必要が生じる。この通信は1マクロブロックごとに行うというように、高い頻度で行わなければならない。また一般的に、プロセッサ間の通信は、プロセッサから離れた遅いメモリ(2次キャッシュメモリなど)を介して行う必要がある。このため、上述した(c)の問題が十分に解消できないとの指摘がある。
そして、上述した特許文献3に記載された技術の場合、その仕組みが比較的に簡単であるので、上述した(a)、(b)、(c)の問題を効果的に解消できるようにも思える。しかし、特許文献3に記載された技術の場合、イントラマクロブロックやインターマクロブロックの発生の頻度等は異なるので、入力されるストリームによって並列度がまちまちになるか、そもそも全く並列化できないケースさえ考えられる。このため、復号処理の実行効率を向上させることができない場合もあると考えられる。
また、上述した特許文献4に記載された技術の場合には、上述もしたように、画面を横に分割しているが、これは1マクロブロック行が必ず1スライスとなるMPEG−2にしか適用できない。
MPEG−4、H.264、VC−1にもスライスは存在し、スライスをまたぐマクロブロック間には依存関係がないので、スライス境界をプロセッサ分担の境界とすることも考えられる。しかし、上述した引用文献3の場合と同様に、入力ストリームによっては全く並列化できないケースがある。さらにピクチャ単位で考えた場合、Iピクチャ以外は動き補償による依存関係があるため、並列化は容易ではない。
このように、従来提案されている種々の復号処理の方式は、上述した(a)、(b)、(c)のいずれかの問題を解決することができず、復号処理の実行効率を十分に上げることができない場合があると考えられる。
以上のことに鑑み、この発明は、符号化された動画像データの復号処理の実行効率を安定に十分高くするため、上述した(a)、(b)、(c)の問題を全てクリアーできるようにすることを目的とする。
上記課題を解決するため、請求項1に記載の発明の復号処理装置は、
予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段と、
符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、前記複数の復号処理手段の数に応じ、前記処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配手段と、
前記複数の復号処理手段からの復号された動画像データの供給を受けて、1画面分の画像データを形成する形成手段と
を備える。
この請求項1に記載の発明の復号処理装置によれば、分配手段により、これに供給された動画像データは、復号処理手段の数に応じて、処理ブロックを最小単位として画面を縦の帯状部分に分割される。この分割されたそれぞれの縦の帯状部分に属する動画像データが、縦の帯状部分毎に異なる復号処理手段に分配される。
分配手段により複数の復号処理手段に分配された動画像データは、復号処理手段のそれぞれにおいて、予め決められた処理ブロック単位に復号処理がなされて画素データが復元され、これが形成手段に供給される。そして、形成手段により、データ圧縮前の元の1画面分の画像データが復元するようにされる。
このように、1画面分(1フレーム分)の画像データを、画面の縦の帯状部分に分割し、縦の帯状部分毎に異なる復号処理手段に復号処理を分担させる。これにより、縦の帯状部分の左端部や右端部の処理で、他の縦の帯状部分に属する処理ブロックの復号処理結果が必要になっても、その処理結果は、隣接する縦の帯状部分を処理する他の復号処理手段で得られるようにされる。したがって、復号処理手段における処理で待ち時間が発生することがないようにされる。
また、縦の帯状部分の左端部と右端部において、隣接する縦の帯状部分を担当する復号処理装置との間における処理結果の送受を考慮すればよいので、処理ブロックの処理順序を比較的に簡単に制御することができる。
また、復号処理結果の送受は、縦の帯状部分の左端部と右端部とにおいてのみ発生するので、復号処理手段間の復号処理結果の通信を少なくすることができ、データの転送のコストも低減させることができる。
すなわち、復号処理手段における待ち時間を発生させないようにすることができ、復号処理の処理順序の制御のために複雑な仕組みを設ける必要も無く、復号処理手段間のデータ通信も必要最小限度に押さえることができる。したがって、全体として効率的に復号処理を行うことができるようにされる。
この発明によれば、複数の復号処理手段間において、処理の待ち時間を発生させることが無いようにすることができる。
また、複数の復号処理手段間における依存性を低減させ、処理ブロックの処理順序を簡単に正しく制御することができる。
また、複数の復号処理手段間において、復号処理結果の通信(送受信)の頻度を低減させ、データ通信コストを低減させることができる。
この発明の一実施の形態が適用された復号処理装置の構成例を説明するためのブロック図である。 ビットストリーム解析部1において行われる画像データの分配処理を説明するための図である。 ビットストリーム解析部1において行われる画像データの分配処理を説明するための図である。 ビットストリーム解析部1で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。 ビットストリーム解析部1で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。 ビットストリーム解析部1で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。 復号処理プロセッサ2(0)〜2(N−1)のそれぞれにおいて行われる割り当てられた縦の帯状部分の復号処理を説明するためのフローチャートである。 図7のステップS3で行われるマクロブロック単位の復号処理を説明するためのフローチャートである。 図1に示した復号処理装置において、隣接する縦の帯状部分を処理する復号処理プロセッサ間における復号処理結果の送受の態様を説明するための図である。 復号処理プロセッサ2(0)〜2(N−1)の復号処理の並列化を説明するための図である。 画面とマクロブロックとの関係を説明するための図である。 マクロブロック単位に復号処理を行う場合に復号結果を参照する周囲のマクロブロックについて説明するための図である。 画面をスライスして復号処理を行う場合の従来の一例について説明するための図である。
以下、図を参照しながらこの発明による装置、方法、プログラムの一実施の形態について説明する。
[実施の形態の概要]
以下に説明する実施の形態の復号処理装置は、この発明の装置、方法、プログラムの一実施の形態が適用されたものである。そして、この実施の形態の復号処理装置は、例えば、MPEG−4、H.264、VC−1など近年の動画像符号化方式により符号化された動画像データの復号処理を行うことができるものである。
ここで、この実施の形態の復号処理装置の概要について説明する。この実施の形態の復号処理装置は、マクロブロック(mb)単位で動画像データの復号処理を行う装置であり、並列化のために複数の復号処理プロセッサ(復号処理ユニット)を備えている。
そして、この実施の形態の復号処理装置は、符号化された動画像データが形成する各画面を縦の帯状部分(帯状領域)に分割し、各縦の帯状部分に属するマクロブロック全てを復号処理プロセッサひとつあたりの処理分担とする手法をとっている。なお、縦の帯状部分は、画面を分割することにより形成した分割部分ということができる。
各復号処理プロセッサは、担当する縦の帯状部分の左上端マクロブロックから右方向へ、そして下方向の次のマクロブロック行へと進みながら、マクロブロック単位の復号処理を行う。
MPEG−4、H.264、VC−1など近年の動画像符号化フォーマットは、図12を用いて上述もしたように、復号処理対象のマクロブロックに対して、左・左上・上・右上のマクロブロックの復号処理結果を参照することが規定されている。
これに対応するために、各復号処理プロセッサが各マクロブロック行において、
(1)縦の帯状部分の左端マクロブロックの復号処理前には、左隣の縦の帯状部分を処理する復号処理プロセッサから左マクロブロックの処理結果を受信する。
(2)縦の帯状部分の左端マクロブロックの復号処理後には、その処理結果を左隣の縦の帯状部分を処理する復号処理プロセッサに送信する。
(3)縦の帯状部分の右端マクロブロックの復号処理前には、右隣の縦の帯状部分を処理する復号処理プロセッサから右上マクロブロックの処理結果を受信する。
(4)縦の帯状部分の右端マクロブロックの復号処理後には、その処理結果を右隣の縦の帯状部分を処理する復号処理プロセッサに送信する。
と言う処理を行う。
また、復号処理プロセッサ間における復号処理結果の送受信(通信処理)は、バッファを介したブロッキングアクセスによって行う手法をとる。
つまり、他のマクロブロックの復号処理の結果を受信しようとする復号処理プロセッサは、バッファが空である間は待機する。また、マクロブロックの復号処理の結果を送信しようとする復号処理プロセッサは、バッファが満杯である間は待機する。
この場合、送信されてバッファに一時記憶されたデータ(復号処理の結果)は、他の復号処理プロセッサによって受信するようにされた場合に、FIFO(First In First Out)方式で順に取り除かれる(読み出される)。なお、バッファの記憶容量は、通信する1マクロブロックの復号処理結果のサイズよりも大きいものとする。
さらに、この実施の形態の復号処理装置においては、復号処理プロセッサ毎に、1マクロブロック行ずつ階段状にずれた状態で、各縦の帯状部分の復号処理を並列実行する手法をとる。
具体的には、画面の左端の縦の帯状部分を担当する復号処理プロセッサが、上端側の1マクロブロック行から復号処理を開始し、2マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサが上端側の1マクロブロック行目の処理を開始する。
さらに、画面の左端の縦の帯状部分を担当する復号処理プロセッサが、上端側から3マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサが2マクロブロック行目の処理を開始する。
また、さらに右隣の縦の帯状部分を担当する復号処理プロセッサが1マクロブロック行目の処理を開始するというように、それぞれの縦の帯状部分毎に、処理するマクロブロック行が階段上に異なるようにされる。
このように構成することによって、通常、異なる復号処理プロセッサに割り当てられたマクロブロック間の順序関係により発生する可能性のある復号処理プロセッサの待ち時間を発生させないようにしている。
さらに、マクロブロックの処理順序を正しく制御するための仕組みをできるだけ簡単なものとなるようにしている。具体的には、上述もしたように、復号処理プロセッサ間における復号処理結果の送受信を、バッファを介したブロッキングアクセスによって行うことにより実現している。
さらに、画面縦の帯状部分に分割し、各縦の帯状部分を異なる復号処理プロセッサプロセッサに割り当てているので、各縦の帯状部分の左端部と右端部とでしか他の復号処理プロセッサとの間でデータの送受を行わないようにすることができる。
これにより、他の復号処理プロセッサ間でのマクロブロックの復号処理結果の送受のための通信頻度を低減し、データ転送のコストを低下させることを実現している。以下、この実施の形態の復号処理装置について具体的に説明する。
[復号処理装置の構成例]
図1は、この実施の形態の復号処理装置の構成例を説明するためのブロック図である。図1に示すように、この実施の形態の復号処理装置は、ビットストリーム解析部1と、複数の復号処理プロセッサ2(0)、2(1)、…2(N−1)とを備えている。
また、各復号処理プロセッサ間には、第1の送受信バッファ3(0)、3(1)、…、3(N−2)と、第2の送受信バッファ4(0)、4(1)、…、4(N−2)と、フレームメモリ5とを備えている。
ビットストリーム解析部1は、詳しくは後述するが、ビットストリームの供給を受けて、これを複数の部分に分割し、後段の複数の復号処理プロセッサ2(0)、2(1)、…2(N−1)に分配する分配手段としての機能を実現するものである。
復号処理プロセッサ2(0)、2(1)、…2(N−1)のそれぞれは、マクロブロック単位に符号化された動画像データの復号処理を行う復号処理手段としての機能を実現するものである。
また、フレームメモリ5は、複数の復号処理プロセッサ2(0)、2(1)、…2(N−1)からの復号された画像データの供給を受けて、1画面(1ピクチャ(1フレーム))の画像データを形成する形成手段としての機能を実現するものである。
そして、ビットストリーム解析部1は、外部から符号化された動画像データであるビットストリームの供給を受ける。ここで、ビットストリームの供給元は、例えば、符号化されて送信されてくる放送信号を受信して復調するチューナ部や、符号化されてDVD(Digital Versatile Disc)等の記録媒体に記録されているデジタルコンテンツを読み出して再生する再生処理部などである。
ビットストリームはエントロピー符号化されているので、ビットストリーム解析部1は、これに供給されるビットストリームについて、用いられている動画符号化規格にしたがって、エントロピー復号して行く。
エントロピー復号の過程で、復号対象の動画像全体、あるいは、ピクチャ(画面)全体に関するパラメータを取得した場合には、ビットストリーム解析部1は、これを後段の各復号処理プロセッサ2(0)〜2(N−1)に対して区別無く出力する。ここで取得されるパラメータとしては、例えば、DCT(Discrete Cosine Transform)係数や動きベクトルなどである。
そして、ビットストリーム解析部1は、1ピクチャ(1画面)分のマクロブロックデータを取得する。この後、ビットストリーム解析部1は、1ピクチャ(1画面)を所定の方式に従って縦の複数の帯状部分に分割する。ここで、縦の複数の帯状部分は、詳しくは後述もするが、図2に示すように、画面を水平方向に複数に分割することによって、縦の複数の帯状部分に分割するようにしている。
そして、ビットストリーム解析部1は、分割して形成した各縦の帯状部分に属するマクロブロックデータを縦の帯状部分毎に決まる復号処理プロセッサ2(0)〜2(N−1)に分配する。ビットストリーム解析部1は、このようなマクロブロックデータの分配処理を、ビットストリームに含まれるピクチャ(画面)分繰り返す。
このように、ビットストリーム解析部1は、1ピクチャ(1画面)を所定の方式に従って複数の縦の帯状部分に分割し、各縦の帯状部分に属するマクロブロックデータを縦の帯状部分毎に決まる復号処理プロセッサ2(0)〜2(N−1)に分配する。
なお、ビットストリーム解析部1において、マクロブロックデータの復号処理は、エントロピー復号を間違いなく処理する程度の最低限の復号を行えばよい。たとえば、DCT係数に対する逆DCT処理を施す必要はない。これらのエントロピー復号に依存しない復号処理は復号処理プロセッサ2(0)〜2(N−1)で行えばよい。
そして、復号処理プロセッサ2(0)〜2(N−1)のそれぞれでは、ビットストリーム解析部1からのマクロブロックデータについて、フレームメモリ5からのリファレンスピクチャをも参照して、マクロブロック単位に最終的な復号処理を行う。
具体的に、復号処理プロセッサ2(0)〜2(N−1)のそれぞれでは、逆ジグザグ変換、逆量子化、逆直交変換(含むオーバーラップスムージングフィルタ)、画面内予測(含むAC/DC予測)等の処理が行われる。
さらに、復号処理プロセッサ2(0)〜2(N−1)のそれぞれでは、動きベクトル予測、動き補償(含む重みつき予測、レンジリダクション、インテンシティ補償)、デブロッキングフィルタ等の処理も行われる。
そして、上述もしたように、ビットストリーム解析部1は、1画面(1ピクチャ)毎に、縦の帯状部分に分割し、各縦の帯状部分のマクロブロックデータを異なる復号処理プロセッサに割り当てている。そして、復号処理に当たっては、図12に示したように、処理対象のマクロブロックの左、左上、上、右上のマクロブロックの復号結果も必要になる。
このため、復号処理プロセッサ2(0)〜2(N−1)のそれぞれでは、処理対象の縦の帯状部分の左端部及び右端部のマクロブロックを処理する場合には、隣接する復号処理プロセッサとの間でデータの送受を行う必要が生じる。
そこで、各縦の帯状部分の左端部及び右端部のマクロブロックを処理する場合に、隣接する復号処理プロセッサとの間でデータの送受を行う場合には、各復号処理プロセッサ間に設けられた第1のバッファ3、第2のバッファ4を介してデータの送受を行う。
すなわち、図1において、第1のバッファ3(0)〜3(N−1)は、復号処理プロセッサ3(i)から復号処理プロセッサ3(i+1)へのデータ転送を行うためのバッファリングモジュールである。なお、変数iは、0〜N−2までの整数である。
同様に、第2のバッファ4(0)〜(N−1)は、復号処理プロセッサ4(i+1)から復号処理プロセッサ4(i)へのデータ転送を行うためのバッファリングモジュールである。なお、変数iは、0〜N−2までの整数である。
第1のバッファ3(0)〜3(N−2)及び第2のバッファ(0)〜4(N−2)へのアクセスはブロッキングアクセスである。
すなわち、復号処理プロセッサ2(i)が、第1のバッファ3(i−1)や第2のバッファ4(i)からデータの読み出しを行う場合、もし当該バッファが空であれば、当該バッファにデータが入るまで復号処理プロセッサ2(i)は待機する。
同様に、復号処理プロセッサ2(i)が、第2のバッファ4(i−1)や第1のバッファ3(i)にデータの書き込みを行う場合、もし当該バッファが満杯であれば、当該場ファイルに空き領域ができるまで復号処理プロセッサ2(i)は待機させられる。この場合、バッファから読み出されたデータは、受信によりバッファから取り除かれることにより、バッファの空き領域が増える構成になっている。
このように、第1のバッファ3、第2のバッファ4へのアクセスをブロッキングアクセスとすることによって、マクロブロックの処理順序を簡単かつ正確に制御することができるようにしている。
なお、第1のバッファ3(0)〜3(N−2)と、第2のバッファ4(0)〜4(N−2)のそれぞれの容量は、通信する1マクロブロックの処理結果のデータサイズと等しければ十分である。
しかし、余裕を持たせた容量とすることももちろん可能である。第1のバッファ3(0)〜3(N−2)と、第2のバッファ4(0)〜4(N−2)のそれぞれの容量が十分に大きい場合、バッファには、FIFO(First In First Out)方式で入出力を行うようにすればよい。
このように、各復号処理プロセッサ間には、第1のバッファ3(0)〜3(N−2)、第2のバッファ4(0)〜4(N−2)が設けられ、各縦の帯状部分の境界に隣接するマクロブロックの復号処理結果を送受することができるようにしている。
なお、画面の最左端の縦の帯状部分を処理する場合には、それよりも左側にマクロブロックは存在しないので、左及び左上のマクロブロックの処理結果を参照する必要は無い。同様に、画面の最右端の縦の帯状部分を処理する場合には、それよりも右側にマクロブロックは存在しないので、右上のマクロブロックの処理結果を参照する必要は無い。
そして、各復号処理プロセッサ2(0)〜2(N−1)のそれぞれにおいて復号処理の結果得られた画像データは、フレームメモリ5に供給されて記録される。フレームメモリ5は、復号処理プロセッサ2(0)〜2(N−1)の復号結果である画像データを一時記憶するものである。
フレームメモリ5に一時記憶された画像データは、図1に示したように、動き補償のためのリファレンスピクチャとして、復号処理プロセッサ2(0)〜2(N−1)のそれぞれにおいて参照されたり、外部へ動画像を形成する画像データとして出力されたりする。
このように、この実施の形態の復号処理装置においては、ビットストリーム解析部1が、これに供給されたビットストリームについて、画面毎に縦の帯状部分に分割する。そして、分割した各帯状部分に属するマクロブロックデータを、縦の帯状部分毎に異なる復号処理プロセッサ2(0)〜2(N−1)に供給して、復号処理を並列して行うことができるようにしている。
そして、後述もするように、この実施の形態の復号処理装置においては、例えば、図2示したように、縦の帯状部分に分割されるそれぞれの部分が、異なる復号処理プロセッサに分配される。
この例の復号処理装置においては、左端から順番に、最初の縦の帯状部分は復号処理プロセッサ2(0)に割り当てられ、次の縦の帯状部分は復号処理プロセッサ2(1)に割り当てられるというようにされる。
そして、画面の左端の縦の帯状部分を担当する復号処理プロセッサ2(0)が、上端側の1マクロブロック行から復号処理を開始し、2マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサ2(1)が上端側の1マクロブロック行目の処理を開始する。
さらに、画面の左端の縦の帯状部分を担当する復号処理プロセッサ2(0)が、上端側から3マクロブロック行目に進むと、その右隣の縦の帯状部分を担当する復号処理プロセッサ2(1)が2マクロブロック行目の処理を開始する。
また、さらに右隣の縦の帯状部分を担当する復号処理プロセッサ2(2)が1マクロブロック行目の処理を開始するというように、それぞれの縦の帯状部分毎に、処理するマクロブロック行が階段に異なるようにされる。
このような、並列処理を行うことによって、目的とするマクロブロックを復号するに当たり、図12に示したように、その周囲のマクロブロックの復号結果を参照する場合にも、処理の順序関係は大きくずれることがないようにしている。
[画面の分割とマクロブロックデータの分配]
次に、ビットストリーム解析部1において行われる、マクロブロックデータの復号処理プロセッサ2(0)〜2(N−1)への分配処理について説明する。図2、図3は、ビットストリーム解析部1において行われるマクロブロックデータの復号処理プロセッサ2(0)〜2(N−1)への分配処理について説明するための図である。
図2に示すように、この実施の形態のビットストリーム解析部1は、供給されるビットストリームに含まれる各画面(ピクチャ)について、水平方向に復号処理プロセッサ2(0)〜2(N−1)の数に対応する数の縦の帯状部分に分割する。
この場合に、縦の帯状部分毎に、その先頭位置(左上端位置)をmb_offset(i)とし、横幅(水平方向の幅)をmb_width(i)として特定し、これを管理することができるようにしている。
具体的に、画面を縦の帯状部分に分割する場合について説明する。図2に示すように、この実施の形態においては、処理対象のビットストリームが形成する各画面の、マクロブロックを最小単位とするピクチャ幅をpic_mb_widthとする。また、図2に示すように、処理対象のビットストリームが形成する各画面の、マクロブロックを最小単位とするピクチャ高をpic_mb_heightとする。
例えば、ビットストリームが、1920ピクセル×1080ピクセルのいわゆるFull HD(Full High Definition Television)規格のものであるとする。
この場合、16ピクセル×16ピクセルのマクロブロックを最小単位として換算しなおすと、ピクチャ幅(pic_mb_width)は、120マクロブロック(mb)となる。また、ピクチャ高(pic_mb_height)は、68マクロブロック(mb)となる。
このように、この実施の形態のビットストリーム解析部1で用いるピクチャ幅(pic_mb_width)とピクチャ高(pic_mb_height)とは、マクロブロックを最小単位として換算されたものである。したがって、以下において、画面上における位置の指定等は、全てマクロブロック単位のものとなる。
また、ビットストリーム解析部1は、後段に配置された復号処理プロセッサ2(0)〜2(N−1)の数を変数Nとする。この例の場合、図1に示したように、復号処理プロセッサを特定する変数(指標)は0(ゼロ)から始まっているので、復号処理プロセッサの数は、N個ということになる。
さらに、復号処理プロセッサ2(0)〜2(N−1)のそれぞれに対応して、変数mb_offset(i)と、mb_width(i)とを設ける。
変数mb_offset(i)は、図2に示したように、分割されて形成された各縦の帯状部分の水平方向(x軸上)の開始位置(左上端部の位置)を示すものである。また、変数mb_width(i)は、図2に示したように、分割されて形成された各縦の帯状部分の幅(縦の帯状部分の幅)を示すものである。
このように、この実施の形態においては、図2に示したように、各画面(ピクチャ)を水平方向に分割しているので、垂直方向(画面の縦方向)に帯状部分の大きさが変化することは無い。
このため、各縦の帯状部分の水平方向(x軸上)の開始位置mb_offset(i)と、各縦の帯状部分の幅mb_width(i)とによって、分割された各縦の帯状部分の範囲を適切に把握することができる。
そして、上述したマクロブロックを最小単位とするピクチャ幅(pic_mb_width)とピクチャ高(pic_mb_height)と、復号処理プロセッサの数Nとを用いて、変数mb_offset(i)、mb_width(i)を求める。
具体的な求め方は、図3に示す通りである。すなわち、図3の(1)式に示すように、変数div_mbにピクチャ幅(pic_mb_width)を復号処理プロセッサの数Nで割った場合の整数部分(商)を求める。この(1)式は、いわば画面を復号処理プロセッサの数の縦の帯状部分に分割する場合の各帯状部分の基準幅を求めるものである。
次に、図3の(2)式に示すように、変数mod_mbにピクチャ幅(pic_mb_width)を復号処理プロセッサの数Nで割った場合の余り(剰余)を求める。この(2)式は、いわば図3の(1)式で求めた各帯状部分の基準幅を調整する必要のあるマクロブロックの数を求めるものである。
そして、図3の(2)式で求めた変数mod_mbが0(ゼロ)でない場合には、変数mod_mbが示す数の縦の帯状部分について、その基準幅に対して1ずつ加算する。つまり、変数mod_mbが「1」である場合には、1つの縦の帯状部分の基準幅に「1」を加算した幅がその縦の帯状部分の幅となる。また、変数mod_mbが「2」である場合には、2つの帯状部分の基準幅に「1」を加算した幅がそれら2つの帯状部分の幅となる。
すなわち、この実施の形態において、変数iは、復号処理プロセッサを特定し、また、復号処理プロセッサの順番にも対応する0〜N−1までの値を取る情報である。また、変数iは、復号処理プロセッサが担当する縦の帯状部分をも特定する情報である。
このため、変数iが、ピクチャ幅をNで割り算したときの余りであるmod_mbよりも小さい場合には、図3の(3)式により、変数iによって特定される復号処理プロセッサ2(i)が担当する縦の帯状部分の幅mb_width(i)を求める。
この場合には、変数div_mbが示す帯状部分の基準幅に対して「1」を加算したものが、復号処理プロセッサ2(i)が担当する帯状部分の幅mb_width(i)となる。
したがって、i<mod_mbの範囲において、復号処理プロセッサ2(i)が担当する帯状部分の幅mb_width(i)は、基準幅div_mbに「1」を加算した値となる。
また、変数iが、ピクチャ幅をNで割り算したときの余りであるmod_mbと同じか大きい場合には、図3の(4)式により、変数iによって特定される復号処理プロセッサ2(i)が担当する帯状部分の幅mb_width(i)を求める。
この場合には、変数div_mbが示す縦の帯状部分の基準幅そのものが、復号処理プロセッサ2(i)が担当する縦の帯状部分の幅mb_width(i)となる。したがって、i≧mod_mbの範囲において、復号処理プロセッサ2(i)が担当する縦の帯状部分の幅mb_width(i)は、基準幅div_mbそのもの値となる。
また、各縦の帯状部分の開始位置(左上端部の位置)であるmb_offset(i)は、図3の(3)式、(4)式を用いて算出した、各縦の帯状部分の幅mb_width(i)を考慮することによって、求めることができる。
すなわち、変数iが0(ゼロ)である場合、これは、最初の復号処理プロセッサ2(0)が担当する画面最左端の縦の帯状部分を意味している。このため、復号処理プロセッサ2(0)が担当する帯状部分の開始位置mb_offset(0)は、図3において(5)式が示すように0(ゼロ)ということになる。
また、変数iが0(ゼロ)より大きい場合には、前の帯状部分の先頭位置に、前の帯状部分の幅を加算すれば、復号処理プロセッサ(i)の先頭位置mb_offset(i)が求められる。
したがって、変数iが0(ゼロ)より大きい場合、復号処理プロセッサ(i)が担当する縦の帯状部分の開始位置mb_offset(i)は、図3の(6)式により求められる。
すなわち、変数iが0(ゼロ)より大きい場合、1つ前の縦の帯状部分の開始位置mb_offset(i−1)に、1つ前の縦の帯状部分の幅mb_width(i−1)を加算することにより、mb_offset(i)が求められる。
これにより、ビットストリーム解析部1は、図2に示したように、ピクチャ高pic_mb_heightは変わらないが、開始位置mb_offset(i)とmb_width(i)とが変わる縦の帯状部分を適切に特定し、分割することができる。
そして、図2に示したように、各画面を復号処理プロセッサ2(0)〜2(N−1)の数分の縦の帯状部分に分割することができる。そして、図2に示したように、各縦の帯状部分の開始位置mb_offset(0)〜mb_offset(N−1)と、各縦の帯状部分の幅mb_width(0)〜mb_width(N−1)とを適切に特定することができる。
そして、ビットストリーム解析部1は、図2において、画面に向かって最左端の縦の帯状部分を復号処理プロセッサ2(0)が担当する部分として、当該縦の帯状部分のマクロブロックデータを復号処理プロセッサ2(0)に供給する。
また、ビットストリーム解析部1は、図2において、画面に向かって左から2番目の縦の帯状部分を復号処理プロセッサ2(1)が担当する部分として、当該縦の帯状部分のマクロブロックデータを復号処理プロセッサ2(1)に供給する。というように、分割した縦の帯状部分のそれぞれのマクロブロックデータを、復号処理プロセッサ2(0)〜2(N−1)の内の担当する(対応する)に分配することができる。
そして、ビットストリーム解析部1は、図3を用いて説明したようにして求められるmb_offset(i)と、mb_width(i)とに基づいて、適切にマクロブロックデータを目的とする復号処理プロセッサに分配できる。
より具体的には、マクロブロックの水平位置が、mb_offset(i)以上であって、mb_offset(i)+mb_width(i)未満のマクロブロックデータは、復号処理プロセッサ2(i)に送るようにすればよい。
[画面の分割とマクロブロックデータの分配処理の具体例]
次に、図2、図3を用いて説明したビットストリーム解析部1で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明する。図4〜図6は、ビットストリーム解析部1で行われる画面の分割とマクロブロックデータの分配処理の具体例について説明するための図である。
以下においては、マクロブロックを最小単位とした場合の画面のピクチャ幅pic_mb_widthが、100マクロブロックである場合(図4)、101マクロブロックである場合(図5)、102マクロブロックである場合(図6)の3つ場合について説明する。なお、復号処理プロセッサの数は、いずれの場合の3個であるものとして説明する。
[ピクチャ幅が100マクロブロックである場合]
図4は、マクロブロックを最少単位とする画面のピクチャ幅pic_mb_widthが100マクロブロックで、復号処理プロセッサの数Nが3個である場合の、ビットストリーム解析部1の処理を説明するための図である。
図4において、図4(A)は、ビットストリーム解析部1において行われる処理を示し、図4(B)は、ビットストリーム解析部1により分割された縦の帯状部分について具体的に説明するための図である。
この例の場合、図4(A)の(1)式に示すように、変数div_mbには、マクロブロック単位で表現されたピクチャ幅である「100」を復号処理プロセッサの数である「3」で割った場合の商である「33」が入力される。これが、各縦の帯状部分の基準幅になる。
そして、図4(A)の(2)式に示すように、変数mod_mbには、マクロブロック単位で表現されたピクチャ幅である「100」を復号処理プロセッサの数である「3」で割った場合の余りである「1」が入力される。
このようにして求めた変数div_mbと、変数mod_mbと、変数iとに基づいて、各縦の帯状部分の幅mb_width(i)が特定され、各縦の帯状部分の開始位置mb_offset(i)が特定される。
そして、復号処理プロセッサ(0)が担当する縦の帯状部分については、変数iは「0(ゼロ)」であり、変数mod_mbの値「1」より小さい(i<1)。このため、図3の(3)式が当てはまり、図4(A)の(3)式に示すように、その縦の帯状部分の幅mb_width(0)は、「34」になる。すなわち、当該縦の帯状部分の幅mb_width(0)は、基本幅「33」に「1」を加算した値となる。
また、復号処理プロセッサ(0)が担当する縦の帯状部分については、変数iは「0(ゼロ)」であり、図3の(5)式に示したように、基準値「0」と同じである(i=0)。このため、図3の(5)式が当てはまり、図4(A)の(4)式に示すように、その縦の帯状部分の開始位置mb_offset(0)は、「0(ゼロ)」になる。
また、復号処理プロセッサ(1)が担当する縦の帯状部分については、変数iは「1」であり、変数mod_mbの値「1」と同じである(i=1)。このため、図3の(4)式が当てはまり、図4(A)の(5)式に示すように、その縦の帯状部分の幅mb_width(1)は、「33」になる。すなわち、当該縦の帯状部分の幅mb_width(1)は、基本幅「33」のままとなる。
また、復号処理プロセッサ(1)が担当する縦の帯状部分については、変数iは「1」であり、図3の(6)式に示したように、基準値「0」より大きい(i>0)。このため、図3の(6)式が当てはまり、図4(A)の(6)式に示すように、その縦の帯状部分の開始位置mb_offset(1)は、「34」になる。
すなわち、当該縦の帯状部分の開始位置mb_offset(1)は、1つ前の縦の帯状部分の開始位置mb_offset(0)=0に、1つ前の縦の帯状部分の幅mb_width(0)=34を加算した値となる。
また、復号処理プロセッサ(2)が担当する縦の帯状部分については、変数iは「2」であり、変数mod_mbの値「1」より大きい(i>1)。このため、図3の(4)式が当てはまり、図4(A)の(7)式に示すように、その縦の帯状部分の幅mb_width(2)は、「33」になる。すなわち、当該縦の帯状部分の幅mb_width(2)は、基本幅「33」のままとなる。
また、復号処理プロセッサ(2)が担当する縦の帯状部分については、変数iは「2」であり、図3の(6)式に示したように、基準値「0」より大きい(i>0)。このため、図3の(6)式が当てはまり、図4(A)の(8)式に示すように、その縦の帯状部分の開始位置mb_offset(2)は、「67」になる。
すなわち、当該帯状部分の開始位置mb_offset()は、1つ前の縦の帯状部分の開始位置mb_offset(1)=34に、1つ前の縦の帯状部分の幅mb_width(1)=33を加算した値となる。
この具体例の場合には、図4(B)に示すように、復号処理プロセッサ2(0)が担当する縦の帯状部分は、その開始位置mb_offset(0)=0、縦の帯状部分の幅mb_width(0)=34の領域であると特定できる。
同様に、復号処理プロセッサ2(1)が担当する縦の帯状部分は、その開始位置mb_offset(1)=34、縦の帯状部分の幅mb_width(1)=33の領域であると特定できる。
また、復号処理プロセッサ2(2)が担当する縦の帯状部分は、その開始位置mb_offset(2)=67、縦の帯状部分の幅mb_width(2)=33の領域であると特定できる。
[ピクチャ幅が101マクロブロックである場合]
図5は、マクロブロックを最少単位とする画面のピクチャ幅pic_mb_widthが101マクロブロックで、復号処理プロセッサの数Nが3個である場合の、ビットストリーム解析部1の処理を説明するための図である。
図5において、図5(A)は、ビットストリーム解析部1において行われる処理を示し、図5(B)は、ビットストリーム解析部1により分割された縦の帯状部分について具体的に説明するための図である。
この例の場合、図5(A)の(1)式に示すように、変数div_mbには、マクロブロック単位で表現されたピクチャ幅である「101」を復号処理プロセッサの数である「3」で割った場合の商である「33」が入力される。これが、各縦の帯状部分の基準幅になる。
そして、図5(A)の(2)式に示すように、変数mod_mbには、マクロブロック単位で表現されたピクチャ幅である「101」を復号処理プロセッサの数である「3」で割った場合の余りである「2」が入力される。
このようにして求めた変数div_mbと、変数mod_mbと、変数iとに基づいて、各帯状部分の幅mb_width(i)が特定され、各帯状部分の開始位置mb_offset(i)が特定される。
そして、復号処理プロセッサ(0)が担当する縦の帯状部分については、変数iは「0(ゼロ)」であり、変数mod_mbの値「2」より小さい(i<2)。このため、図3の(3)式が当てはまり、図5(A)の(3)式に示すように、その帯状部分の幅mb_width(0)は、「34」になる。すなわち、当該縦の帯状部分の幅mb_width(0)は、基本幅「33」に「1」を加算した値となる。
また、復号処理プロセッサ(0)が担当する縦の帯状部分については、変数iは「0(ゼロ)」であり、図3の(5)式に示したように、基準値「0」と同じである(i=0)。このため、図3の(5)式が当てはまり、図5(A)の(4)式に示すように、その縦の帯状部分の開始位置mb_offset(0)は、「0(ゼロ)」になる。
また、復号処理プロセッサ(1)が担当する縦の帯状部分については、変数iは「1」であり、mod_mbの値「2」より小さい(i<2)。このため、図3の(3)式が当てはまり、図5(A)の(5)式に示すように、その縦の帯状部分の幅mb_width(1)は、「34」になる。すなわち、当該縦の帯状部分の幅mb_width(1)は、基本幅「33」に「1」を加算した値となる。
また、復号処理プロセッサ(1)が担当する縦の帯状部分については、変数iは「1」であり、図3の(6)式に示したように、基準値「0」より大きい(i>0)。このため、図3の(6)式が当てはまり、図5(A)の(6)式に示すように、その縦の帯状部分の開始位置mb_offset(1)は、「34」になる。
すなわち、当該縦の帯状部分の開始位置mb_offset(1)は、1つ前の縦の帯状部分の開始位置mb_offset(0)=0に、1つ前の縦の帯状部分の幅mb_width(0)=34を加算した値となる。
また、復号処理プロセッサ(2)が担当する縦の帯状部分については、変数iは「2」であり、変数mod_mbの値「2」と同じである(i=2)。このため、図3の(4)式が当てはまり、図5(A)の(7)式に示すように、その縦の帯状部分の幅mb_width(2)は、「33」になる。すなわち、当該縦の帯状部分の幅mb_width(2)は、基本幅「33」のままとなる。
また、復号処理プロセッサ(2)が担当する縦の帯状部分については、変数iは「2」であり、図3の(6)式に示したように、基準値「0」より大きい(i>0)。このため、図3の(6)式が当てはまり、図5(A)の(8)式に示すように、その縦の帯状部分の開始位置mb_offset(2)は、「68」になる。
すなわち、当該帯状部分の開始位置mb_offset()は、1つ前の縦の帯状部分の開始位置mb_offset(1)=34に、1つ前の縦の帯状部分の幅mb_width(1)=34を足した値となる。
この具体例の場合には、図5(B)に示すように、復号処理プロセッサ2(0)が担当する縦の帯状部分は、その開始位置mb_offset(0)=0、帯状部分の幅mb_width(0)=34の領域であると特定できる。
同様に、復号処理プロセッサ2(1)が担当する縦の帯状部分は、その開始位置mb_offset(1)=34、帯状部分の幅mb_width(1)=34の領域であると特定できる。また、復号処理プロセッサ2(2)が担当する縦の帯状部分は、その開始位置mb_offset(2)=68、帯状部分の幅mb_width(2)=33の領域であると特定できる。
[ピクチャ幅が102マクロブロックである場合]
図6は、マクロブロックを最少単位とする画面のピクチャ幅pic_mb_widthが102マクロブロックで、復号処理プロセッサの数Nが3個である場合の、ビットストリーム解析部1の処理を説明するための図である。
図6において、図6(A)は、ビットストリーム解析部1において行われる処理を示し、図6(B)は、ビットストリーム解析部1により分割された縦の帯状部分について具体的に説明するための図である。
この例の場合、図6(A)の(1)式に示すように、変数div_mbには、マクロブロック単位で表現されたピクチャ幅である「102」を復号処理プロセッサの数である「3」で割った場合の商である「34」が入力される。これが、縦の各帯状部分の基準幅になる。
そして、図6(A)の(2)式に示すように、変数mod_mbには、マクロブロック単位で表現されたピクチャ幅である「102」を復号処理プロセッサの数である「3」で割った場合の余りが入力される。しかし、この場合、余りは出ないので、変数mod_mbには、「0」が入力される。
このようにして求めた変数div_mbと、変数mod_mbと、変数iとに基づいて、各縦の帯状部分の幅mb_width(i)が特定され、各縦の帯状部分の開始位置mb_offset(i)が特定される。
そして、復号処理プロセッサ(0)が担当する縦の帯状部分については、変数iは「0(ゼロ)」であり、変数mod_mbの値「0」と同じである(i=0)。このため、図3の(4)式が当てはまり、図6(A)の(3)式に示すように、その縦の帯状部分の幅mb_width(0)は、「34」になる。すなわち、当該縦の帯状部分の幅mb_width(0)は、基本幅「34」のままとなる。
また、復号処理プロセッサ(0)が担当する縦の帯状部分については、変数iは「0(ゼロ)」であり、図3の(5)式に示したように、基準値「0」と同じである(i=0)。このため、図3の(5)式が当てはまり、図6(A)の(4)式に示すように、その縦の帯状部分の開始位置mb_offset(0)は、「0(ゼロ)」になる。
また、復号処理プロセッサ(1)が担当する縦の帯状部分については、変数iは「1」であり、変数mod_mbの値「0」より大きい(i>0)。このため、図3の(4)式が当てはまり、図6(A)の(5)式に示すように、その縦の帯状部分の幅mb_width(1)は、「34」になる。すなわち、当該縦の帯状部分の幅mb_width(1)は、基本幅「34」のままとなる。
また、復号処理プロセッサ(1)が担当する縦の帯状部分については、変数iは「1」であり、図3の(6)式に示したように、基準値「0」より大きい(i>0)。このため、図3の(6)式が当てはまり、図6(A)の(6)式に示すように、その縦の帯状部分の開始位置mb_offset(1)は、「34」になる。すなわち、当該縦の帯状部分の開始位置mb_offset(1)は、1つ前の縦の帯状部分の開始位置mb_offset(0)=0に、1つ前の縦の帯状部分の幅mb_width(0)=34を加算した値となる。
また、復号処理プロセッサ(2)が担当する縦の帯状部分については、変数iは「2」であり、変数mod_mbの値「0」より大きい(i>0)。このため、図3の(4)式が当てはまり、図6(A)の(7)式に示すように、その縦の帯状部分の幅mb_width(2)は、「34」になる。すなわち、当該縦の帯状部分の幅mb_width(2)は、基本幅「34」のままとなる。
また、復号処理プロセッサ(2)が担当する縦の帯状部分については、変数iは「2」であり、図3の(6)式に示したように、基準値「0」より大きい(i>0)。このため、図3の(6)式が当てはまり、図6(A)の(8)式に示すように、その縦の帯状部分の開始位置mb_offset(2)は、「68」になる。
すなわち、当該縦の帯状部分の開始位置mb_offset()は、1つ前の縦の帯状部分の開始位置mb_offset(1)=34に、1つ前の縦の帯状部分の幅mb_width(1)=34を足した値となる。
この具体例の場合には、図6(B)に示すように、復号処理プロセッサ2(0)が担当する縦の帯状部分は、その開始位置mb_offset(0)=0、帯状部分の幅mb_width(0)=34の領域であると特定できる。
同様に、復号処理プロセッサ2(1)が担当する縦の帯状部分は、その開始位置mb_offset(1)=34、帯状部分の幅mb_width(1)=34の領域であると特定できる。また、復号処理プロセッサ2(2)が担当する縦の帯状部分は、その開始位置mb_offset(2)=68、帯状部分の幅mb_width(2)=34の領域であると特定できる。
図4〜図6に示したように、ビットストリーム解析部1は、ビットストリームが形成する画面のマクロブロックを最小単位とするピクチャ幅と、復号処理を実行する復号処理プロセッサの数に応じて、画面を縦の複数の帯状部分に分割することができる。
したがって、どのような画面サイズの動画像データが供給された場合であっても、その画像データの画面サイズに応じて、適切に画面を縦の帯状部分に分割し、その縦の帯状部分を異なる復号処理プロセッサに分配して並列処理することができる。
具体的には、上述もしたように、マクロブロックの水平位置が、mb_offset(i)以上であって、mb_offset(i)+mb_width(i)未満のマクロブロックデータは、復号処理プロセッサ2(i)に送るようにすればよい。
[復号処理プロセッサ2(i)における処理]
上述したように、ビットストリーム解析部1により、画面が分割されて形成された縦の各帯状部分のマクロブロックデータが、対応する復号処理プロセッサ2(0)〜2(N−1)に分配されて復号処理が行われる。
ここでは、図1に示したこの実施の形態の復号処理装置の復号処理プロセッサ2(0)〜2(N−1)のそれぞれにおいて行われる復号処理について、図7、図8のフローチャートを参照しながら説明する。
図7は、復号処理プロセッサ2(0)〜2(N−1)のそれぞれにおいて行われる割り当てられた縦の帯状部分の復号処理を説明するためのフローチャートである。また、図8は、図7のステップS3で行われるマクロブロック単位の復号処理を説明するためのフローチャートである。
なお、図1に示した復号処理プロセッサ2(0)〜2(N−1)のそれぞれで行われる復号処理は同様の処理である。このため、以下においては説明を簡単にするため、復号処理プロセッサ2(i)(iは、0〜N−1までの整数)が行う処理として説明する。
まず、図7に示した、復号処理プロセッサ2(0)〜2(N−1)のそれぞれにおいて行われる割り当てられた縦の帯状部分の復号処理について説明する。
1画面の画像データを処理する場合、その原点は左上端部となる。すなわち、図2に示したように、縦軸をy軸、横軸をx軸とすると、原点(0,0)は、画面の左上端部である。
そして、各縦の帯状部分(分割領域)の処理の開始位置は、y軸上は0(ゼロ)であるが、x軸上では、各縦の帯状部分の開始位置mb_offset(i)が示す位置となる。すなわち、各縦の帯状部分の処理の開始位置は、(mb_offset(i),0)ということになる。
そこで、復号処理プロセッサ2(i)は、y軸上の位置を示す変数mb_y(i)に「0(ゼロ)」をセットする(ステップS1)。次に、復号処理プロセッサ2(i)は、x軸上の位置を示す変数mb_x(i)に、復号処理プロセッサ2(i)が担当する縦の帯状部分のx軸上の開始位置を示す変数mb_offset(i)の値をセットする(ステップS2)。
そして、復号処理プロセッサ2(i)は、(mb_x(i)、mb_y(i))で特定される位置のマクロブロックの復号処理(MB処理)を実行する(ステップS3)。このステップS3の処理の詳細については後述する。
ステップS3において、(mb_x(i)、mb_y(i))の位置のマクロブロックの復号処理(MB処理)が終了すると、復号処理プロセッサ2(i)は、変数mb_x(i)に「1」を加算する(ステップS4)。
次に、復号処理プロセッサ2(i)は、x軸上の位置を示す変数mb_x(i)が、当該縦の帯状部分のx軸上の開始位置mb_offset(i)に当該帯状部分の幅mb_width(i)を加算した値より小さいか否かを判断する(ステップS5)。
このステップS5の判断処理は、復号処理プロセッサ2(i)が担当する縦の帯状部分の1マクロブロック行の全部のマクロブロックについて復号処理(MB処理)を終了したか否かを判断する処理である。
ステップS5の判断処理において、担当する縦の帯状部分の1マクロブロック行の全部のマクロブロックについて復号処理(MB処理)を終了していない判断したときには、ステップS3からの処理を繰り返す。
すなわち、x軸上の位置を示す変数mb_x(i)が、mb_offset(i)+mb_width(i)より小さいときには、1マクロブロック行の全部のマクロブロックについて復号処理が終了していないことになるので、ステップS3からの処理を繰り返す。
また、ステップS5の判断処理において、担当する縦の帯状部分の1マクロブロック行の全部のマクロブロックについて復号処理(MB処理)を終了したと判断したときには、復号処理プロセッサ2(i)は、変数mb_y(i)に「1」を加算する(ステップS6)。
すなわち、x軸上の位置を示すmb_x(i)が、mb_offset(i)+mb_width(i)より小さくない場合には、1マクロブロック行の全部のマクロブロックについて復号処理を終了したと判断できるので、ステップS6の処理を実行する。
そして、復号処理プロセッサ2(i)は、y軸上の位置を示す変数mb_y(i)が、画面のピクチャ高pic_mb_heightより小さいか否かを判断する(ステップS7)。
このステップS7の判断処理は、復号処理プロセッサ2(i)が担当する縦の帯状部分の垂直方向の全てのマクロブロック行の全部のマクロブロックについて復号処理(MB処理)を終了したか否かを判断する処理である。
ステップS7の判断処理において、担当する縦の帯状部分の垂直方向の全てのマクロブロック行の全部のマクロブロックについて復号処理(MB処理)を終了していないと判断したときには、復号処理プロセッサ2(i)は、ステップS2からの処理を繰り返す。
つまり、y軸上の位置を示すmb_y(i)が、画面のピクチャ高pic_mb_heightより小さいと判断した場合には、その縦の帯状部分の全部のマクロブロック行の復号処理が終わっていないことが分かる。この場合には、ステップS2からの処理を繰り返すことにより、次のマクロブロック行の処理を行うことになる。
また、ステップS7の判断処理において、担当する縦の帯状部分の垂直方向の全てのマクロブロック行の全部のマクロブロックについて復号処理(MB処理)を終了したと判断したときには、復号処理プロセッサ2(i)は、この図7に示す処理を終了する。
つまり、y軸上の位置を示すmb_y(i)が、画面のピクチャ高pic_mb_heightより小さくないと判断した場合には、その縦の帯状部分の全部のマクロブロック行の復号処理が終わったことが分かる。この場合には、図7に示した処理を終了する。そして、新たな画面(新たなピクチャ)についての復号処理を行うことになる。
このように、この実施の形態の復号処理装置の復号処理プロセッサ2(i)のそれぞれは、自機が担当する縦の帯状部分において、左上端部のマクロブロックを復号処理の開始ブロックとする。
そして、当該開始ブロックから右端に向かう方向に1マクロブロック行の各マクロブロックの復号処理を行い、1マクロブロック行の復号処理が終了したら、同様にして次のマクロブロック行の処理を行うようにしている。これにより、各縦の帯状部分の左上端部から右下端部に向かうようにして、各マクロブロックの復号処理が行われる。
[マクロブロック単位の復号処理(MB処理)]
次に、図7に示したステップS3において行われるマクロブロックの復号処理(MB処理)について、図8を参照しながら説明する。
この実施の形態の復号処理プロセッサ2(i)においては、上述もしたように、マクロブロック単位に復号処理を行うが、図12に示したように、処理対象のマクロブロックの左、左上、上、右上のマクロブロックの復号結果を参照する必要がある。
そして、この実施の形態の復号処理装置においては、図2に示したように、画面を縦の帯状部分に分割して、各縦の帯状部分の復号処理を異なる復号処理プロセッサに分担させるようにしている。
このため、縦の帯状部分の左端部や右端部を処理する場合には、隣接する縦の帯状部分を処理する他の復号処理プロセッサから目的とするマクロブロックの復号結果の提供を受ける必要がある。また、自機から当該他の復号処理プロセッサに対してマクロブロックの復号結果を提供しなければならない場合もある。
このような、復号処理プロセッサ間におけるマクロブロックの復号結果の送受信をも、この図8に示す処理において行うことができるようにしている。
そして、図8に示したフローチャートの説明を簡単にするため、まず、隣接する縦の帯状部分を処理する復号処理プロセッサ間における復号処理結果の送受信の態様について、図9を参照しながら説明する。
図9は、この実施の形態の復号処理装置において、隣接する縦の帯状部分を処理する復号処理プロセッサ間における復号処理結果の送受信の態様を説明するための図である。
例えば、図9において、復号処理プロセッサ2(i)が担当する縦の帯状部分の左端部に位置するマクロブロックAが復号対象であるとする。この場合、マクロブロックAを復号処理するためには、左のマクロブロックY、左上のマクロブロックX、上のマクロブロックB、右上のマクロブロックCの復号結果が必要となる。
そして、図9に示したように、マクロブロックAに対して、マクロブロックX、Y、Zのそれぞれは、復号処理プロセッサ2(i−1)が担当する異なる縦の帯状部分に属するものである。
このため、図9においてマクロブロックAを復号する場合には、復号処理プロセッサ2(i)は、復号処理プロセッサ2(i−1)からマクロブロックYの処理結果を受信して、復号処理を行う。
したがって、復号処理プロセッサ2(i−1)においては、マクロブロックYの復号処理を行った場合に、その復号結果を、復号処理プロセッサ2(i)に送信するようにしておく。
この場合、左上のマクロブロックXの復号結果は、図9において点線矢印で示したように、マクロブロックAが属する行の直前の行において、マクロブロックBの復号処理を行ったときに、復号処理プロセッサ2(i−1)から既に受信しているのでこれを用いる。
また、マクロブロックB、Cについては、復号処理プロセッサ(i)で既に復号したマクロブロックであるので、自プロセッサにおけるマクロブロックB、Cの復号結果を参照すればよい。
そして、復号処理プロセッサ2(i)は、マクロブロックAの復号処理を行った場合に、その復号結果を、復号処理プロセッサ2(i−1)に送信しておく。そして、復号処理プロセッサ2(i−1)において、マクロブロックZの復号処理を行う場合に、復号処理プロセッサ2(i)から送信されたマクロブロックAの復号結果を受信して用いることができるようにされる。
これらのことは、図9において、復号処理プロセッサ2(i)が処理する縦の帯状部分において、右端部に位置するマクロブロックDを処理する場合にも、送受信の順番は異なるように見えるが、ほぼ同様に考えることができる。
すなわち、復号処理プロセッサ2(i)が、マクロブロックDを復号処理する場合には、右側に隣接する縦の帯状部分を担当する復号処理プロセッサ2(i+1)からマクロブロックEを復号処理したときに復号結果を受信する。したがって、復号処理プロセッサ2(i+1)は、マクロブロックEを復号処理したときに、その復号結果を復号処理プロセッサ2(i)に送信しておく。
復号処理プロセッサ2(i)は、マクロブロックDを処理する場合、その左、左上、上の各マクロブロックの復号処理結果も必要になるが、これらは、復号処理プロセッサ2(i)において既に復号処理した結果を用いるようにすればよい。
そして、復号処理プロセッサ2(i)は、マクロブロックDを復号処理した場合に、その処理結果を復号処理プロセッサ2(i+1)に送信しておく。これにより、復号処理プロセッサ2(i+1)において、マクロブロックFの復号処理を行う場合に、その左側のマクロブロックDの復号結果を用いることができるようにされる。
このように、復号処理プロセッサ間通信により、各縦の帯状部分の各マクロブロック行の左端マクロブロックにおいて、左マクロブロックの処理結果を知ることができる。この場合、左上マクロブロックの処理結果は1マクロブロック行上の処理時に受信したものを記憶しておけばよい。同様に、各帯の各マクロブロック行の右端マクロブロックにおいて、右上マクロブロックの処理結果を知ることができる。
また、復号対象のマクロブロックに対して、左・左上・上・右上のマクロブロックが同じ縦の帯状部分に属している場合は、復号処理プロセッサ間の通信は不要で、自プロセッサ内で復号処理結果を記憶保持するようにしておき、これを利用するようにすればよい。
このように、この実施の形態の復号処理装置においては、縦の帯状部分の左端部、右端部においては、隣接する縦の帯状部分を処理する復号処理プロセッサ間で復号結果の送信、受信が行われる。
この復号結果の送信、受信を行う処理が、以下に説明する図8に示した復号処理のステップS32、ステップS34、ステップS37、ステップS39において行うようにされる。
なお、復号処理結果の送信、受信は、実際には、図1に示したように、各復号処理プロセッサ間に設けられる第1のバッファ3(0)〜3(N−2)、第2のバッファ4(0)〜4(N−2)を介して行われる。
次に、図7に示したステップS3において行われるマクロブロック単位の復号処理について、図8を参照しながら詳細に説明する。
上述したように、図7に示した処理においては、処理対象のマクロブロックの位置が、x軸上の位置を示す変数mb_x(i)と、y軸上の位置を示す変数mb_y(i)とによって指示される。
そして、復号処理プロセッサ2(i)は、以下の(条件1)、(条件2)を満足するか否かを判断する(ステップS31)。すなわち、ステップS31においては、
(条件1)処理対象のマクロブロックのx軸上の位置mb_x(i)が、処理対象の縦の帯状部分のx軸上の開始位置mb_offset(i)と同じである。かつ、
(条件2)当該縦の帯状部分が、画面の最左端の縦の帯状部分でない。
か否かを判断する。
このステップS31の判断処理は、処理対象のマクロブロックが属する縦の帯状部分の左端部に位置し、当該縦の帯状部分が画面の最左端の縦の帯状部分でないか否かを判断する処理である。
ステップS31の判断処理において、(条件1)と(条件2)とを共に満足すると判断したときには、復号処理プロセッサ2(i)は、第1のバッファ3(i−1)から左のマクロブロックの復号処理結果を受信する(ステップS32)。
このステップS32の処理は、図9を用いて説明したように、処理対象がマクロブロックAである場合に、復号処理プロセッサ2(i−1)におけるマクロブロックYの復号結果を受信する処理である。
ステップS31の判断処理において、(条件1)と(条件2)とのいずれか一方でも満足しないと判断した場合、及び、ステップS32の処理の後には、ステップS33の判断処理を実行する。
すなわち、復号処理プロセッサ2(i)は、以下の(条件3)、(条件4)、(条件5)を満足するか否かを判断する(ステップS33)。具体的に、ステップS33においては、
(条件3)処理対象のマクロブロックのx軸上の位置mb_x(i)が、処理対象の縦の帯状部分のx軸上の開始位置mb_offset(i)に当該縦の帯状部分の幅mb_width(i)を加算し、さらに「1」を減算した値と同じである。かつ
(条件4)変数iが、N−1と同じである。かつ
(条件5)処理対象のマクロブロックのy軸上の位置mb_y(i)が、0(ゼロ)より大きい。
か否かを判断する。
このステップS33の判断処理は、処理対象のマクロブロックが、属する縦の帯状部分の右端部に位置し、当該縦の帯状部分が画面の最右端の縦の帯状部分でなく、しかも縦の帯状部分の最上端のマクロブロック行に位置していないか否かを判断する処理である。
ステップS33の判断処理において、(条件3)と(条件4)と(条件5)とをいずれも満足すると判断したときには、復号処理プロセッサ2(i)は、第2のバッファ4(i)から右上のマクロブロックの復号処理結果を受信する(ステップS34)。
このステップS34の処理は、図9を用いて説明したように、例えば、処理対象がマクロブロックDである場合に、復号処理プロセッサ2(i+1)におけるマクロブロックEの復号結果を受信する処理である。
ステップS33の判断処理において、(条件3)と(条件4)と(条件5)のいずれか1つでも満足しないと判断した場合、及び、ステップS34の処理の後には、ステップS35の復号処理を実行する。
復号処理プロセッサ2(i)は、復号対象の動画像データで用いられている動画像符号化規格で定められている通りに、座標(mb_x(i)、mb_y(i))のマクロブロックデータから画素を復号し、これをフレームメモリ5に書き込む(ステップS35)。
このステップS35で行われる具体的な処理は、上述した復号処理プロセッサ2(0)〜2(N−1)が行う種々の処理が含まれる。なお、動画像データの復号処理の一例が、例えば、特願2006−129284号公報の段落[0039]〜段落[0051]等に説明されている。また、用いる動画像符号化規格によっても、復号処理が異なる場合もあるので、詳しくは個々の動画像符号化規格の規格書に準拠した復号処理を行うことになる。
そして、ステップS35の目的とするマクロブロックの復号処理の後、復号処理プロセッサ2(i)は、ステップS36の判断処理を実行する。
復号処理プロセッサ2(i)は、以下の(条件6)、(条件7)、(条件8)を満足するか否かを判断する(ステップS36)。すなわち、ステップS36においては、
(条件6)処理対象のマクロブロックのx軸上の位置mb_x(i)が、処理対象の縦の帯状部分のx軸上の開始位置mb_offset(i)と同じである。かつ
(条件7)変数iが、0(ゼロ)より大きい。かつ
(条件8)処理対象のマクロブロックのy軸上の位置mb_y(i)が、ピクチャ高pic_mb_heightから「1」を減算した値より小さい。
か否かを判断する。
このステップS36の判断処理は、処理対象のマクロブロックが、属する縦の帯状部分の左端部に位置し、当該縦の帯状部分が画面の最左端の縦の帯状部分でなく、しかも縦の帯状部分の最下端のマクロブロック行に位置していないか否かを判断する処理である。
ステップS36の判断処理において、(条件6)と(条件7)と(条件8)とをいずれも満足すると判断したときには、復号処理プロセッサ2(i)は、第2のバッファ4(i−1)に、処理対象のマクロブロックの復号処理結果を送信する(ステップS37)。
このステップS36の処理は、図9を用いて説明したように、例えば、処理対象がマクロブロックAである場合に、マクロブロックAの復号結果を復号処理プロセッサ2(i−1)に対して送信する処理である。
ステップS36の判断処理において、(条件6)と(条件7)と(条件8)のいずれか1つでも満足しないと判断した場合、及び、ステップS37の処理の後には、ステップS38の判断処理を実行する。
復号処理プロセッサ2(i)は、以下の(条件9)、(条件10)を満足するか否かを判断する(ステップS38)。すなわち、ステップS38においては、
(条件9)処理対象のマクロブロックのx軸上の位置mb_x(i)が、処理対象の縦の帯状部分のx軸上の開始位置mb_offset(i)に当該縦の帯状部分の幅mb_width(i)を加算し、さらに「1」を減算した値と同じである。かつ
(条件10)変数iが、N−1と同じである。
か否かを判断する。
このステップS38の判断処理は、処理対象のマクロブロックが、属する縦の帯状部分の右端部に位置し、当該縦の帯状部分が画面の最右端の縦の帯状部分でないか否かを判断する処理である。
ステップS38の判断処理において、(条件9)と(条件10)の両方を満足すると判断したときには、復号処理プロセッサ2(i)は、第1のバッファ3(i)に、処理対象のマクロブロックの復号処理結果を送信する(ステップS39)。
このステップS38の処理は、図9を用いて説明したように、例えば、処理対象がマクロブロックDである場合に、マクロブロックDの復号処理結果を復号処理プロセッサ2(i+1)に送信する処理である。
ステップS38の判断処理において、(条件9)と(条件10)のいずれか1つでも満足しないと判断した場合、及び、ステップS39の処理の後には、この図8に示す処理を終了する。すなわち、処理対象のマクロブロックの復号処理を終了する。
そして、この図8に示した処理において、ステップS32、ステップS34の受信処理において、復号処理結果を読み出そうとしたバッファ3(i−1)、4(i)に復号処理結果が存在しない場合には、復号処理結果が入力されるまで待機状態となる。
また、この図8に示した処理において、ステップS37、ステップS39の送信処理において、復号処理結果を書き込もうとしたバッファ4(i−1)、3(i)にデータがいっぱいである場合には、空きができるまで待機状態となる。
このように、各復号処理プロセッサ間でバッファを介していわゆるブロッキングアクセスを行うことにより、マクロブロックの処理順序を簡単かつ適切に制御することができる。
図7、図8を用いて説明したように、この実施の形態の復号処理装置の各復号処理プロセッサ2(0)〜2(N−1)のそれぞれは、マクロブロック単位に復号処理を行う。また、この実施の形態の復号処理装置は、復号処理プロセッサ2(0)〜2(N−1)のそれぞれは、復号処理プロセッサ毎に1マクロブロック行ずつ階段状にずれた態様で、各帯状部分の復号処理を並列に実行する。
すなわち、画面の左端の縦の帯状部分が割り当てられた復号処理プロセッサから右端の縦の帯状部分が割り当てられた復号処理プロセッサに向かう順番で、処理対象のマクロブロック行が、復号処理プロセッサ毎に1マクロブロック行ずつ階段状にずれた態様となる。
図10は、復号処理プロセッサ2(0)〜2(N−1)の復号処理の並列化を説明するための図である。
この実施の形態の復号処理装置においては、一番左(0列目)の縦の帯状部分に属するj行目(N−1≦j<pic_mb_height)のマクロブロック行が処理対象になっているとする。
この場合、1列目の縦の帯状部分においては、j−1行目のマクロブロック行が処理対象となり、2列目の縦の帯状部分においては、j−2行目のマクロブロック行が処理対象となる。そして、N−1列目の縦の帯状部分においては、j−N+1行目のマクロブロック行処理対象となる。
このように、この実施の形態の復号処理装置においては、画面の左端の縦の帯状部分が割り当てられた復号処理プロセッサから右端の縦の帯状部分が割り当てられた復号処理プロセッサに向かう順番で、復号処理プロセッサ毎に1処理ブロック行ずつ階段状にずれた態様で、各帯状部分の復号処理を並列に実行するようにしている。
[実施の形態の効果]
上述もしたように、マクロブロック単位に復号処理を行う復号処理プロセッサを複数備える復号処理装置において、復号処理の並列化の際に実行効率を上げるための問題点としては、以下の3つが挙げられる。
(a)異なるプロセッサに割り当てられたマクロブロック間の順序関係により発生する、プロセッサの待ち時間
(b)マクロブロックの処理順序を正しく制御するための仕組みの複雑度
(c)参照するマクロブロックの処理結果を通信する必要があるので、その通信頻度とデータ転送のコスト
である。
上述した実施の形態の復号処理装置によれば、図10を用いて具体的に説明したように、復号処理プロセッサ毎に1マクロブロック行ずつ階段状にずれた状態で、並列に各縦の帯状部分の復号処理を行うことができるので、上記(a)の発生を抑えることができる。
というのも、各縦の帯状部分のマクロブロック行左端においては、その左と左上のマクロブロックの復号結果が必要であるが、当該左と左上のマクロブロックを含むマクロブロック行は別の復号処理プロセッサですでに処理が完了している。
また、各縦の帯状部分のマクロブロック行右端は、その右上マクロブロックの復号結果が必要であるが、当該右上マクロブロックを含むマクロブロック行は別の復号処理プロセッサで並列に処理が進んでいる。このため、当該マクロブロック行右端に達したとき、当該右上マクロブロックはすでに処理が完了している確率が非常に高い。
このように、各復号処理プロセッサの処理対象のマクロブロック行を階段上に異ならせることによって、上記(a)の発生を抑えることができるのである。
また、マクロブロックの処理順序の制御は、上述した実施の形態の復号処理装置においては、縦の帯状部分の左右両端のマクロブロックにおけるプロセッサ間通信で自動的になされている。これには標準的なブロッキング通信機構を使用すればよいので、特殊な装置は不要である。つまり上記(b)の問題が解消できることを意味している。
また、上述した実施の形態の復号処理装置においては、各縦の帯状部分の左右両端のマクロブロックでしかプロセッサ間通信を必要としないので、上記(C)が少なくて済むことを意味している。
特に、各マクロブロックにおいて上のマクロブロックは同じ復号処理プロセッサで処理される。したがって、上のマクロブロックの処理結果を高コストなプロセッサ間通信でやりとりする必要はなく、1次キャッシュなどプロセッサに密結合した速いメモリ上で読み書きできると言うメリットもある。
このように、上述した実施の形態の復号処理装置は、上記(a)、(b)、(c)の全ての問題を解決することができる。
その他の効果として、復号処理プロセッサ間の同期タイミングは各縦の帯状部分のマクロブロック行の左右の両端のみとなる。つまり、ある復号処理プロセッサが他の復号処理プロセッサを待つ可能性のあるポイントは各縦の帯状部分のマクロブロック行の左右の両端のみとなる。
このため、各マクロブロックの処理時間にばらつきがあったとしても、各縦の帯状部分のマクロブロック行あたりで平均化される効果がある。各復号処理プロセッサで並列動作する各縦の帯状部分のマクロブロック行(マクロブロック単体ではない)の処理時間にばらつきがなければ、最も理想的な効率で並列動作が行われる。
このとき、ピクチャの縦マクロブロック数が十分大きければ、全体の復号処理時間はほぼプロセッサ数分の1(1/プロセッサ数)とすることができる。すなわち、復号処理の高速化も実現できる。
[この発明の方法、プログラム]
図2〜図6を用いて説明したビットストリーム解析部1において行われる動画像データにより形成される画面の分割と動画像データ(マクロブロックデータ)の複数の復号処理プロセッサへの分配方法は、この発明による方法が適用されたものである。
そして、ビットストリーム解析部1は、コンピュータによって構成することも可能である。したがって、図2〜図6を用いて説明した画面の分割方法、動画像データの分配方法をビットストリーム解析部1において実行されるプログラムによって実現することも可能である。このように、ビットストリーム解析部1において実行可能なように構成したプログラムが、この発明によるデータ分配プログラムである。
また、図7〜図10を用いて説明した符号化された動画像データの復号方法が、この発明による復号処理方法が適用されたものである。そして、図7〜図10に示した処理を、復号処理プロセッサにおいて実行可能なように構成したプログラムが、この発明による復号処理プログラムである。
[その他]
なお、ピクチャの解像度、復号処理の並列数は特に限定はない。種々の解像度の動画像データをこの発明の装置、方法、プログラムによって復号処理することができる。また、復号処理の並列数、すなわち、復号処理プロセッサの数も種々の数とすることができる。
例えば、Full−HD(1920ピクセル×1080ピクセル)を3つの復号処理プロセッサで並列復号する場合などにおいては、この発明は特に有効である。すなわち、縦マクロブロック数に対する復号処理プロセッサの数がそれほど多くない方が効果は大きいためである。
これは、復号処理プロセッサの数が多いと、画面の上あるいは下に行くにしたがって復号処理プロセッサが余ってしまうため、結果として使用されない復号処理プロセッサが発生し、逆に効率が悪くなってしまうためである。
もちろん、上述のFull−HD以下の解像度の画像を処理する場合であって、また、それ以上の解像度の画像を処理する場合であっても、復号処理プロセッサの数を適切に考慮することによって、復号処理を効率的に行うことが可能である。
また、縦の帯状部分の分割の仕方は種々の態様が考えられる。例えば画面の中心部分の縦の帯状部分の幅をそれ以外の縦の帯状部分よりも少なくしたり、逆に多くしたりするなどのこともできる。しかし、上述した実施の形態で説明したように、(ほぼ)等分割となるよいにしたほうが効果は大きい。マクロブロック行単位の処理時間のばらつきを最小限にできる可能性が高いからである。
なお、例えば、処理能力の異なる復号処理プロセッサを組み合わせて用いるようする場合も考えられる。このような場合には、復号処理プロセッサの処理能力に応じて、各復号処理プロセッサに割り当てる縦の帯状部分の幅を調整するようにしてもよい。
すなわち、処理能力の高い復号処理プロセッサに対しては、幅の広い縦の帯状部分を割り当て、それよりも処理能力の低い復号処理プロセッサに対しては、それよりも幅の狭い縦の帯状領域を割り当てるといったことが可能である。
また、複数の復号処理プロセッサの処理能力が同程度の場合であっても、割り当てられた縦の帯状部分の画像データによっては、処理の負荷がばらついてしまう場合もあると考えられる。
そこで、復号対象の画像データの特徴、例えば、ビットストリーム解析部1から出力されるDCT係数のAC成分の量などから、復号処理に負荷のかかる処理ブロックとそうでない処理ブロックとを把握するようにする。
そして、復号処理に負荷のかかる処理ブロックを多く含むようになる縦の帯状領域については、その幅を短くし、復号処理に負荷のかかる処理ブロックが少ない縦の帯状領域については、その幅を長くするようにしてもよい。
このように、複数の復号処理プロセッサにおける復号処理にかかる負荷ができるだけ均等になるように、各復号処理プロセッサに割り当てる縦の帯状領域の幅を決定するようにすることも可能である。
また、上述した実施の形態においては、ピクチャ幅を復号処理プロセッサの数で割り算して余りが出た場合に、図4、図5においては、画面の左端の縦の帯状部分から帯状部分の幅を調整するようにした。しかしこれに限るものではない。例えば、画面の右端の縦の帯状部分から帯状部分の幅を調整するようにしてもよい。
また、画面の中央の縦の帯状部分→画面の右端の縦の帯状部分→画面の左端の縦の帯状部分というように、予め決められた順番で縦の帯状部分の幅を調整するようにしてもよい。すなわち、縦の帯状部分の幅の調整は、適宜の順番で割り振りを行うようにすることができる。
復号処理プロセッサは、後述もするように、CPU上のソフトウェアプログラムで実現することもできる。もちろん、ハードウェア回路による装置でもよく、実現方法は問わない。復号処理プロセッサ自体が、たとえば機能分散による並列化のために複数の装置から構成されていてもよい。
また、バッファリングモジュールは、FIFO回路を使用するようなハードウェアでもよいし、いわゆるセマフォなどを使用してソフトウェアで実現してもよい。ここで、セマフォとは、簡単には、平行して動作しているプロセス間で同期を取ったり、割込み処理の制御を行ったりする機構を意味している。
なお、上述した実施の形態では、説明を簡単にするために、第1のバッファ3(0)〜3(N−2)と第2のファイル場4(0)〜4(N−2)を復号処理プロセッサ間に設ける構成とした。しかしこれに限るものではない。バッファリングモジュールは、ひとつのモジュールとして全ての復号処理プロセッサからの要求を調停しながら送受信を行うように構成することも可能である。
なお、上述した実施の形態の復号処理装置においては、「左・左上・上・右上に対する依存関係」だけが本質的な前提条件なので、同様の依存関係をもつ2次元データ処理であれば、動画像復号に限らず種々の処理に適用可能である。例えば、符号処理、静止画処理、高画質化処理などに適用可能である。
すなわち、上述した実施の形態においては、復号処理を行う場合について説明したが、上述したように、画面を複数の縦の帯状部分に分割し、各縦の帯状部分毎であって、マクロブロック単位に符号化処理を行うようにしてもよい。
この場合に、隣接する縦の帯状部分のマクロブロックの符号化処理の結果が必要な場合には、上述した復号処理の場合と同様にして、符号化を行う複数のプロセッサ間でデータの送受を行うようにすればよい。
また、処理単位(依存関係をもつ単位)が16ピクセル×16ピクセルのマクロブロックである必要もない。したがって、種々の大きさ、形状の処理ブロックを処理単位とすることが可能である。
また、依存関係の方向や、それに伴って分割や走査の方向などを回転・反転すれば、それぞれ異なるバージョンが得られる。すなわち、マクロブロック等の処理対象の処理ブロックに対して、参照すべき処理結果を有する処理ブロックの位置に応じて、分割や操作の方向を調整することにより、この発明を適用して、適切な復号処理等の画像処理を行うことができる。
また、上述した実施の形態においては、マクロブロックの処理時において、処理対象のマクロブロックの左、左上、上、右上のマクロブロックの復号処理の結果を参照するものとして説明した。しかし、これに限るものではない。
例えば、処理対象のマクロブロックの左や左上のマクロブロックのみを参照する場合であっても、この発明を適用することができる。その場合には、図9を用いて説明したように、例えば、マクロブロックAが処理対象の場合には、マクロブロックYの処理時のその結果を復号処理プロセッサ2(i−1)から復号処理プロセッサ2(i)に送信する。そして、マクロブロックAの処理時に、復号処理プロセッサ(i)がマクロブロックYの処理結果を復号処理プロセッサ2(i−1)から受信するように構成すればよい。
同様に、処理対象のマクロブロックの右上のマクロブロックのみを参照する場合であっても、この発明を適用することができる。その場合には、例えば、図9を用いて説明したように、例えば、マクロブロックDが処理対象の場合には、マクロブロックEの処理時のその結果を復号処理プロセッサ(i+1)から復号処理プロセッサ2(i)に送信する。そして、マクロブロックDの処理時に、マクロブロックEの処理結果を復号処理プロセッサ(i)が復号処理プロセッサ2(i+1)から受信するように構成すればよい。
1…ビットストリーム解析部、2(0)〜2(N−1)…復号処理プロセッサ、3(0)〜3(N−2)…第1の送受信バッファ、4(0)〜4(N−2)…第2の送受信バッファ、5…フレームメモリ

Claims (13)

  1. 予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段と、
    符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、前記複数の復号処理手段の数に応じ、前記処理ブロックを最小単位として画面を水平方向に複数の縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配手段と、
    前記複数の復号処理手段からの復号された動画像データの供給を受けて、1画面分の画像データを形成する形成手段とを備え
    前記分配手段は、
    画面の水平方向の幅を、前記処理ブロックの水平方向の幅を最小単位とする幅に換算し、
    当該換算した画面の水平方向の幅を、前記複数の復号処理手段の数Nで割り算し、当該割り算の商である整数部分を前記縦の帯状部分のそれぞれの水平方向の基準幅として取得し、余り部分を、当該基準幅に対して値「1」を加算すべき前記縦の帯状部分の数として取得し、
    余りが出ない場合には、当該割り算の商である前記基準幅を前記縦の帯状部分のそれぞれの水平方向の幅として分割する処理を行ない、
    余りが出た場合には、当該割り算の商を前記縦の帯状部分のそれぞれの水平方向の基準幅とし、画面の左側の縦の帯状部分から画面の右側に向かう方向に、当該余りに応じた数の前記縦の帯状部分のそれぞれの水平方向の基準幅に対して値「1」を加算することにより、前記縦の帯状部分のそれぞれの水平方向の幅を特定して分割する処理を行い、
    当該幅を特定する分割処理を行うに際し、前記縦の帯状部分の画面の左端側からの配置番号に相当する変数をi(0〜N−1)とした場合に、
    変数iが前記余りより小さい場合には、水平方向の前記基準幅に対して値「1」を加算することにより、前記縦の帯状部分の水平方向の幅を特定し、
    変数iが前記余りと等しいあるいは余りより大きい場合には、水平方向の前記基準幅を前記縦の帯状部分の水平方向の幅として特定する
    復号処理装置。
  2. 請求項1に記載の復号処理装置であって、
    前記分配手段は、
    変数iが0(ゼロ)の場合は、前記縦の帯状部分の開始位置を0として特定し、
    変数iが0でない場合は、1つの前の縦の帯状部分の開始位置に、1つ前の縦の帯状部分の幅を加算することにより、当該縦の帯状部分の開始位置を特定する
    復号処理装置。
  3. 請求項1または請求項2に記載の復号処理装置であって、
    前記複数の復号処理手段のそれぞれは、
    割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
    前記処理ブロックの復号処理を行う場合に、当該処理対象の処理ブロックの少なくとも左隣の処理ブロックの処理結果と、左上の処理ブロックの処理結果と、右上の処理ブロックの処理結果とを用いるようにしており、
    割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、
    左隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの左隣の処理ブロックの処理結果を受信し、
    当該受信した左隣の処理ブロックの処理結果と、上段の処理ブロックの処理時に受信した左隣の処理ブロックの処理結果とを用いて復号処理を実行し、
    その復号処理の結果を左隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
    割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、
    右隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの右上の処理ブロックの処理結果を受信し、
    当該受信した右上の処理ブロックの処理結果を用いて復号処理を実行し、
    その復号処理の結果を右隣の前記他の縦の帯状部分を処理する復号処理手段に送信する
    復号処理装置。
  4. 請求項に記載の復号処理装置であって、
    前記複数の復号処理手段のそれぞれの間には、処理結果の送受信のための一時記憶手段が設けられており、
    処理結果を受信しようとする復号処理手段は、自己がアクセス可能な前記一時記憶手段の受信用領域が空である間においては待機状態となり、
    処理結果を送信しようとする復号処理手段は、自己がアクセス可能な前記一時記憶手段の送信用領域が満杯である間においては待機状態となる
    復号処理装置。
  5. 請求項1、請求項2、請求項3または請求項に記載の復号処理装置であって、
    画面の左端の縦の帯状部分が割り当てられた復号処理装置から右端の縦の帯状部分が割り当てられた復号処理装置に向かう順番で、復号処理手段毎に1処理ブロック行ずつ階段状に処理が遅れた態様で、各縦の帯状部分の復号処理を並列に実行する
    復号処理装置。
  6. 請求項1または2に記載の復号処理装置であって、
    前記複数の復号処理手段のそれぞれは、
    割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
    復号処理に処理対象の処理ブロックの左側の処理ブロックの処理結果を用いるようにしており、
    割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理した場合には、その処理結果を右隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
    割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、左隣の前記他の縦の帯状部分を処理する復号処理手段から、目的とする処理ブロックの処理結果を受信する
    復号処理装置。
  7. 請求項1または2に記載の復号処理装置であって、
    前記複数の復号処理手段のそれぞれは、
    割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
    復号処理に処理対象の処理ブロックの右上の処理ブロックの処理結果を用いるようにしており、
    割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理した場合には、その処理結果を左隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
    割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、右隣の前記他の縦の帯状部分を処理する復号処理手段から、目的とする処理ブロックの処理結果を受信する
    復号処理装置。
  8. 分配手段が、符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、複数の復号処理手段の数に応じ、予め決められた処理ブロックを最小単位として画面を水平方向に複数の縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配工程と、
    前記複数の復号処理手段のそれぞれが、前記分配工程において分配するようにされた画像データの供給を受けて、前記処理ブロック単位に動画像データの復号処理を行う復号処理工程と、
    前記復号処理工程において前記複数の復号処理手段により復号された動画像データから、形成手段が、1画面分の画像データを形成する形成工程とを有し、
    前記分配工程において、
    画面の水平方向の幅を、前記処理ブロックの水平方向の幅を最小単位とする幅に換算し、
    当該換算した画面の水平方向の幅を、前記複数の復号処理手段の数Nで割り算し、当該割り算の商である整数部分を前記縦の帯状部分のそれぞれの水平方向の基準幅として取得し、余り部分を、当該基準幅に対して値「1」を加算すべき前記縦の帯状部分の数として取得し、
    余りが出ない場合には、当該割り算の商である前記基準幅を前記縦の帯状部分のそれぞれの水平方向の幅として分割する処理を行ない、
    余りが出た場合には、当該割り算の商を前記縦の帯状部分のそれぞれの水平方向の基準幅とし、画面の左側の縦の帯状部分から画面の右側に向かう方向に、当該余りに応じた数の前記縦の帯状部分のそれぞれの水平方向の基準幅に対して値「1」を加算することにより、前記縦の帯状部分のそれぞれの水平方向の幅を特定して分割する処理を行い、
    当該幅を特定する分割処理を行うに際し、前記縦の帯状部分の画面の左端側からの配置番号に相当する変数をi(0〜N−1)としたい場合に、
    変数iが前記余りより小さい場合には、水平方向の前記基準幅に対して値「1」を加算することにより、前記縦の帯状部分の水平方向の幅を特定し、
    変数iが前記余りと等しいあるいは余りより大きい場合には、平方向の前記基準幅を前記縦の帯状部分の水平方向の幅として特定する
    復号処理方法。
  9. 請求項8に記載の復号処理方法であって、
    前記復号処理工程において、複数の復号処理手段のそれぞれは、
    割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うようにしており、
    前記処理ブロックの復号処理を行う場合に、当該処理対象の処理ブロックの少なくとも左隣の処理ブロックの処理結果と、左上の処理ブロックの処理結果と、右上の処理ブロックの処理結果とを用いるようにしており、
    割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、
    左隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの左隣の処理ブロックの処理結果を受信し、
    当該受信した左隣の処理ブロックの処理結果と上段の処理ブロックの処理時に受信した左隣の処理ブロックの処理結果とを用いて復号処理を実行し、
    その復号処理の結果を左隣の前記他の縦の帯状部分を処理する復号処理手段に送信し、
    割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、
    右隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの右上の処理ブロックの処理結果を受信し、
    当該受信した右上の処理ブロックの処理結果を用いて復号処理を実行し、
    その復号処理の結果を右隣の前記他の縦の帯状部分を処理する復号処理手段に送信する 復号処理方法。
  10. 請求項9に記載の復号処理方法であって、
    前記複数の復号処理手段のそれぞれの間には、処理結果の送受信のための一時記憶手段が設けられており、
    前記復号処理工程においては、
    前記復号処理手段が処理結果を受信しようとする場合に、自己がアクセス可能な前記一時記憶手段の受信用領域が空である間においては待機状態となり、
    前記復号処理手段が処理結果を送信しようとする場合に、自己がアクセス可能な前記一時記憶手段の送信用領域が満杯である間においては待機状態となる
    復号処理方法。
  11. 予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段を備えた復号処理装置に搭載され、前記複数の復号処理手段に動画像データを分配する分配手段としての機能を実現するコンピュータが、
    符号化された動画像データの供給を受けて、前記動画像データが形成する画面毎に、複数の復号処理手段の数に応じ、前記処理ブロックを最小単位として画面を水平方向に複数の縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データを、前記縦の帯状部分毎に異なる前記復号処理手段に分配する分配ステップを実行するプログラムであって、
    前記分配ステップにおいて、
    画面の水平方向の幅を、前記処理ブロックの水平方向の幅を最小単位とする幅に換算し、
    当該換算した画面の水平方向の幅を、前記複数の復号処理手段の数Nで割り算し、当該割り算の商である整数部分を前記縦の帯状部分のそれぞれの水平方向の基準幅として取得し、余り部分を、当該基準幅に対して値「1」を加算すべき前記縦の帯状部分の数として取得し、
    余りが出ない場合には、当該割り算の商である前記基準幅を前記縦の帯状部分のそれぞれの水平方向の幅として分割する処理を行ない、
    余りが出た場合には、当該割り算の商を前記縦の帯状部分のそれぞれの水平方向の基準幅とし、画面の左側の縦の帯状部分から画面の右側に向かう方向に、当該余りに応じた数の前記縦の帯状部分のそれぞれの水平方向の基準幅に対して値「1」を加算することにより、前記縦の帯状部分のそれぞれの水平方向の幅を特定して分割する処理を行い、
    当該幅を特定する分割処理を行うに際し、前記縦の帯状部分の画面の左端側からの配置番号に相当する変数をi(0〜N−1)とした場合に、
    変数iが前記余りより小さい場合には、水平方向の前記基準幅に対して値「1」を加算することにより、前記縦の帯状部分の水平方向の幅を特定し、
    変数iが前記余りと等しいあるいは余りより大きい場合には、水平方向の前記基準幅を前記縦の帯状部分の水平方向の幅として特定する
    復号処理をコンピュータが実行するデータ分配プログラム。
  12. 請求項11に記載のプログラムにおいて、
    動画像データの復号処理を行う復号処理装置に搭載され、予め決められた処理ブロック単位に動画像データの復号処理を行う複数の復号処理手段のそれぞれを実現する複数のコンピュータのそれぞれが実行するプログラムであって、
    前記複数のコンピュータのそれぞれには、復号対象の動画像データが形成する画面毎に、前記複数のコンピュータの数に応じ、前記処理ブロックを最小単位として画面を縦の帯状部分に分割し、分割したそれぞれの縦の帯状部分に属する動画像データが、前記縦の帯状部分毎に異なる前記コンピュータに供給するようにされており、
    前記複数のコンピュータのそれぞれは、
    割り当てられた縦の帯状部分毎であって、上段の処理ブロック行から下段の処理ブロック行に向かう方向に、処理ブロック行毎に各処理ブロックの復号処理を行うものであり、
    処理ブロックの復号処理を行う場合に、当該処理対象の処理ブロックの少なくともの左
    隣の処理ブロックの処理結果と、左上の処理ブロックの処理結果と、右上の処理ブロックの処理結果とを用いるようにしており、
    割り当てられた前記縦の帯状部分の左隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の左端の処理ブロックを処理する場合には、
    左隣の前記他の縦の帯状部分を処理する復号処理手段から、処理対象の処理ブロックの左隣の処理ブロックの処理結果を受信する第1の受信ステップと、
    前記受信ステップにおいて受信した左隣の処理ブロックの処理結果と、上段の処理ブロックの処理時に受信した左隣の処理ブロックの処理結果を用いて復号処理を実行する第1の復号処理ステップと、
    前記第1の復号処理ステップにおいての復号処理の結果を左隣の前記他の縦の帯状部分を処理するコンピュータに対して送信する第1の送信ステップと
    を実行し、
    割り当てられた前記縦の帯状部分の右隣に他の縦の帯状部分が存在している場合に、割り当てられた前記縦の帯状部分の右端の処理ブロックを処理する場合には、
    右隣の前記他の縦の帯状部分を処理するコンピュータから、処理対象の処理ブロックの右上の処理ブロックの処理結果を受信する第2の受信ステップと、
    前記受信ステップにおいて受信した右上の処理ブロックの処理結果を用いて復号処理を実行する第2の復号処理ステップと、
    前記第2の復号処理ステップにおいての復号処理の結果を右隣の前記他の縦の帯状部分を処理するコンピュータに対して送信する第2の送信ステップと
    を実行する復号処理プログラム。
  13. 請求項12に記載のプログラムであって、
    前記複数のコンピュータのそれぞれの間には、処理結果の送受信のための一時記憶手段が設けられており、
    前記第1の復号処理ステップにおいて、前記コンピュータが処理結果を受信しようとする場合に、自己がアクセス可能な前記一時記憶手段の受信用領域が空である間においては待機状態となるように制御し、
    前記第2の復号処理ステップにおいて、前記コンピュータ段が処理結果を送信しようとする場合に、自己がアクセス可能な前記一時記憶手段の送信用領域が満杯である間においては待機状態となるように制御する
    復号処理プログラム。
JP2009124180A 2009-05-22 2009-05-22 復号処理装置、復号処理方法、およびプログラム Expired - Fee Related JP5343703B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009124180A JP5343703B2 (ja) 2009-05-22 2009-05-22 復号処理装置、復号処理方法、およびプログラム
US12/780,216 US9179158B2 (en) 2009-05-22 2010-05-14 Decode processing apparatus, decode processing method, data distribution program, and decode processing program
CN2010101812662A CN101895746B (zh) 2009-05-22 2010-05-17 解码处理设备及方法和数据分发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009124180A JP5343703B2 (ja) 2009-05-22 2009-05-22 復号処理装置、復号処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2010273190A JP2010273190A (ja) 2010-12-02
JP5343703B2 true JP5343703B2 (ja) 2013-11-13

Family

ID=43104790

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009124180A Expired - Fee Related JP5343703B2 (ja) 2009-05-22 2009-05-22 復号処理装置、復号処理方法、およびプログラム

Country Status (3)

Country Link
US (1) US9179158B2 (ja)
JP (1) JP5343703B2 (ja)
CN (1) CN101895746B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7443594B2 (ja) 2019-08-20 2024-03-05 ラピスセミコンダクタ株式会社 半導体装置及びトランジスタ

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10244239B2 (en) * 2010-12-28 2019-03-26 Dolby Laboratories Licensing Corporation Parameter set for picture segmentation
JP5994367B2 (ja) * 2012-04-27 2016-09-21 富士通株式会社 動画像符号化装置、動画像符号化方法
JP6080405B2 (ja) * 2012-06-29 2017-02-15 キヤノン株式会社 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム
JP2014220550A (ja) * 2013-05-01 2014-11-20 株式会社Jvcケンウッド フィルタ処理装置、フィルタ処理方法及びフィルタ処理プログラム
CN104754353B (zh) * 2013-12-31 2018-08-10 珠海全志科技股份有限公司 Vc-1编解码insc的实现方法及系统
CN103763556B (zh) * 2014-01-29 2018-03-06 广东威创视讯科技股份有限公司 视频图像编解码装置及其方法、传输系统及其方法
CN110058792B (zh) * 2018-01-18 2022-08-30 伊姆西Ip控股有限责任公司 扩大存储空间的方法、设备以及计算机程序产品
US11381867B2 (en) * 2019-01-08 2022-07-05 Qualcomm Incorporated Multiple decoder interface for streamed media data
CN111447453A (zh) * 2020-03-31 2020-07-24 西安万像电子科技有限公司 图像处理方法及装置
EP4254946A1 (en) * 2022-03-28 2023-10-04 Beijing Xiaomi Mobile Software Co., Ltd. Encoding/decoding video picture data

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07115649A (ja) * 1993-10-15 1995-05-02 Mitsubishi Electric Corp 映像信号符号化復号化装置
US5841936A (en) * 1994-10-07 1998-11-24 Sony Corporation Picture data recording/reproducing apparatus for providing divisional picture management without boundary distortion
US5646687A (en) * 1994-12-29 1997-07-08 Lucent Technologies Inc. Temporally-pipelined predictive encoder/decoder circuit and method
US6263023B1 (en) * 1998-10-15 2001-07-17 International Business Machines Corporation High definition television decoder
US7050497B2 (en) * 2001-03-28 2006-05-23 Thomson Licensing Process and device for the video coding of high definition images
US20030138045A1 (en) * 2002-01-18 2003-07-24 International Business Machines Corporation Video decoder with scalable architecture
US8401084B2 (en) * 2002-04-01 2013-03-19 Broadcom Corporation System and method for multi-row decoding of video with dependent rows
FR2854754B1 (fr) * 2003-05-06 2005-12-16 Procede et dispositif de codage ou decodage d'image avec parallelisation du traitement sur une pluralite de processeurs, programme d'ordinateur et signal de synchronisation correspondants
US20040258162A1 (en) * 2003-06-20 2004-12-23 Stephen Gordon Systems and methods for encoding and decoding video data in parallel
JP4699685B2 (ja) * 2003-08-21 2011-06-15 パナソニック株式会社 信号処理装置及びそれを用いた電子機器
JP3833224B2 (ja) * 2004-01-30 2006-10-11 キヤノン株式会社 符号化方法及び装置、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
JP4453518B2 (ja) * 2004-10-29 2010-04-21 ソニー株式会社 符号化及び復号装置並びに符号化及び復号方法
JP4407472B2 (ja) * 2004-10-29 2010-02-03 ソニー株式会社 符号化及び復号装置並びに符号化及び復号方法
JP4819517B2 (ja) * 2005-02-16 2011-11-24 オリンパス株式会社 画像処理方法及び画像処理装置
JP2006319944A (ja) * 2005-04-15 2006-11-24 Sony Corp 復号制御装置および方法、記録媒体、並びに、プログラム
CN1870752A (zh) * 2005-05-23 2006-11-29 其乐达科技股份有限公司 应用于视频编码/解码的解块滤波方法及其装置
JP4182442B2 (ja) * 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
US8000388B2 (en) * 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
JP2008072647A (ja) * 2006-09-15 2008-03-27 Toshiba Corp 情報処理装置、デコーダおよび再生装置の動作制御方法
CN101184245A (zh) * 2007-12-25 2008-05-21 北京数码视讯科技股份有限公司 一种视频编码的方法
JP5259625B2 (ja) * 2008-05-23 2013-08-07 パナソニック株式会社 画像復号化装置、画像復号化方法、画像符号化装置、及び画像符号化方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7443594B2 (ja) 2019-08-20 2024-03-05 ラピスセミコンダクタ株式会社 半導体装置及びトランジスタ

Also Published As

Publication number Publication date
CN101895746B (zh) 2013-04-24
JP2010273190A (ja) 2010-12-02
US9179158B2 (en) 2015-11-03
US20100296585A1 (en) 2010-11-25
CN101895746A (zh) 2010-11-24

Similar Documents

Publication Publication Date Title
JP5343703B2 (ja) 復号処理装置、復号処理方法、およびプログラム
CA2760425C (en) Method and system for parallel encoding of a video
US9872018B2 (en) Random access point (RAP) formation using intra refreshing technique in video coding
US8395634B2 (en) Method and apparatus for processing information
Meenderinck et al. Parallel scalability of video decoders
US8213518B1 (en) Multi-threaded streaming data decoding
US8208540B2 (en) Video bitstream transcoding method and apparatus
US10291925B2 (en) Techniques for hardware video encoding
KR102047640B1 (ko) 화상 복호 장치, 화상 복호 방법, 및 컴퓨터 판독가능 기록매체
US20080152014A1 (en) Method and apparatus for encoding and decoding of video streams
TWI512673B (zh) 視頻解碼方法及電腦可讀媒介
TWI776071B (zh) 用以編碼及解碼視訊取樣之轉換區塊的方法、設備和系統
JP2023025180A (ja) 復号する方法、ビデオ復号装置、符号化する方法、ビデオ符号化装置
US8281314B2 (en) Information processing device and method
US8903184B2 (en) Image-encoding method, image-encoding device, and computer-readable recording medium storing image-encoding program
JP4879269B2 (ja) 復号化方法及び装置
US9392278B2 (en) Image encoding or decoding apparatus, system, method, and storage medium for encoding or decoding a plurality of images in parallel
US20170013268A1 (en) Method and apparatus for processing video
KR101292668B1 (ko) 멀티프로세서기반의 영상 복호화 장치 및 방법
US9398306B2 (en) Entropy encoding/decoding method and apparatus for accelerating video decoding
JP2023018110A (ja) ビデオサンプルの変換されたブロックを符号化および復号する方法、装置、およびシステム
JPWO2008136164A1 (ja) 復号化回路、復号化方法及び画像再生装置
JP5265984B2 (ja) 画像符号化装置及び復号装置
US9219926B2 (en) Image encoding apparatus, image encoding method and program, image decoding apparatus, image decoding method and program
JP2013102305A (ja) 画像復号装置、画像復号方法、プログラム及び画像符号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121030

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130716

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130729

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees