[第1の実施形態]
以下、本発明の第1の実施形態について、図1から図15、図23を用いて説明する。図1は、本実施形態による復号装置であるデジタルTV1000の構成を示した概略ブロック図である。チューナ600はデジタルTVチューナであり、アンテナにて受信した放送波を復調処理して、オーディオ、ビデオ、セクションその他の情報が格納されたストリームを取り出して、ストリーム処理部100へ送る。ストリーム処理部100は、入力されたストリームをビデオストリーム、オーディオストリーム、セクション等に分類し、それぞれメモリ400へと書き込む。ビデオデコーダ130は、前記ビデオストリームをメモリ400から読み出し、復号処理を行って、その復号処理の結果であるピクチャデータをメモリ400へと書き込む。ビデオデコーダ130は、PピクチャやBピクチャの復号処理中に、前記「動き補償」処理のために、復号処理済みのピクチャデータの参照が必要となるため、メモリ400から前記復号処理済みのピクチャデータの読み出しを随時行う。オーディオデコーダ170は、前記オーディオストリームをメモリ400から読み出し、復号処理を行って、その復号処理の結果であるオーディオデータを音声出力装置700へと出力する。音声出力装置700は、入力されたオーディオデータに従い、スピーカなどにより音声、楽音などを出力する。
CPU310は、前記セクションをメモリ400から読み出し、データ放送や番組情報の復号を行い、復号結果の画像データをメモリ400へと書き込む。また、制御部300は、ビデオデコーダ130の復号速度比(後述)および復号開始時刻、ビデオデコーダ130による復号結果の表示開始時刻、オーディオデコーダ170の出力開始時刻を求め、各々、ビデオデコーダ130、表示処理部500、オーディオデコーダ170に供給する。表示処理部500は、前記ビデオデコーダ130がメモリ400に書き込んだピクチャデータを読み出し、画質調整処理等を行ったり、CPU310がメモリ400に書き込んだ画像データにスケール調整等を行ったりし、さらには、前述のピクチャデータと画像データとの重ね合わせ処理等を行って生成した画像データを、表示装置800へと出力する。表示装置800は、入力された画像データに従い画像を表示する。なお、ビデオデコーダ130、オーディオデコーダ170、表示処理部500の動作タイミングは、同期情報としてストリーム中に含まれる時間パラメータ(後述する)に基づき、制御が行われる。バス900は、ストリーム処理部100、CPU310、制御部300、メモリ400、ビデオデコーダ130、オーディオデコーダ170、表示処理部500の間のデータの受け渡しを仲介するバスである。
図2は、図1のデジタルTV1000から復号処理に関連した構成を抜き出し、復号処理手順に準じた配置を示した概略ブロック図である。なお、図2においては、ストリーム処理部100、メモリ400、制御部300、ビデオデコーダ(復号手段)130、オーディオデコーダ(第2の復号手段)170、表示処理部500、CPU310の間を接続するバス900は図示を省略する。実装において、コストや設計上の制約の観点から、図1のように制御部300やメモリ400を各種の機能が共有する形態を採ることは、本発明の如き装置ではしばしば行われることである。また、CPU310も、本実施形態の説明に必要がないため、図示を省略する。
図2に示した装置を図1に適用する場合、メモリ400は、ビデオストリームバッファ110、ビデオ位相調整バッファ120、フレームバッファ140、オーディオストリームバッファ150、オーディオ位相調整バッファ160を含む。制御部300は、オーディオタイミング検出部180、タイミング制御部190、復号制御部(復号制御手段)200、フレーム周期検出部210、ストラクチャ検出部220、を含む。
以下、図2を参照して、入力された多重化ストリーム(MPEG2−TS(Transport Stream))を処理する手順を説明する。ストリーム処理部100は、前記入力されたMPEG2−TSからビデオES(Elementally Stream:エレメンタリストリーム)、オーディオES、TSヘッダ、ビデオESを格納したPES(Packetized Elementary Stream:パケット化エレメンタリストリーム)パケットのヘッダ部分(以下ビデオPESヘッダと表記する)、オーディオESを格納したPESパケットのヘッダ部分(以下オーディオPESヘッダと表記する)を抽出し、それぞれ、ビデオESをビデオストリームバッファ110、フレーム周期検出部210、ストラクチャ検出部220へ、オーディオESをオーディオストリームバッファ150へ、TSヘッダをタイミング制御部190へ、ビデオPESヘッダを復号制御部200へ、オーディオPESヘッダをオーディオタイミング検出部180へと分配する。
ここで、前記ストリーム処理部100が各ブロックへと送るデータの内容について簡単に説明する。MPEG2−TSの構造を、図3に示す。MPEG2−TSは、ビデオストリーム、オーディオストリーム、データ放送、制御情報等の様々な要素を構成要素とすることができるが、図3は、本発明に関係する要素である、ビデオストリームとオーディオストリームのみを含むMPEG2−TSを例示している。
図3において、TSパケットVT300、T310、T330は、ビデオストリームを運ぶためのTSパケットであり、TSパケットAT320、T340はオーディオストリームを運ぶためのTSパケットである。図3に例示するMPEG2−TSは、これらのTSパケットによって構成されている。TSパケットは固定長パケットであり、188バイトの長さを持つ。各TSパケットは、TSヘッダT350、T370、T390、T410とTSペイロードT360、T380、T400、T420に分割することができる。これらのTSヘッダT350、T370、T390、T410が、前記した、ストリーム処理部100がタイミング制御部190へと送るものである。TSパケットVT300、T310、T330とTSパケットAT320、T340は、前記TSヘッダ内のパラメータによりビデオストリームを運ぶためのTSパケットであるかオーディオストリームを運ぶためのTSパケットであるかを判別することが可能である。前記TSペイロードには、ビデオストリームやオーディオストリームをPESパケット化したものが分割され、格納されている。即ち、TSパケットVT310、T330のTSペイロードT360、T380には、ビデオPESパケットを分割したものが、TSパケットAT320、T340のTSペイロードT400、T420には、オーディオPESパケットを分割したものが格納されている。
PESパケットは、ビデオやオーディオの符号化されたデータである要素ストリームESをパケット化したものであり、ビデオPESパケットは、ビデオPESヘッダ(T430またはT450)とビデオES(T440またはT460)とから、オーディオPESパケットは、オーディオPESヘッダ(T470またはT490)とオーディオES(T480またはT500)とから構成される。前記ビデオPESヘッダT430、T450が、ストリーム処理部100が復号制御部200に送るものである。また、前記ビデオEST440、T460が、ストリーム処理部100がビデオストリームバッファ110、フレーム周期検出部210、ストラクチャ検出部220へと送るものである。また、前記オーディオPESヘッダT470、T490が、ストリーム処理部100が、オーディオタイミング検出部180へと送るものである。また、前記オーディオEST480、T500が、ストリーム処理部100がオーディオストリームバッファ150へと送るものである。
ここで、図2による多重化ストリームの処理手順の説明に戻る。ビデオストリームバッファ110は、動画像符号化の規格によってその容量を定められたバッファである。ビデオESを蓄積し、その入力と出力の速度の違いを吸収する役目を持つ。また、オーディオストリームバッファ150は、同様に、オーディオESを蓄積し、その入力と出力の速度の違いを吸収するためのバッファである。
ビデオストリームバッファ110に入力されたビデオESは、ビデオ位相調整バッファ120に空きがある限り、順次ビデオ位相調整バッファ120に移動させられる。図2では、利用目的の違いを明確にするために、ビデオストリームバッファ110とビデオ位相調整バッファ120を個別に設けているが、両者を一つのバッファにまとめた構成としてもよい。オーディオストリームバッファ150とオーディオ位相調整バッファ160の関係も、前記ビデオストリームバッファ110とビデオ位相調整バッファ120の関係と同様である。オーディオストリームバッファ150に入力されたオーディオESは、オーディオ位相調整バッファ160に空きがある限り、順次オーディオ位相調整バッファ160へと移動させられる。従って、同様に、オーディオストリームバッファ150とオーディオ位相調整バッファ160を一つのバッファにまとめた構成としてもよい。
フレーム周期検出部210は、入力されたビデオESから、動画のフレーム周期Tの演算を行う。演算のための処理手順は動画像符号化アルゴリズムにより異なるが、基本的にはビデオES中に含まれるフレームレートに関連するパラメータを抜き出して、これからフレーム周期を算出する。一例として、動画像符号化アルゴリズムにMPEG2が用いられている場合を以下に示す。MPEG2のビデオESの構成は、図4のように6層構造となっている。最上層がシーケンス層、第2層がGOP(Group Of Picture:グループオブピクチャ)層、第3層がピクチャ層、第4層がスライス層、第5層がマクロブロック層、第6層がブロック層である。
シーケンス層は、1つ以上のGOPを管理するための層であり、シーケンスヘッダと、1以上のGOPと、1つのシーケンスの終了を示すシーケンス終了コードとからなる。GOP層は、シーケンスへのランダムアクセスのための層であり、GOPヘッダとそれに続くIピクチャ(I)、Bピクチャ(B)、Pピクチャ(P)とからなる。GOP層は存在しないこともある。ピクチャ層は、符号化の基本単位であるピクチャを構成する層であり、ピクチャヘッダとそれに続くスライスとからなる。スライス層は、エラー発生時の再同期単位のための層であり、スライスヘッダとそれに続くマクロブロックとからなる。マクロブロック層は、動き補償の単位を構成する層であり、マクロブロックヘッダとそれに続くブロックとからなる。ブロック層は、DCT処理等の符号化処理の基本単位を構成する層であり、ブロックヘッダとそれに続くデータとからなる。
前記ビデオESの最上層、シーケンス層のシーケンスヘッダには、frame_rate_code、frame_rate_extension_n(以下、FREn)、frame_rate_extension_d(以下、FREd)というパラメータが含まれており、これらからフレームレートFを求めることが可能である。具体的には、frame_rate_codeを図5に示したframe_rate_codeの各値とframe_rate_value(以下、FRV)との対応関係を格納した表を用いて変換することにより、FRVが求まり、これを式(1)に代入することにより、フレームレートFが求まる。
なお、対象とするMPEG2プロファイルにおいて、frame_rate_extension_n及びframe_rate_extension_dは0と規定されている場合や、復号しようとするビデオESにframe_rate_extension_nやframe_rate_extension_dが含まれていない場合には、以下の式(1)’を用いる。
フレーム周期検出部210は、以上のように式(1)あるいは式(1)’を用いて求めたフレームレートFの逆数を取り、フレーム周期Tを求め、前記フレーム周期Tを復号制御部200に送る。
ストラクチャ検出部220は、入力されたビデオESから、ピクチャ構造を表すストラクチャ種別Sを検出する。具体的な検出方法は動画像符号化アルゴリズムによって異なるが、前記フレーム周期Tの場合と同様に、動画像符号化アルゴリズムとしてMPEG2が用いられている場合を以下に示す。前記ビデオESの第3層、ピクチャ層のピクチャヘッダには、picture_structureというパラメータが含まれており、この値によって、ストラクチャ種別S(フレームストラクチャかフィールドストラクチャか)の判定が可能である。ストラクチャ検出部220は、前記判定結果であるストラクチャ種別Sを復号制御部200に送る。この時、ストラクチャ検出部220は、復号制御部200に対し、ストラクチャ種別Sの判定結果が確定したことを示す信号も出力する。ここで、フレームストラクチャとは、1フレームの画像が、プログレッシブ走査による1枚のピクチャ1枚で構成されるフレーム構造を言い、フィールドストラクチャとは、1フレームの画像が、インターレース走査による奇数ラインのみで構成されるピクチャ(奇数フィールド)と偶数ラインのみで構成されるピクチャ(偶数フィールド)の2枚のピクチャで構成されるフレーム構造を言う。
復号制御部200は、前記ビデオES中のピクチャ(符号化単位)のピクチャタイプ(符号化種別:IピクチャまたはPピクチャまたはBピクチャ)の並び方(符号化種別構成)を検出する。復号制御部200はまた、前記符号化種別構成(ピクチャタイプの並び方)とピクチャタイプ毎に固有の最大メモリアクセス量によって、各ピクチャを復号する際の単位時間当たりメモリアクセス量が、時間方向に平準化されるように各ピクチャの復号開始時刻と復号速度比(1ピクチャの表示時間を1ピクチャの復号時間で割った値、即ち、この値の逆数を1ピクチャの表示時間をかけると1ピクチャの復号時間が求まる)を算出する。ここでは、MPEG2−TSにおいて、表示及び復号の時間情報として、PTS(Presentation Time Stamp、提示時刻情報)とDTS(Decoding Time Stamp、復号時刻情報)が用いられている場合の復号制御部200による処理方法を以下に示す。
復号制御部200は、ストリーム処理部100から与えられるビデオPESヘッダに含まれる提示時刻情報PTS及び復号時刻情報DTS、フレーム周期検出部210から与えられるフレーム周期T、及び、ストラクチャ検出部220から与えられるストラクチャ種別Sを用いて、符号化種別構成を検出し、該符号化種別構成に基づき、各ピクチャについて、ビデオデコーダ130の復号開始時刻Tds及び復号速度比Tdrを算出する。以下、その詳細な動作について、図6のフローチャートを用いて説明する。
まず、ステップS100で、復号制御部200は、パラメータn及びパラメータfを0にセットする。パラメータnは、処理を完了したフレーム数をカウントする変数であり、パラメータfは、本実施形態における動画像復号処理時のメモリに対するアクセスで使用する帯域(すなわち、単位時間当たりのメモリアクセス量)を平準化する手法を用いるかどうか、つまり、ピクチャタイプにより差異の発生する、メモリアクセスに使用する帯域の平準化処理を行うかどうかを示す変数である。パラメータf=0は前記帯域の平準化処理を行わないことを、パラメータf=1は前記帯域の平準化処理を行うことを示す。また、パラメータnは1フィールドを0.5フレームとしてカウントする。
続いて、ステップS120では、復号制御部200が、ストリーム処理部100から与えられたビデオPESヘッダP600(図7に構成を示す)から、PTS・DTSフラグP645を抽出し、提示時刻情報PTS、復号時刻情報DTSの有無を検出し、その検出結果が、提示時刻情報PTSのみ「有り」であった場合は、提示時刻情報PTSP661を、提示時刻情報PTS、復号時刻情報DTS共に「有り」であった場合には、提示時刻情報PTSP661と復号時刻情報DTSP662とを抽出する。以下、図6のフローチャートの説明においては、特に断りがない限り、提示時刻情報PTS、復号時刻情報DTSは、前記ステップS120で抽出した提示時刻情報PTSP661、復号時刻情報DTSP662を表すものとする。
次のステップS130では、復号制御部200が、ストラクチャ検出部220から、ストラクチャ種別S及びストラクチャ種別の判定結果が確定したことを示す信号が送られてくるのを待つ。前記信号が送られてきたら、ステップS140へと進む。ステップS140では、復号制御部200は、前記ステップS120における復号時刻情報DTS有無の検出結果によって分岐処理を行う。復号時刻情報DTSが有った場合は、ステップS150へと進み、復号時刻情報DTSが無かった場合にはS230へと進む。ステップS150では、ピクチャ構成検出部200は、前記抽出した提示時刻情報PTS、復号時刻情報DTS及びフレーム周期検出部210から送られてきたフレーム周期Tを用い、以下の式(2)により、デコードしたピクチャを何フレーム後に表示するかを示す値Mを算出し、ステップS160へと進む。
提示時刻情報PTSと復号時刻情報DTSは式(2)の演算結果が整数となるような値であるとは限らないため、そのような場合、値Mは、右辺の演算結果に最も近い整数を取るものとする。また、ストラクチャ種別Sがフィールドストラクチャである場合は、n≠0でステップS150の処理が行われることがあるが、その場合は、Mは以前の値(n=0の時に算出した値を)をそのまま保持するようにしても良い。
この値Mの説明のために、まず、図8に、復号処理による遅延時間が0の、即ち、復号処理と同時に表示を行うことが可能である理想的なビデオデコーダにビデオESが入力された時の、前記ビデオデコーダにより復号処理が行われる期間と復号結果が表示される期間を示す。なお、この図8では、提示時刻情報PTSと復号時刻情報DTSにより復号処理及び表示処理のタイミングが制御されていることを前提としている。上段のT700〜T725は、各々、前記ビデオデコーダが入力されたビデオESを1ピクチャ分復号処理する期間を示している。但し、T700〜T725の示す期間は、復号処理に使用可能な期間であるということを示しているのであり、その期間全てを復号処理に使用しなければならないということではない。この復号処理期間T700〜T725中の符号(I1、B2、B3、P4、B5、B6)は、アルファベットが復号処理中のピクチャ種別を示し、数字がその入力順を示す。
また、下段のT730〜T755は前記入力されたビデオESの復号結果の表示期間を示しており、中の符号(B2、B3、I1、B5、B6、P4)は、上段のT700〜T725内の符号と対応している。図の最下部に記されている符号DTS1、DTS4およびPTS1〜PTS6は、数字部分の一致するピクチャに付けられている提示時刻情報PTS、復号時刻情報DTSの値を表している。例えば、DTS1は、ピクチャI1の復号時刻情報DTSを、PTS2は、ピクチャB2の提示時刻情報PTSを表す。
従って、この図8から、前記値Mは、あるP(またはI)ピクチャの復号処理開始から(例えばDTS1)、表示開始まで(例えばPTS1)の時間をフレーム数で示していると同時に、あるP(またはI)ピクチャ(I1)から次のP(またはI)ピクチャ(P4)までのフレーム数を示しているとも言える。また、そのように考えると、値M−1はあるP(またはI)ピクチャから次のP(またはI)ピクチャまでの間のBピクチャのフレーム数を示していると言える。
なお、図8は、ストラクチャ種別がフレームストラクチャの場合の処理タイミング図である。ストラクチャ種別がフィールドストラクチャの場合の処理タイミング図を考えると、図23のようになる。この図23から、フィールドストラクチャの場合は、前記値Mは、ある奇数フィールドのP(またはI)ピクチャ(I1)から次の奇数フィールドのP(またはI)ピクチャ(P7)までのフレーム数を示すことになるが、これをフレームを単位として考えると、値Mは、IまたはPピクチャを構成要素とするフレームから次のIまたはPピクチャを構成要素とするフレームまでのフレーム数を示していることになり、フレームストラクチャの場合と同様に考えることが可能であることがわかる。また、値M−1も、フレームストラクチャの場合と同様に、あるP(またはI)ピクチャから次のP(またはI)ピクチャまでの間のBピクチャのフレーム数を示していると言える。
そこで、式(2)で求めた値Mを、本実施形態におけるピクチャの構成(符号化種別構成)を示す値とし、以降、P−P間フレーム数と呼ぶこととする。
図6のフローチャートの説明に戻る。ステップS160では、復号制御部200は、ステップS150で算出したP−P間フレーム数Mを、予め設定された所定の閾値Mmaxと比較し、M≦Mmaxであった場合には、ステップS170へ、M>Mmaxであった場合には、ステップS260へ進む。ここでは、前記使用帯域の平準化処理を行うか否かの判定を行っている。前記P−P間フレーム数Mの値が大きくなると、P(またはI)ピクチャとP(またはI)ピクチャの間のBピクチャ数が多くなるため、使用する帯域の最大値を下げる効果は低くなるのに対して、必要なバッファの量が増加する(詳細後述)というデメリットがあるため、前記使用帯域の平準化処理を行うか否かをMmaxという閾値により判定する。従って、このステップS160は省略し(その場合、ステップS260も不要となる)、常にステップS170へ進むとしてもよい。
ステップS170では、復号制御部200は、前記使用帯域の平準化処理を行う場合のP(またはI)ピクチャの復号開始時刻Tdsと復号速度比Tdrを算出する。それには、以下の式(3)、(4)を用いる。また、前記使用帯域の平準化を行うか否かを示す変数fに、平準化を行うことを表す「1」を設定する。
以下、式(3)、(4)の導出方法について説明する。本発明の目的は、動画像復号処理における、メモリ帯域使用量の最大値を抑えることにある。既に述べたように、MPEG2等の一般的な動画像符号化方式を用いた場合、動画を構成する静止画(=ピクチャ)は、符号化のアルゴリズムによって、Iピクチャ、Pピクチャ、Bピクチャの3種類のピクチャに大別される。前記各ピクチャは、復号処理の際に参照するピクチャの枚数が異なり、Iピクチャは0枚、Pピクチャは最大1枚、Bピクチャは最大2枚のピクチャを参照する。加えて、一般的に、復号後のピクチャはそのデータ量の多さ故に、サイズの小さいローカルなメモリに置くことができず、システムが共有する大容量の共有メモリ(本実施形態では、メモリ400)上に置かれることになる。
従って、復号処理時に使用されるシステムの共有メモリの帯域は、復号処理中のピクチャの種類によって異なることになり、Iピクチャ復号処理に使用する最大帯域(ピクチャ1枚を復号するのに発生するメモリアクセス量をそのピクチャ1枚を表示するのにかかる時間で割った値とする)(以下BWiと呼ぶ)と、Pピクチャ復号処理に使用する最大帯域(以下BWpと呼ぶ)と、Bピクチャ復号処理に使用する最大帯域(以下BWbと呼ぶ)との関係は、BWb>BWp>BWiとなる。従って、各ピクチャの復号処理時間の長さが同じとしている限り、使用する帯域はピクチャタイプによって差異が生じ、Bピクチャの場合に最大の使用帯域幅BWbとなるが、本発明では、各ピクチャの復号処理時間を各ピクチャの最大帯域の値(BWi、BWp、BWb)に応じて変えることで復号処理時の使用帯域を平準化して、復号処理全体での使用する帯域の最大値を小さくする。以下、復号制御部200で行われる、使用帯域を平準化するための復号処理時間の算出方法について説明する。
さて、P−P間フレーム数Mは、前記ステップS150で復号制御部200により得られたので、これを用いれば、1フレーム分のP(またはI)ピクチャとM−1フレーム分のBピクチャから構成されるMフレーム分のピクチャを復号するときの使用帯域の合計BWtotalは、以下の(5)式で表される。但し、本実施形態による方法では、Mフレーム分のピクチャに含まれる非BピクチャがIピクチャであるか、Pピクチャであるかは判別できないため、非Bピクチャのピクチャ種別は、常にIピクチャよりは使用帯域の多いPピクチャとして扱うものとする。
前記Mフレーム分のピクチャの復号処理において、Mフレーム周期分の時間でMフレーム分のピクチャの復号を完了することを条件として、使用帯域を平準化すると、平準化した使用帯域BWaveは、式(6)のようになる。
ここで、PピクチャとBピクチャの復号における最大使用帯域が、図9に示されるような比率であると仮定する。即ち、Pピクチャでは、復号結果のメモリへの書き込みと参照画像1面のメモリからの読み出しで計2ピクチャ分の帯域を使用し、Bピクチャでは、復号結果のメモリへの書き込みと参照画像2面のメモリからの読み出しで計3ピクチャ分の帯域を使用するものとする。すると、前述の使用帯域BWp、BWbの比は、BWp:BWb=2:3である。なお、この使用する帯域の比率の仮定は一例であり、適用しようとする復号装置に適した比率とすれば良い。すると、前記式(6)は、式(7)と書ける。
式(7)は、復号に使用する帯域を平準化するためには、P(またはI)ピクチャの復号時の使用帯域、つまり、P(またはI)ピクチャの復号の速度を、1フレーム分の復号を1フレームの表示時間で復号する場合の(3M−1)/2M倍にする必要があることを意味する。また、Bピクチャの復号時の使用帯域、つまり、Bピクチャの復号の速度は、1フレーム分の復号を1フレームの表示時間で復号する場合の(3M−1)/3M倍にする必要があることを意味する。
これを図示したものが、図10、図11である。この図10、図11は、ストラクチャ種別がフレームストラクチャである場合、すなわち、1ピクチャ=1フレームである場合を示した図である。従来の動画像復号処理、すなわち、1ピクチャを1フレーム周期で復号する場合における、ピクチャタイプ毎の帯域使用量と1ピクチャの復号処理時間を示したものが図10であり、本実施形態の使用帯域を平準化する動画像復号処理における、ピクチャタイプ毎の帯域使用量と1ピクチャの復号処理時間を示したものが図11である。
図10に示すように、従来の動画像復号処理では、Pピクチャ、Bピクチャとも1フレーム周期T毎に復号処理を行うため、Pピクチャ復号時の使用帯域はBWpであり、Bピクチャ復号時の使用帯域はBWbである。これに対し、図11に示すように、本実施形態の動画像復号処理では、従来の動画像復号処理に比べ、P(またはI)ピクチャでは、帯域使用量が(3M−1)/2M倍となる代わりに、復号に要する時間が2M/(3M−1)倍となり、Bピクチャでは、帯域使用量が(3M−1)/3M倍となる代わりに、復号に要する時間が3M/(3M−1)倍となる。なお、図10、図11では、ストラクチャ種別がフレームストラクチャとして説明したが、フィールドストラクチャの場合にも復号に要する時間の比率は、フレームストラクチャの場合と同じ式で表される。
ステップS170は、復号時刻情報DTSが存在する場合にのみ行われる処理である、つまり、P(またはI)ピクチャに対しての処理であるので、復号に要する時間は2M/(3M−1)倍となる。従って、復号速度比Tdrは、その逆数となり、式(4)で表されることになる。
次に、復号開始時刻Tdsが式(3)によって求められることを、図12及び図13を用いて説明する。図12は、ストラクチャ種別Sがフレームストラクチャである場合の、従来及び本実施形態における動画像復号処理の動作タイミングを示す図であり、図13は、ストラクチャ種別Sがフィールドストラクチャである場合の、従来及び本実施形態における動画像復号処理の動作タイミングを示す図である。両図とも、動画像復号処理にかかる時間は0とした場合の図である。
前記図12及び図13は、「デコーダ入力」、「従来復号処理」、「従来表示」、「本実施形態復号処理」、「本実施形態表示」の5段に分かれており、各処理のタイミングを示している。図8同様、図中の矩形は1ピクチャ分の処理を行っていることを意味し、矩形内部の符号は、1文字目のアルファベットがピクチャタイプを、2文字目の数字がピクチャの入力順を示している。図の最下部に記されているDTS1,PTS2といった符号は、数字が一致するピクチャに付加された提示時刻情報PTS、復号時刻情報DTSが指し示す時間である。
「デコーダ入力」は、ビデオデコーダに入力されるビデオESを示している。この「デコーダ入力」は従来と本実施形態に共通のものである。「従来復号処理」は、従来のビデオデコーダに前述の「デコーダ入力」が入力された場合に、ピクチャが復号処理される様子を示している。「従来表示」は、従来のビデオデコーダにて前述の「従来復号処理」の処理が行われた場合に、ピクチャが表示処理される様子を示している。「本実施形態復号処理」は、本実施形態におけるビデオデコーダ130に前述の「デコーダ入力」が入力された場合に、ピクチャが復号処理される様子を示している。「本実施形態表示」は、本実施形態におけるビデオデコーダ130にて前述の「本実施形態復号処理」の処理が行われた場合に、ピクチャが表示処理される様子を示している。
図中の符号Tは、前記フレーム周期検出部210で検出されたフレーム周期Tを示している。また符号Eは、本実施形態のビデオデコーダ130において、復号処理がビデオESの入力を追い越さないために必要とされる最低限の時間であり、復号開始時刻の遅延量を表す。つまり、本実施形態の復号装置1000においては、この遅延時間Eで示される時間分のビデオES、オーディオESを蓄積して復号処理の開始を遅延させるバッファが必要となり、そのバッファが、ビデオ位相調整バッファ120及びオーディオ位相調整バッファ160である。遅延時間Eの値は、式(8)で表される。つまり遅延時間Eは、P−P間フレーム数Mの最大値Mmaxの値によって最低限必要な値が決まる。
P−P間フレーム数Mに上限を設定しない場合は、Mmaxが無限大であることと同義なので、式(8)は、以下の式(9)のようになり、1/3フレーム時間以上であれば良いこととなる。
本発明の効果はP−P間フレーム数Mが大きくなることによって小さくなるため、P−P間フレーム数Mは適当に上限を設定した方が良い。例えば、P−P間フレーム数Mの上限を5と設定した場合には、Mmax=5を式(8)に代入することにより、式(10)が求まり、Eの値は、2/7フレームに相当する時間以上あれば良いことがわかる。
前記遅延時間Eは、本実施形態の動画像復号システムのオーディオタイミング検出部180及び復号制御部200に定数として供給される。
さて、ステップS170は、P(またはI)ピクチャに対しての処理であるので、図12「本実施形態復号処理」の段のI1や図13の「本実施形態復号処理」の段のI1、P2の処理タイミングを考える。これらの図からすると、I1の復号開始時刻は、I1の入力から遅延時間Eが経過した時点、つまり時刻DTS1+Eとなる。一方、P2の復号開始時刻は、元々P2の復号開始時刻として与えられているDTS2から、n=0の時の復号開始時刻、即ち、I1の復号開始時刻であるDTS1+E(に相当する時刻)を求め、かつ、それに、I1の復号処理に要した時間を加算する必要がある。図13におけるP2の復号開始時刻は、P2に与えられたDTS、つまりDTS2にEを加算した上で、DTS1とDTS2の差分に相当するn×T(=T/2)を減じ、P(またはI)ピクチャの1フィールド分の復号処理に必要となる式(11)にて表される時間を加算することになる。
以上の内容を、あらゆるP(またはI)ピクチャに適用できるようにすると、復号開始時刻Tdsは、式(3)で表されることになる。
なお、ステップ170における復号開始時刻Tdsの算出方法としては、n=0の際の復号時刻情報DTSの値を記憶しておき、これを用いるという方法もある。この場合、前記n=0の時の復号時刻情報DTSの値をDTSiとすると、式(3)は式(3)’のようになる。
ステップS170において、復号制御部200による復号開始時刻Tdsと復号速度比Tdrの算出が完了したら、ステップS175へと進む。
一方、ステップS260では、復号制御部200は、復号開始時刻Tdsと復号速度比Tdrを、以下の式(12)、(13)により算出する。これは、メモリ使用帯域の平準化を行わずに復号処理を行うことを表す。
このとき、使用帯域の平準化を行うかどうかを示す変数fは0にする。
復号開始時刻Tdsが式(12)のように遅延時間Eを加算した形となる点が従来システムと異なるが、これは、使用帯域を平準化する処理が行われる場合と行われない場合が、復号処理の途中で切り換わっても、復号処理を継続できるようにするためである。式(12)、(13)により、復号開始時刻Tds、復号速度比Tdrの算出が完了したら、ステップS175へと進む。
ここで、ステップS140で復号制御部200が復号時刻情報DTSが存在しないと判定した場合のフローの説明に移る。ステップS230では、復号制御部200は、使用帯域を平準化する処理を行うかどうかを示す変数fが0であるかどうかを判定する。fが0である場合、使用帯域を平準化する処理は行わないため、S250へ進み、fが1である場合は、使用帯域を平準化する処理を行うためにS240へと進む。
ステップS240では、復号制御部200は、復号開始時刻Tdsと復号速度比Tdrを、以下の式(14)、(15)により算出する。
以下、式(14)、(15)の導出方法について説明する。
式(14)は、図12、図13から以下の式(16)のように求められる。
式(16)の右辺の第1項から第3項は、基準の位置(n=0の時の復号処理開始位置DTSi+Eに相当する)を決定する項である。また、第4項は、P(またはI)ピクチャの復号に要した時間を表す。第5項は、これまでに復号したBピクチャの復号に要した時間を表している。式(14)は、この式(16)を変形したものである。
第1項と第3項の部分を、n=0の時のDTSの値DTSiを用いて置き換えることが可能なので、復号開始時刻Tdsは、式(14)’のようにも書ける。
式(15)は、図11に示したBピクチャの復号処理時間から求めている。本実施形態の動画像復号処理では、Bピクチャでは、使用帯域が(3M−1)/3M倍となる代わりに、復号に要する時間が3M/(3M−1)倍となる。従って、本実施形態の動画像復号処理のBピクチャにおける復号速度比Tdrは、前記復号に要する時間比の逆数となり、式(15)で表されることになる。
ステップS240は、復号時刻情報DTSが存在しない場合にのみ行われる処理である、つまり、Bピクチャに対しての処理であるので、復号速度比Tdrは(15)式で表されることになる。ステップS240において、復号制御部200は、復号開始時刻Tdsと復号速度比Tdrの算出が完了したら、ステップS175へと進む。
ステップS250では、復号制御部200は、復号開始時刻Tdsと復号速度比Tdrを、以下の式(17)、(18)により算出する。
式(17)、(18)は、ステップS250が使用帯域の平準化を行わない場合の処理であるため、基本的には従来のシステムと同様の処理を行うことを示す式となっている。Tdsが式(17)のようにEを加算した形となる点が従来システムと異なるが、これは、ステップS260の処理の場合と同様に、使用帯域を平準化する処理が行われる場合と行われない場合が、復号処理の途中で切り換わっても、復号処理を継続できるようにするためである。式(17)、(18)により、復号開始時刻Tds、復号速度比Tdrの算出が完了したら、ステップS175へと進む。
ステップS175では、復号制御部200は、表示開始時刻Tpsを以下の式(19)から求め、ステップS180へと進む。式(19)は、復号開始時刻Tdsが最大でEだけ遅れることがあるため、表示開始時刻Tpsも少なくともEだけ遅らせる必要があるということを意味している。
ステップS180では、復号制御部200は、求めた復号開始時刻Tds、復号速度比Tdr、表示開始時刻Tpsをタイミング制御部190へと出力し、ステップS190へと進む。ステップS190では、ステップS130で入手したストラクチャ種別Sの値に基づき復号制御部200が分岐処理を行う。ストラクチャ種別Sがフレームストラクチャであった場合には、ステップS200へと進み、フィールドストラクチャであった場合には、ステップS210へと進む。
ステップS200では、復号制御部200は、フレーム数nに1を加算して、ステップS220へと進む。ステップS210では、復号制御部200は、フレーム数nに0.5を加算して、ステップS220へと進む。ステップS220では、復号制御部200は、フレーム数nの値によって条件分岐処理を行う。n=Mであれば、ステップS100へ、それ以外の場合は、ステップS120へと進む。
復号制御部200は、以上のようにして、算出した復号開始時刻Tds、復号速度比Tdr及び表示開始時刻Tpsを、順次タイミング制御部190へと供給する。
次に、オーディオタイミング検出部180は、式(20)に示されるように、ストリーム処理部100から与えられるオーディオPESヘッダに含まれる提示時刻情報PTSの値(PTSaとする)に前記遅延時間Eを加算することにより、オーディオの復号開始時刻Tdsaを算出し、このTdsaをタイミング制御部190へと送る。
但し、上述の復号制御部200及びオーディオタイミング検出部180の説明においては、ビデオデコードとオーディオデコード間のシステム上発生する時間差Pavが0であるものとして述べている。前記Pavが0で無い場合については、ビデオの復号開始時刻Tdsまたはオーディオの復号開始時刻Tdsaに対し、前記Pavを加算もしくは減算する必要がある。
タイミング制御部190は、ストリーム処理部100から送られてきたTSヘッダから、パラメータPCR(Program Clock Reference)を抽出し、システム基準時間STC(System Time Clock)の合わせ込みを行う。タイミング制御部190はまた、復号制御部200から受け取った復号開始時刻Tdsと復号速度比Tdrを用いて、ビデオデコーダ(復号手段)130の動作タイミング制御を、表示開始時刻Tpsを用いてビデオデコーダ130の復号結果の出力タイミング制御を、オーディオタイミング検出部180から受け取ったオーディオ復号開始時刻Tdsaを用いて、オーディオデコーダ(第2の復号手段)170の動作タイミング(兼出力タイミング)の制御を行う。前記制御の手順について、以下説明する。
タイミング制御部190は、復号制御部200から受け取った復号開始時刻Tdsと復号速度比Tdrを、図14に示すように両者を対応付けて記録するテーブルAを持つ。前記復号開始時刻Tds及び復号速度比Tdrが復号制御部200から送られてきたら、順次、前記テーブルA上に書き込む。そして、前記テーブルA上の復号開始時刻Tdsのうち、最初に格納されたTdsの値が、タイミング制御部190内部でカウントされているSTCの値と一致した(またはSTCがTdsの値を超えた)ことを検出したら、復号開始のトリガ信号と、前記検出に用いられたTdsに対応した復号速度比Tdrの値を、ビデオデコーダ130に供給する。この処理が完了した時点で、前記検出に使用した復号開始時刻Tdsとそれに対応した復号速度比Tdrを前記テーブルAから削除する。前記テーブルAのサイズは、ビデオストリームバッファ110及びビデオ位相調整バッファ120に蓄積可能なビデオストリーム長に対し、最大付加され得る提示時刻情報PTSの個数以上が格納できるサイズであれば良い。
一方で、タイミング制御部190は、復号制御部200から受け取った表示開始時刻Tpsを記録するテーブルBを持つ。前記表示開始時刻Tpsが復号制御部200から送られてきたら、既にテーブルB上の書き込まれている全ての表示開始時刻Tpsを読み出し、前記送られてきた表示開始時刻Tpsを含めた全ての表示開始時刻Tpsを昇順にソートし直して、前記テーブルB上に書き込む。そして、前記テーブルB上に格納されている表示開始時刻Tpsのうち、先頭に格納された、即ち、最も小さい値を持つTpsの値が、タイミング制御部190内部でカウントされているSTCの値と一致した(またはSTCがTpsの値を超えた)ことを検出したら、表示開始のトリガ信号をフレームバッファ140に送る。この処理が完了した時点で、前記検出に使用した表示開始時刻Tpsを前記テーブルBから削除する。前記テーブルBのサイズは、ビデオストリームバッファ110及びビデオ位相調整バッファ120に蓄積可能なビデオストリーム長に対し、最大付加され得る提示時刻情報PTSの個数以上が格納できるサイズであれば良い。
また、タイミング制御部190は、オーディオタイミング検出部180から受け取ったオーディオ復号開始時刻Tdsaを記録するテーブルCを持つ。前記オーディオ復号開始時刻Tdsaがオーディオタイミング検出部180から送られてきたら、順次、前記テーブルC上に書き込む。そして、前記テーブルC上に格納されているオーディオ復号開始時刻Tdsaのうち、最初に格納されたTdsaの値が、タイミング制御部190内部でカウントされているSTCの値と一致した(またはSTCがTdsaの値を超えた)ことを検出したら、デコード開始のトリガ信号をオーディオデコーダ170に送る。この処理が完了した時点で、前記検出に使用した復号開始時刻TdsaをテーブルCから削除する。前記テーブルCのサイズは、オーディオストリームバッファ150及びオーディオ位相調整バッファ160に蓄積可能なオーディオストリーム長に対し、最大付加され得る提示時刻情報PTSの個数以上が格納できるサイズであれば良い。タイミング制御部190は、上記動作を繰り返すことにより、ビデオデコーダ130、オーディオデコーダ170及びフレームバッファ140のタイミング制御を行う。
ビデオデコーダ130は、タイミング制御部190からの復号開始時刻Tdsに基づくトリガ信号により、1ピクチャ分のビデオ復号処理を開始する。ビデオ位相調整バッファ120に蓄積されたビデオストリームを順次読み出し、復号し、その結果をフレームバッファ140に出力する。その復号処理速度は、タイミング制御部190から与えられる復号速度比Tdrの値により制御される。
前記ビデオデコーダ130の前記復号速度比Tdrによる復号処理速度の変更の方法としては、様々な方法が考えられるが、MPEG2により符号化されたストリームを復号する場合の例を幾つか以下に述べる。
第一にある単位毎の処理の間隔を変更する方法がある。MPEG2の復号処理はマクロブロック単位やブロック単位での復号処理の繰り返し処理と見做せるので、マクロブロックやブロックの処理の間隔を制御することにより、結果として1ピクチャの処理時間を制御することが可能である。そして、前記復号速度比Tdrは、1ピクチャの表示時間を1ピクチャの復号時間で割った値であると同時に、1単位の表示に要する時間(1ピクチャの表示時間をピクチャを構成する1単位(マクロブロック、ブロック等)の数で割った値)を、ピクチャを構成するある1単位(マクロブロック、ブロック等)の復号時間で割った値でもある。図15は処理速度の変更方法の基本的な考え方を示した図である。図中のマクロブロック処理間隔Tmbは、復号速度比Tdr=1、即ち、1ピクチャ分の復号処理を1ピクチャ分の表示時間で行う場合において、1マクロブロックの復号処理に使用可能な時間を示している(全てのマクロブロックに同じ処理時間を与える場合)。例えば、1ピクチャが1920ドット×1088ドットで30フレーム/秒のHD(High Definition)動画の場合のマクロブロック処理間隔Tmbは、1/30秒で8160個のマクロブロックを処理する必要があるので、式(21)より、約4.08μsとなる。
また、図中の矩形は、本実施形態のビデオデコーダ130が、1マクロブロックの復号処理に要する時間であるマクロブロック処理時間Tmbrを示している。入力されたストリームを復号できるためには、前記マクロブロック処理時間Tmbrは、前記入力されたストリームのマクロブロック処理間隔Tmbよりも短い時間である必要があるが、さらに本実施形態においては、前記マクロブロック処理時間Tmbrは、後述するように、復号速度比Tdrに反比例してマクロブロック処理間隔Tmbが短縮/延長されることがあるため、その短縮/延長された時間よりも短い時間でなければならない、即ち、式(22)の条件を満たす必要がある。
さて、PピクチャとBピクチャの最大で使用する帯域の比がほぼ2:3であり、P−P間フレーム数Mの値に前記Mmaxによる制約がないとする時、本実施形態におけるマクロブロック処理時間Tmbrに必要とされる条件を考えてみる。すると、次の式(23)から、Tmbr≦2Tmb/3が必要であることになる。
以下では、上記の条件は成立するということを前提に、ビデオデコーダ130が、マクロブロック毎の復号処理の間隔を調整して、復号処理速度の変更を行う方法を述べる。ビデオデコーダ130は、まず、入力されたビデオESのシーケンスヘッダ(図4参照)内のパラメータhorizontal_size_value及びhorizontal_size_extensionから水平方向画像サイズHSを、vertical_size_value及びvertical_size_extensionから、垂直方向画像サイズVSを求め、前記水平方向画像サイズHS、垂直方向画像サイズVSから、式(24)により、1フレーム内のマクロブロック数MBを算出する。
また、ビデオデコーダ130は、前記ビデオESのシーケンスヘッダからフレームレートFdを、ピクチャヘッダからストラクチャ種別Sdを求め(フレーム周期検出部210及びストラクチャ検出部220において、フレームレートFとストラクチャ種別Sを検出するのと同等の処理)、1ピクチャの復号に1ピクチャの表示時間を使用する場合の1マクロブロック当たりに割り当てられるマクロブロック処理間隔Tmbを算出する。ストラクチャ種別Sdがフレームストラクチャを示す場合は、マクロブロック処理間隔Tmbは式(25)で表され、ストラクチャ種別Sdがフィールドストラクチャを示す場合は、マクロブロック処理間隔Tmbは式(26)で表される。
最終的に、ビデオデコーダ130は、式(25)または式(26)により得られたマクロブロック処理間隔Tmbと、前記復号速度比Tdrを用いて、次式(27)により、マクロブロック処理時間Tmbvを求め、1マクロブロックの処理を、このマクロブロック処理時間Tmbv毎に行うことにより、復号処理の速度、即ち、1ピクチャの復号にかかる時間の制御を行う。
図15には、復号速度比Tdrの値が1、4/3、5/6の時のマクロブロックの復号処理の様子が示されている。以上、マクロブロックの処理時間を変更することにより、ビデオデコーダ130による復号処理速度を変更方法する第一の方法について述べた。
前記第一の方法をブロック処理に適用することにより、ブロックの処理間隔を変更し、復号処理速度を変更することも同様に可能である。これが復号処理速度を変更する第二の方法である。第三の復号処理速度を変更する方法として、ビデオデコーダ130の動作クロックを復号速度比Tdrに比例させる方法がある。無段階にクロック周波数を変更する方法、予め用意しておいた何種類かのクロック周波数を復号速度比Tdrに応じて段階的に切り換える方法等が考えられる。
フレームバッファ140は、タイミング制御部190から復号開始時刻Tpsに基づくトリガ信号を受け取ると、ビデオデコーダ130により書き込まれた復号ビデオストリームのうち最も出力順が早いピクチャを出力する。ピクチャ出力順は各ピクチャに対応する提示時刻情報PTSの値によって決定される。その具体的な方法については、本発明に特有の要素ではないためここでは言及しない。出力結果は、表示処理部500に供給される。
オーディオデコーダ170は、復号開始時刻Tdsaに基づくタイミング制御部190からのトリガ信号により、1アクセスユニット分(提示時刻情報PTS1個分)の復号処理を開始する。オーディオ位相調整バッファ160に蓄積されたオーディオESを順次読み出し、復号し、その復号結果を音声出力装置700に出力する。
以上、入力されるデータ列が、MPEG2−TSの場合についての本発明の処理手順について説明したが、他の符号化方式により符号化されたデータ列や他のフォーマットのデータ列であっても、P(またはI)ピクチャとBピクチャがデータ列中でどのように配置されているかを算出するためのパラメータ(P−P間フレーム数Mを算出可能な提示時刻情報PTS、復号時刻情報DTSのようなパラメータ)、フレーム周期Tを算出するためのパラメータ、ストラクチャ構造S(フレーム構造かフィールド構造か)を判定することができるデータ列であれば、本実施形態と同様な処理を行うことにより、少ない遅延時間(本実施形態では最大でフレーム周期T/3)で、ビデオデコーダが使用する帯域(すなわち、単位時間当たりのデータ転送量)の時間方向の平準化を図り、メモリ400、バス900の最大使用帯域を少なく抑えることができる。これにより。メモリ400、バス900に要求される性能が抑えられ、コスト低下が可能となる。また、ユーザ操作などの外部からのイベントに対する処理をCPU310が行う際に、ビデオデコーダ130の使用帯域に圧迫されて発生する処理遅延を抑えることができる。
例えば、MPEG2−PS(Program Stream)の場合、以下の2点を変更することにより、本実施形態と同様のシステムが実現できる。1)ストリーム処理部100からタイミング制御部190へは、TSヘッダの代わりにPSパックヘッダを送る。2)タイミング制御部190は、TSヘッダ内のパラメータPCRの代わりにPSパックヘッダ内のパラメータSCR(System Clock Reference)により、システム基準時間STCの合わせ込みを行う。
[第2の実施形態]
以下、本発明の第2の実施形態について、図16乃至図19、図4、図7、図14を用いて詳細に説明する。図16は、本実施形態による復号装置であるデジタルTV1001の構成を示した概略ブロック図である。同図において、図1の各部に対応する部分には同一の符号を付け、その説明を省略する。1400は、入力されたストリームをビデオストリーム、オーディオストリーム、セクション等に分類し、それぞれメモリ401へと書き込むストリーム処理部である。301は、ビデオデコーダ130およびオーディオデコーダ170の復号速度比および復号開始時刻と、ビデオデコーダ130による復号結果の表示開始時刻を求める制御部である。
図17は、図16のデジタルTV1001から復号処理に関連した構成を抜き出し、復号処理手順に準じた配置を示した概略ブロック図である。なお、図17においては、ストリーム処理部1400、メモリ401、制御部301、ビデオデコーダ(復号手段)130、オーディオデコーダ(第2の復号手段)170、表示処理部500、CPU310の間を接続するバス900は図示を省略する。
図17に示した装置を図16に適用する場合、メモリ401は、ビデオストリームバッファ110、解析待ち用ビデオバッファ1410、フレームバッファ140、オーディオストリームバッファ150、解析待ち用オーディオバッファ1420を含む。制御部301は、オーディオタイミング検出部180、タイミング制御部190、フレーム周期検出部210、ストラクチャ検出部220、ピクチャタイプ検出部1430、シーケンス変化検出部1450、復号制御部(復号制御手段)1440、FIFO1460を備える。
以下、図17を参照して、入力された多重ストリーム(MPEG2−TS(Transport Stream))を処理する手順を説明する。ストリーム処理部1400は、前記入力されたMPEG2−TSからビデオES、オーディオES、TSヘッダ、ビデオPESヘッダ、オーディオPESヘッダを抽出し、ビデオESをビデオストリームバッファ110、フレーム周期検出部210、ストラクチャ検出部220、ピクチャタイプ検出部1430、シーケンス変化検出部1450へ、オーディオESをオーディオストリームバッファ150へ、TSヘッダをタイミング制御部190へ、ビデオPESヘッダを復号制御部1440へ、オーディオPESヘッダをオーディオタイミング検出部180へと分配する。
ビデオストリームバッファ110、オーディオストリームバッファ150は、第1の実施形態と同様に、ビデオES及びオーディオESの入出力の速度の違いを吸収するためのバッファである。解析待ち用ビデオバッファ1410及び解析待ち用オーディオバッファ1420は、復号制御部1440が、後述する入力ビデオESのピクチャの構成を検出するのに要する時間分のビデオESまたはオーディオESを一時的に貯めておくためのバッファである。
ビデオストリームバッファ110に入力されたビデオESは、解析待ち用ビデオバッファ1410に空きがある限り、順次、解析待ち用ビデオバッファ1410に移動させられる。図17では、利用目的の違いを明確にする目的で、ビデオストリームバッファ110と解析待ち用ビデオバッファ1410を個別に設けているが、両者を一つのバッファにまとめた構成としてもよい。オーディオストリームバッファ150と解析待ち用オーディオバッファ1420の関係も、前記ビデオストリームバッファ110と解析待ち用ビデオバッファ1410の関係と同様である。オーディオストリームバッファ150に入力されたオーディオストリームは、解析待ち用オーディオバッファ1420に空きがある限り、順次解析待ち用オーディオバッファ1420へと移動させられる。また、オーディオストリームバッファ150と解析待ち用オーディオバッファ1420を一つのバッファにまとめた構成としてもよい。
フレーム周期検出部210の動作は、第1の実施形態と同様である。但し、検出結果のフレーム周期Tは、復号制御部1440へと送られる。ストラクチャ検出部220の動作も、第1の実施形態と同様である。検出結果のストラクチャ種別Sは、復号制御部1440へと送られる。ピクチャタイプ検出部1430は、ストリーム処理部1400から与えられるビデオESからピクチャタイプ(Iピクチャ、Pピクチャ、Bピクチャのいずれであるかを示すパラメータ)を検出する。図4に示したMPEG2ビデオESの第三層、ピクチャ層のピクチャヘッダ内には、ピクチャタイプを示すパラメータpicture_coding_typeが含まれるため、このパラメータを検出する。前記検出結果(PTとする)は、復号制御部1440へと送られる。
シーケンス変化検出部1450は、ストリーム処理部1400から与えられるビデオESのシーケンスヘッダ(図4の第一層)内のパラメータのうち、画像のサイズやフレームレート、色差フォーマット等、ビデオデコーダ130の復号処理においてメモリの使用帯域に影響を及ぼすパラメータ値に変化があったかどうかを検出する。変化があった場合には、その旨を示す信号を復号制御部1440へと送る。復号制御部1440は、ストリーム処理部1400から与えられるビデオPESヘッダに含まれるPTSとDTS、フレーム周期検出部210から与えられるフレーム周期T、ストラクチャ検出部220から与えられるストラクチャ種別S、ピクチャタイプ検出部1430から与えられるピクチャタイプPTを用いて、復号開始時刻Tds、復号速度比Tdr及び表示開始時刻Tpsを算出する。以下、その詳細な動作について、図18のフローチャートを用いて説明する。
復号制御部1440は、動作開始後、まずステップS1500で、パラメータt及びパラメータkを0にセットする。パラメータtは時間を示すパラメータであり、ステップS1500で0にセットされた後は、図18の処理フローとは別個に、時間の経過に同期してカウントアップされる。このパラメータには、例えば同期カウンタの出力を用いる。パラメータkは、フレーム数をカウントする変数である。1フィールドは0.5フレームとしてカウントされる。
ステップ1505では、復号制御部1440は、ストリーム処理部1400から与えられたビデオPESヘッダ(図7、600)から、PTS・DTSフラグ(図7、645)を抽出して提示時刻情報PTS、復号時刻情報DTSの有無を検出し、その検出結果が、提示時刻情報PTSのみ有りであった場合は、提示時刻情報PTS(図7、661)を、提示時刻情報PTS、復号時刻情報DTS共に有りであった場合には、復号時刻情報DTS(図7、662)を抽出し、FIFO1460に書き込む。ここで書き込んだものを以下デコード開始基準時刻DBTと呼ぶこととする。また、PTS・DTSフラグの検出結果にかかわらず、提示時刻情報PTSを抽出し、この提示時刻情報PTSをFIFO1460に書き込む。ここで書き込んだ提示時刻情報PTSを以下表示開始基準時刻PBTと呼ぶこととする。
続くステップS1510では、復号制御部1440は、ピクチャタイプ検出部1430からピクチャタイプPTが送られてくるのを待ち、送られてきたピクチャタイプPTを、FIFO1460に書き込む。ステップS1520では、復号制御部1440は、ストラクチャ検出部220からストラクチャ種別Sが送られてくるのを待ち、送られてきたストラクチャ種別SをFIFO1460に書き込む。ここでは、デコード開始基準時刻DBT、表示開始基準時刻PBT、ピクチャタイプPT、ストラクチャ種別Sを個別にFIFO1460に書き込むように述べているが、これらを一つにまとめてFIFO1460に書き込むようにしても良い。また、一つのFIFOではなく、各々に専用のFIFOバッファを用意してもよい。
次のステップS1530では、復号制御部1440は、前記ストラクチャ種別Sの値によって、分岐処理を行う。即ち、ストラクチャ種別Sがフレームストラクチャを示す場合には、ステップS1540へ進み、フィールドストラクチャを示す場合には、ステップS1550へと進む。ステップS1540では、復号制御部1440は、フレーム数kに1を加算し、ステップS1560へと進む。ステップS1550では、復号制御部1440は、フレーム数kに0.5を加算し、ステップS1560へと進む。ステップS1560では、復号制御部1440は、シーケンス変化検出部1450から信号が送られてきたかどうか、つまりビデオESのシーケンスヘッダのパラメータに、ビデオデコーダ130の復号処理において使用する帯域に影響を与えるような変化があったかどうかによって、分岐処理を行う。信号が送られてきていた(変化があった)場合には、ステップS1580へ進み、信号が送られてきていなかった(変化がなかった)場合には、ステップS1570へと進む。ステップS1570では、復号制御部1440は、パラメータtの値が一定の基準値を超えているかどうかの判定を行い、分岐処理を行う。この判定は、以下の式(28)により行う。
ここで、Dは、本実施形態におけるシステムのストリーム入力からデコード開始までに許容される最大遅延時間を示している。これは、解析待ち用ビデオバッファ1410または解析待ち用オーディオバッファ1420にビデオESまたはオーディオESを蓄積し続けることのできる時間、即ち、復号制御部1440が、動画像復号処理に使用する帯域を平準化するために使用するピクチャタイプを収集することのできる最大の時間を示す。従って、Dは、解析待ち用ビデオバッファ1410の容量と入力ビデオストリームの最大ビットレートまたは解析待ち用オーディオバッファ1420の容量と入力オーディオストリームの最大ビットレートによって決まる。
ところで、式(28)は、前記解析待ち用ビデオバッファ1410または前記解析待ち用オーディオバッファ1420に、次のピクチャのパラメータを取るだけの容量が残っているか否かの判定を行うための式である。つまり、ステップS1505に戻って、次のピクチャに対する処理を行うには、少なくともビデオストリーム1ピクチャ分の容量が、前記解析待ち用ビデオバッファ1410及び前記解析待ち用オーディオバッファ1420に確保できている状態でないとならない。式(28)のαは、このビデオストリーム1ピクチャ分の容量が残っているかどうかの指標となる値とする。予めシステムで扱うことになる最大値(固定値)をαとしても良いし、フレーム周期Tから随時ビデオストリーム1ピクチャ分の容量を演算してαとしても良い。
パラメータtが式(28)を満たす場合にはステップS1580へと進み、そうでない場合にはステップS1505へと戻る。ステップS1580では、復号制御部1440は、前記FIFO1460に蓄積されたkフレーム分のデコード開始基準時刻DBT、表示開始基準時刻PBT、ピクチャタイプPT、ストラクチャタイプSを全て読み出す。その際、読み出した数(=ピクチャの枚数)pを計数しておく。以下では、読み出した(=書き込んだ)順番j(jは1以上p以下の整数)を用いて、デコード開始基準時刻をDBT[j]、表示開始基準時刻をPBT[j]、ピクチャタイプをPT[j]、ストラクチャタイプをS[j]と表記する。
続くステップS1590では、復号制御部1440は、ステップS1580で読み出したkフレーム分のピクチャタイプPT[j]及びストラクチャタイプS[j]から、Iピクチャ、Pピクチャ、Bピクチャのフレーム数、ki、kp、kbを算出する。ストラクチャタイプSがフレームストラクチャの場合は、1ピクチャを1フレーム分と計数し、ストラクチャタイプSがフィールドストラクチャの場合は、1ピクチャを0.5フレーム分と計数する。ki、kp、kbとkの関係は、式(29)のようになる。
S1600では、復号制御部1440は、前記ki、kp、kb、kからIピクチャ、Pピクチャ、Bピクチャの復号速度比Tdri、Tdrp、Tdrbを式(30)〜(32)により算出する。
ここで、前記式(30)〜(32)の導出方法について説明する。第1の実施形態でも述べたように、Iピクチャ、Pピクチャ、Bピクチャは、復号処理の際に参照可能なピクチャの枚数が異なり、Iピクチャは0枚、Pピクチャは最大1枚、Bピクチャは最大2枚のピクチャを参照可能である。それ故、各ピクチャの復号処理時間を1フレーム周期Tとしたときには、3種のピクチャは復号時におけるメモリの使用帯域が異なり、Iピクチャが復号時に使用する最大帯域BWi、Pピクチャが復号時に使用する最大帯域BWp、Bピクチャが復号時に使用する最大帯域BWbの関係は、BWb>BWp>BWiとなる。従って、kフレーム分のピクチャの平均最大使用帯域BWaveは、式(33)のように表される。
ここで、Iピクチャ、Pピクチャ、Bピクチャの最大使用帯域が、図9に示されるような比率であると仮定する。即ち、Iピクチャでは、復号結果のメモリへの書き込みで計1ピクチャ分の帯域を使用し、Pピクチャでは、復号結果のメモリへの書き込みと参照画像1面の読み出しで計2ピクチャ分の帯域を使用し、Bピクチャでは、復号結果のメモリへの書き込みと参照画像2面の読み出しで計3ピクチャ分の帯域を使用するものと仮定すると、BWi:BWp:BWb=1:2:3となる。なお、この仮定はあくまでも一例であり、適用しようとする動画像復号システムに適した比率とすれば良い。すると、前記式(33)は、式(34)〜(36)のように書ける。
全てのピクチャの復号処理における最大使用帯域をBWaveにしようとする場合、その復号速度比は、使用帯域に比例させれば良い。従って、前記各ピクチャの復号速度比Tdri、Tdrp、Tdrbは、式(30)〜(32)のようになる。
ステップS1610では、ステップS1580において読み出した値から、復号開始時刻Tds[j]と復号速度比Tdr[j](jは1以上p以下の整数)を求める。Tdr[j]はj枚目のピクチャの復号速度比を表し、PT[j]が示すj枚目のピクチャのピクチャタイプに合わせて、Tdri、Tdrp、Tdrbの何れかが代入される。また、j枚目のピクチャの復号開始時刻Tds[j]は、j=1の場合は式(37)で、j≧2の場合は式(38)で求める。
なお、Dは前述した通り、ストリーム入力からデコード開始までに供される最大遅延時間を示し、Tはフレーム周期検出部210から与えられるフレーム周期Tを示す。
ここで、ステップS1600及びステップS1610における復号制御部1440の具体的な処理内容について、図19を用いて説明する。図19における矩形内の符号については、I1はIピクチャを、P4はPピクチャを、B2、B3、B5、B6はBピクチャを示している。なお、前記符号の数字部は、ピクチャの入力順を示している。また、最下段に示されているDTS1、PTS2等の符号は、数字部が一致する各ピクチャに付けられている復号時刻情報DTSや提示時刻情報PTSが示す時刻を表している。図19においては、D=4Tのシステムを想定しており、ピクチャI1からピクチャP4の4フレーム分(k=4)のパラメータを用いて、復号開始時刻Tds[j]、復号速度比Tdr[j]が求められる場合を考える。この時、Iピクチャ1フレーム分(ki=1)、Pピクチャ1フレーム分(kp=1)、Bピクチャ2フレーム分(kb=2)である。各ピクチャ種別毎の復号速度比Tdri、Tdrp、Tdrbは、式(30)〜(32)により、以下の式(39)〜(41)のようになる。
最初のピクチャI1のデコード開始基準時刻DBT[1]は、図19からわかるように、DTS1であるので、I1の復号開始時刻Tds[1]は、式(37)より、式(42)のようになる。
以下、ピクチャB2、B3、P4の復号開始時刻Tds[2]〜Tds[4]は、式(38)から各々式(43)〜式(45)のようになる。
全ての復号開始時刻Tds[j]と復号速度比Tdr[j]を算出したら、ステップS1615に進む。
ステップS1615では、復号制御部1440は、ステップS1580において読み出した値から、表示開始時刻Tps[j](jは1以上p以下の整数)を式(46)により求める。
全ての表示開始時刻Tps[j]を算出したら、ステップS1620へと進む。
ステップS1620では、復号制御部1440は、ステップS1610及びステップS1615で得られた、復号開始時刻Tds[j]と復号速度比Tdr[j]を1組にして、j=1からpまで、順番にタイミング制御部190へと出力する。また、1〜pまでの表示開始時刻Tps[j]を、順にタイミング制御部190へと出力する。両者共pまでの出力が完了したら、ステップS1500へと戻る。
オーディオタイミング検出部180は、基本的には第1の実施形態と同様の動作をするが、ストリーム入力からデコード開始までの遅延時間が第1の実施形態とは異なるため、オーディオの復号開始時刻Tdsaは、式(47)に示されるものとなる。オーディオの提示時刻PTSaは、ストリーム処理部1400から与えられるオーディオPESヘッダに含まれる提示時刻情報PTSの値であり、Dは前記した通り、ストリーム入力からデコード開始までのシステムの最大遅延時間である。
オーディオタイミング検出部180が算出したオーディオの復号開始時刻Tdsaは、タイミング制御部190へと送られる。
タイミング制御部190は、復号制御部1440が送ってきた復号開始時刻Tds[j]と復号速度比Tdr[j]を、図14のように対応付けて格納するためのテーブルをローカルメモリ上に持っており、送られてきた順に格納する。そして第1の実施形態と同様にしてビデオデコーダ130に対し、タイミング制御を行う。タイミング制御部190はまた、復号制御部1440が送ってきた表示開始時刻Tps[j]を格納するためのテーブルをローカルメモリ上に持っており、送られてきた全ての表示開始時刻Tpsを昇順にソートし直して、順にこのローカルメモリ上に格納する。そして、第1の実施形態と同様にしてフレームバッファ140に対し、タイミング制御部を行う。タイミング制御部190はさらに、オーディオタイミング検出部180が送ってきた復号開始時刻Tdsを格納するためのテーブルをローカルメモリ上に持っており、送られてきた順に格納する。そして、第1の実施形態と同様にしてオーディオデコーダ170に対し、タイミング制御を行う。ビデオデコーダ130、フレームバッファ140、オーディオデコーダ170は、第1の実施形態と同様に、タイミング制御部190によるタイミング制御に従い、ビデオESとオーディオESの復号処理及び、復号結果の出力を行う。
これにより、第1の実施形態のように提示時刻情報PTSおよび復号時刻情報DTSといったパラメータから符号化種別構成を算出するのではなく、各符号化単位の符号化種別を検出することで、符号化種別構成を把握して、ビデオデコーダが使用するメモリ帯域の時間方向の平準化を図り、メモリ401、バス900の最大使用帯域を抑えることができる。これにより、メモリ401、バス900に要求される性能が抑えられ、コスト低下が可能となる。また、ユーザ操作などの外部からのイベントに対する処理をCPU1820が行う際に、ビデオデコーダ130の使用帯域に圧迫されて発生する処理遅延を抑えることができる。
なお、本第2の実施形態も、第1の実施形態と同様にMPEG2−PSに対応したシステムとすることが可能である。
以上、本第2の実施形態においては、ピクチャ毎にそのピクチャタイプを判定し、前記ピクチャタイプにより、ストリーム中のピクチャ構成を得て、前記ピクチャ構成に基づいてビデオデコーダの復号処理速度を制御することにより、復号処理に使用するメモリ帯域を平準化する方法について述べた。
また、図2におけるストリーム処理部100、ビデオデコーダ130、オーディオデコーダ170、タイミング制御部190、復号制御部200、フレーム周期検出部210、ストラクチャ検出部220、オーディオタイミング検出部180、および、図17におけるストリーム処理部1400、ビデオデコーダ130、オーディオデコーダ170、タイミング制御部190、フレーム周期検出部210、ストラクチャ検出部220、オーディオタイミング検出部180、ピクチャタイプ検出部1430、復号制御部1440、シーケンス変化検出部1450、FIFO1460の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。