以下に、本発明を実施するための形態を図面を参照して説明する。
(実施の形態1)
本発明の動画像再生装置に係る実施の形態1の再生装置100の構成及び動作を説明する前に、再生装置100の概要を説明する。再生装置100は、画像及び音が符号化されたストリームを再生する装置であって、小さい処理負荷でビデオストリームを再生する点に特徴を有する。
すなわち、再生装置100は、複数の再生方法それぞれと、複数のピクチャ構成それぞれとの組合わせについて、各ピクチャの復号の順序と出力の順序と示す再生制御シナリオを予め保持している。「再生方法」は、通常再生、又は、逆方向の再生等である。「ピクチャ構成」は、多数のピクチャで構成されるストリームにおける最小単位構造(GOP)のタイプを特定する情報である。
再生装置100は、再生を実行する際、ストリームのピクチャ構成を解析し、解析結果と指定された再生方法とに対応する再生制御シナリオを選択し、それに従って、各ピクチャの復号と、装置外部への出力とを行う。再生装置100は、再生を実行する際に、各ピクチャの復号及び出力の順序を決定せず、予め用意されている再生制御シナリオを用いて各ピクチャの復号及び出力を行う。これにより、再生装置100の処理の負荷は、従来より小さくなっている。以下に、再生装置100の構成及び動作を具体的に説明する。
先ず、実施の形態1の再生装置100の構成を図1を用いて説明する。図1は、実施の形態1の再生装置100の構成図である。再生装置100は、符号化された画像及び音の各データが含まれるストリームを再生する装置であって、図1に示すように、入力部1と、受付部2と、指示部3と、ストリーム取得部4と、要求部5と、ストリームバッファ6と、PID解析部7と、分離部8と、画像ESバッファ9と、音ESバッファ10と、構造解析部11と、シナリオデータベース12と、選択部13と、制御部14と、画像復号部15と、復号画像バッファ16と、管理部17と、最終バッファ18と、画像出力部19と、音復号部20と、音出力部21とを有する。
再生装置100の各構成部を詳述する前に、再生装置100が再生するストリーム等を説明する。実施の形態1では、再生対象のストリームは、再生装置100に接続される、再生装置100の外部の蓄積媒体101によって保持されている。なお、蓄積媒体101は、再生装置100に含まれていてもよい。ストリームは、MPEG2ビデオ規格のTransport Stream(TS)として蓄積媒体101に記録されている。TSでは、ストリームの構成を特定する情報が、Program Specific Information(PSI)のProgram Map Table(PMT)に記録される。つまり、画像の符号化モード及びパケットID(PID)と、音の符号化モード及びパケットIDとが、PMTに記録されている。
次に、再生装置100を構成する各構成部を順に説明する。
入力部1は、ユーザが再生対象のストリームの再生指示を再生装置100に入力するための構成部である。例えば、再生装置100がカムコーダに搭載されていて、その表示部に再生可能な複数のストリームそれぞれの代表のサムネイルが表示されている場合において、ユーザが再生対象のストリームを選択するためのボタン及び再生指示ボタン等が入力部1である。ユーザは、再生対象のストリームの再生指示を入力する際、再生方法を特定する情報も、入力部1を用いて再生装置100に入力する。再生方法を特定する情報とは、具体的には、通常再生を実行するのか、逆再生等の特殊再生を実行するのかを特定する情報である。
受付部2は、ユーザが入力部1を用いて再生装置100に入力した、再生対象のストリームの再生指示と、再生方法を特定する情報とを受け付ける。指示部3は、受付部2が再生指示と再生方法を特定する情報とを受け付けると、ストリーム取得部4に対して、蓄積媒体101から再生対象のストリームを取得する準備を行うように指示する。また、指示部3は、要求部5に対して、再生対象のストリームを要求するように指示する。また、指示部3は、PID解析部7に対して、再生対象のストリームを構成する各データのPIDを分離部8に通知するように指示する。更に、指示部3は、構造解析部11に対して、再生対象のストリームに含まれる各GOPを構成するピクチャの構造を解析するように指示する。
ストリーム取得部4は、指示部3からの指示に従って、蓄積媒体101の中の再生対象のストリームを含むファイルを開き、そのストリームを構成するデータを取得可能な状態で待機する。要求部5は、指示部3からの指示に従って、ストリーム取得部4に対して、再生対象のストリームを構成するデータを自身に出力するように要求する。ストリーム取得部4は、要求部5からの要求に応じて、再生対象のストリームを蓄積媒体101から取得して要求部5に出力する。具体的には、要求部5は、ストリーム取得部4に対して、データのサイズを指定して再生対象のストリームを構成するデータを要求し、ストリーム取得部4は、要求部5によって指定されたサイズのデータを蓄積媒体101から読み出して要求部5に出力する。
ストリームバッファ6は、要求部5がストリーム取得部4から取得したストリームを一時的に保持する構成部である。要求部5は、ストリーム取得部4から取得したデータをストリームバッファ6に格納して一時的に保持させる。
PID解析部7は、指示部3からの指示に従って、蓄積媒体101から再生対象のストリームを読み出してPMTを解析し、そのストリームを構成する画像及び音の各データのPIDを分離部8に通知する。PID解析部7は、各データのPIDの分離部8への通知を、そのデータが分離部8に供給される前に行う。
分離部8は、PID解析部7からの各データのPIDに従って、ストリームバッファ6によって保持されたデータを、画像のElementary Streamのデータ(画像ESデータ)と、音のESのデータ(音ESデータ)とに分離する。画像ESバッファ9は、画像ESデータを一時的に保持する構成部であり、音ESバッファ10は、音ESデータを一時的に保持する構成部である。分離部8は、画像ESデータを画像ESバッファ9に格納して一時的に保持させ、音ESデータを音ESバッファ10に格納して一時的に保持させる。
分離部8は、ストリームバッファ6に保持されているデータの量が所定の量を下回った場合、その旨を示す下限情報を要求部5に通知する。「所定の量」は、アンダーフローによる異常が発生する直前の量である。要求部5は、分離部8から下限情報を受け取ると、ストリーム取得部4に対して、自身へデータを出力するように要求する。ストリーム取得部4は、要求部5からの要求に従って、再生対象のストリームを構成するデータを蓄積媒体101から読み出して要求部5に出力する。要求部5は、ストリーム取得部4から取得したデータをストリームバッファ6に格納する。これにより、ストリームバッファ6に保持されるデータの量が所定の量を下回る状態は長く続かず、アンダーフローによる動作の異常は発生しない。
なお、再生装置100がカムコーダに搭載される場合、蓄積媒体101は、FLASHメモリ、SDカード、又はハードディスク(HD)等である。そのため、蓄積媒体101からのデータの読み出しが実行される際、ランダムアクセスの読み出し遅延や、振動による影響での読み出しの瞬間的な停止等の異常が発生することがある。したがって、画像の再生時間に換算して少なくとも2秒から3秒以上のデータを保持することができるストリームバッファ6を用いるのが適切である。
構造解析部11は、GOP単位で、各GOPに含まれる各ピクチャの構造を解析し、すなわちGOPにおけるIPB各ピクチャの順序を解析し、ピクチャ構造解析データを生成して保持する。図2は、ピクチャ構造解析データを示す図である。ピクチャ構造解析データは、4個のGOPのデータを含む。図2では、4個のGOP201と、各GOP201を形成する各ピクチャ203の複数の属性204とが示されている。複数の属性204それぞれの定義は次の通りである。
「Picture Type」は、ピクチャが“I”と“P”と“B”とのうちのいずれであるのかを示す情報である。「Temporal Reference」は、MPEG2ビデオ規格における各ピクチャの出力の順序を示す番号である。H.264規格では、「Temporal Reference」の代わりに「Picture Order Count(POC)」が用いられ、それによって出力の順序が示される。構造解析部11は、ピクチャ属性データをMPEG2のストリームとH.264のストリームとを一つの規則で管理する。そのため、構造解析部11は、H.264のストリームを構成する各ピクチャについては、「POC」が示す値に「1」を加えて「Temporal Reference」の形式の番号に変換し、変換後の値を各ピクチャの出力の順序を示す情報として保持する。
「Display Flag」は、ピクチャが表示可能であるか否かを示すフラグである。高速再生を実行する場合、いくつかのピクチャは飛ばされる。つまり、供給されるピクチャの不連続が発生する。GOPがOpen符号化されている場合、先頭2枚のBピクチャは直前のGOPの最後のPピクチャを参照することになるが、高速再生を実行する場合、参照ピクチャが供給されないことがある。その場合、先頭2枚のBピクチャを正しく復号することができず、ストリーム供給時に表示禁止フラグが付加される。そのため、不連続なGOPの先頭2枚のBピクチャの「Display Flag」に「FALSE」が記載され、復号及び表示を実行する必要がないことが示される。
「Reference Flag」は、ピクチャが参照ピクチャであるか否かを示す情報である。MPEG2ビデオ規格では、Iピクチャ及びPピクチャのみが参照ピクチャとなるが、H.264規格では、Bピクチャも参照ピクチャになる場合がある。
「H/W size」は、画像の垂直及び水平それぞれのサイズを示す情報である。「PTS/DTS」の「PTS」は、MPEG2ビデオ規格で規定される「Presentation Time Stamp(表示時刻)」であり、「PTS/DTS」の「DTS」は、「Decoding Time Stamp(デコード開始時刻)」である。
「RefList」は、参照ピクチャのインデックスである。復号対象のピクチャがPピクチャである場合、その前方の1枚のピクチャのみが参照ピクチャとなり、復号対象のピクチャがBピクチャである場合、その前後のピクチャが参照ピクチャとなる。
「ES address」は、画像ESバッファ9に格納された各画像ESデータの先頭のアドレスを示す情報であり、「ES length」は、画像ESバッファ9に格納された各画像ESデータのサイズを示す情報である。
構造解析部11は、各GOPについてそのGOPに属する全てのピクチャの「Picture Type」を解析した後に、そのGOPに含まれるピクチャの構成を特定する「M/N」202を調べる。「M」は、Iピクチャとその直後のPピクチャとの距離をピクチャの枚数で示す値である。また、「M」は、各Pピクチャについてその直後のPピクチャとの距離をピクチャの枚数で示す値でもある。つまり、「M」は、直近の参照ピクチャ相互の距離をピクチャの枚数で示す値である。「N」は1GOPを構成するピクチャの総数を示す値である。
1GOPの構成が「IBBPBBPBBPBBPBB」である場合、「M」の値は“3”であり、「N」の値は“15”である。以下では、「M/N」を「ピクチャ構成」と記載する。MPEG2ビデオ規格又はH.264規格によって符号化されたピクチャの構成は、M=3/N=15、M=3/N=12、及び、M=2/N=14等がよく用いられる。
シナリオデータベース12は、複数のピクチャ構成それぞれと、複数の再生方法それぞれとの組合わせに対応する複数の再生制御シナリオを保持している。再生制御シナリオは、GOP単位で、ストリームを構成する各ピクチャの復号の順序と出力の順序とを示す情報である。つまり、再生制御シナリオは、1GOPの再生手順をデータ構造化した情報である。シナリオデータベース12は、複数のピクチャ構成それぞれについて、順方向IPBの再生制御シナリオ、順方向IPの再生制御シナリオ、I−Onlyの再生制御シナリオ、逆方向IPBの再生制御シナリオ、及び、逆方向IPの再生制御シナリオを保持している。再生制御シナリオの例については、図3から図7を用いて後述する。
図1に戻る。選択部13は、GOP単位で、構造解析部11がピクチャ構成を特定した後に、特定されたピクチャ構成と、受付部2が受け付けた情報によって特定される再生方法とに対応する再生制御シナリオを、シナリオデータベース12によって保持されている複数の再生制御シナリオのなかから選択して取得し、制御部14に供給する。
制御部14は、選択部13から供給された再生制御シナリオに従って各ピクチャの復号及び出力を制御する。画像復号部15は、制御部14による制御に従って、ピクチャを復号する。復号画像バッファ16は、画像復号部15によって復号されたピクチャ(以下、画像と呼ぶことがある)を一時的に保持する。図1では、復号画像バッファ16は1個のみ示されているが、実際は、復号画像バッファ16は複数個存在し、それぞれには1枚のピクチャのみが保持される。復号画像バッファ16の個数は、ピクチャの参照及び出力による遅延と装置の規模等とを考慮して、「5」から「8」が適切である。これにより、特殊再生についても効率良く再生することができる。
管理部17は、複数の復号画像バッファ16それぞれを管理する。例えば、管理部17は、複数の復号画像バッファ16のなかから、画像復号部15によって復号される画像を保持させるバッファを決定する。最終バッファ18は、復号された画像を再生装置100の外部に出力するために、復号画像バッファ16から復号された画像を取得して保持する。画像出力部19は、制御部14による制御に従って、最終バッファ18から出力対象の画像を取得して再生装置100の外部に出力する。以下に、再生制御シナリオの具体例と、各ピクチャの復号及び出力と、復号画像バッファ16の管理方法とを詳細に説明する。
先ず、再生制御シナリオの具体例を図3を用いて説明する。再生制御シナリオは、上述したように、1GOPの再生手順をデータ構造化した情報であって、図3は、M=3/N=15のピクチャ構成を有するGOPのIPB通常再生時の再生制御シナリオを示している。以下では、図3の再生制御シナリオを「順方向IPBの再生制御シナリオ」と記載する。MPEG2ビデオ規格やH.264規格ではピクチャ構成の自由度は高いが、カムコーダにより記録されるピクチャの構成は、図3の順方向IPBの再生制御シナリオに示す「M=3/N=15」の構成が一般的である。
図3の再生制御シナリオにおいて、「Scenario No.」は、復号の順序を示す番号である。1つの「Scenario No.」には、復号対象のピクチャを特定するために「GOP No.」と「Picture No.」とが割り当てられる。それら2つの番号により、各「Scenario No.」での復号対象のピクチャが特定される。再生制御シナリオは図1のシナリオデータベース12に格納されている。このシナリオデータベース12に格納されている「GOP No.」は相対的な数として定義されている。図2のピクチャ構造解析データのGOP201のGOP番号0の復号を行う場合は、ピクチャ構造解析データのGOP番号0にシナリオデータベースの相対番号「GOP No.」を加算した数を使ってピクチャ構造解析データにアクセスする。IPB通常再生時の再生制御シナリオを実行する場合は、再生制御シナリオの「GOP No.」は、図2のピクチャ構造解析データのGOP201の番号に対応するように、“0”,“1”,“2”,“3”と値が「1」ずつ増加し、“3”の後は“0”に戻るように制御される。
「Picture Type」は、ピクチャが“I”と“P”と“B”とのうちのいずれであるのかを示す情報である。なお、「GOP No.」及び「Picture No.」と、図2のピクチャ構造解析データとを用いると、各ピクチャの「Picture Type」を特定することができる。そのため、「Picture Type」は、再生制御シナリオに含まれなくてもよい。
「Output Number」は、復号が完了して出力対象となるピクチャを特定する番号であり、それは、「Scenario No.」により特定される。図3の再生制御シナリオでは、「Output Number」の「Scenario No.4」に対応するフィールドに“4”が記載されている。それは、「Scenario No.」が“4”であるピクチャが復号されると、そのピクチャが出力対象となることを示している。「Output Number」の一つのフィールドには2個の「Scenario No.」が含まれることがある。それは、そのフィールドに含まれる2個の「Scenario No.」それぞれに対応する2枚のピクチャが出力対象であることを示している。複数枚のピクチャが出力指定されている場合は記載の順序に出画処理を行う。ピクチャの出力が必要ない場合はシナリオデータ構造は0xFFなどの特別な値を格納しておけばよい。
「DEC Buf Release」は、強制的に開放させる復号画像バッファ16を示す情報である。開放させるバッファは、そのバッファに保持されているPピクチャの「Scenario No.」により特定される。順方向の通常再生を実行する場合、復号される全てのピクチャが出力されるので、いずれの復号画像バッファ16も強制的に開放しなくてもよい。そのため、図3の「DEC Buf Release」には何も記載されていない。強制開放しない場合はシナリオデータ構造は0xFFなどの特別な値を格納しておけばよい。
「B−Buf Keep」は、開放させない復号画像バッファ16を示す情報である。開放させないバッファは、そのバッファに保持されているBピクチャの「Scenario No.」により特定される。H.264規格における参照Bピクチャは、復号して出力が完了した後でも参照される場合がある。そのため、Bピクチャを保持するバッファであっても、そのバッファを開放させない場合があり、その場合のバッファが「B−Buf Keep」により特定される。順方向の通常再生を実行する場合、Bピクチャは参照ピクチャとはならないので、図3の「B−Buf Keep」には何も記載されていない。開放させないバッファが不要の場合はシナリオデータ構造は0xFFなどの特別な値を格納しておけばよい。
次に、図3の順方向IPBの再生制御シナリオを用いて各ピクチャの復号の順序と出力の順序とを説明する。上述したように、図3は、M=3/N=15のピクチャ構成を有するGOPのIPB通常再生時の再生制御シナリオを示している。
先ず、制御部14は、「Scenario No.」が“0”であるピクチャ、すなわち、GOP=0/Picture=0のI2が復号されるように、画像復号部15を制御する。具体的には、制御部14は、画像復号部15に対して、図2のピクチャ構造解析データのGOP=0/Picture=0のピクチャ属性データの「ES address」及び「ES length」を供給するとともに、復号の開始を指示する。
画像復号部15は、供給されたI2の「ES address」及び「ES length」に基づいて、「Scenario No.」が“0”のピクチャの画像ESデータを画像ESバッファ9から取得してI2を復号し、復号したI2を復号画像バッファ16に格納する。そして、最終バッファ18は、復号画像バッファ16に格納されたI2を取得して保持する。図3の順方向IPBの再生制御シナリオの「Output Number」の「Scenario No.0」のフィールドには何も記載されていない。そのため、画像復号部15によるI2の復号が完了しても、「Scenario No.」が“0”であるI2は再生装置100の外部にすぐには出力されない。
次に、「Scenario No.」が“1”であるピクチャ、すなわち、GOP=0/Picture=1のB0が復号されるように、制御部14は、画像復号部15を制御する。具体的には、制御部14は、画像復号部15に対して、図2のピクチャ構造解析データのGOP=0/Picture=1のピクチャ属性データの「ES address」及び「ES length」を供給するとともに、復号の開始を指示する。
GOPがClosed−GOPである場合、又は、復号対象のピクチャがストリームの先頭から数えて1番目のBピクチャであってそれに先行する2枚の参照ピクチャが存在しない場合、B0を復号するとき、直前のIピクチャであるI2のみが参照ピクチャとなる。そのため、画像復号部15は、供給されたB0の「ES address」及び「ES length」に基づいて、「Scenario No.」が“1”であるピクチャの画像ESデータを画像ESバッファ9から取得するとともに、復号されたI2を復号画像バッファ16から取得する。画像復号部15は、取得したI2を参照ピクチャとしてB0を復号し、復号したB0を復号画像バッファ16に格納する。そして、最終バッファ18は、復号画像バッファ16に格納されたB0を取得して保持する。
図3の順方向IPBの再生制御シナリオの「Output Number」の「Scenario No.1」に対応するフィールドには“1”が記載されている。そのため、画像復号部15によって復号されたB0が最終バッファ18へ格納されると、画像出力部19は、復号されたB0を最終バッファ18から取得して再生装置100の外部に出力する。なお、画像出力部19は、ピクチャの出力タイミングを管理しており、再生対象のストリームがフレーム構造のストリームであれば、周期29.97Hzで1枚の復号された画像を再生装置100の外部に出力する。復号の速度は出画の速度より早いので、最終バッファ18には常に何枚かの復号画像が保持され、アンダーフローによる異常は発生しない。
次に、「Scenario No.」が“2”であるピクチャ、すなわち、GOP=0/Picture=2のB1が復号されるように、制御部14は、画像復号部15を制御する。B1の復号は、B0の復号と同じであるので、その説明は省略する。画像復号部15は、B1の復号を完了すると、復号したB1を復号画像バッファ16に格納する。そして、最終バッファ18は、復号画像バッファ16に格納されたB1を取得して保持する。
図3の順方向IPBの再生制御シナリオの「Output Number」の「Scenario No.2」に対応するフィールドには“2,0”が記載されている。「Scenario No.」が“2”であるピクチャはB1であり、「Scenario No.」が“0”であるピクチャはI2である。そのため、画像復号部15によって復号されたB1が最終バッファ18へ格納されると、画像出力部19は、復号されたB1を最終バッファ18から取得して再生装置100の外部に出力する。それに続いて、画像出力部19は、復号されたI2を最終バッファ18から取得して再生装置100の外部に出力する。
MPEG2ビデオ規格又はH.264規格のストリームでは、非参照ピクチャであるBピクチャより前にIピクチャ又はPピクチャの参照ピクチャを復号する必要があるが、出力の順序は復号の順序と異なる。そのため、画像出力部19は、B0を出力した後にB1を出力し、その後にI2を出力する。ピクチャを示す“I”“P”及び“B”それぞれの添字の数は、そのピクチャの通常再生時の出力の順序を示している。
次に、「Scenario No.」が“3”であるピクチャ、すなわち、GOP=0/Picture=3のP5が復号されるように、制御部14は、画像復号部15を制御する。具体的には、制御部14は、画像復号部15に対して、図2のピクチャ構造解析データのGOP=0/Picture=3のピクチャ属性データの「ES address」及び「ES length」を供給するとともに、復号の開始を指示する。
画像復号部15は、供給されたP5の「ES address」及び「ES length」に基づいて、「Scenario No.」が“3”のピクチャの画像ESデータを画像ESバッファ9から取得するとともに、復号されたI2を復号画像バッファ16から取得する。画像復号部15は、取得したI2を参照してP5を復号し、復号した画像を復号画像バッファ16に格納する。そして、最終バッファ18は、復号画像バッファ16に格納されたP5を取得して保持する。図3の順方向IPBの再生制御シナリオの「Output Number」の「Scenario No.3」に対応する箇所には何も記載されていない。そのため、画像復号部15によるP5の復号が完了しても、「Scenario No.3」のP5は再生装置100の外部にすぐには出力されない。
次に、「Scenario No.」が“4”であるピクチャ、すなわち、GOP=0/Picture=4のB3が復号されるように、制御部14は、画像復号部15を制御する。具体的には、制御部14は、画像復号部15に対して、図2のピクチャ構造解析データのGOP=0/Picture=4のピクチャ属性データの「ES address」及び「ES length」を供給するとともに、復号の開始を指示する。
画像復号部15は、供給されたB3の「ES address」及び「ES length」に基づいて「Scenario No.」が“4”のピクチャの画像ESデータを画像ESバッファ9から取得する。それとともに、画像復号部15は、復号されたI2及びP5を復号画像バッファ16から取得する。画像復号部15は、取得したI2及びP5を参照してB3を復号し、復号したB3を復号画像バッファ16に格納する。そして、最終バッファ18は、復号画像バッファ16に格納されたB3を取得して保持する。
図3の順方向IPBの再生制御シナリオの「Output Number」の「Scenario No.4」に対応する箇所には“4”が記載されており、「Scenario No.」が“4”であるピクチャはB3である。そのため、画像復号部15によって復号されたB3が最終バッファ18へ格納されると、画像出力部19は、復号されたB3を最終バッファ18から取得して再生装置100の外部に出力する。
以降、上述したようにして、画像復号部15は、「Scenario No.」の順に各ピクチャを復号し、画像出力部19は、「Output Number」の順に各ピクチャを再生装置100の外部に出力する。
制御部14は、「Scenario No.」が“14”であるピクチャ、すなわち、GOPの最後の処理ピクチャの出力が完了すると、選択部13に対して、次のGOPの再生制御シナリオを自身に出力するように要求する。選択部13は、制御部14からの要求に従って、「GOP No.」が“0”の次の“1”に対応する再生制御シナリオをシナリオデータベース12から取得して制御部14に供給する。
一つのストリームでは、ピクチャ構成は、いずれのGOPでも同じであるとして説明する。そのため、選択部13は、「GOP No.」が“1”に対応する再生制御シナリオとして、図3に示す再生制御シナリオと同じ再生制御シナリオ(順方向IPBの再生制御シナリオ)を選択する。制御部14は、選択部13から供給された再生制御シナリオの「GOP No.」を値“1”だけ増加させる。
「GOP No.」が“1”であるGOPの各ピクチャの復号及び出力は、「GOP No.」が“0”であるGOPの各ピクチャと同様に実行される。すなわち、復号は、「GOP=1/Picture=0」のピクチャから開始され、「Picture No.」の順に「Picture=14」のピクチャまで行われる。ピクチャの出力は、「Output Number」の順に行われる。
以下、同様にして、各GOPの各ピクチャの復号及び出力が行われる。
なお、実施の形態1では、ピクチャ構造解析データは、4個のGOPのデータを含む。そのため、復号が開始されて4個のGOP(4GOP×15枚のピクチャ)の出力が完了すると、処理されるGOPは、GOP[3]から次のピクチャ構造解析データのGOP[0]に移行し、復号及び出力は継続する。構造解析部11は、全てのピクチャの復号及び出力が完了し、いずれのピクチャも参照されなくなり、それらのピクチャを含むGOPのピクチャ構造解析データの使用が終了すると、その次のピクチャ構造解析データを得るために、次の処理を行う。すなわち、構造解析部11は、分離部8に対してストリームを自身に出力するように要求してストリームを取得してピクチャの構造を解析し、次のピクチャ構造解析データを生成して保持する。このようにして、構造解析部11は、常に有効なピクチャ構造解析データを保持する。
また、GOPがOpen−GOPである場合、ストリームの先頭から2つ目以降のGOPの先頭2枚のBピクチャは、直前のGOPの最後のPピクチャ(P14)と復号中のGOPのIピクチャ(I2)との2枚のピクチャを参照して復号される。
次に、復号画像バッファ16の管理方法を説明する。管理部17は、上述したように、複数の復号画像バッファ16を管理する。すなわち、管理部17は、画像復号部15によって復号された画像を保持するためのバッファを決定し、参照ピクチャとして用いられる画像をバッファに保持させ、更に、不要となった画像を保持するバッファを開放する。復号画像バッファ16の状態は、「未使用」、「復号中」、「復号完了」、「出画中」、又は、「参照中」である。「未使用」は、使用されていない状態を示す。「復号中」は、画像を復号するために使用されている状態を示す。「復号完了」は、復号された出力対象の画像を保持している状態を示す。「出画中」は、保持している画像が出力されている状態を示す。「参照中」は、参照ピクチャを保持している状態を示す。「復号完了」した後に出画しないまま参照されるピクチャは「参照中」の状態となる。あるいは復号後に出画して「出画中」となり、出画が完了した時において参照される場合も「参照」の状態である。
管理部17は、復号の開始時には、複数の復号画像バッファ16から「未使用」の1枚のバッファを確保し、そのバッファを「復号中」に設定する。管理部17は、復号が完了すると、そのバッファを「復号完了」に設定する。また、管理部17は、出力中の画像を保持するバッファを「出画中」に設定し、出力が完了しかつ参照ピクチャとして用いられない画像を保持するバッファを「未使用」に設定する。「未使用」に設定されたバッファは再利用される。
実施の形態1の再生装置100は、図1に示すように、音復号部20及び音出力部21も有する。音復号部20は、音ESバッファ10によって保持された音ESデータをフレーム毎に復号する。具体的には、音復号部20は、フレーム毎のDTS、アドレス、及びサイズを利用して、フレーム毎に音を再生する。音出力部21は、音復号部20によって再生された音を再生装置100の外部に出力する。
再生装置100の各構成部の機能と再生制御シナリオの例は、上述した通りである。次に、図3の順方向IPBの再生制御シナリオ以外の複数の再生制御シナリオと、それら複数の再生制御シナリオそれぞれにおける各ピクチャの復号及び出力を、図4から図7を用いて説明する。
図4は、M=3/N=15のピクチャ構成を有するGOPについて順方向にIピクチャ及びPピクチャのみを再生する際の再生制御シナリオを示す図である。以下では、「順方向にIピクチャ及びPピクチャのみを再生すること」を「順方向IPピクチャサーチ」と記載する。ピクチャ構成が「M=3/N=15」である場合、順方向IPピクチャサーチにより、順方向のストリームの再生を通常再生に比べて3倍速で実現することができる。また、図4の再生制御シナリオを「順方向IPの再生制御シナリオ」と記載する。
次に、M=3/N=15のピクチャ構成の順方向IPピクチャサーチを実行する手順を説明する。
例えば、再生装置100がカムコーダに搭載されている場合、通常再生の実行中にカムコーダのサーチボタン(入力部1の一例)が1回押されると、受付部2は、サーチボタンが押されたことを示す情報を受け付ける。指示部3は、その情報に従って、現在の再生状態が通常再生の状態であり、順方向に3倍速で再生すべきことが指示されたと判断し、選択部13に対して、順方向の3倍速での再生を実行するための再生制御シナリオ(順方向IPの再生制御シナリオ)を選択するように指示する。
通常再生から「順方向IPピクチャサーチ」への再生方法の切り替えは、処理中のGOPの処理が完了した直後に行われるようにする。そのため、選択部13は、処理中のGOPの最後のピクチャの出力が完了した直後に、指示部3からの指示に従って、「M=3/N=15のピクチャ構成」と「順方向IPピクチャサーチ」とに対応する、図4の順方向IPの再生制御シナリオを、シナリオデータベース12によって保持されている複数の再生制御シナリオのなかから選択して取得する。
選択部13は、取得した順方向IPの再生制御シナリオの「GOP No.」を、処理されるGOPの番号が連続するようにする。例えば、通常再生の最後のGOPが「GOP No.2」のGOPであったとすると、選択部13は、順方向IPの再生制御シナリオの「GOP No.」を、“3”に変更する。また例えば、通常再生の最後のGOPが「GOP No.4」のGOPであったとすると、選択部13は、順方向IPの再生制御シナリオの「GOP No.」を、“0”にする。以下では、通常再生の最後のGOPが「GOP No.4」のGOPであったと仮定する。
選択部13は、処理されるGOPの番号が連続するようにして、順方向IPの再生制御シナリオを制御部14に供給する。
制御部14は、選択部13から供給された、図4の再生制御シナリオに従って各ピクチャの復号及び出力を制御する。すなわち、制御部14は、最初に、「GOP No.=0/Picuture No.=0」のI2が復号され、復号が完了すると直ちにI2が再生装置100の外部に出力されるように制御する。続いて、制御部14は、復号済みのI2を参照してP5が復号され、復号が完了すると直ちにP5が再生装置100の外部に出力されるように制御する。残りのPピクチャ(P8,P11,P14)についても、全て直前に復号されたPピクチャ(P5,P8,P11)を参照して順に復号され、復号が完了すると直ちに再生装置100の外部に出力されるように、制御部14は制御する。
図5及び図6は、M=3/N=15のピクチャ構成を有するGOPについて逆方向に全てのピクチャを再生する際の再生制御シナリオを示す図である。図5は、その再生制御シナリオの前半部を示しており、図6は、その再生制御シナリオの後半部を示している。以下では、「逆方向に全てのピクチャを再生すること」を「逆方向IPB再生」と記載する。また、図5及び図6の再生制御シナリオを「逆方向IPBの第1の再生制御シナリオ」と記載する。
次に、M=3/N=15のピクチャ構成の逆方向IPB再生を実行する手順を説明する。以下では、Open−GOPを有するストリームの再生の手順を説明する。選択部13は、「M=3/N=15のピクチャ構成」と「逆方向IPB再生」とに対応する図5及び図6の逆方向IPBの第1の再生制御シナリオを、シナリオデータベース12によって保持されている複数の再生制御シナリオのなかから選択して取得して制御部14に供給する。
逆方向IPB再生を実行する場合、最初に再生装置100から出力されるピクチャはP14である。P14を復号するためには、復号されたI2,P5,P8,及びP11が必要である。そのため、先ず、制御部14は、「GOP No.=0」の「Picuture No.」が“0”,“3”,“6”,及び“9”である各ピクチャ、すなわち、I2,P5,P8,及びP11が順に復号されるように制御する。次に、制御部14は、P11を参照してP14が復号され、復号が完了すると直ちにP14が再生装置100の外部に出力されるように制御する。
具体的には、先ず、制御部14は、「Scenario No.」が“0”であるI2を復号させる。次に、制御部14は、「Scenario No.」が“1”であるP5を、I2を参照して復号させる。復号画像バッファ16の個数には制限があるので、不要なバッファはできるだけ開放して再利用する必要がある。そこで、図5及び図6の再生制御シナリオには、復号画像バッファ16を強制的に開放させるために、「DEC BUF Release」が記載されている。上述したように、強制的に開放させるバッファは、そのバッファに保持されているピクチャの「Scenario No.」により特定される。
「Scenario No.」が“1”であるP5の復号が完了すると、I2は参照されなくなる。そのため、図5の再生制御シナリオでは、復号されたI2を保持している復号画像バッファ16を開放させるために、「DEC Buf Release」の「Scenario No.1」に対応するフィールドには“0”が記載されている。これにより、管理部17は、復号されたI2を保持している復号画像バッファ16を開放させる。すなわち、管理部17は、復号されたI2を保持している復号画像バッファ16を「未使用」に設定する。
次に、制御部14は、「Scenario No.」が“2”であるP8を、P5を参照して復号させる。「Scenario No.」が“2”であるP8の復号が完了すると、P5は参照されなくなる。そのため、復号されたP5を保持している復号画像バッファ16を開放させるために、「DEC Buf Release」の「Scenario No.2」に対応するフィールドには“1”が記載されている。これにより、管理部17は、復号されたP5を保持している復号画像バッファ16を開放させる。
次に、制御部14は、「Scenario No.」が“3”であるP11を、P8を参照して復号させる。「Scenario No.」が“3”であるP11の復号が完了すると、P8は参照されなくなる。そのため、復号されたP8を保持している復号画像バッファ16を開放させるために、「DEC Buf Release」の「Scenario No.3」に対応するフィールドには“2”が記載されている。これにより、管理部17は、復号されたP8を保持している復号画像バッファ16を開放させる。
次に、制御部14は、「Scenario No.」が“4”であるP14を、P11を参照して復号させる。「Scenario No.」が“4”であるP14の復号が完了すると、制御部14は、直ちにP14を再生装置100の外部に出力させる。「DEC Buf Release」の「Scenario No.4」に対応するフィールドには何も記載されていない。そのため、2個の復号画像バッファ16それぞれによって、P11とP14とが別々に保持されている。
次に、制御部14は、「Scenario No.」が“5”であるB13を、P11とP14とを参照して復号させ、復号が完了すると、直ちにB13を再生装置100の外部に出力させる。
次に、制御部14は、「Scenario No.」が“6”であるB12を、P11とP14とを参照して復号させ、復号が完了すると、直ちにB12を再生装置100の外部に出力させる。B12の復号が完了すると、P11及びP14は参照されなくなる。そのため、復号されたP11及びP14を保持している復号画像バッファ16を開放させるために、「DEC Buf Release」の「Scenario No.6」に対応するフィールドには“3”が記載されている。これにより、管理部17は、復号されたP11及びP14を保持している復号画像バッファ16を開放させる。
以降、上述したような手順により、「Scenario No.」の順に各ピクチャの復号が行われ、「Output Number」の順に各ピクチャの再生装置100の外部への出力が行われる。また、「DEC Buf Release」に従って復号画像バッファ16が開放される。ところで、制御部14は、図6の「Scenario No.21」において、B3をI2とP5とを参照して復号させ、復号が完了すると、B3を再生装置100の外部に出力させ、続いてI2を再生装置100の外部に出力させる。
次に、B1及びB0を復号することになるが、再生対象のGOPは、上述したように、Open−GOPである。すなわち、B1及びB0を復号するためには、参照ピクチャとして、「GOP No.0」のI2と、「GOP No.0」の直前のGOPのP14とが必要となる。そのため、制御部14は、図6「Scenario No.」が“22”から“26”に対応する各ピクチャ、すなわち、直前のGOPのI2,P5,P8,P11,及びP14が順に復号されるように制御する。
逆再生を実行する場合、ストリーム取得部4は、GOP単位でストリームを構成するデータを蓄積媒体101から逆順に取得するので、GOPの再生の順序は、「GOP No.」が増加する順序になる。従って、上記の「直前のGOP」は、「GOP No.1」のGOPになる。
再生制御シナリオは図1のシナリオデータベース12に格納されている。シナリオデータベースに格納されている「GOP No.」は相対的な数として定義されている。
図2のピクチャ構造解析データのGOP201のGOP番号0の復号を行う場合は、ピクチャ構造解析データのGOP番号0にシナリオデータベースの相対番号「GOP No.」を加算した数を使ってピクチャ構造解析データにアクセスする。
図6の「逆方向IPBの第1の再生制御シナリオ(後半部)」は「GOP No.」=1が記載されている。これはピクチャ構造解析データのGOP201のGOP番号0の復号を行っている場合、「Scenario No.」が“22”から“26”の間の「GOP No.」=1の時はピクチャ構造解析データのGOP201のGOP番号1を復号することを示す。
同様にGOP201のGOP番号1の復号を行う場合は、ピクチャ構造解析データのGOP番号1と2の解析データにアクセスする。
次に、制御部14は、「Scenario No.」が“27”に対応するピクチャ、すなわち、「GOP No.0」のI2が復号されるように制御する。
次に、制御部14は、「Scenario No.」が“28”であるB1を、「GOP No.1」の復号されたP14と、「GOP No.0」の復号されたI2とを参照して復号させる。「Scenario No.」が“28”であるB1の復号が完了すると、制御部14は、直ちにB1を再生装置100の外部に出力させる。最後に、制御部14は、「Scenario No.」が“29”であるB0を、B1と同様にして復号させて再生装置100の外部に出力させる。
その後、図5及び図6の逆方向IPBの第1の再生制御シナリオの「GOP No.」が値“1”だけ増加され、上記と同様にして逆方向IPB再生が実行される。
図7は、M=4/N=12のピクチャ構成を有するGOPについて逆方向に全てのピクチャを再生する際の再生制御シナリオを示す図である。以下では、図7の再生制御シナリオを「逆方向IPBの第2の再生制御シナリオ」と記載する。図7の再生制御シナリオに基づくGOPの再生では、連続する3枚のBピクチャの中央のBピクチャが前後のBピクチャの参照ピクチャとなる。以下に、「M=4/N=12」のピクチャ構成を有するストリームの逆方向IPB再生を実行する手順を説明する。
先ず、制御部14は、「Scenario No.」が“0”から“2”であるピクチャ、すなわち、I2,P7,及びP11が順に復号されるように制御する。制御部14は、P11の復号が完了すると、直ちにP11を再生装置100の外部に出力させる。
次に、制御部14は、「Scenario No.」が“3”であるB9を、P7とP11とを参照して復号させる。参照されないBピクチャは、復号が完了するとすぐに再生装置100の外部に出力されるが、B9は、参照されるBピクチャである。そのため、B9は、復号が完了しても、すぐに再生装置100の外部に出力させてはならない。図7の逆方向IPBの第2の再生制御シナリオでは、B9を参照ピクチャとしてバッファにより保持させるために、「B−Buf Keep」の「Scenario No.3」に対応するフィールドに“3”が記載されている。これにより、管理部17は、復号されたB9を保持している復号画像バッファ16を開放させず、B9の保持を継続させる。すなわち、管理部17は、復号されたB9を保持している復号画像バッファ16を「参照中」に設定する。
次に、制御部14は、「Scenario No.」が“4”であるB10を、B9とP11とを参照して復号させる。制御部14は、B10の復号が完了すると、直ちにB10を再生装置100の外部に出力させ、それに続いてB9を再生装置100の外部に出力させる。復号されたB9はB8の参照ピクチャとなるので、復号されたB9は、復号画像バッファ16により保持される。
次に、制御部14は、「Scenario No.」が“5”であるB8を、P7とB9とを参照して復号させる。制御部14は、B8の復号が完了すると、直ちにB8を再生装置100の外部に出力させ、それに続いてP7を再生装置100の外部に出力させる。これ以降はB9は参照されないので、管理部17は、復号されたB9を保持している復号画像バッファ16を開放させる。すなわち、管理部17は、復号されたB9を保持している復号画像バッファ16を「未使用」に設定する。実際には、管理部17は、B8の再生装置100の外部への出力が完了した後に、B9を保持しているバッファを開放させる。
以降、上述したような手順により、「Scenario No.」の順に各ピクチャの復号が行われ、「Output Number」の順に各ピクチャの再生装置100の外部への出力が行われる。その際、「B−Buf Keep」の指示により、復号されたB5及びB1を保持する復号画像バッファ16の開放は、2ステップの期間に渡って抑制される。
図3から図7を用いて、再生制御シナリオと、再生制御シナリオに従う各ピクチャの復号及び出力とを説明した。次に、再生制御シナリオに基づく各ピクチャの復号及び出力の手順を図8を用いて説明する。図8は、動画像を再生する手順を示すフローチャートである。
ユーザが、再生装置100が搭載されているカムコーダの操作ボタン(入力部1の一例)を操作し、再生対象のストリームを特定する情報と、再生方法を特定する情報とを再生装置100に入力すると、受付部2は、入力された再生対象のストリームを特定する情報と再生方法を特定する情報とを受け付ける(S301)。そうすると、指示部3は、ストリーム取得部4へストリームを取得するための準備を行うように指示する。
要求部5は、ストリームバッファ6の空き容量を監視し(S302)、ストリームバッファ6に所定の量の空き容量がなければ(S302でNo)、ストリームバッファ6の空き容量を監視する動作を継続する。他方、ストリームバッファ6に所定の量の空き容量があれば(S302でYes)、要求部5は、ストリーム取得部4に対して、サイズを指定して、再生対象のストリームを構成するデータを自身に出力するように要求する(S303)。ストリーム取得部4は、要求部5からの要求に従って、再生対象のストリームを構成するデータを蓄積媒体101から取得して要求部5に出力する(S304)。要求部5は、ストリーム取得部4からのデータをストリームバッファ6に格納する(S305)。
ストリームバッファ6にデータが蓄積され始めると、分離部8は、ストリームバッファ6によって蓄積されたデータを、画像ESデータと音ESデータとに分離し(S306)、画像ESデータを画像ESバッファ9に格納し、音ESデータを音ESバッファ10に格納する。
構造解析部11は、1GOPを構成する画像ESデータが画像ESバッファ9に蓄積されたかどうかを確認する(S307)。1GOPを構成する画像ESデータが画像ESバッファ9に蓄積されていなければ(S307でNo)、構造解析部11は、1GOPを構成する画像ESデータが画像ESバッファ9に蓄積されたかどうかを確認する動作を継続する。他方、1GOPを構成する画像ESデータが画像ESバッファ9に蓄積されたことを確認した場合(S307でYes)、構造解析部11は、そのGOPに含まれる各ピクチャの構造を解析し、ピクチャ構造解析データを生成して保持する(S308)。
選択部13は、解析によって特定されたピクチャ構成と、受付部2が受け付けた情報によって特定される再生方法とに対応する再生制御シナリオを、シナリオデータベース12から取得し、制御部14に供給する(S309)。
管理部17は、復号されるピクチャを保持する復号画像バッファ16を確保し(S310)、画像復号部15は、選択部13によって取得された再生制御シナリオに従って、そのGOPを構成する各ピクチャを復号する(S311)。画像出力部19は、取得された再生制御シナリオに従って、復号された各ピクチャを再生装置100の外部に出力する(S312)。管理部17は、出力が完了して参照されないピクチャを保持している復号画像バッファ16があれば、それを開放する(S313)。
制御部14は、再生されたピクチャを含むGOPに再生すべきピクチャがまだ存在しているか否かを判断する(S314)。再生すべきピクチャが存在していると判断された場合(S314でYes)、再生されたピクチャの次に再生されるべきピクチャについて、処理はステップS310に戻る。
他方、制御部14は、再生すべきピクチャは存在していないと判断した場合、すなわち、1GOPの再生が完了した場合(S314でNo)、再生すべきピクチャを含むGOPがまだ存在しているか否かを判断する(S315)。再生すべきピクチャを含むGOPが存在していると判断された場合(S315でYes)、次に再生されるべきGOPについて、処理はステップS307に戻る。それに対して、再生すべきピクチャを含むGOPは存在していないと判断された場合(S315でNo)、再生処理は終了する。このようにして、ストリームの再生が実行される。
次に、管理部17が行う復号画像バッファ16の開放の手順を説明する。管理部17は、ピクチャが復号される場合、復号の直前に、複数の復号画像バッファ16のなかに未使用のものがあるか否かを調べ、未使用の復号画像バッファ16があれば、そのうちの1個を画像復号部15によって復号される画像の出力先のバッファとして確保する。再生装置100がカムコーダ等のモバイル機器に搭載される場合、再生装置100は、5個から8個の復号画像バッファ16しか保有することができないので、使用済みのピクチャを保持しているバッファをできるだけ速やかに再利用することができる状態にする必要がある。つまり、使用済みのピクチャを保持しているバッファを、できるだけ速やかに開放する必要がある。以下に、管理部17が行う復号画像バッファ16の開放の手順を図9を用いて説明する。図9は、バッファを開放する手順を示すフローチャートである。
管理部17は、各ピクチャの復号又は出力等のイベントが完了したことを示す情報を受け取ったか否かを判断する(S401)。つまり、管理部17は、画像復号部15によるピクチャの復号が完了したことを示す情報、又は、画像出力部19による復号されたピクチャの再生装置100の外部への出力が完了したことを示す情報を受け取ったか否かを判断する(S401)。なお、画像復号部15は、ピクチャの復号を完了するとその旨を示す情報を管理部17に出力し、画像出力部19は、ピクチャの出力を完了するとその旨を示す情報を管理部17に出力する。管理部17は、イベントが完了したことを示す情報を受け取っていない場合(S401でNo)、バッファの開放に関する処理を終了する。
管理部17は、イベントが完了したことを示す情報を受け取った場合(S401でYes)、複数の復号画像バッファ16それぞれについて、順に使用中であるか否かを調べる(S402)。管理部17は、調べたバッファが使用中であると判断した場合(S402でYes)、そのバッファに保持されているピクチャが出力中であるかどうかを判断する(S403)。使用中のバッファに保持されているピクチャが出力中であると判断した場合(S403でYes)、管理部17は、そのバッファを開放することはできないと判断し、そのバッファの次のバッファが使用中であるか否か調べる(S402)。管理部17は、全ての復号画像バッファ16が使用されていないと判断した場合(S402でNo)、バッファの開放に関する処理を終了する。
他方、ステップS403において使用中のバッファに保持されているピクチャが出力中ではないと判断した場合(S403でNo)、管理部17は、そのバッファに保持されているピクチャのタイプを調べる(S404)。保持されているピクチャがBピクチャであれば(S404でNo)、管理部17は、再生制御シナリオの現在のステップのフィールドに「B−Buf Keep」の記載が存在するかどうかを判断する(S405)。「B−Buf Keep」の記載が存在する場合(S405でYes)、管理部17は、そのバッファを開放しないでそのままの状態を継続させ、処理はステップS402に移行する。それに対して、「B−Buf Keep」の記載が存在しない場合(S405でNo)、管理部17は、そのバッファを開放し(S406)、処理はステップS402に移行する。
保持されているピクチャがIピクチャ又はPピクチャであれば(S404でYes)、管理部17は、再生制御シナリオの現在のステップに「DEC Buf Release」の記載が存在するかどうかを判断する(S407)。「DEC Buf Release」の記載が存在する場合(S407でYes)、つまり、バッファを開放することを指示されている場合(S407でYes)、管理部17は、そのバッファを開放し(S406)、処理はステップS402に移行する。
「DEC Buf Release」の記載が存在しない場合(S407でNo)、管理部17は、そのバッファに保持されているピクチャが、参照ピクチャとなる最新の2枚のピクチャ(Iピクチャ又はPピクチャ)のいずれかであるか否かを判断する(S408)。保持されているピクチャが参照ピクチャとならないと判断した場合(S408でNo)、管理部17は、そのバッファを開放し(S406)、処理はステップS402に移行する。
他方、保持されているピクチャが参照ピクチャとなると判断した場合(S408でYes)、管理部17は、そのバッファを開放しないでそのままの状態を継続し、処理はステップS402に移行する。MPEG2ビデオ規格又はH.264規格では、Bピクチャは最新の2枚のIピクチャ又はPピクチャを参照することにより復号される。そのため、管理部17は、参照ピクチャとなる最新の2枚のピクチャが常に保持されるようにバッファを管理する。
最後に、再生制御シナリオを選択する手順を図10から図12を用いて説明する。図10は、再生制御シナリオを選択する手順の第1部を示すフローチャートであり、図11は、その手順の第2部を示すフローチャートであり、図12は、その手順の第3部(最終部)を示すフローチャートである。
選択部13は、1GOPのピクチャの構造が構造解析部11によって解析されると、解析によって特定されるピクチャ構成が、「M=3/N=15」、「M=3/N=12」、及び、「M=2/N=14」のいずれであるのかを判断する。具体的には、図10に示すように、選択部13は、ピクチャ構成が「M=3/N=15」であるか否かを判断する(S501)。「M」は、直近の参照ピクチャ相互の距離をピクチャの枚数で示す値であり、参照ピクチャは、Iピクチャ又はPピクチャである。「N」は1GOPを構成するピクチャの総数を示す値である。
選択部13は、ピクチャ構成が「M=3/N=15」であると判断すると(S501でYes)、次に、受付部2が受け付けた情報によって特定される再生方法を調べる。先ず、選択部13は、再生方法が順方向の通常再生である「IPB順方向再生」であるか否かを判断する(S502)。再生方法が「IPB順方向再生」であると判断すると(S502でYes)、選択部13は、「IPB順方向の再生制御シナリオ」を選択する(S510)。「M=3/N=15のIPB順方向の再生制御シナリオ」は、図3に示す再生制御シナリオである。
再生方法が「IPB順方向再生」ではないと判断すると(S502でNo)、選択部13は、再生方法が順方向の中速サーチの再生を実行する「IP順方向再生」であるか否かを判断する(S503)。再生方法が「IP順方向再生」であると判断すると(S503でYes)、選択部13は、「IP順方向の再生制御シナリオ」を選択する(S511)。「M=3/N=15のIP順方向の再生制御シナリオ」は、図4に示す再生制御シナリオである。
再生方法が「IP順方向再生」ではないと判断すると(S503でNo)、選択部13は、再生方法が順方向の高速サーチ又は逆方向の高速サーチの再生を実行する「Iピクチャだけの再生」であるか否かを判断する(S504)。再生方法が「Iピクチャだけの再生」であると判断すると(S504でYes)、選択部13は、「I−Onlyの再生制御シナリオ」を選択する(S512)。「I−Onlyの再生制御シナリオ」は、I2の復号及び出力を指示するだけのシナリオである。
再生方法が「Iピクチャだけの再生」ではないと判断すると(S504でNo)、選択部13は、再生方法が逆方向の通常再生である「IPB逆方向再生」であるか否かを判断する(S505)。再生方法が「IPB逆方向再生」であると判断すると(S505でYes)、選択部13は、「IPB逆方向の再生制御シナリオ」を選択する(S513)。「M=3/N=15のIPB逆方向の再生制御シナリオ」は、図5及び図6に示す再生制御シナリオである。
再生方法が「IPB逆方向再生」ではないと判断すると(S505でNo)、選択部13は、再生方法が中速の逆方向サーチの再生を実行する「IP逆方向再生」であるか否かを判断する(S506)。再生方法が「IP逆方向再生」であると判断すると(S506でYes)、選択部13は、「IP逆方向の再生制御シナリオ」を選択する(S514)。なお、「M=3/N=15のIP逆方向の再生制御シナリオ」は、図示されていない。
図10のステップS501において、ピクチャ構成が「M=3/N=15」ではないと判断すると(S501でNo)、図11に示すように、選択部13は、ピクチャ構成が「M=3/N=12」であるか否かを判断する(S521)。以降、上述したようにして、選択部13は、ピクチャ構成が「M=3/N=12」である再生対象のストリームについて、受付部2が受け付けた情報によって特定される再生方法を調べる(S522,S523,S524,S525,S526)。そして、選択部13は、受付部2が受け付けた情報によって特定される再生方法に対応する再生制御シナリオを選択する(S530,S531,S532,S533,S534)。
図11のステップS521において、ピクチャ構成が「M=3/N=12」ではないと判断すると(S521でNo)、図12に示すように、選択部13は、ピクチャ構成が「M=2/N=14」であるか否かを判断する(S541)。以降、上述したようにして、選択部13は、ピクチャ構成が「M=2/N=14」である再生対象のストリームについて、受付部2が受け付けた情報によって特定される再生方法を調べる(S542,S543,S544,S545,S546)。そして、選択部13は、受付部2が受け付けた情報によって特定される再生方法に対応する再生制御シナリオを選択する(S550,S551,S552,S553,S554)。
ステップS541において、ピクチャ構成が「M=2/N=14」ではないと判断すると(S541でNo)、選択部13は、解析によって特定されるピクチャ構成は未知の構成であると判断し、いずれの再生制御シナリオをも選択しない(S549)。そして、選択部13は、ユーザに対して、再生対象のストリームを再生することができない旨を通知する。
図10から図12のフローチャートは、ピクチャ構成が「M=3/N=15」、「M=3/N=12」、及び「M=2/N=14」である場合における、再生制御シナリオを選択する手順を示している。しかしながら、ピクチャ構成は、それらに限定されない。例えば、ピクチャ構成として、図7を用いて説明した「M=4/N=12」も存在する。したがって、シナリオデータベース12には、ピクチャ構成が「M=4/N=12」である場合の複数の再生方法それぞれについての再生制御シナリオが含まれていてもよい。複数の再生方法は、IPB順方向、IP順方向、I−Only、IPB逆方向、及び、IP逆方向の5種類の再生方法である。
このように、シナリオデータベース12には、多数のピクチャ構成それぞれと、複数の再生方法それぞれとの全ての組合わせによる再生制御シナリオが含まれていてもよい。これにより、ピクチャ構成と再生方法との組合わせがどのようなものであっても、選択部13は、その組合わせに対応する再生制御シナリオを選択して取得することが可能となる。
上述したように、実施の形態1の再生装置100は、複数のピクチャ構成それぞれと、複数の再生方法それぞれとの組合わせに対応する複数の再生制御シナリオを保持するシナリオデータベース12を有している。再生装置100は、シナリオデータベース12によって保持されている再生制御シナリオを用いるので、ストリームを再生する場合、その再生が通常再生であっても逆再生等の特殊再生であっても、ピクチャを復号する前にストリーム構成表を作成しない。また、特殊再生を実行する場合であっても、通常再生時のストリーム構成表から各ピクチャの復号の順序及び出力の順序を決定しない。
すなわち、実施の形態1の再生装置100は、小さい処理負荷でビデオストリームを再生することができる。また、再生装置100は、ストリーム構成表を作成しないし、特殊再生を実行する場合の各ピクチャの復号及び出力の順序を決定しないので、従来よりも規模が小さくなるという効果も得られる。更に、再生装置100の機能をプログラムを用いて実現する場合、そのプログラムの複雑度が従来より低くなるという効果も得られる。
なお、上述した実施の形態1では、再生装置100は、複数の再生制御シナリオを保持しているシナリオデータベース12を有する。再生装置100は、複数の再生制御シナリオをシナリオデータベース12により予め保持していてもよいが、複数の再生制御シナリオを再生装置100の外部から取得してシナリオデータベース12により保持してもよい。また、再生装置100は、再生制御シナリオを更新するための更新情報を再生装置100の外部から取得し、シナリオデータベース12により保持する再生制御シナリオを更新情報に従って更新してもよい。
すなわち、再生装置100は、図13に示すように、シナリオ取得部22と、更新情報取得部23と、更新部24とを有していてもよい。シナリオ取得部22、更新情報取得部23、及び、更新部24それぞれの機能は次の通りである。シナリオ取得部22は、複数の再生制御シナリオを再生装置100の外部から取得してシナリオデータベース12に格納して保持させる。更新情報取得部23は、再生制御シナリオを更新するための更新情報を再生装置100の外部から取得する。更新部24は、更新情報に従って、シナリオデータベース12によって保持されている再生制御シナリオを更新する。
再生装置100がシナリオ取得部22を有していれば、再生制御シナリオが再生装置100の外部で新たに生成された場合でも、再生装置100は、新たに生成された再生制御シナリオを取得することができ、多様な形態のストリームを再生することができる。また、再生装置100が更新情報取得部23及び更新部24を有していれば、シナリオデータベース12によって保持されている再生制御シナリオが再生装置100の外部で更新された場合でも、再生装置100は、最新の再生制御シナリオを使用してストリームを再生することができる。
また、シナリオデータベース12は、再生装置100に設けられていなくてもよい。その場合、選択部13は、構造解析部11によって解析されたピクチャ構成と、受付部2が受け付けた情報によって特定される再生方法とに対応する再生制御シナリオを、再生装置100の外部のシナリオデータベース12から取得する。
(実施の形態2)
次に、実施の形態2の再生装置200の構成を図14を用いて説明する。図14は、実施の形態2の再生装置200の構成図である。実施の形態2の再生装置200は、実施の形態1の再生装置100と同様に、画像及び音が符号化されたストリームを再生する装置である。図14に示すように、実施の形態2の再生装置200は、図1の実施の形態1の再生装置100が有する構成部と同様の構成部を有する。ただし、実施の形態2の再生装置200は、図1の実施の形態1の再生装置100が有する選択部13を有しておらず、その代わりに判断選択部30を有する。その点が、実施の形態2と実施の形態1との相違点である。以下では、実施の形態1との相違点を中心に説明する。
判断選択部30は、構造解析部11による解析によって特定されたピクチャ構成と、受付部2が受け付けた情報によって特定される再生方法とに対応する再生制御シナリオが、シナリオデータベース12によって保持されているか否かを判断する。判断選択部30は、その再生制御シナリオがシナリオデータベース12によって保持されていると判断した場合、実施の形態1の場合と同様に、その再生制御シナリオをシナリオデータベース12から取得して制御部14に供給する。それ以後の動作は、実施の形態1の動作と同じである。
他方、対応する再生制御シナリオがシナリオデータベース12によって保持されていないと判断した場合、判断選択部30は、以下に示すように動作する。すなわち、判断選択部30は、指定された再生方法と同じ再生方法に対応する複数の再生制御シナリオのなかで、構造解析部11による解析によって特定されたピクチャ構成に近似する再生制御シナリオをシナリオデータベース12から取得する。制御部14は、判断選択部30によって取得された再生制御シナリオの一部に従ってストリームを再生させる。
具体的には、判断選択部30は、指定された再生方法と同じ再生方法とに対応する複数の再生制御シナリオのなかで、解析によって特定されたピクチャ構成の「M」の値と同じ値を有するとともに、特定されたピクチャ構成の「N」の値よりも大きい「N」の値を有するピクチャ構成に対応する再生制御シナリオを、シナリオデータベース12から取得する。
例えば、解析されたピクチャ構成が「M=3/N=12」であり、指定された再生方法が「順方向のIPB再生」であって、それらの組合わせに対応する再生制御シナリオがシナリオデータベース12によって保持されていなければ、判断選択部30は、ピクチャ構成「M=3/N=15」と、再生方法「順方向のIPB再生」とに対応する、図15に示す再生制御シナリオをシナリオデータベース12から取得する。
図15に示す「M=3/N=15の順方向IPBの再生制御シナリオ」には、終了マーカが含まれている。例えば、「Scenario No.」が“11”であるフィールドには、「N=12」の終了マーカが割り当てられており、「Scenario No.」が“14”であるフィールドには、「N=15」の終了マーカが割り当てられている。終了マーカは、ピクチャ構成「M/N」の各「N」の値に対応して再生処理を終了させる「Scenario No.」を特定する情報である。
図15の例では、終了マーカは、解析により特定されたピクチャ構成の「N」の値が「12」であれば、再生処理を「Scenario No.」が「11」であるピクチャで終了させ、特定されたピクチャ構成の「N」の値が「15」であれば、再生処理を「Scenario No.」が「14」であるピクチャで終了させることを示す情報である。
判断選択部30は、取得した再生制御シナリオのうちの、「Scenario No.0」から、特定されたピクチャ構成の「N」の値の終了マーカが割り当てられている「Scenario No.」までの情報を制御部14に出力する。解析されたピクチャ構成が「M=3/N=12」であって、指定された再生方法が「順方向のIPB再生」であれば、判断選択部30は、図15に示す再生制御シナリオのうちの、「Scenario No.0」から「Scenario No.11」までの情報を制御部14に出力する。判断選択部30は、「Scenario No.12」から「Scenario No.14」までの情報は制御部14に出力しない。
同様にして、解析により特定されたピクチャ構成が「M=3/N=9」であって、指定された再生方法が「順方向のIPB再生」であれば、判断選択部30は、図15に示す再生制御シナリオのうちの、「Scenario No.0」から「Scenario No.8」までの情報を制御部14に出力し、「Scenario No.9」から「Scenario No.14」までの情報は制御部14に出力しない。
制御部14は、判断選択部30から供給された情報に従って、実施の形態1において説明したようにして各ピクチャの復号及び出力を制御する。すなわち、解析されたピクチャ構成が「M=3/N=12」であれば、制御部14は、図15に示す再生制御シナリオのうちの、「Scenario No.0」から「Scenario No.11」までの情報に従って、実施の形態1において説明したようにして各ピクチャの復号及び出力を制御する。これにより、ピクチャ構成「M=3/N=12」と、再生方法「順方向のIPB再生」とに対応する再生制御シナリオがシナリオデータベース12によって保持されていなくても、そのピクチャ構成のストリームをその再生方法により再生することができる。
次に、逆方向IPB再生を実行する場合を説明する。図16及び図17は、M=3/N=15のピクチャ構成を有するGOPについて逆方向に全てのピクチャを再生する際の再生制御シナリオを示す図である。図16は、その再生制御シナリオの前半部を示しており、図17は、その再生制御シナリオの後半部を示している。以下では、図16及び図17の再生制御シナリオを「逆方向IPBの再生制御シナリオ」と記載する。
図16及び図17には、開始マーカが含まれている。例えば、「Scenario No.」が“13”であるフィールドには、「N=9」の開始マーカが割り当てられており、「Scenario No.」が“18”であるフィールドには、「N=6」の開始マーカが割り当てられている。開始マーカは、ピクチャ構成「M/N」の各「N」の値に対応して再生処理を開始させる「Scenario No.」を特定する情報である。
図16の例では、開始マーカは、解析されたピクチャ構成の「N」の値が「9」であれば、再生処理を「Scenario No.13」であるピクチャから開始させることを示す情報である。図17の例では、開始マーカは、解析されたピクチャ構成の「N」の値が「6」であれば、再生処理を「Scenario No.」が「18」であるピクチャから開始させることを示す情報である。
判断選択部30は、取得した再生制御シナリオのうちの、解析されたピクチャ構成の「N」の値の開始マーカが割り当てられている「Scenario No.」以降の情報を制御部14に出力する。例えば、解析されたピクチャ構成の「N」の値が「9」であれば、判断選択部30は、図16に示す再生制御シナリオのうちの、開始マーカ「9」が割り当てられている「Scenario No.」が“13”以降の情報を制御部14に出力する。判断選択部30は、「Scenario No.0」から「Scenario No.12」までの情報は制御部14に出力しない。
同様にして、解析されたピクチャ構成の「N」の値が「6」であれば、判断選択部30は、図17に示す再生制御シナリオのうちの、「Scenario No.18」以降の情報を制御部14に出力し、「Scenario No.17」までの情報は制御部14に出力しない。
これにより、ピクチャ構成が「M=3/N=9」及び「M=3/N=6」であるストリームの逆方向IPB再生が実現する。
次に、逆方向IP再生を実行する場合を説明する。図18は、M=3/N=15のピクチャ構成を有するGOPについて逆方向にIピクチャ及びPピクチャを再生する際の再生制御シナリオを示す図である。以下では、図18の再生制御シナリオを「逆方向IPの再生制御シナリオ」と記載する。
図18には、開始マーカが含まれている。例えば、「Scenario No.」が“9”であるフィールドには、「N=9」の開始マーカが割り当てられている。開始マーカは、上述したように、ピクチャ構成「M/N」の各「N」の値に対応して再生処理を開始させる「Scenario No.」を特定する情報である。
判断選択部30は、取得した再生制御シナリオのうちの、解析されたピクチャ構成の「N」の値の開始マーカが割り当てられている「Scenario No.」以降の情報を制御部14に出力する。例えば、解析されたピクチャ構成の「N」の値が「9」であれば、判断選択部30は、図18に示す再生制御シナリオのうちの、開始マーカ「9」が割り当てられている「Scenario No.9」以降の情報を制御部14に出力する。判断選択部30は、「Scenario No.0」から「Scenario No.8」までの情報は制御部14に出力しない。
これにより、ピクチャ構成が「M=3/N=9」であるストリームの逆方向IP再生が実現する。
最後に、再生制御シナリオを選択する手順及び再生の手順の一例を図19及び図20を用いて説明する。図19は、再生制御シナリオを選択する手順等の前半部を示すフローチャートであり、図20は、その手順等の後半部を示すフローチャートである。
先ず、判断選択部30は、1GOPのピクチャの構造が構造解析部11によって解析されると、解析により特定されたピクチャ構成が、「M=3/N=6」、「M=3/N=9」、「M=3/N=12」、及び、「M=3/N=15」のいずれかであるか否かを判断する(S701)。判断選択部30は、特定されたピクチャ構成が、「M=3/N=6」、「M=3/N=9」、「M=3/N=12」、及び、「M=3/N=15」のいずれかであると判断した場合(S701でYes)、受付部2が受け付けた情報によって特定される再生方法を調べる。
具体的には、判断選択部30は、再生方法が順方向の通常再生である「IPB順方向再生」であるか否かを判断する(S702)。再生方法が「IPB順方向再生」であると判断すると(S702でYes)、判断選択部30は、「N」の値にかかわらず、「M=3/N=15のIPB順方向の再生制御シナリオ」を選択する(S710)。制御部14は、特定されたピクチャ構成の「N」の値に対応する終了マーカが割り当てられている「Scenario No.」までのピクチャの再生を実行させる(S720)。
再生方法が「IPB順方向再生」ではないと判断すると(S702でNo)、判断選択部30は、再生方法が「IP順方向再生」であるか否かを判断する(S703)。再生方法が「IP順方向再生」であると判断すると(S703でYes)、判断選択部30は、「M=3/N=15のIP順方向の再生制御シナリオ」を選択する(S711)。その後の処理はステップS720に移行する。
再生方法が「IP順方向再生」ではないと判断すると(S703でNo)、判断選択部30は、再生方法が「Iピクチャだけの再生」であるか否かを判断する(S704)。再生方法が「Iピクチャだけの再生」であると判断すると(S704でYes)、判断選択部30は、「M=3/N=15のI−Onlyの再生制御シナリオ」を選択する(S712)。
再生方法が「Iピクチャだけの再生」ではないと判断すると(S704でNo)、判断選択部30は、再生方法が「IPB逆方向再生」であるか否かを判断する(S705)。再生方法が「IPB逆方向再生」であると判断すると(S705でYes)、判断選択部30は、「M=3/N=15のIPB逆方向の再生制御シナリオ」を選択する(S713)。制御部14は、解析により特定されたピクチャ構成の「N」の値に対応する開始マーカが割り当てられている「Scenario No.」以降のピクチャの再生を実行させる(S721)。
再生方法が「IPB逆方向再生」ではないと判断すると(S705でNo)、判断選択部30は、再生方法が「IP逆方向再生」であるか否かを判断する(S706)。再生方法が「IP逆方向再生」であると判断すると(S706でYes)、判断選択部30は、「M=3/N=15のIP逆方向の再生制御シナリオ」を選択する(S714)。その後の処理はステップS721に移行する。
図19のステップS701において、ピクチャ構成が「M=3/N=6」、「M=3/N=9」、「M=3/N=12」、及び、「M=3/N=15」のいずれでもないと判断した場合(S701でNo)、図20に示すように、判断選択部30は、ピクチャ構成が「M=2/N=6」、「M=2/N=8」、「M=2/N=10」、「M=2/N=12」、及び、「M=2/N=14」のいずれかであるか否かを判断する(S731)。以降、上述したようにして、判断選択部30は、再生方法を調べる(S732,S733,S734,S735,S736)。そして、判断選択部30は、再生方法に対応する再生制御シナリオを選択する(S740,S741,S742,S743,S744)。
制御部14は、「M=2/N=14のIPB順方向の再生制御シナリオ」が選択された場合(S740)、解析により特定されたピクチャ構成の「N」の値に対応する終了マーカが割り当てられている「Scenario No.」までのピクチャの再生を実行させる(S750)。また、制御部14は、「M=2/N=14のIPB逆方向の再生制御シナリオ」が選択された場合(S743)、解析により特定されたピクチャ構成の「N」の値に対応する開始マーカが割り当てられている「Scenario No.」以降のピクチャの再生を実行させる(S751)。
図20のステップS731において、ピクチャ構成が「M=2/N=6」、「M=2/N=8」、「M=2/N=10」、「M=2/N=12」、及び、「M=2/N=14」のいずれでもないと判断すると(S731でNo)、判断選択部30は、解析されたピクチャ構成は未知の構成であると判断し、いずれの再生制御シナリオをも選択しない(S739)。そして、判断選択部30は、ユーザに対して、再生対象のストリームを再生することができない旨を通知する。
上述したように、実施の形態2の再生装置200では、判断選択部30は、構造解析部11による解析によって特定されたピクチャ構成に対応する再生制御シナリオがシナリオデータベース12によって保持されていない場合、指定された再生方法と同じ再生方法に対応する複数の再生制御シナリオのなかで、特定されたピクチャ構成に近似する再生制御シナリオをシナリオデータベース12から取得する。各再生制御シナリオには、複数のピクチャ構成それぞれを有するストリームを構成する各ピクチャの復号の順序と出力の順序とを示す情報が含まれている。制御部14は、その情報に従って、ストリームを再生させる。これにより、実施の形態2の再生装置200は、解析によって特定したピクチャ構成に対応する再生制御シナリオを保持していなくても、小さな処理負荷で再生対象のストリームを再生することができる。
なお、上述した実施の形態の再生装置100及び200の各構成部の機能は、例えばコンピュータのCPU(プロセッサ)及びメモリ等のハードウェアと、その機能を実現するためのコンピュータプログラムとが協働することによって実現される。しかしながら、上記各機能は、専用の回路により実現される等、どのような形態により実現されてもよい。また、再生装置100及び200の各構成部の機能を実現するためのコンピュータプログラムは、記録媒体に格納されてもよい。