JP5698156B2 - 復号装置、復号方法、および編集装置 - Google Patents

復号装置、復号方法、および編集装置 Download PDF

Info

Publication number
JP5698156B2
JP5698156B2 JP2011552108A JP2011552108A JP5698156B2 JP 5698156 B2 JP5698156 B2 JP 5698156B2 JP 2011552108 A JP2011552108 A JP 2011552108A JP 2011552108 A JP2011552108 A JP 2011552108A JP 5698156 B2 JP5698156 B2 JP 5698156B2
Authority
JP
Japan
Prior art keywords
block
processing
element data
priority
decoding
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.)
Active
Application number
JP2011552108A
Other languages
English (en)
Other versions
JP2012529779A (ja
JP2012529779A5 (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.)
Thomson Licensing SAS
Original Assignee
Thomson Licensing SAS
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 Thomson Licensing SAS filed Critical Thomson Licensing SAS
Publication of JP2012529779A publication Critical patent/JP2012529779A/ja
Publication of JP2012529779A5 publication Critical patent/JP2012529779A5/ja
Application granted granted Critical
Publication of JP5698156B2 publication Critical patent/JP5698156B2/ja
Active 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
    • 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
    • H04N19/176Methods 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 the region being a block, e.g. a macroblock
    • 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
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • 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
    • H04N19/174Methods 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 the region being a slice, e.g. a line of blocks or a group of blocks
    • 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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder

Description

本発明は、符号化されたデータの復号装置および復号方法に関し、特に複数のプロセッサが並列的に動作する符号化データの復号処理に関する。
CPUがプログラムを実行するときの処理の単位として、プロセスとスレッドがある。オペレーティングシステムのマルチタスク機能を利用して、複数のプロセスは並列的に動作することができる。複数のプロセスが並列的に動作して処理を行うことはマルチプロセスと呼ばれる。しかし、個々のプロセス間では基本的にメモリが共有されないため、同一メモリ上のデータへのアクセスが必要な処理を行う場合、マルチプロセスでは処理効率が悪い。
一方、1つのプログラムは、複数のスレッドを生成して各スレッドを並列的に動作させることができる。複数のスレッドが並列的に動作して処理を行うことはマルチスレッドと呼ばれる。個々のスレッド間ではメモリが共有されるので、同一メモリ上のデータへのアクセスが必要な処理を行う場合、マルチスレッドの方が、処理効率が良い。複数のCPUに対して個々のスレッドを割り当てて処理を行うことにより、処理効率はさらに上がる。
特開2000−20323号公報 特開2008−118616号公報
以下では、CPUリソースを利用して処理を実行するN個の処理部を効率的に使って、1つの処理を、独立に実行できるM個の処理単位に分割して処理することを考える。ただし、N,Mは整数であり、N≧1、M≧1とする。これらM個の処理単位は、MPEG2のスライスとする。N個の処理部はN個のプロセッサ(CPUコア)に一対一に対応するものとする。
すべてのスライスを処理し終えるまで、すべての処理部になるべく均等に処理を割り当てることで、処理部を効率的に使用することができる。また、処理部のアイドル時間を減らし、全体の処理時間を短くすることができる。ただし、スライスの処理中に、I/O処理(入出力処理)などによって処理部がアイドル状態になることはないと仮定する。
M≦Nのとき、M個のスライスをN個の処理部のうちのM個に一対一に対応させ、それぞれのスライスをそれぞれの処理部で処理することが効率的であることは明らかである。
MがNよりも十分に大きい場合で、各スライスの処理時間が事前に分かっている、もしくは各スライスの処理時間をある程度の正確さで予測できるときには、処理時間がなるべく均等になるように、M個のスライスを処理部の数と同じN個のグループに分け、N個のグループをN個の処理部に一対一に対応させればよい。このようにすることで、M≦Nのときと同様にそれぞれのスライスをそれぞれの処理部で処理することができる。
しかしながら、MがNよりも十分に大きい場合で、例えば、MがNの整数倍とならないときや、各スライスの処理時間が事前に分からない、もしくは各スライスの処理時間を正確に予測できないときに、スライスを処理部に効率的に割り当てることは困難である。このような場合、複数のスライスで構成されるデータを処理する場合に、十分な処理速度を得ることができないという問題点がある。
そこで、本発明の目的は、新規かつ有用な復号装置、復号方法、および編集装置を提供することである。本発明の具体的な目的は、符号化されたデータを復号する際の処理速度を向上した復号装置、復号方法、および編集装置を提供することである。
本発明の一観点によれば、画像または音声の符号化データを復号する装置であって、前記符号化データを供給するソースであって、該符号化データが独立して復号可能な複数の要素データからなり、該複数の要素データの各々が少なくとも一つのブロックからなる、前記ソースと、前記少なくとも一つのブロックのうち、最初に処理される第1のブロックを特定するブロック情報を生成する第1の処理手段と、前記第1のブロックの後続のブロックを特定するブロック情報を、その対応する要素データにおける復号処理の順序に基づいて、生成する複数の第2の処理手段と、前記生成されたブロック情報のうち、未参照の1つのブロック情報を参照することにより特定されるブロックを、並列して復号する複数の復号手段と、前記復号されたブロックを格納するとともに、そのブロックに対応する復号された要素データを形成する記憶手段と、を備える、前記装置が提供される。
本発明によれば、複数の復号手段が、要素データを構成するブロックを処理単位として要素データを復号する。復号の際は、未参照の1つのブロック情報を参照することにより特定されるブロックが復号される。また、最初のブロックの後続のブロックを特定するブロック情報が、その対応する要素データにおける復号処理の順序に基づいて、生成される。このため、ブロック情報に従って、予め定められている処理の順番で各ブロックが復号される。このように、要素データを構成するブロックを処理単位とすることで、要素データを処理単位とするよりも、いずれかの復号手段が処理の順番待ちのために処理対象が供給されずに休止することを抑制できる。そのため、復号手段全体の休止時間の合計が減少する。その結果、復号手段全体の利用効率が高まる。よって、符号化されたデータを復号する際の処理速度を向上することが可能となる。
本発明の他の観点によれば、画像または音声の符号化データを復号する方法であって、プロセッサが、前記符号化データに含まれる複数の要素データの各々を構成する少なくとも一つのブロックのうち、最初に処理されるブロックを特定するブロック情報を生成するステップであって、前記要素データが独立して復号可能であり、前記ブロックが、対応する要素データにおいて復号処理の順序が付けられる、前記ステップと、複数のプロセッサが並列に、生成された未参照の1つのブロック情報を参照することにより特定されるブロックを復号するステップと、複数のプロセッサが並列に、前記復号処理の順序に基づいて、復号したブロックが構成する要素データに属する、次のブロックを特定するブロック情報を生成するステップと、すべてのブロックを復号するまで、復号するステップと次のブロックを特定するブロック情報を生成するステップとを繰り返すステップと、を含む、前記方法が提供される。
本発明によれば、複数のプロセッサが、要素データを構成するブロックを処理単位として要素データを復号する。復号の際は、未参照の1つのブロック情報を参照することにより特定されるブロックが復号される。次いで、復号されたブロックが構成する要素データに属する、次のブロックを特定するブロック情報が生成される。このため、ブロック情報に従って、予め定められている処理の順番で、各ブロックが復号される。このように、要素データを構成するブロックを処理単位とすることで、要素データを処理単位とするよりも、いずれかの復号手段が処理の順番待ちのために処理対象が供給されずに休止することを抑制できる。そのため、復号手段全体の休止時間の合計が減少する。その結果、復号手段全体の利用効率が高まる。よって、符号化されたデータを復号する際の処理速度を向上することが可能となる。
本発明によれば、符号化されたデータを復号する際の処理速度を向上した復号装置、復号方法、および編集装置を提供できる。
本発明の第1の実施形態に係る復号装置の構成を示すブロック図である。 MPEG−2のスライスとマクロブロックを示す図である。 本発明の第1の実施形態に係る復号装置の機能構成図である。 各ワーカー処理部にブロックを割り当てる様子を示す図である。 本発明の第1の実施形態に係るメイン処理部の復号処理を示すフローチャートである。 本発明の第1の実施形態に係るワーカー処理部の復号処理を示すフローチャートである。 本発明の第1の実施形態に係るワーカー処理部の他の復号処理を示すフローチャートである。 スライスとブロックの例を示す図である。 2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。 キューの状態を示す図である。 1スライス当たりのブロックの数Kに対するスピードアップ率Rを示すグラフである。 スライスとブロックの例を示す図である。 2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。 キューの状態を示す図である。 2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。 キューの状態を示す図である。 スライスとブロックの例を示す図である。 2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。 キューの状態を示す図である。 2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。 キューの状態を示す図である。 スライスとブロックの例を示す図である。 2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。 キューの状態を示す図である。 本発明の第2の実施形態に係る編集装置のハードウェア構成を示すブロック図である。 本発明の第2の実施形態に係る編集装置の機能構成図である。 本発明の第2の実施形態に係る編集装置の編集画面の一例を示す図である。 本発明の第2の実施形態に係る編集方法を示すフローチャートである。
以下、図面に基づいて本発明に係る実施形態を説明する。
{第1の実施形態}
本発明の第1の実施形態は、符号化された画像データを復号する復号装置および復号方法についての例である。以下の具体例では、第1の実施形態に係る復号装置および復号方法が、符号化された画像データに対してMPEG−2に準拠した復号処理を実行するとして説明する。
図1は、本発明の第1の実施形態に係る復号装置の構成を示すブロック図である。
図1を参照するに、復号装置10は、復号処理を実行する複数のCPU20,21と、符号化された画像データを記憶するRAM22と、CPU20,21が実行するプログラムを格納したROM23と、CPU20,21、RAM22、ROM23を接続するバス24とを有している。
CPU20,21は、ROM23に記録されているプログラムをRAM22に展開し、復号処理を実行する。CPU20,21はそれぞれ1個ずつプロセッサ(CPUコア)を有しているが、CPU20,21の少なくとも一方が2個以上のプロセッサを有するCPUモジュールとして構成されていてもよい。復号装置10が有するプロセッサの数は2個以上であれば何個でもよい。
RAM22は、符号化された画像データなどを記憶している。
符号化された画像データは、この画像データを構成する要素であるスライスを複数備えている。スライスは複数のブロックで構成されており、ブロック単位で復号される。説明を簡単にするため、スライスとブロックは以下のように定義される。すなわち、スライスはMPEG−2のスライスである。また、ブロックはMPEG−2のマクロブロックである。
図2は、MPEG−2のスライスとマクロブロックを示す図である。
図2を参照するに、MPEG−2では1枚の画面1000が16ライン幅のスライス1100で構成されている。スライス1100は16ライン×16画素のマクロブロック1200で構成されている。
第1の実施形態では、スライスを構成するブロックの単位で処理部に復号処理が割り当てられる。ブロックは、スライスよりもデータサイズが小さい。ブロックの単位で処理部に復号処理を割り当てることで、従来よりも処理部に対する復号処理の割り当てがより効率的となる。以下では、説明を簡単にするため、符号化フレームのうち、I(Intra)フレームのみを使用すると仮定する。なお、以下の説明は、同様にP(Predictive)フレームやB(Bidirectionally Predictive)フレームの復号処理にも拡張できる。
図3は、本発明の第1の実施形態に係る復号装置の機能構成図である。
図3を参照するに、復号装置10は、復号処理部30として動作する。CPU20は、RAM22上に展開されるプログラムによって、メイン処理部31、ワーカー処理部32a、スライスデコーダ33aとして動作する。CPU21は、RAM22上に展開されるプログラムによって、ワーカー処理部32b、スライスデコーダ33bとして動作する。
メイン処理部31は、各スライスのブロックの復号処理を開始するために必要な処理を実行する。図3では、CPU20にメイン処理部31が割り当てられているが、CPU21にメイン処理部31が割り当てられていてもよい。ワーカー処理部32a,32bは、スライスデコーダ33a,33bにブロックを割り当て、割り当てたブロックの復号処理を実行させる。
スライスデコーダ33a,33bは、ワーカー処理部32a,32bによって割り当てられたブロックの復号処理を実行する。各ワーカー処理部と各スライスデコーダは一対一の対応関係を有する。すなわち、ワーカー処理部32aはスライスデコーダ33aと対応関係を有しており、スライスデコーダ33aにブロックを割り当て、割り当てたブロックの復号処理を実行させる。また、ワーカー処理部32bはスライスデコーダ33bと対応関係を有しており、スライスデコーダ33bにブロックを割り当て、割り当てたブロックの復号処理を実行させる。この例では、スライスデコーダがソフトウェアで実現されることを想定しているが、ハードウェアで実現されてもよい。
RAM22は、キュー34、スライスバッファ35、ビデオメモリ36、スライスコンテキスト37、カウンタ38を有している。
キュー34にはラッパーブロックが格納される。ラッパーブロックは、処理対象のブロックの情報を含む。スライスバッファ35には、符号化されたスライスが格納される。ビデオメモリ36には、復号処理されたスライスが格納される。スライスコンテキスト37には、スライスの復号処理の状態に関する情報が格納される。スライスの復号処理の状態に関する情報は、具体的にはスライスの符号の開始位置の情報と、そのスライスの出力先のビデオメモリ36の位置の情報とを含む。カウンタ38には、復号処理の開始時に初期化され各スライスの復号処理が完了するごとに更新される値が格納される。
スライスデコーダ33a,33bによる復号処理は、より詳細には以下のように行われる。スライスコンテキスト37は、スライスの符号の開始位置の情報と、そのスライスの出力先のビデオメモリ36の位置の情報とが与えられて初期化される。スライスデコーダ33a,33bは、与えられたスライスコンテキスト37に従って、スライスの先頭のブロックから1個ずつ順番にブロックを復号し、復号したブロックをビデオメモリ36に出力する。スライスデコーダ33a,33bは、スライスのブロックを復号する毎にスライスコンテキスト37を更新する。
<スライスを構成するブロック>
MPEG−2のスライスは、独立に復号処理できるデータであるが、同じスライスに属するブロック(マクロブロック)は、スライス先頭のブロックを除いて、次の3つの依存関係を持つ。
(1)DC予測:ラスタ順で1個前のブロックから現在のブロックのDC成分が予測される。
(2)量子化スケール:ラスタ順で1個前のブロックの量子化スケールと同じ量子化スケールを使う場合、ブロックの量子化スケールを省略できる。
(3)符号の開始位置:あるブロックの符号の開始位置は、それまでのブロックの符号をすべて復号しなければ明らかにならない。
上記のDC予測、量子化スケール、符号の開始位置はスライスコンテキストとして保存される。
符号化されたストリームの各スライスを復号するには、MPEGヘッダ(シーケンスヘッダやピクチャヘッダなど)に含まれる、スライスに共通の情報(クロマサブサンプリング、DC精度、量子化マトリクスなど)が必要である。説明を簡単にするため、スライスが復号される前にこの情報が解析され、スライスデコーダに暗黙的にこの情報が与えられると仮定する。
各スライスの符号の開始位置は、ストリーム中のスライスヘッダによって合図される。ストリームからこのスライスヘッダを探すことで、各スライスの符号の開始位置が得られる。ただし、スライス中のブロックの符号の開始位置を復号処理される前に予め知ることはできない。
本発明の第1の実施形態では、スライスSはK個のブロックに分割する。1つのスライスSを分割したK個のブロックをS0/K,S1/K,・・・S(K−1)/Kとする。なお、ブロックの個数Kは1以上であれば、いずれの整数を選択してもよいが、以下の点を考慮することが好ましい。
スライスをブロックに分割する方法は任意であるが、分割幅は適当に決める必要がある。分割幅はブロックの処理時間と関係するため、分割幅が大きすぎると、各ワーカー処理部に処理を均等に割り当てることが難しくなる。逆に、分割幅が小さすぎると、キューへのアクセス、スライスの処理状態(スライスコンテキスト)の保存・復元、スライスの処理におけるキャッシュミスなどによるオーバーヘッドが増加する。
<ブロックの依存関係(ラッパーブロック)>
1つのスライスSを構成するK個のブロックS0/K,S1/K,・・・S(K−1)/Kには依存関係(逐次性)がある。依存関係とは、2つのブロックに関して、一方のブロックの処理を開始する前に他方のブロックの処理が完了しているということである。この依存関係は、S0/K→S1/K→・・・S(K−1)/Kと表される。Sk/K→S(k+1)/K(k=0,・・・,K−1)は、ブロックS(k+1)/Kの処理を開始する前にブロックSk/Kの処理が完了していることを表す。
ラッパーブロックは、各スライスSのブロックの処理の依存関係の情報を有し、特に、処理対象のブロックを特定する情報を含んでいる。各スライスSのラッパーブロックWk/Kがキュー34から取り出されると、以下の処理が実行される。
0≦k<K−1の場合:ブロックSk/Kが処理される。その後、次に処理されるブロックS(k+1)/Kに関するラッパーブロックW(k+1)/Kがキューに追加される。
k=K−1の場合:ブロックSk/Kが処理され、スライスSの復号処理が完了する。
復号処理の初期状態において、各スライスの最初のラッパーブロックW0/Kが生成され、キュー34に格納される。ワーカー処理部32a,32bは、スライスSのラッパーブロックWk/Kをキュー34から取り出して、ラッパーブロックWk/Kが指定するスライスSのブロックSk/Kの処理を行った後、スライスSの次のブロックS(k+1)/Kの処理に関するラッパーブロックW(k+1)/Kをキューに追加する。このようにすることで、スライスSのブロックS(k+1)/Kの処理を開始する前にスライスSのブロックSk/Kの処理が完了しているという依存関係が保証される。
<キューの制御>
図4は、各ワーカー処理部にラッパーブロックを割り当てる様子を示す図である。図4を参照するに、キュー34には処理待ちのラッパーブロックが置かれ、ワーカー処理部32a,32bはキュー34からラッパーブロックを取り出し、取り出したラッパーブロックを処理する。
図4に示す例では、キュー34は3つのラッパーブロックを格納することができる。キュー34にラッパーブロックが追加されるときには、ラッパーブロックからなる列の最後尾にラッパーブロックが追加される。また、キュー34からラッパーブロックが取り出されるときには、ラッパーブロックからなる列の先頭のラッパーブロックが取り出される。ただし、ラッパーブロックに優先度を関連付けておき、キュー34に格納されたラッパーブロックを、そのラッパーブロックに関連付けられた優先度の高い順に取り出してもよい。図4では、キュー34に3つのラッパーブロックA,B,Cが格納された状態において、ラッパーブロック列の先頭のブロックAが取り出され、取り出されたラッパーブロックAがワーカー処理部32aによって処理される様子が示されている。
キュー34からラッパーブロックを取り出す、あるいはキュー34にラッパーブロックを追加するため、複数のワーカー処理部が同時にキュー34にアクセスすると、そのアクセスは排他制御される。すなわち、同時に1つのワーカー処理部からのアクセスのみが許可され、他のワーカー処理部がアクセスできない。この制御によって、2つ以上のワーカー処理部が同一のラッパーブロックをキュー34から取り出して処理することはなくなり、キュー34の状態の整合性が保たれる。
<ブロックを処理する優先度>
スライスを分割したブロックに対して、優先度という指標を与え、複数のスライスについてそれぞれブロックがキュー34にある場合に、優先度の高いブロックを優先的に処理することで、ワーカー処理部32a,32bに対する処理の割り当てが、より効率的になりやすくなる。本発明の第1の実施形態では、3つの優先度P,P,Pが定義される。それぞれの優先度はブロック毎に与えられる。
優先度Pは、スライスにおけるブロックの処理の進捗割合に基づく指標である。ブロックSk/Kの優先度P(Sk/K)は、ブロックSk/Kを含む以降のブロックの処理時間とスライスS全体の処理時間の比として(1)式のように定義される。
Figure 0005698156
(1)式において、T(Sj/K)はブロックSj/Kの処理時間であり、T(S)はスライスS全体の処理時間である。実際には、T(Sj/K)とT(S)が未知であっても、それらの比がある程度の正確さで予測できれば、優先度Pを求めることができる。(1)式は(2)式と等価である。
Figure 0005698156
(2)式は、進捗割合の低いスライスのブロックが優先的に処理されることを示している。各ブロックの処理時間が同一であると仮定すると、K個のブロックのうちブロックS0/KからブロックSk−1/Kまでのk個のブロックの処理が終了したときの進捗割合はk/Kと表される。したがって、(2)式から優先度Pは(3)式となる。
Figure 0005698156
優先度Pは、スライスにおける未処理のブロックの処理時間に基づく指標である。ブロックSk/Kの優先度P(Sk/K)は、ブロックSk/Kを含む以降のブロックの処理時間として(4)式のように定義される。
Figure 0005698156
(4)式において、T(Sj/K)はブロックSj/Kの処理時間である。
T(Sj/K)が未知の場合には、例えば、処理が終了しているブロックの処理時間からT(Sj/K)を予測すればよい。(4)式は、残りの処理時間(残りの処理時間の予測値)が長いスライスのブロックが優先的に処理されることを示している。
優先度Pは、ブロックに対応するラッパーブロックがキュー34に追加されたタイミングに基づく指標である。ブロックSk/Kの優先度P(Sk/K)は、ブロックSk/Kに対応するラッパーブロックがキュー34に追加された時刻tk/Kとして(5)式のように定義される。
Figure 0005698156
(5)式に従って、最後に処理されたブロックが属するスライスと同じスライスのブロックの処理を優先的に行うことで、キャッシュの利用効率が高まり、処理速度が向上する。
ブロックの分割幅(ブロックの処理時間)がある程度大きく、スライス全体で同一の優先度Pを持つブロックが多数存在するとき、例えば、優先度P,Pを導入すると、ワーカー処理部32a,32bに対して、より均等にブロックの処理を割り当てることができる。
図5Aは、本発明の第1の実施形態に係るメイン処理部31の復号処理を示すフローチャートである。
図5Aを参照するに、メイン処理部31は処理S10を実行する。処理S10は次に説明するステップS100、S101、S105、S110、S116、S115、S120、およびS125を含んでいる。
最初に、ステップS100では、1つのシーンまたはクリップの復号処理が終了したか否かの判定結果に応じて、処理が分岐する。
1つのシーンまたはクリップの復号処理が終了していない場合、ステップS101では、メイン処理部31は、1つのシーンまたはクリップを構成する1つのフレームにおいて処理対象とするスライスを選択する。
次いで、ステップS105では、メイン処理部31は、処理対象とするスライスの数と同じ値をカウンタ38に格納する。
次いで、ステップS110では、メイン処理部31は、各スライスの最初のラッパーブロックを生成する。このとき、スライスの数と同数のラッパーブロックが生成される。
生成されたラッパーブロックには、スライスコンテキストが含まれている。このスライスコンテキストには、復号処理すべきスライスの符号が格納されているスライスバッファ35の位置の情報と、そのスライスの出力先のビデオメモリ36の位置の情報と、そのラッパーブロックが属するスライスの復号処理の進捗割合と、優先度とが含まれている。
スライスバッファ35の位置は、復号処理すべきスライスのブロックの開始位置を示す。ビデオメモリ36の位置は、復号処理後のブロックを格納する位置を示す。
進捗割合は、例えば(復号処理されたブロックの数)/(スライスに含まれる全てのブロックの数)として計算される。または、進捗割合を、(復号処理されたブロックの符号長の累積値)/(スライスに含まれる全てのブロックの符号長の合計値)として計算することもできる。
進捗割合の計算に使用される、スライスに含まれる全てのブロックの数や、スライスに含まれる全てのブロックの符号長の合計値は、スライス全体の復号処理が開始される前にスライスコンテキスト37に保存されている。ブロックが復号処理される毎に、復号処理されたブロックの数や、復号処理されたブロックの符号長の累積値が更新され、スライスコンテキスト37に保存される。
優先度は、1から進捗割合を引いた値として定義される。この優先度は、優先度Pに相当する。この例では、優先度Pのみを使用するが、優先度Pに加えて優先度Pや優先度Pを使用してもよい。
ステップS110では、各スライスの進捗割合が0なので、各スライスの最初のラッパーブロックに関連付けられる優先度は1である。各スライスの最初のラッパーブロックがキュー34から取り出されるとき、各ラッパーブロックは、キュー34に入れられた順番で取り出される。
次いで、ステップS115では、メイン処理部31は、生成したラッパーブロックをキュー34に入れる。
次いで、ステップS116では、メイン処理部31は、ワーカー処理部32a,32bから、ステップS101で選択したスライスの復号処理の終了が通知されるまで待機する。
ワーカー処理部32a,32bから、ステップS101で選択したスライスの復号処理の終了が通知されるとステップS120に進む。ステップS120では、1つのフレームの全てのスライスの復号処理が終了したか否かの判定結果に応じて、処理が分岐する。続けて他のスライスの復号処理を行う場合、ステップS101からの処理が再度実行される。1つのフレームの全てのスライスの復号処理が終了した場合、ステップS100からの処理が再度実行される。
ステップS100において1つのシーンまたはクリップの復号処理が終了した場合、ステップS125では、メイン処理部31は、ワーカー処理部32a,32bの数と同じ数の終了用のラッパーブロックを生成してキュー34に入れる。終了用のラッパーブロックには例えば終了を明示する情報が含まれているため、終了用のラッパーブロックとステップS110で生成されたラッパーブロックとを区別することが可能である。終了用のラッパーブロックをキュー34に入れた後、メイン処理部31は処理S10を終了する。
図5Bは、本発明の第1の実施形態に係るワーカー処理部32a,32bの復号処理を示すフローチャートである。
図5Bを参照するに、ワーカー処理部32a,32bはそれぞれ処理S20a、S20bを実行し、ワーカー処理部32a,32bはこれらの処理S20a、S20bを並列して実行する。処理S20aは次に説明するステップS200、S205、S206、S210、S215、S220、S225、S230、S235、S240、S245、およびS250を含んでいる。処理S20bは処理S20aと同様であるので、フローの詳細の図示を省略している。
最初に、図示を省略しているが、ワーカー処理部32a,32bは、キュー34にラッパーブロックがない場合、キュー34にラッパーブロックが追加されるまで待機する。
キュー34にラッパーブロックがある場合、ステップS200では、ワーカー処理部32a,32bはキュー34から先頭のラッパーブロックを取り出す。
次いで、ワーカー処理部32a,32bは、ステップS200でキュー34から取り出したラッパーブロックが終了用のラッパーブロックであるか否かを確認する。ステップS200でキュー34から取り出したラッパーブロックが終了用のラッパーブロックである場合、ステップS206では、ワーカー処理部32a,32bは、自身が使用しているRAM22の領域を解放するなどの終了処理を行い、処理S20a,S20bを終了する。
ステップS200でキュー34から取り出したラッパーブロックが終了用のラッパーブロックでない場合、ステップS210では、ワーカー処理部32a,32bは、キュー34から取り出したラッパーブロックが示す処理対象のブロックの復号処理をスライスデコーダ33a,33bに行わせる。
具体的には、ステップS210では以下の処理が行われる。ラッパーブロックには、スライスコンテキストが含まれている。前述したように、このスライスコンテキストには、復号処理すべきスライスの符号が格納されているスライスバッファ35の位置の情報と、そのスライスの出力先のビデオメモリ36の位置の情報とが含まれている。ワーカー処理部32a,32bはこれらの情報をスライスデコーダ33a,33bに与える。
スライスデコーダ33a,33bは、符号化されたスライスのデータをビット単位またはバイト単位でスライスバッファ35から読み出し、読み出したデータを復号処理する。ブロックの復号処理が終了すると、スライスデコーダ33a,33bは、復号処理したブロックのデータをビデオメモリ36に保存し、スライスコンテキスト37を更新する。
ワーカー処理部32a,32bがスライスデコーダ33a,33bに与える、スライスの出力先のビデオメモリ36の位置の情報は、フレーム中のスライスの位置とそのスライス中のブロックの位置とに対応したビデオメモリ36中の位置を示している。スライスデコーダ33a,33bは、復号処理したブロックのデータを、上記の情報が示す位置に保存する。1フレームを構成する全てのスライスに含まれる全てのブロックの復号処理が終了したとき、ビデオメモリ36に保存されている各ブロックは、符号化された各スライスに対応した、復号処理されたスライスを構成している。
次いで、ステップS215では、ワーカー処理部32a,32bは、スライスコンテキスト37に基づいて、復号処理されたブロックが属するスライスの進捗割合と優先度を計算する。前述したように、進捗割合は、例えば(復号処理されたブロックの数)/(スライスに含まれる全てのブロックの数)、または(復号処理されたブロックの符号長の累積値)/(スライスに含まれる全てのブロックの符号長の合計値)として計算される。優先度は、1から進捗割合を引いた値として計算される。
次いで、ステップS220では、スライスの最後のラッパーブロックが処理されたか否かの判定結果に応じて、処理が分岐する。進捗割合の値を使用すれば、スライスの最後のラッパーブロックが処理されたか否かの判定を行うことができる。すなわち、進捗割合が1より小さければ、スライスの最後のラッパーブロックはまだ処理されていない。また、進捗割合が1であれば、スライスの最後のラッパーブロックが処理されたことになる。
スライスの最後のラッパーブロックが処理されたとき、ステップS225では、ワーカー処理部32a,32bは、カウンタ38の値を1つデクリメントする。複数のワーカー処理部が同時にカウンタ38にアクセスすると、そのアクセスは排他制御される。
次いで、ステップS230では、ワーカー処理部32a,32bは、カウンタ38の値を確認する。ステップS105でスライスの数と同じ値に設定されたカウンタ38の値は、各スライスの最後のブロックが復号処理されるごとに、ステップS225で1ずつデクリメントされる。このため、カウンタの値が0でなければ、復号処理が終了していないスライスが存在しているので、ステップS200からの処理が再度実行される。また、カウンタの値が0になったとき、全てのスライスのラッパーブロックの処理が終わっているので、ステップS250では、ワーカー処理部32a,32bは、図5AのステップS101で選択されたスライスの復号処理の終了をメイン処理部31に通知する。次いで、ステップS200からの処理が再度実行される。
ステップS220でスライスの最後のラッパーブロックがまだ処理されていないとき、ステップS235では、ワーカー処理部32a,32bは、ステップS210で復号処理したブロックが属するスライスと同じスライスに属するブロックであって、ステップS210で復号処理したブロックの次のブロックを特定する情報を含むラッパーブロックを生成する。
生成されたラッパーブロックには、スライスコンテキストが含まれている。このスライスコンテキストには、復号処理後に更新されたスライスコンテキスト37から得られる、復号処理すべきスライスの符号が格納されているスライスバッファ35の位置の情報と、そのスライスの出力先のビデオメモリ36の位置の情報と、ステップS215で算出された、そのラッパーブロックが属するスライスの復号処理の進捗割合と、優先度とが含まれる。
次いで、ステップS240では、ワーカー処理部32a,32bは、生成したラッパーブロックをキュー34に入れる。
次いで、ステップS245では、ワーカー処理部32a,32bは、ステップS240でキュー34に追加されたラッパーブロックを含むキュー34内のラッパーブロックを、各ラッパーブロックに関連付けられた優先度の降順に整列する。次いで、ステップS200からの処理が再度実行される。
スライスを含む1枚のフレーム全体の符号化された画像データは以下のように復号処理される。例えば、1枚のフレームがU個のスライスで構成され、フレームの上から順に1,2,・・・,Uの番号が各スライスに付与されていると仮定する。V個(V≦U)以下のスライスを単位として、復号処理が実行される。例えば、1番目からV番目までのV個のスライスが処理対象として選択され(図5AのステップS101に対応)、図5Aに示すフローチャートに従って処理される。V個のスライスの復号処理が終了すると、V+1番目から2V番目までのV個のスライスが処理対象として選択され(図5AのステップS101に対応)、図5Aに示すフローチャートに従って処理される。残りのスライスがV個以下となったとき、残りの全てのスライスが処理対象として選択され(図5AのステップS101に対応)、図5Aに示すフローチャートに従って復号処理される。以上によって、1枚のフレーム全体の符号化された画像データが復号処理される。
符号化された動画データを復号処理する場合、1枚のフレーム全体の符号化された画像データの復号処理が終了したら、次のフレームに係る、フレーム全体の符号化された画像データの復号処理が開始される。上記の処理は実施可能な処理の一例であり、上記に限定されない。例えば、各々のスライスの復号処理は独立に実行できるので、必ずしもフレーム内で連続して配置されたスライスを単位として復号処理を実行しなくてもよい。
図6は、本発明の第1の実施形態に係るワーカー処理部32a,32bの他の復号処理を示すフローチャートである。
図6を参照するに、第1の実施形態に係る他の復号方法では、優先度は使用されない。この点が先の図5Bに示すフローチャートと異なっている。このため、ラッパーブロックがキュー34から取り出されるとき、各ラッパーブロックは、キュー34に入れられた順番で取り出される。図6では、図5Bに示す処理と同じ処理には同じステップ番号が付してあり、以下ではその説明を省略し、図5Bに示すフローチャートと異なる箇所のみを説明する。
図6に示すフローチャートでは、ステップS215でスライスの進捗割合と優先度が計算されるが、優先度が使用されないため、ステップS255では進捗割合のみが計算される。また、図6に示すフローチャートでは、図5BのステップS245の処理は実行されない。
<復号処理の例>
ワーカー処理部の振る舞い(同時に複数のワーカー処理部がキューにアクセスした場合の調停やブロックの処理時間など)は、割り込みの発生などの要因によって非決定論的であり、実装によって異なる可能性がある。第1の実施形態では、キューを使用した典型的な復号処理の例を示す。また、説明を簡単にするため、キューへのアクセスに必要な時間を無視できるものと考える。
以下では、M=3、N=2の場合のスライスの復号処理の一例を示す。以下の例で示されるスライスの処理方法は必ずしも最適であるとは限らない。説明を簡単にするため、以下ではラッパーブロックと、スライスを分割したブロックとを区別せず、単にブロックと記載する。
図7は、スライスとブロックの例を示す図である。図7を参照するに、3つのスライスA,B,Cは、同一の処理時間を必要とする、分割幅の等しい2つのブロックに分割できる。例えば、スライスAはブロックA0/2とブロックA1/2とに分割できる。各ブロックの右上に付与された符号は各ブロックの処理の順番を表している。例えば、ブロックA0/2については、「0/2」が処理の順番を表している。「0/2」の「2」はブロックの総数を表している。ブロックA0/2はブロックA1/2よりも先に処理される。
スライスBはブロックB0/2とブロックB1/2とに分割できる。ブロックB0/2はブロックB1/2よりも先に処理される。スライスCはブロックC0/2とブロックC1/2とに分割できる。ブロックC0/2はブロックC1/2よりも先に処理される。
図8は、2つのワーカー処理部#0,#1が3つのスライスA,B,Cを処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。図9は、キューの状態を示す図である。
時刻t=tに全てのスライスの最初のブロックA0/2,B0/2,C0/2がキューに追加される(図5AのステップS115に対応)。
時刻t=t+Δt(時刻t=tの直後)にキューから先頭のブロックA0/2とその次のブロックB0/2が取り出され、ブロックA0/2の処理がワーカー処理部#0に割り当てられ、ブロックB0/2の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図6のステップS210に対応)。
時刻t=tにブロックA0/2とブロックB0/2の処理が終了すると、ブロックA0/2の次に処理すべきブロックA1/2と、ブロックB0/2の次に処理すべきブロックB1/2とがキューに追加される(図6のステップS240に対応)。時刻t=tでは最後尾のブロックであったブロックC0/2が時刻t=tでは先頭のブロックとなり、ブロックC0/2の後にブロックA1/2とブロックB1/2が追加されている。
時刻t=t+Δtにキューから先頭のブロックC0/2とその次のブロックA1/2が取り出され、ブロックC0/2の処理がワーカー処理部#0に割り当てられ、ブロックA1/2の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図6のステップS210に対応)。
時刻t=tにブロックC0/2とブロックA1/2の処理が終了すると、ブロックC0/2の次に処理すべきブロックC1/2がキューに追加される(図6のステップS240に対応)。ブロックA1/2の処理が終了したため、スライスAの処理は終了する。時刻t=tでは最後尾のブロックであったブロックB1/2が時刻t=tでは先頭のブロックとなり、ブロックB1/2の後にブロックC1/2が追加されている。
時刻t=t+Δtにキューから先頭のブロックB1/2とその次のブロックC1/2が取り出され、ブロックB1/2の処理がワーカー処理部#0に割り当てられ、ブロックC1/2の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図6のステップS210に対応)。
ブロックB1/2とブロックC1/2の処理が終了すると、スライスBとスライスCの処理は終了する。この時点よりも前にスライスAの処理は終了しているため、ブロックB1/2とブロックC1/2の処理が終了した時点で、全てのスライスの処理は終了している。
この例では、全てのスライスが同一の処理時間のブロックに均等に分割されており、ブロックの総数がワーカー処理部の数の倍数になっている。このため、図8に示すように、2つのワーカー処理部に対して均等にブロックの処理を割り当てることができる。
<復号処理性能>
第1の実施形態の復号方法による処理性能について一実施例を挙げて、以下に説明する。以下の説明では、ワーカー処理部の処理がスレッドにより実行されるとする。また、ワーカー処理部の数Nとスライスの数Mの関係はM≧Nであるとし、全てのスライスの実行時間(実行時間の予測値)は等しく、その時間はTであるとする。実施例では、全てのスライスは均一にK個のブロックに分けられ、それぞれのブロックはT/Kの実行時間を必要とする。説明を簡単にするため、ワーカー処理部による処理の切り替えに要する時間や、キューへのアクセス時間などのオーバーヘッドは無視できるものと考える。
ワーカー処理部に割り当てられるタイムクォンタムは、典型的には、数10ミリ秒から数100ミリ秒程度である。ビデオフレームは、典型的には、毎秒30枚のフレームからなり、実時間で画像を再生するには、1フレームを少なくとも1/30秒すなわち約33ミリ秒で復号処理する必要がある。実際のアプリケーション、例えばビデオ編集システムでは、複数のビデオクリップを同時に再生したり、ビデオエフェクトやトランジションを適用したりするため、33ミリ秒よりも短い復号処理時間が求められる。
参考例として、タイムクォンタムが1スライスの処理時間Tと同じ、またはそれよりも大きい場合に、M個のスライスの処理をM個のワーカー処理部によって実行することを考える。タイムクォンタムはタイムスライスとも呼ばれ、OSがワーカー処理部による処理の実行を切り替える間隔を意味する。まず、プロセッサの数Nと同数のスライスの処理が、それぞれに対応するワーカー処理部によって開始される。
N個のスライスは並列に処理され、タイムクォンタムを使い切るまでに処理が完了する。N個のスライスの処理が完了すると、残りのスライスの数がN個より少なくなるまで、同様にN個のスライスが並列に処理される。
以下の議論では、以下の記号(P1)と記号(P2)を使用する。記号(P1)はXを上回らない最大の整数を示しており、記号(P2)はXを下回らない最小の整数を示している。
Figure 0005698156
Figure 0005698156
MがNで割り切れる場合、M/N回の並列処理を行えば、全てのスライスの処理が完了する。MがNで割り切れない場合、D((6)式)回の並列処理が行われた後、最後にE((7)式)個のスライスが並列に処理される。この最後の並列処理では、スライスが割り当てられないF((8)式)個のワーカー処理部は停止している。
Figure 0005698156
Figure 0005698156
Figure 0005698156
参考例では、合計の処理時間Tは(9)式となる。
Figure 0005698156
本発明では、MK個のブロックの処理を、N個のワーカー処理部により、ブロック間の依存関係を保ったまま並列に実行することができる。1スライスの処理時間がTであり、1スライスはK個のブロックからなるので、各ブロックの処理時間はT/Kである。各ワーカー処理部は1個のCPUに対応するので、スライスの処理中にはワーカー処理部の切り替えが発生しない。参考例の性能の議論で用いた(9)式において、MをMKに置き換え、TをT/Kに置き換えると、本発明の合計の処理時間Tを(10)式のように求めることができる。
Figure 0005698156
参考例の処理性能と本発明の処理性能を比較する指標であるスピードアップ率Rは(11)式で定義される。
Figure 0005698156
参考例の処理時間Tが本発明の処理時間Tと同じとき、R=1となる。このため、参考例の処理性能と本発明の処理性能は同等となる。また、参考例の処理時間Tが本発明の処理時間Tよりも長くなると、R>1となる。そうすると、本発明の処理性能が参考例の処理性能を上回る。
以下に、いくつかのN,Mの組み合わせに対して、Kとスピードアップ率Rの関係を示す。図10は、1スライス当たりのブロックの数Kに対するスピードアップ率Rを示すグラフである。
K=1のとき、スピードアップ率は1となり、参考例と本発明の処理性能は同等である。合計のブロック数MKがNの倍数となるとき、スピードアップ率Rは最大値Rmax((12)式)となる。
Figure 0005698156
N=2,M=3の場合とN=4とM=10の場合には、Kが2以上になる。そうすると、スピードアップ率が1を超え、本発明の処理性能が参考例の処理性能を上回る。N=3,M=8の場合には、Kが3以上になると、スピードアップ率が1を超える。そうすると、本発明の処理性能が参考例の処理性能を上回る。また、Kが大きくなればなるほど、すなわち、スライスの分割が細かくなればなるほど、スピードアップ率RがRmaxに近づいていく。
このように、本発明では、各スライスを所定数以上のブロックに分割できる場合には、ワーカー処理部に対する処理の割り当てが効率的になり、参考例よりも処理速度が向上する。
<優先度Pを使用したスライスの復号処理の例>
第1の実施形態に係る復号処理方法として、優先度Pを使用しない場合の復号処理の例と、優先度Pを使用する場合の復号処理の例を示す。説明を簡単にするため、キューへのアクセスに必要な時間やブロックの並べ替えに必要な時間を無視できるものと考える。
図11は、スライスとブロックの例を示す図である。図11を参照するに、3つのスライスA,B,Cがある。スライスA,Bは3個のブロックからなり、スライスCは4個のブロックからなる。スライスA,B,Cのブロックの分割幅(ブロックの処理時間)は同一である。このため、スライスCの処理時間はスライスA,Bの処理時間よりも長い。
スライスAはブロックA0/3とブロックA1/3とブロックA2/3とに分割される。スライスAの各ブロックは、ブロックA0/3、ブロックA1/3、ブロックA2/3の順に処理される。スライスBはブロックB0/3とブロックB1/3とブロックB2/3とに分割される。スライスBの各ブロックは、ブロックB0/3、ブロックB1/3、ブロックB2/3の順に処理される。スライスCはブロックC0/4とブロックC1/4とブロックC2/4とブロックC3/4とに分割される。スライスCの各ブロックは、ブロックC0/4、ブロックC1/4、ブロックC2/4、ブロックC3/4の順に処理される。
図12は、2つのワーカー処理部#0,#1が3つのスライスA,B,Cを処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。図13は、キューの状態を示す図である。図12と図13に示す例では、優先度Pは使用しない。
時刻t=tに全てのスライスの最初のブロックA0/3,B0/3,C0/4がキューに追加される(図5AのステップS115に対応)。
時刻t=t+Δtにキューから先頭のブロックA0/3とその次のブロックB0/3が取り出され、ブロックA0/3の処理がワーカー処理部#0に割り当てられ、ブロックB0/3の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図6のステップS210に対応)。
時刻t=tにブロックA0/3とブロックB0/3の処理が終了すると、ブロックA0/3の次に処理すべきブロックA1/3と、ブロックB0/3の次に処理すべきブロックB1/3とがキューに追加される(図6のステップS240に対応)。時刻t=tでは最後尾のブロックであったブロックC0/4が時刻t=tでは先頭のブロックとなり、ブロックC0/4の後にブロックA1/3とブロックB1/3が追加されている。
時刻t=t+Δtにキューから先頭のブロックC0/4とその次のブロックA1/3が取り出され、ブロックC0/4の処理がワーカー処理部#0に割り当てられ、ブロックA1/3の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図6のステップS210に対応)。
時刻t=tにブロックC0/4とブロックA1/3の処理が終了すると、ブロックC0/4の次に処理すべきブロックC1/4と、ブロックA1/3の次に処理すべきブロックA2/3とがキューに追加される(図6のステップS240に対応)。時刻t=tでは最後尾のブロックであったブロックB1/3が時刻t=tでは先頭のブロックとなり、ブロックB1/3の後にブロックC1/4とブロックA2/3が追加されている。
時刻t=t+Δtにキューから先頭のブロックB1/3とその次のブロックC1/4が取り出され、ブロックB1/3の処理がワーカー処理部#0に割り当てられ、ブロックC1/4の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図6のステップS210に対応)。
時刻t=tにブロックB1/3とブロックC1/4の処理が終了すると、ブロックB1/3の次に処理すべきブロックB2/3と、ブロックC1/4の次に処理すべきブロックC2/4とがキューに追加される(図6のステップS240に対応)。時刻t=tでは最後尾のブロックであったブロックA2/3が時刻t=tでは先頭のブロックとなり、ブロックA2/3の後にブロックB2/3とブロックC2/4が追加されている。
時刻t=t+Δtにキューから先頭のブロックA2/3とその次のブロックB2/3が取り出され、ブロックA2/3の処理がワーカー処理部#0に割り当てられ、ブロックB2/3の処理がワーカー処理部#1に割り当てられる(図6のステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図6のステップS210に対応)。
時刻t=tにブロックA2/3とブロックB2/3の処理が終了すると、スライスAとスライスBの処理は終了する。時刻t=tではキューにブロックは追加されないので、キューにあるブロックはブロックC2/4だけである。
時刻t=t+ΔtにキューからブロックC2/4が取り出され、ブロックC2/4の処理がワーカー処理部#0に割り当てられる(図6のステップS205に対応)。ワーカー処理部#0にブロックC2/4の処理が割り当てられると、ワーカー処理部#0はブロックC2/4の処理を行う(図6のステップS210に対応)。ワーカー処理部#1にはブロックの処理が割り当てられず、ワーカー処理部#1は停止している。
時刻t=tにブロックC2/4の処理が終了すると、ブロックC2/4の次に処理すべきブロックC3/4がキューに追加される(図6のステップS240に対応)。時刻t=tでは、キューにあるブロックはブロックC3/4だけである。
時刻t=t+ΔtにキューからブロックC3/4が取り出され、ブロックC3/4の処理がワーカー処理部#0に割り当てられる(図6のステップS205に対応)。ワーカー処理部#0にブロックC3/4の処理が割り当てられると、ワーカー処理部#0はブロックC3/4の処理を行う(図6のステップS210に対応)。ワーカー処理部#1にはブロックの処理が割り当てられず、ワーカー処理部#1は停止している。
ブロックC3/4の処理が終了すると、スライスCの処理は終了する。この時点よりも前にスライスA,Bの処理は終了しているため、ブロックC3/4の処理が終了した時点で、全てのスライスの処理は終了している。
この例では、スライスCの処理がスライスA,Bの処理よりも相対的に遅れるので、スライスA,Bの処理が終了した時点で、並列に処理できないスライスCのブロックC2/4,C3/4が残ってしまう。
以下では、優先度Pを使用する場合の復号処理の例を示す。図14は、2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。図15は、キューの状態を示す図である。図14と図15に示す例では、優先度Pが使用される。優先度Pを使用する場合の復号処理の例で用いるスライスは、図11に示したスライスと同じである。
優先度Pは次のように使用される。ブロックがキューに追加されたときに、ブロック毎の優先度Pの高い順にブロックが並べられる。この結果、優先度Pの最も高いブロックがキューの先頭に配置され、優先的に取り出される。優先度Pが同じブロックが複数存在するとき、それら複数のブロックは、キューに追加された順に並べられる。キュー内のブロックの順番を変更するのは、ブロックがキューに追加されたときでなくてもよく、ブロックがキューから取り出される直前などでもよい。以上に述べたキューの実装は必ずしも最適ではない。例えば、ヒープ(heap)などのデータ構造を使うとより効率的な実装になる。
時刻t=tに全てのスライスの最初のブロックA0/3,B0/3,C0/4がキューに追加される(図5AのステップS115に対応)。このとき、ブロックA0/3,B0/3,C0/4の順にブロックがキューに追加されると仮定する。(1)式によれば、各ブロックの優先度Pは、P(A0/3)=P(B0/3)=P(C0/4)=1である。3つのブロックの優先度Pが等しいので、キュー内のブロックの順番は変わらない。
時刻t=t+Δtにキューから先頭のブロックA0/3とその次のブロックB0/3が取り出され、ブロックA0/3の処理がワーカー処理部#0に割り当てられ、ブロックB0/3の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図5BのステップS210に対応)。
時刻t=tにブロックA0/3とブロックB0/3の処理が終了すると、ブロックA0/3の次に処理すべきブロックA1/3と、ブロックB0/3の次に処理すべきブロックB1/3とがキューに追加される(図5BのステップS240に対応)。このとき、ブロックA1/3,B1/3の順にブロックがキューに追加されると仮定する。時刻t=tでは、ブロックC0/4とブロックA1/3とブロックB1/3とがキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(C0/4)=1、P(A1/3)=P(B1/3)=2/3となるので、ブロックC0/4,A1/3,B1/3の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックC0/4とその次のブロックA1/3が取り出され、ブロックC0/4の処理がワーカー処理部#0に割り当てられ、ブロックA1/3の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図5BのステップS210に対応)。
時刻t=tにブロックC0/4とブロックA1/3の処理が終了すると、ブロックC0/4の次に処理すべきブロックC1/4と、ブロックA1/3の次に処理すべきブロックA2/3とがキューに追加される(図5BのステップS240に対応)。時刻t=tでは、ブロックB1/3とブロックC1/4とブロックA2/3とがキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(B1/3)=2/3、P(C1/4)=3/4、P(A2/3)=1/3となるので、ブロックC1/4,B1/3,A2/3の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックC1/4とその次のブロックB1/3が取り出され、ブロックC1/4の処理がワーカー処理部#0に割り当てられ、ブロックB1/3の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図5BのステップS210に対応)。
時刻t=tにブロックC1/4とブロックB1/3の処理が終了すると、ブロックC1/4の次に処理すべきブロックC2/4と、ブロックB1/3の次に処理すべきブロックB2/3とがキューに追加される(図5BのステップS240に対応)。時刻t=tでは、ブロックA2/3とブロックC2/4とブロックB2/3とがキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(A2/3)=P(B2/3)=1/3、P(C2/4)=2/4となるので、ブロックC2/4,A2/3,B2/3の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックC2/4とその次のブロックA2/3が取り出され、ブロックC2/4の処理がワーカー処理部#0に割り当てられ、ブロックA2/3の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図5BのステップS210に対応)。
時刻t=tにブロックC2/4とブロックA2/3の処理が終了すると、ブロックC2/4の次に処理すべきブロックC3/4がキューに追加される(図5BのステップS240に対応)。ブロックA2/3の処理が終了したため、スライスAの処理は終了する。時刻t=tでは、ブロックB2/3とブロックC3/4とがキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(B2/3)=1/3、P(C3/4)=1/4となるので、ブロックB2/3,C3/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックB2/3とその次のブロックC3/4が取り出され、ブロックB2/3の処理がワーカー処理部#0に割り当てられ、ブロックC3/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図5BのステップS210に対応)。
ブロックB2/3とブロックC3/4の処理が終了すると、スライスBとスライスCの処理は終了する。この時点よりも前にスライスAの処理は終了しているため、ブロックB2/3とブロックC3/4の処理が終了した時点で、全てのスライスの処理は終了している。
この例では、優先度Pを使用しないとスライスA,Bの処理よりも相対的に遅れてしまうスライスCの処理を優先的に進めることで、スライスA,B,Cの処理がほぼ均等に進むので、並列に処理できないブロックが最後に残ってしまうことはない。
このように、優先度Pを使用することで、全てのスライスの処理の進捗割合をできるだけ同一に保ったまま並列処理を進めることができる。たとえ、処理時間が正確に予測できない場合であっても、全てのスライスの処理の進捗割合ができるだけ同一に保たれるので、全てのスライスの処理がほぼ同時に終了する。このため、並列に処理できないブロックが最後に残りにくくなり、最後にワーカー処理部にブロックの処理が割り当てられない状態が発生しにくくなる。よって、スライスの並列処理を効率的に行うことができる。
<優先度P,Pを使用したスライスの復号処理の例>
優先度Pを使用した場合の復号処理の例と、優先度P,Pを使用した場合の復号処理の例を示す。説明を簡単にするため、キューへのアクセスに必要な時間やブロックの並べ替えに必要な時間を無視できるものと考える。
図16は、スライスとブロックの例を示す図である。図16を参照するに、3つのスライスA,B,Cがある。スライスA,B,Cは2個のブロックからなる。スライスA,Bのブロックの分割幅は同一であるが、スライスCのブロックの分割幅はスライスA,Bのブロックの分割幅の2倍である。このため、スライスCの処理時間はスライスA,Bの処理時間の2倍となる。
スライスAはブロックA0/2とブロックA1/2とに分割される。スライスAの各ブロックは、ブロックA0/2、ブロックA1/2の順に処理される。スライスBはブロックB0/2とブロックB1/2とに分割される。スライスBの各ブロックは、ブロックB0/2、ブロックB1/2の順に処理される。スライスCはブロックC0/2とブロックC1/2とに分割される。スライスCの各ブロックは、ブロックC0/2、ブロックC1/2の順に処理される。
図17は、2つのワーカー処理部#0,#1が3つのスライスA,B,Cを処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。図18は、キューの状態を示す図である。図17と図18に示す例では、優先度Pが使用される。
時刻t=tに全てのスライスの最初のブロックA0/2,B0/2,C0/2がキューに追加される(図5AのステップS115に対応)。このとき、ブロックA0/2,B0/2,C0/2の順にブロックがキューに追加されると仮定する。(1)式によれば、各ブロックの優先度Pは、P(A0/2)=P(B0/2)=P(C0/2)=1である。3つのブロックの優先度Pが等しいので、キュー内のブロックの順番は変わらない。
時刻t=t+Δtにキューから先頭のブロックA0/2とその次のブロックB0/2が取り出され、ブロックA0/2の処理がワーカー処理部#0に割り当てられ、ブロックB0/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図5BのステップS210に対応)。
時刻t=tにブロックA0/2とブロックB0/2の処理が終了すると、ブロックA0/2の次に処理すべきブロックA1/2と、ブロックB0/2の次に処理すべきブロックB1/2とがキューに追加される(図5BのステップS240に対応)。このとき、ブロックA1/2,B1/2の順にブロックがキューに追加されると仮定する。(1)式によれば、時刻t=tにキューに置かれている各ブロックの優先度Pは、P(C0/2)=1、P(A1/2)=P(B1/2)=1/2となるので、ブロックC0/2,A1/2,B1/2の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックC0/2とその次のブロックA1/2が取り出され、ブロックC0/2の処理がワーカー処理部#0に割り当てられ、ブロックA1/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図5BのステップS210に対応)。
時刻t=tにブロックA1/2の処理が終了する。この時点でブロックC0/2の処理は終了していない。ブロックA1/2の処理が終了したため、スライスAの処理は終了する。時刻t=tでは、ブロックB1/2のみがキューに置かれている。
時刻t=t+ΔtにキューからブロックB1/2が取り出され、ブロックB1/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックB1/2の処理が割り当てられると、ワーカー処理部#1はブロックB1/2の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックC0/2の処理を継続している。
時刻t=tにブロックB1/2とブロックC0/2の処理が終了すると、ブロックC0/2の次に処理すべきブロックC1/2がキューに追加される(図5BのステップS240に対応)。ブロックB1/2の処理が終了したため、スライスBの処理は終了する。時刻t=tでは、ブロックC1/2のみがキューに置かれている。
時刻t=t+ΔtにキューからブロックC1/2が取り出され、ブロックC1/2の処理がワーカー処理部#0に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#0にブロックC1/2の処理が割り当てられると、ワーカー処理部#0はブロックC1/2の処理を行う(図5BのステップS210に対応)。ワーカー処理部#1にはブロックの処理が割り当てられず、ワーカー処理部#1は停止している。
ブロックC1/2の処理が終了すると、スライスCの処理は終了する。この時点よりも前にスライスA,Bの処理は終了しているため、ブロックC1/2の処理が終了した時点で、全てのスライスの処理は終了している。
この例では、スライスA,Bのブロックよりも処理時間がかかるスライスCのブロックが最後に残ってしまう。
以下では、優先度Pに加えて優先度Pを使用する場合の処理の例を示す。図19は、2つのワーカー処理部#0,#1が3つのスライスA,B,Cを処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。図20は、キューの状態を示す図である。図19と図20に示す例では、優先度P,Pが使用される。優先度P,Pを使用する場合の処理の例で用いるスライスは、図16に示したスライスと同じである。スライスA,Bの処理時間をTとし、スライスCの処理時間を2Tとする。
優先度P,Pは次のように使用される。ブロックがキューに追加されたときに、ブロック毎の優先度Pに基づいて、キュー内のブロックの順番が決定される。優先度Pが同じブロックが複数存在するとき、それら複数のブロックの順番は、ブロック毎の優先度Pに基づいて決定される。優先度Pが同じブロックが複数存在するとき、それら複数のブロックは、キューに追加された順に並べられる。キュー内のブロックの順番を変更するのは、ブロックがキューに追加されたときでなくてもよく、ブロックがキューから取り出される直前などでもよい。
時刻t=tに全てのスライスの最初のブロックA0/2,B0/2,C0/2がキューに追加される(図5AのステップS115に対応)。このとき、ブロックA0/2,B0/2,C0/2の順にブロックがキューに追加されると仮定する。(1)式によれば、各ブロックの優先度Pは、P(A0/2)=P(B0/2)=P(C0/2)=1である。3つのブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(A0/2)=P(B0/2)=T、P(C0/2)=2Tとなるので、ブロックC0/2,A0/2,B0/2の順にブロックが並ぶ。
時刻t=t+Δtにキューから先頭のブロックC0/2とその次のブロックA0/2が取り出され、ブロックC0/2の処理がワーカー処理部#0に割り当てられ、ブロックA0/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図5BのステップS210に対応)。
時刻t=tにブロックA0/2の処理が終了すると、ブロックA0/2の次に処理すべきブロックA1/2がキューに追加される(図5BのステップS240に対応)。この時点でブロックC0/2の処理は終了していない。時刻t=tでは、ブロックB0/2とブロックA1/2がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(B0/2)=1、P(A1/2)=1/2であるので、ブロックB0/2,A1/2の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックB0/2が取り出され、ブロックB0/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックB0/2の処理が割り当てられると、ワーカー処理部#1はブロックB0/2の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックC0/2の処理を継続している。
時刻t=tにブロックC0/2とブロックB0/2の処理が終了すると、ブロックC0/2の次に処理すべきブロックC1/2と、ブロックB0/2の次に処理すべきブロックB1/2とがキューに追加される(図5BのステップS240に対応)。時刻t=tでは、ブロックA1/2とブロックC1/2とブロックB1/2とがキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(A1/2)=P(C1/2)=P(B1/2)=1/2となる。3つのブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(C1/2)=T、P(A1/2)=P(B1/2)=T/2、となるので、ブロックC1/2,A1/2,B1/2の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックC1/2とその次のブロックA1/2が取り出され、ブロックC1/2の処理がワーカー処理部#0に割り当てられ、ブロックA1/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に各ブロックの処理を行う(図5BのステップS210に対応)。
時刻t=tにブロックA1/2の処理が終了する。ブロックA1/2の処理が終了したため、スライスAの処理は終了する。この時点でブロックC1/2の処理は終了していない。時刻t=tでは、ブロックB1/2がキューに置かれている。
時刻t=t+Δtにキューから先頭のブロックB1/2が取り出され、ブロックB1/2の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックB1/2の処理が割り当てられると、ワーカー処理部#1はブロックB1/2の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックC1/2の処理を継続している。
ブロックC1/2とブロックB1/2の処理が終了すると、スライスCとスライスBの処理は終了する。この時点よりも前にスライスAの処理は終了しているため、ブロックC1/2とブロックB1/2の処理が終了した時点で、全てのスライスの処理は終了している。
この例では、スライスA,Bよりも処理時間がかかるスライスCの処理を優先的に進めることで、スライスCのブロックが最後に単独で残ってしまうことはない。
このように、優先度Pを使用することで、処理時間が相対的に長いスライスのブロックが最後に残りにくくなる。このため、最後にワーカー処理部にブロックの処理が割り当てられない状態が発生しにくくなる。よって、スライスの並列処理を効率的に行うことができる。
<優先度P,P,Pを使用したスライスの復号処理の例>
優先度P,P,Pを使用した場合のより複雑な復号処理の例を示す。説明を簡単にするため、キューへのアクセスに必要な時間やブロックの並べ替えに必要な時間を無視できるものと考える。
図21は、スライスとブロックの例を示す図である。図21を参照するに、3つのスライスA,B,Cがある。スライスA,Bは4個のブロックからなり、スライスCは3個のブロックからなる。スライスA,Bは均等に4つのブロックに分割されるが、スライスCは1:2:1の比で3つのブロックに分割される。スライスB,Cの処理時間は同じであるが、スライスAの処理時間はスライスB,Cの処理時間の1.5倍である。
スライスAは、処理時間が等しいブロックA0/4とブロックA1/4とブロックA2/4とブロックA3/4とに分割される。スライスAの各ブロックは、ブロックA0/4、ブロックA1/4、ブロックA2/4、ブロックA3/4の順に処理される。スライスAの処理時間を6Tとする。
スライスBは、処理時間が等しいブロックB0/4とブロックB1/4とブロックB2/4とブロックB3/4とに分割される。スライスBの各ブロックは、ブロックB0/4、ブロックB1/4、ブロックB2/4、ブロックB3/4の順に処理される。スライスBの処理時間を4Tとする。
スライスCはブロックC0/4とブロックC1/4とブロックC3/4とに分割される。ブロックC0/4,C3/4の処理時間は等しいが、ブロックC1/4の処理時間はブロックC0/4,C3/4の処理時間の2倍である。スライスCの各ブロックは、ブロックC0/4、ブロックC1/4、ブロックC3/4の順に処理される。
図22は、2つのワーカー処理部#0,#1が3つのスライスA,B,Cを復号処理するときに各ワーカー処理部に対してブロックが割り当てられる様子を示す図である。図23は、キューの状態を示す図である。図22と図23に示す例では、優先度P,P,Pが使用される。
優先度P,P,Pは次のように使用される。ブロックがキューに追加されたときに、ブロック毎の優先度Pに基づいて、キュー内のブロックの順番が決定される。優先度Pが同じブロックが複数存在するとき、それら複数のブロックの順番は、ブロック毎の優先度Pに基づいて決定される。優先度Pが同じブロックが複数存在するとき、それら複数のブロックの順番は、ブロック毎の優先度Pに基づいて決定される。キュー内のブロックの順番を変更するのは、ブロックがキューに追加されたときでなくてもよく、ブロックがキューから取り出される直前などでもよい。
時刻t=tに全てのスライスの最初のブロックA0/4,B0/4,C0/4がキューに追加される(図5AのステップS115に対応)。このとき、ブロックA0/4,B0/4,C0/4の順にブロックがキューに追加されると仮定する。(1)式によれば、各ブロックの優先度Pは、P(A0/4)=P(B0/4)=P(C0/4)=1である。3つのブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(A0/4)=6T、P(B0/4)=P(C0/4)=4Tとなるので、ブロックA0/4はブロックB0/4,C0/4よりも前に置かれる。
また、2つのブロックB0/4,C0/4の優先度Pが等しいので、優先度Pが使用される。ブロックB0/4,C0/4がキューに追加された時刻は同じなので、ブロックB0/4,C0/4の優先度Pは等しい。このため、ブロックB0/4,C0/4の順番は変更されない。よって、時刻t=tでは、ブロックA0/4,B0/4,C0/4の順にブロックが並ぶ。
時刻t=t+Δtにキューから先頭のブロックA0/4とその次のブロックB0/4が取り出され、ブロックA0/4の処理がワーカー処理部#0に割り当てられ、ブロックB0/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図5BのステップS210に対応)。
時刻t=tにブロックB0/4の処理が終了すると、ブロックB0/4の次に処理すべきブロックB1/4がキューに追加される(図5BのステップS240に対応)。この時点でブロックA0/4の処理は終了していない。時刻t=tでは、ブロックC0/4とブロックB1/4がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(C0/4)=1、P(B1/4)=3/4となるので、ブロックC0/4,B1/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックC0/4が取り出され、ブロックC0/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックC0/4の処理が割り当てられると、ワーカー処理部#1はブロックC0/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックA0/4の処理を継続している。
時刻t=tにブロックA0/4の処理が終了すると、ブロックA0/4の次に処理すべきブロックA1/4がキューに追加される(図5BのステップS240に対応)。この時点でブロックC0/4の処理は終了していない。時刻t=tでは、ブロックB1/4とブロックA1/4がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(B1/4)=3/4、P(A1/4)=3/4となる。各ブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(B1/4)=3T、P(A1/4)=4.5Tとなるので、ブロックA1/4,B1/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックA1/4が取り出され、ブロックA1/4の処理がワーカー処理部#0に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#0にブロックA1/4の処理が割り当てられると、ワーカー処理部#0はブロックA1/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#1はブロックC0/4の処理を継続している。
時刻t=tにブロックC0/4の処理が終了すると、ブロックC0/4の次に処理すべきブロックC1/4がキューに追加される(図5BのステップS205に対応)。この時点でブロックA1/4の処理は終了していない。時刻t=tでは、ブロックB1/4とブロックC1/4がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(B1/4)=3/4、P(C1/4)=3/4となる。各ブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(B1/4)=3T、P(C1/4)=3Tとなる。
各ブロックの優先度Pが等しいので、優先度Pが使用される。各ブロックの優先度Pは、P(B1/4)=t、P(C1/4)=tとなる。優先度Pを使用すると、ブロックC1/4,B1/4の順にブロックが並び(図5BのステップS245に対応)、より遅い時刻にキューに追加されたブロックが、より早い時刻にキューに追加されたブロックよりも優先的に処理されるようになる。
時刻t=t+Δtにキューから先頭のブロックC1/4が取り出され、ブロックC1/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックC1/4の処理が割り当てられると、ワーカー処理部#1はブロックC1/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックA1/4の処理を継続している。
時刻t=tにブロックA1/4の処理が終了すると、ブロックA1/4の次に処理すべきブロックA2/4がキューに追加される(図5BのステップS240に対応)。この時点でブロックC1/4の処理は終了していない。時刻t=tでは、ブロックB1/4とブロックA2/4がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(B1/4)=3/4、P(A2/4)=2/4となるので、ブロックB1/4,A2/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックB1/4が取り出され、ブロックB1/4の処理がワーカー処理部#0に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#0にブロックB1/4の処理が割り当てられると、ワーカー処理部#0はブロックB1/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#1はブロックC1/4の処理を継続している。
時刻t=tにブロックB1/4とブロックC1/4の処理が終了すると、ブロックB1/4の次に処理すべきブロックB2/4と、ブロックC1/4の次に処理すべきブロックC3/4とがキューに追加される(図5BのステップS240に対応)。時刻t=tでは、ブロックA2/4とブロックB2/4とブロックC3/4とがキューに置かれている。
(1)式によれば、各ブロックの優先度Pは、P(A2/4)=P(B2/4)=2/4、P(C3/4)=1/4となるので、ブロックA2/4,B2/4はブロックC3/4よりも前に置かれる。2つのブロックA2/4,B2/4の優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(A2/4)=3T、P(B2/4)=2Tとなるので、ブロックA2/4はブロックB2/4よりも前に置かれる。よって、時刻t=tでは、ブロックA2/4,B2/4,C3/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックA2/4とその次のブロックB2/4が取り出され、ブロックA2/4の処理がワーカー処理部#0に割り当てられ、ブロックB2/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。各ワーカー処理部にブロックの処理が割り当てられると、各ワーカー処理部は並列に処理を開始する(図5BのステップS210に対応)。
時刻t=tにブロックB2/4の処理が終了すると、ブロックB2/4の次に処理すべきブロックB3/4がキューに追加される(図5BのステップS240に対応)。この時点でブロックA2/4の処理は終了していない。時刻t=tでは、ブロックC3/4とブロックB3/4がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(C3/4)=P(B3/4)=1/4となる。各ブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(C3/4)=P(B3/4)=Tとなる。
各ブロックの優先度Pが等しいので、優先度Pが使用される。各ブロックの優先度Pは、P(C3/4)=t、P(B3/4)=tとなる。優先度Pを使用すると、より遅い時刻にキューに追加されたブロックが、より早い時刻にキューに追加されたブロックよりも優先的に処理される。このため、ブロックB3/4,C3/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックB3/4が取り出され、ブロックB3/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックB3/4の処理が割り当てられると、ワーカー処理部#1はブロックB3/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックA2/4の処理を継続している。
時刻t=tにブロックA2/4の処理が終了すると、ブロックA2/4の次に処理すべきブロックA3/4がキューに追加される(図5BのステップS240に対応)。この時点でブロックB3/4の処理は終了していない。時刻t=tでは、ブロックC3/4とブロックA3/4がキューに置かれている。(1)式によれば、各ブロックの優先度Pは、P(C3/4)=P(A3/4)=1/4となる。各ブロックの優先度Pが等しいので、優先度Pが使用される。(4)式によれば、P(C3/4)=T、P(A3/4)=1.5Tとなるので、ブロックA3/4,C3/4の順にブロックが並ぶ(図5BのステップS245に対応)。
時刻t=t+Δtにキューから先頭のブロックA3/4が取り出され、ブロックA3/4の処理がワーカー処理部#0に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#0にブロックA3/4の処理が割り当てられると、ワーカー処理部#0はブロックA3/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#1はブロックB3/4の処理を継続している。
時刻t=tにブロックB3/4の処理が終了する。ブロックB3/4の処理が終了したため、スライスBの処理は終了する。この時点でブロックA3/4の処理は終了していない。時刻t=tでは、ブロックC3/4がキューに置かれている。
時刻t=t+Δtにキューから先頭のブロックC3/4が取り出され、ブロックC3/4の処理がワーカー処理部#1に割り当てられる(図5BのステップS205に対応)。ワーカー処理部#1にブロックC3/4の処理が割り当てられると、ワーカー処理部#1はブロックC3/4の処理を行う(図5BのステップS210に対応)。このとき、ワーカー処理部#0はブロックA3/4の処理を継続している。
ブロックA3/4とブロックC3/4の処理が終了すると、スライスAとスライスCの処理は終了する。この時点よりも前にスライスBの処理は終了しているため、ブロックA3/4とブロックC3/4の処理が終了した時点で、全てのスライスの処理は終了している。
この例では、優先度Pを使用することで、全てのスライスの処理の進捗割合をできるだけ同一に保ったまま並列処理を進めることができる。また、優先度Pを使用することで、処理時間が相対的に長いスライスAのブロックが最後に単独で残ることはない。よって、スライスの並列処理を効率的に行うことができる。
また、この例では、優先度Pを使用することで、ワーカー処理部#1がスライスCのブロックC0/4,C1/4の処理を連続して行い、スライスBのブロックB2/4,B3/4の処理を連続して行っている。このように、同じスライスのブロックの処理を連続して行うことで、キャッシュの利用効率が高まり、処理速度が向上する。
以上説明したように、第1の実施形態によれば、スライスを分割したブロックの単位でワーカー処理部に処理が割り当てられるので、スライスの単位でワーカー処理部に処理が割り当てられる場合と比較して、いずれかのワーカー処理部が処理の順番待ちのために処理対象が供給されずに休止することを抑制できる。そのため、ワーカー処理部全体の休止時間の合計が減少する。その結果、ワーカー処理部全体の利用効率が高まる。したがって、符号化されたスライスの復号処理の速度が向上する。
プロセッサの数Nとスライスの数Mにかかわらず、同一の方法で全てのワーカー処理部に、なるべく均等にスライスの処理が割り当てられる。特に、各スライスの処理時間が事前に分からない、もしくは各スライスの処理時間を正確に予測できない場合でも、全てのスライスの進捗状況がほぼ同一に保たれたまま処理が進む。このため、全体の処理時間に占める、並列に処理できる時間の割合が高くなり、効率的にワーカー処理部を使うことができる。
CPUに一対一に対応した、プロセッサの数と同数のワーカー処理部のみが使用されるため、スライスの処理中には、ワーカー処理部のコンテキストスイッチが起こらない。コンテキストスイッチとは、複数のワーカー処理部が同じプロセッサを共有するために、プロセッサの実行状態(コンテキスト)を保存または復元する操作のことである。ワーカー処理部のコンテキストスイッチが起こらないため、処理速度の低下が防止される。
スライスの処理時間がOSのタイムクォンタムに比べて小さい場合でも、各ワーカー処理部はブロック単位で並列に処理を行うことができる。短い間隔で複数のスライスを切り替えながら処理を実行することで、プロセッサの数よりも多いスライスを擬似的に並列に処理することができる。
キューには並列処理可能なブロックのみが置かれており、キューから取り出されたラッパーブロックは、すぐに任意のワーカー処理部に割り当てられる。このため、スライスの処理中には、キューへのアクセス以外の同期処理が不要である。
{第2の実施形態}
本発明の第2の実施形態は、符号化された画像データを復号処理する編集装置および編集方法についての例である。
図24は、本発明の第2の実施形態に係る編集装置のハードウェア構成を示すブロック図である。なお、第1の実施形態と共通する要素については同じ符号を付し、その説明を省略する。
図24を参照するに、編集装置100は、光ディスクやその他の記録媒体を駆動するためのドライブ101、CPU20、CPU21、CPU102、ROM23、ROM103、RAM22、RAM104、HDD105、通信インターフェース106、入力インターフェース107、出力インターフェース108、ビデオ・オーディオインターフェース114、およびこれらを接続するバス110を備えている。
編集装置100は、先の図1に示したCPU20、CPU21、RAM22、およびROM23からなる第1の実施形態に係る復号装置と同様の復号装置を有する。さらに、図24においては、図示を省略するが、編集装置100は、先の図3に示した機能構成と同様の機能構成を有する。編集装置100は、さらに、符号化処理機能と、編集機能を有する。なお、編集装置100において、符号化処理機能は必須ではない。
ドライブ101にはリムーバブルメディア101aが装着され、このリムーバブルメディア101aからデータの読み出しが行われる。ドライブ101は外付けのドライブであってもよい。ドライブ101は、光ディスク、磁気ディスク、光磁気ディスク、ブルーレイディスク、半導体メモリなどを採用することができる。素材データの読み出しは、通信インターフェース106を介して接続可能なネットワーク上のリソースから行ってもよい。
CPU102は、ROM103に記録されている制御プログラムをRAM104に展開し、編集装置100全体の動作を制御する。
HDD105は、編集装置としてのアプリケーションプログラムが格納されている。CPU102がこのアプリケーションプログラムをRAM104上で展開し、コンピュータを編集装置として機能させる。また、リムーバブルメディア101aから読み出された素材データや各クリップの編集データなどをこのHDD105に格納してもよい。
通信インターフェース106は、たとえばUSB(Universal Serial Bus)、LAN、HDMI等のインターフェースである。
入力インターフェース107は、キーボードやマウスなどの操作部400を介してユーザが入力する指示を受け付け、バス110を介してCPU102に操作信号を供給する。
出力インターフェース108は、LCD(液晶表示装置)やCRTなどの表示装置、スピーカなどの出力装置500に、CPU102からの画像データや音声データを供給する。
ビデオ・オーディオインターフェース114は、編集装置100の外部の装置とバス110との間でデータの受け渡しを行う。ビデオ・オーディオインターフェース114は、例えば、SDI(Serial Digital Interface)などに準拠したインターフェースである。
図25は、本発明の第2の実施形態に係る編集装置の機能構成図である。
図25を参照するに、編集装置100のCPU102は、メモリ上に展開されるアプリケーションプログラムによって、ユーザインターフェース部70、編集部73、情報入力部74、情報出力部75の各機能ブロックを構成する。
このような各機能ブロックにより、素材データと編集データを含むプロジェクトファイルのインポート機能、各クリップに対する編集機能、素材データおよび/または編集データを含むプロジェクトファイルのエクスポート機能、プロジェクトファイルのエクスポート時における素材データに対するマージン設定機能などを実現する。以下、編集機能について詳細に説明する。
図26は、本発明の第2の実施形態に係る編集装置の編集画面の一例を示す図である。
図26を図25とともに参照するに、編集画面の表示データが表示制御部72により生成され、出力装置500のディスプレイに出力される。
編集画面150は、編集されたコンテンツや取得した素材データの再生画面を表示する再生ウィンドウ151、各クリップがタイムラインに沿って配置される複数のトラックで構成されるタイムラインウィンドウ152、取得した素材データをアイコンで表示するビンウィンドウ153などを備えている。
ユーザインターフェース部70は、操作部400を介してユーザが入力した指示を受け付ける指示受付部71、ディスプレイやスピーカなどの出力装置500に対する表示制御を行う表示制御部72を含んでいる。
編集部73は、操作部400を介してユーザから入力された指示により指定されたクリップが参照する素材データ、あるいはデフォルトで指定されているプロジェクト情報を備えるクリップが参照する素材データを、情報入力部74を介して取得する。また、編集部73は、操作部400を介してユーザから入力された指示により、後述するクリップのタイムラインウィンドウ上の配置、クリップのトリミングや、シーン間のトランジッションの設定や、ビデオフィルタをかける等の編集処理を行う。
情報入力部74は、HDD105内に記録されている素材データが指定された場合には、ビンウィンドウ153にアイコンを表示する。HDD105内に記録されていない素材データが指定された場合には、ネットワーク上のリソースやリムーバブルメディアなどから素材データを読み出してビンウィンドウ153にアイコンを表示する。図示した例では、3つの素材データがアイコンIC1〜IC3で表示されている。
指示受付部71は、編集に用いるクリップと、素材データの参照範囲と、その参照範囲がコンテンツの時間軸上にしめる時間位置との指定を編集画面上で受け付ける。具体的には、指示受付部71は、クリップID、参照範囲の開始点および時間長、クリップが配置されるコンテンツ上の時間情報などの指定を受け付ける。このためにユーザは、表示されているクリップ名を手がかりに、所望の素材データのアイコンをタイムライン上にドラッグ&ドロップする。指示受付部71は、この操作によるクリップIDの指定を受け付けて、選択されたクリップが参照する参照範囲に応じた時間長でトラック上にクリップが配置される。
トラック上に配置されたクリップは、クリップの開始点、終了点、タイムライン上の時間的な配置などを適宜変更することが可能となっている。例えば、編集画面上に表示されるマウスカーソルを移動させて所定の操作を行うことで指示を入力することが可能である。
図27は、本発明の第2の実施形態に係る編集方法を示すフローチャートである。圧縮符号化された素材データを編集する場合を例に挙げて、図27を参照しつつ、本発明の第2の実施形態に係る編集方法を説明する。
最初に、ステップS400では、ユーザによりHDD105に記録されている、符号化された素材データが指定されると、CPU102はその指定を受付けて、その素材データをビンウィンドウ153にアイコンとして表示する。さらに、ユーザにより、その表示されたアイコンをタイムラインウィンドウ152に配置する指示がされると、CPU102はその指示を受付けて、素材のクリップをタイムラインウィンドウ152に配置する。
次いで、ステップS410では、ユーザにより、素材について、操作部400を介した所定の操作により表示される編集内容の中から、例えば復号処理および伸張処理が選択されると、CPU102はその選択を受け付ける。
次いで、ステップS420では、復号処理および伸張処理の指示を受け付けたCPU102は、CPU20,21に復号処理および伸張処理の指示を出力する。CPU102から復号処理および伸張処理の指示が入力されたCPU20,21は、圧縮符号化された素材データを復号処理および伸張処理する。この際、CPU20,21は、第1の実施形態に係る復号方法を実行して、復号処理された素材データを生成する。
次いで、ステップS430では、CPU20,21は、ステップS420で生成された素材データを、バス110を介してRAM22に格納する。RAM22に一時的に格納された素材データはHDD105に記録される。なお、HDDに記録する代わりに、編集装置外の装置に素材データを出力してもよい。
なお、上記のステップS400とS410との間に、クリップのトリミングや、シーン間のトランジッションの設定や、ビデオフィルタをかけてもよい。これらの処理を行う場合は、処理の対象となるクリップやクリップの一部について、ステップS420の復号処理および伸張処理を行う。その後に処理されたクリップやクリップの一部は記憶される。その後のレンダリングの際に他のクリップやクリップの他の部分と合成される。
第2の実施形態によれば、編集装置は、第1の実施の形態と同様の復号装置を有し、第1の実施の形態と同様の復号方法を用いて、符号化された素材データを復号処理するので、第1の実施形態と同様の効果が得られ、復号処理の効率が向上する。
なお、復号処理の際に、CPU102が、CPU20およびCPU21と同様のステップを実行してもよい。特に、CPU102が復号処理以外の処理を行わない期間に実行することが好ましい。
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、請求の範囲に記載された本発明の範囲内において、種々の変形・変更が可能である。例えば、符号化された音声データの復号処理に本発明を適用してもよい。たとえば、上述した実施形態では、MPEG−2に準拠した復号処理を例に説明したが、MPEG−2に限定されず、他の画像符号化方式、たとえば、MPEG−4ヴィジュアル、MPEG−4 AVC、FRExt(Fidelity Range Extension)や音声符号化方式にも適用できることはいうまでもない。
10 復号装置
20,21 CPU
22 RAM
23 ROM
30 復号処理部
31 メイン処理部
32a,32b ワーカー処理部
33a,33b スライスデコーダ
34 キュー
35 スライスバッファ
36 ビデオメモリ
37 スライスコンテキスト
73 編集部
100 編集装置

Claims (10)

  1. 画像または音声の符号化データを復号する装置であって、
    前記符号化データを供給するソースであって、該符号化データが独立して復号可能な複数の要素データからなり、該複数の要素データの各々が少なくとも一つのブロックからなる、前記ソースと、
    前記少なくとも一つのブロックのうち、最初に処理される第1のブロックを特定するブロック情報を生成する第1の処理手段と、
    前記最初のブロックに後続するブロックに対応するブロック情報を生成する複数の第2の処理手段であって、該ブロック情報がそのブロックが含まれる前記要素データにおける復号処理の順序と、該ブロックと該ブロックが含まれる要素データとは別の要素データに含まれるブロックとの間の復号処理の順序を決める優先度が計算され、その計算された優先度とを含む、該複数の第2の処理手段と、
    前記生成されたブロック情報に対応するブロックを並列して復号する複数の復号手段であって、前記要素データにおける最も早い前記復号処理の順序および最も高い前記計算された優先度の両方を含む前記ブロック情報に対応するブロックが前のブロックの復号処理が終了した該複数の復号手段のうちの一つに割り当てられて復号される、該複数の復号手段と、
    前記復号されたブロックを格納するとともに、そのブロックに対応する復号された要素データを形成する記憶手段と、
    を備える、前記装置。
  2. 前記優先度は、前記複数の要素データの各々の要素データ毎にその要素データに含まれるブロックに対する復号処理の進捗度に基いて算出され、該進捗度が低いほど優先度が高い、請求項1記載の装置。
  3. 前記優先度は、前記複数の要素データの各々の要素データ毎にその要素データに含まれる未処理のブロックに対する予測された処理時間に基いて算出され、該予測された処理時間が長いほど優先度が高い、請求項1または2記載の装置。
  4. 前記生成されたブロック情報を格納する記憶手段をさらに備え、
    前記優先度は、前記ブロック情報を格納した時刻に基いて算出され、該格納した時刻が現在に近いほど該格納されたブロック情報に対応するブロックと同じ要素データに含まれるブロックの優先度が高い、請求項1または2記載の装置。
  5. 画像または音声の符号化データを復号する方法であって、該符号化データが独立して復号可能な複数の要素データからなり、該複数の要素データの各々が少なくとも一つのブロックからなり、前記方法は、
    プロセッサが前記少なくとも一つのブロックのうち、最初に処理される第1のブロックを特定するブロック情報を生成するステップと、
    プロセッサが前記最初のブロックに後続するブロックに対応するブロック情報を生成するステップであって、該ブロック情報がそのブロックが含まれる前記要素データにおける復号処理の順序と、該ブロックと該ブロックが含まれる要素データとは別の要素データに含まれるブロックとの間の復号処理の順序を決める優先度が計算され、その計算された優先度とを含む、該ステップと、
    複数のプロセッサが前記生成されたブロック情報に対応するブロックを並列して復号するステップであって、前記要素データにおける最も早い前記復号処理の順序および最も高い前記計算された優先度の両方を含む前記ブロック情報に対応するブロックが前のブロックの復号処理が終了した該複数のプロセッサのうちの一つに割り当てられて復号される、該ステップと、
    プロセッサが前記復号されたブロックを格納するとともに、そのブロックに対応する復号された要素データを形成するステップと、
    を含む、前記方法。
  6. 前記優先度は、前記複数の要素データの各々の要素データ毎にその要素データに含まれるブロックに対する復号処理の進捗度に基いて算出され、該進捗度が低いほど優先度が高い、請求項5記載の方法。
  7. 前記優先度は、前記複数の要素データの各々の要素データ毎にその要素データに含まれる未処理のブロックに対する予測された処理時間に基いて算出され、該予測された処理時間が長いほど優先度が高い、請求項5または6記載の方法。
  8. 前記生成されたブロック情報をメモリに格納するステップをさらに含み、
    前記優先度は、前記ブロック情報を格納した時刻に基いて算出され、該格納した時刻が現在に近いほど該格納されたブロック情報に対応するブロックと同じ要素データに含まれるブロックの優先度が高い、請求項5または6記載の方法。
  9. 画像または音声の符号化データを復号するプログラムであって、該符号化データが独立して復号可能な複数の要素データからなり、該複数の要素データの各々が少なくとも一つのブロックからなり、
    プロセッサが前記少なくとも一つのブロックのうち、最初に処理される第1のブロックを特定するブロック情報を生成するステップと、
    プロセッサが前記最初のブロックに後続するブロックに対応するブロック情報を生成するステップであって、該ブロック情報がそのブロックが含まれる前記要素データにおける復号処理の順序と、該ブロックと該ブロックが含まれる要素データとは別の要素データに含まれるブロックとの間の復号処理の順序を決める優先度が計算され、その計算された優先度とを含む、該ステップと、
    複数のプロセッサが前記生成されたブロック情報に対応するブロックを並列して復号するステップであって前記要素データにおける最も早い前記復号処理の順序および最も高い前記計算された優先度の両方を含む前記ブロック情報に対応するブロックが前のブロックの復号処理が終了した該複数のプロセッサのうちの一つに割り当てられて復号される、該ステップと、
    プロセッサが前記復号されたブロックを格納するとともに、そのブロックに対応する復号された要素データを形成するステップと、を実行するように構成した、前記プログラム。
  10. 編集装置であって、
    画像または音声の符号化データを供給するソースであって、該符号化データが独立して復号可能な複数の要素データからなり、該複数の要素データの各々が少なくとも一つのブロックからなる、前記ソースと、
    前記最初のブロックに後続するブロックに対応するブロック情報を生成する複数の第2の処理手段であって、該ブロック情報がそのブロックが含まれる前記要素データにおける復号処理の順序と、該ブロックと該ブロックが含まれる要素データとは別の要素データに含まれるブロックとの間の復号処理の順序を決める優先度が計算され、その計算された優先度とを含む、該複数の第2の処理手段と、
    前記生成されたブロック情報に対応するブロックを並列して復号する複数の復号手段であって前記要素データにおける最も早い前記復号処理の順序および最も高い前記計算された優先度の両方を含む前記ブロック情報に対応するブロックが前のブロックの復号処理が終了した該複数の復号手段のうちの一つに割り当てられて復号される、該複数の復号手段と、
    前記復号されたブロックを格納するとともに、そのブロックに対応する復号された要素データを形成する記憶手段と、
    前記復号された要素データを編集する編集手段と、
    を備える、前記編集装置。
JP2011552108A 2009-06-09 2009-06-09 復号装置、復号方法、および編集装置 Active JP5698156B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/002597 WO2010143226A1 (en) 2009-06-09 2009-06-09 Decoding apparatus, decoding method, and editing apparatus

Publications (3)

Publication Number Publication Date
JP2012529779A JP2012529779A (ja) 2012-11-22
JP2012529779A5 JP2012529779A5 (ja) 2014-12-04
JP5698156B2 true JP5698156B2 (ja) 2015-04-08

Family

ID=41649866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011552108A Active JP5698156B2 (ja) 2009-06-09 2009-06-09 復号装置、復号方法、および編集装置

Country Status (6)

Country Link
US (1) US20120082240A1 (ja)
EP (1) EP2441268A1 (ja)
JP (1) JP5698156B2 (ja)
KR (1) KR101645058B1 (ja)
CN (1) CN102461173B (ja)
WO (1) WO2010143226A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5914962B2 (ja) * 2010-04-09 2016-05-11 ソニー株式会社 画像処理装置および方法、プログラム、並びに、記録媒体
CN108429917B (zh) * 2012-09-29 2022-04-29 华为技术有限公司 视频编码及解码方法、装置及系统
US9978156B2 (en) * 2012-10-03 2018-05-22 Avago Technologies General Ip (Singapore) Pte. Ltd. High-throughput image and video compression
RU2653858C1 (ru) 2014-05-28 2018-05-15 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Процессор данных и транспорт данных пользовательского управления на устройства декодирования и воспроизведения аудио
US10547838B2 (en) 2014-09-30 2020-01-28 Telefonaktiebolaget Lm Ericsson (Publ) Encoding and decoding a video frame in separate processing units
GB2534409A (en) * 2015-01-23 2016-07-27 Sony Corp Data encoding and decoding
CN110970038B (zh) * 2019-11-27 2023-04-18 云知声智能科技股份有限公司 语音解码方法及装置
KR102192631B1 (ko) * 2019-11-28 2020-12-17 주식회사우경정보기술 병렬 포렌식 마킹 장치 및 방법
US20240040125A1 (en) * 2022-07-27 2024-02-01 Qualcomm Incorporated Tracking sample completion in video coding

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02264370A (ja) * 1989-04-04 1990-10-29 Mitsubishi Electric Corp 画像処理装置
JPH031689A (ja) * 1989-05-30 1991-01-08 Mitsubishi Electric Corp マルチプロセッサ制御装置
TW395142B (en) * 1997-05-15 2000-06-21 Matsushita Electric Ind Co Ltd Compressed code decoding device and audio decoding device
JP2006211617A (ja) * 2005-01-31 2006-08-10 Toshiba Corp 動画像符号化装置・復号化装置及び符号化ストリーム生成方法
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
JP4182442B2 (ja) * 2006-04-27 2008-11-19 ソニー株式会社 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体
US8000388B2 (en) * 2006-07-17 2011-08-16 Sony Corporation Parallel processing apparatus for video compression
US8699561B2 (en) * 2006-08-25 2014-04-15 Sony Computer Entertainment Inc. System and methods for detecting and handling errors in a multi-threaded video data decoder
JP5042568B2 (ja) * 2006-09-07 2012-10-03 富士通株式会社 Mpegデコーダ及びmpegエンコーダ
JP2008072647A (ja) * 2006-09-15 2008-03-27 Toshiba Corp 情報処理装置、デコーダおよび再生装置の動作制御方法
MX2009003968A (es) * 2006-10-16 2009-06-01 Nokia Corp Sistema y método para usar segmentos decodificables paralelamente para codificación de video de vistas múltiples.
KR100827107B1 (ko) * 2006-10-20 2008-05-02 삼성전자주식회사 다중 연산부 구조의 h.264 복호화기 및 그 복호화기의압축 영상 데이터 복호화 방법
WO2008079041A1 (en) * 2006-12-27 2008-07-03 Intel Corporation Methods and apparatus to decode and encode video information
US20080225950A1 (en) * 2007-03-13 2008-09-18 Sony Corporation Scalable architecture for video codecs
US20080298473A1 (en) * 2007-06-01 2008-12-04 Augusta Technology, Inc. Methods for Parallel Deblocking of Macroblocks of a Compressed Media Frame
JP2009025939A (ja) * 2007-07-18 2009-02-05 Renesas Technology Corp タスク制御方法及び半導体集積回路
JP5011017B2 (ja) * 2007-07-30 2012-08-29 株式会社日立製作所 画像復号化装置
JP2009038501A (ja) * 2007-07-31 2009-02-19 Toshiba Corp 復号化装置および復号方法
US9131240B2 (en) * 2007-08-23 2015-09-08 Samsung Electronics Co., Ltd. Video decoding method and apparatus which uses double buffering
US8121197B2 (en) * 2007-11-13 2012-02-21 Elemental Technologies, Inc. Video encoding and decoding using parallel processors

Also Published As

Publication number Publication date
CN102461173A (zh) 2012-05-16
JP2012529779A (ja) 2012-11-22
EP2441268A1 (en) 2012-04-18
KR101645058B1 (ko) 2016-08-02
US20120082240A1 (en) 2012-04-05
KR20140077226A (ko) 2014-06-24
CN102461173B (zh) 2015-09-09
WO2010143226A1 (en) 2010-12-16

Similar Documents

Publication Publication Date Title
JP5698156B2 (ja) 復号装置、復号方法、および編集装置
JP4519082B2 (ja) 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
US6654539B1 (en) Trick playback of digital video data
US7801409B2 (en) Glitch-free realtime playback
US8437408B2 (en) Decoding with reference image stored in image memory for random playback
US20060088279A1 (en) Reproduction apparatus, data processing system, reproduction method, program, and storage medium
JP2008123045A (ja) プロセッサ
US8548061B2 (en) Image decoding apparatus and image decoding method
US20110122954A1 (en) Decoding Interdependent Frames of a Video Display
US9258569B2 (en) Moving image processing method, program and apparatus including slice switching
JP2007219577A (ja) データ処理装置、データ処理方法、データ処理方法のプログラム及びデータ処理方法のプログラムを記録した記録媒体
US7848610B2 (en) Data processing system, reproduction apparatus, computer, reproduction method, program, and storage medium
GB2373425A (en) Displaying asynchronous video or image sources
US20060093322A1 (en) Data processing apparatus, data processing method, data processing system, program, and storage medium
US8280220B2 (en) Reproduction apparatus, data processing system, reproduction method, program, and storage medium
US7974523B2 (en) Optimal buffering and scheduling strategy for smooth reverse in a DVD player or the like
US8615165B2 (en) Video-recording and replaying apparatus, I/O scheduling method, and program
US7729591B2 (en) Data processing apparatus, reproduction apparatus, data processing system, reproduction method, program, and storage medium
JP5236386B2 (ja) 画像復号装置及び画像復号方法
JP5120324B2 (ja) 画像復号装置及び画像復号方法
US7627232B2 (en) Reproduction apparatus, data processing system, reproduction method, program, and storage medium
JP2018011258A (ja) 処理制御装置、処理制御方法及びプログラム
JP2010193131A (ja) 動画像復号方法及び動画像復号装置
TWI605416B (zh) 影像處理裝置、影像處理方法及其非暫態電腦可讀取儲存媒體
JP4385913B2 (ja) 編集装置、編集方法及びプログラム並びにファイル管理装置及びファイル管理方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130619

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130912

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140409

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140702

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141009

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20141009

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141222

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: 20150128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150212

R150 Certificate of patent or registration of utility model

Ref document number: 5698156

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250