(57)【要約】【課題】複数の動画サムネイルを一覧表示するためには高度なプログラミングが必要である。【解決手段】切替部１４は、動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出す。ビデオデコーダ２０は、切替部１４により読み出された符号化ストリームの符号化データを復号してフレームを生成し、フレームバッファ２６に書き込む。フレームバッファ２６は、複数の符号化ストリーム間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを表示するために一時的に保持するための共有メモリ領域２８を含み、いずれの符号化ストリームから復号されたフレームであっても、共有メモリ領域２８内の格納位置の制限を受けることなく、いずれの空き領域にも格納可能に構成される。【選択図】図１
2008072336.tif 000002
【特許請求の範囲】
【請求項１】
動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出す切替部と、
前記切替部により選択された前記符号化ストリームの符号化データを復号してフレームを生成するデコーダと、
各符号化ストリームから復号されたフレームを一時的にバッファするフレームバッファとを含み、
前記フレームバッファは、前記複数の符号化ストリームの間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを一時的に保持するための共有メモリ領域を含み、いずれの符号化ストリームから復号されたフレームであっても、当該共有メモリ領域内の格納位置の制限を受けることなく、いずれの空き領域にも格納可能に構成されることを特徴とする復号装置。
【請求項２】
前記複数の符号化ストリームの内、少なくとも一つ以上の符号化ストリームから復号されたフレームを前記共有メモリ領域から読み出して画面に動画像として同時に表示させる表示制御部をさらに含み、
前記デコーダは、前記表示制御部が少なくとも一つ以上の符号化ストリームを動画像として同時に表示させることによって、前記切替部により選択された前記符号化ストリームから復号された所定枚数のフレームを書き込むための空き領域が前記共有メモリ領域に生じたことを契機に、前記所定枚数のフレームをその空き領域に書き込み、前記切替部により次に選択される符号化ストリームの復号処理に進むことを特徴とする請求項１に記載の復号装置。
【請求項３】
前記共有メモリ領域内に格納される前記複数の符号化ストリームの各々から復号されたフレームについて、共有メモリ領域内のフレームの格納位置に関する情報とフレームの再生順序に関する情報を前記符号化ストリーム毎に保持するバッファ管理テーブルをさらに含み、
前記表示制御部は、前記バッファ管理テーブルの前記格納位置に関する情報と前記再生順序に関する情報を参照して、前記複数の符号化ストリームの内、少なくとも一つ以上の符号化ストリームから復号されたフレームを前記共有メモリ領域から読み出すことを特徴とする請求項２に記載の復号装置。
【請求項４】
前記切替部は、前記複数の符号化ストリームの各々について復号可能な最小単位である所定枚数のフレームのグループを切り替えの単位として、前記複数の符号化ストリームのいずれか一つに切り替えて前記フレームのグループの符号化データを読み出し、前記デコーダに供給することを特徴とする請求項１から３のいずれかに記載の復号装置。
【請求項５】
前記切替部は、前記複数の符号化ストリームの各々の前記フレームのグループに含まれるフレーム枚数が少ないほど優先度が高くなる優先順位にもとづいて、前記複数の符号化ストリームのいずれか一つに切り替えて前記フレームのグループの符号化データを読み出すことを特徴とする請求項４に記載の復号装置。
【請求項６】
前記切替部は、前記共有メモリ領域内で再生されずに残存するフレームの枚数が少ない符号化ストリームほど優先度が高くなる優先順位にもとづいて、前記複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出すことを特徴とする請求項１から４のいずれかに記載の復号装置。
【請求項７】
前記切替部は、前記複数の符号化ストリームの内、画面に動画像として再生される符号化ストリームを画面に動画像として再生されない符号化ストリームよりも優先する優先順位にもとづいて、前記複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出すことを特徴とする請求項１から４のいずれかに記載の復号装置。
【請求項８】
前記切替部は、画面に表示される複数の動画像の品質が異なる場合、動画像としての表示品質が高い符号化ストリームほど優先度が高くなる優先順位にもとづいて、前記複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出すことを特徴とする請求項１から４のいずれかに記載の復号装置。
【請求項９】
前記切替部は、画面に表示される複数の動画像の配列がユーザの操作に応じてスクロールする場合、現時点で画面に動画像として表示されている符号化ストリームをユーザのスクロール操作により次に画面に動画像が表示されることになる符号化ストリームよりも優先する優先順位にもとづいて、前記複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出すことを特徴とする請求項１から４のいずれかに記載の復号装置。
【請求項１０】
動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出すステップと、
読み出された前記符号化ストリームの符号化データを復号してフレームを生成するステップと、
前記複数の符号化ストリーム間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを一時的に保持するための共有メモリ領域に、各符号化ストリームから復号されたフレームを、いずれの符号化ストリームから復号されたものであっても、当該共有メモリ領域内の格納位置を制限せずに、いずれかの空き位置に格納するステップとを含む復号方法。
【請求項１１】
動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出す切替機能と、
前記切替機能により選択された前記符号化ストリームの符号化データを復号してフレームを生成する復号機能と、
前記複数の符号化ストリーム間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを一時的に保持するための共有メモリ領域に、各符号化ストリームから復号されたフレームを、いずれの符号化ストリームから復号されたものであっても、当該共有メモリ領域内の格納位置を制限せずに、いずれかの空き位置に格納するバッファリング機能とをコンピュータに実現させることを特徴とするプログラム。
【請求項１２】
前記共有メモリ領域内に格納される前記複数の符号化ストリームから復号されたフレームについて、共有メモリ領域内のフレームの格納位置に関する情報とフレームの再生順序に関する情報を前記複数の符号化ストリーム毎にバッファ管理テーブルに保持するバッファ管理機能と、
前記バッファ管理テーブルの前記格納位置に関する情報と前記再生順序に関する情報を参照して、前記複数の符号化ストリームの内、少なくとも一つ以上の符号化ストリームから復号されたフレームを前記共有メモリ領域から読み出して画面に動画像として同時に表示させる表示制御機能とをさらにコンピュータに実現させることを特徴とする請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、動画像が符号化されたストリームを復号する復号装置および復号方法に関する。
【背景技術】
【０００２】
ＤＶＤ（Digital Versatile Disc）などの大容量の光ディスクメディアを再生可能なメディアプレーヤやパーソナルコンピュータが普及しており、高品質の映像コンテンツがＤＶＤなどに格納されて提供されている。また、テレビ放送などで提供されるコンテンツをＤＶＤに録画することのできるＤＶＤレコーダも普及している。ＤＶＤなどの記録媒体にビデオやオーディオを蓄積するためには圧縮符号化技術が不可欠であり、ＭＰＥＧ（Moving Picture Experts Group）やＨ．２６４／ＡＶＣ（Advanced Video Coding）のような動画像圧縮符号化技術の規格がある。圧縮符号化されたビデオデータとオーディオデータは、再生時刻情報など同期再生に必要なヘッダ情報とともに一つのストリームに多重化されて、記録媒体に蓄積される。
【０００３】
ＤＶＤプレイヤ、パーソナルコンピュータ、携帯端末などで映像コンテンツを再生する際、ハードディスクや記録媒体に格納された複数の映像コンテンツをまず動画サムネイルとして同時に画面に一覧表示し、ユーザに閲覧させるインタフェースが提供されることがある。ユーザが動画サムネイルの一覧表示において、いずれかの動画サムネイルを選択すると、その動画がフルサイズで再生される。
【０００４】
特許文献１には、複数の圧縮画像データを伸張して同時に表示する画像表示装置が開示されている。
【特許文献１】特開平７−２７１３４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
複数の動画サムネイルを一覧表示するためには、複数のデコーダを用いて同時に表示する複数の動画ストリームを並列に復号する必要があり、デコーダをハードウェアで実装する場合は回路規模が大きくなり、ソフトウェアで実装する場合は、メモリやＣＰＵなどのシステムリソースを大量に消費する。また、同時に表示する動画ストリームの本数に応じてデコーダの個数を調整できるスケーラブルな復号処理の構成を容易する必要があるが、ハードウェアでそのようなスケーラビリティをもつ復号回路を実装することは困難である。またソフトウェアでスケーラビリティをもたせるには並列処理を実装する必要があり、高度で複雑なプログラミングが要求される。また、複数の動画ストリームを並列に復号処理する過程で、システムリソースが枯渇した場合、同時に表示すべき動画ストリームの一部の復号が間に合わず、フレーム落ちが生じることもある。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、動画像が符号化された複数のストリームを同時に効率良く再生することができる復号装置および復号方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様の復号装置は、動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出す切替部と、
前記切替部により選択された前記符号化ストリームの符号化データを復号してフレームを生成するデコーダと、各符号化ストリームから復号されたフレームを一時的にバッファするフレームバッファとを含む。前記フレームバッファは、前記複数の符号化ストリームの間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを一時的に保持するための共有メモリ領域を含み、いずれの符号化ストリームから復号されたフレームであっても、当該共有メモリ領域内の格納位置の制限を受けることなく、いずれの空き領域にも格納可能に構成される。
【０００８】
本発明の別の態様は復号方法である。この方法は、動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出すステップと、読み出された前記符号化ストリームの符号化データを復号してフレームを生成するステップと、前記複数の符号化ストリーム間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを一時的に保持するための共有メモリ領域に、各符号化ストリームから復号されたフレームを、いずれの符号化ストリームから復号されたものであっても、当該共有メモリ領域内の格納位置を制限せずに、いずれかの空き位置に格納するステップとを含む。
【０００９】
本発明のさらに別の態様はプログラムである。このプログラムは、動画像のフレームが符号化された符号化ストリームが複数与えられた場合、複数の符号化ストリームのいずれか一つに切り替えて前記符号化ストリームの符号化データを読み出す切替機能と、前記切替機能により選択された前記符号化ストリームの符号化データを復号してフレームを生成する復号機能と、前記複数の符号化ストリーム間で共有される単一のメモリ領域であって、前記複数の符号化ストリームの各々から復号された所定枚数のフレームを一時的に保持するための共有メモリ領域に、各符号化ストリームから復号されたフレームを、いずれの符号化ストリームから復号されたものであっても、当該共有メモリ領域内の格納位置を制限せずに、いずれかの空き位置に格納するバッファリング機能とをコンピュータに実現させる。
【００１０】
このプログラムは、ビデオやオーディオのデコーダのライブラリとして提供されてもよく、あるいはビデオやオーディオのデコーダ等のハードウエア資源の基本的な制御を行なうために機器に組み込まれるファームウエアの一部として提供されてもよい。このファームウエアは、たとえば、機器内のＲＯＭやフラッシュメモリなどの半導体メモリに格納される。このファームウエアを提供するため、あるいはファームウエアの一部をアップデートするために、このプログラムを記録したコンピュータ読み取り可能な記録媒体が提供されてもよく、また、このプログラムが通信回線で伝送されてもよい。
【００１１】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１２】
本発明によれば、動画像が符号化された複数のストリームを同時に効率良く再生することができる。
【発明を実施するための最良の形態】
【００１３】
図１は、実施の形態に係る復号装置１００の構成図である。同図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００１４】
復号装置１００は、オーディオデータとビデオデータが符号化されて多重化されたストリーム（以下、「符号化ストリーム」または単に「ストリーム」と呼ぶ）を復号して再生する。符号化ストリームにおいて、ビデオデータはＭＰＥＧ（Moving Picture Experts Group）−２やＭＰＥＧ−４、Ｈ．２６４／ＡＶＣなどの規格にしたがって符号化されており、オーディオデータはＭＰＥＧオーディオなどの規格にしたがって符号化されている。復号装置１００は、符号化ストリームからオーディオデータとビデオデータを分離した上でそれぞれを復号してオーディオとビデオを同期再生する。
【００１５】
復号装置１００は、複数の符号化ストリームの各々からフレームを復号して、ディスプレイ１１０の画面に複数の動画サムネイルを同時に表示する。ユーザはディスプレイ１１０の画面上で複数の動画サムネイルを閲覧し、いずれかの動画サムネイルを選択することで、選択した動画をフルサイズで再生することができる。このとき、オーディオも同期して再生される。
【００１６】
ストレージ１０には、複数の符号化ストリームが記録される。ストレージ１０は、一例として、ハードディスクなどの大容量記録装置やＤＶＤなどの記録媒体である。同図では、ストレージ１０が復号装置１００の内部にあるが、ストレージ１０が外部サーバにあって、ネットワーク経由で外部サーバのストレージ１０から符号化ストリームを読み出す構成にしてもよい。
【００１７】
ストレージ１０から読み出された複数の符号化ストリームは、復号処理のために一時的にストリームバッファ１２に記憶される。ストリームバッファ１２には、複数の符号化ストリームのデータが順に配置されており、バイト位置を指定することにより、ある符号化ストリームのデータをそのバイト位置から読み出すことができる。
【００１８】
符号化ストリームには、ビデオデータとオーディオデータが多重化されており、一般にはビデオデータは、ＧＯＰ（Group of Picture）と呼ばれる符号化単位でフレーム間予測符号化されている。符号化ストリームのヘッダには、ストリーム属性とＧＯＰの区切りを示すエントリポイントのマップ情報が格納されており、エントリポイントのマップ情報によってＧＯＰの区切りとなるバイト位置を知ることができる。エントリポイントのマップ情報は、符号化ストリームのヘッダ情報として与えられる以外に、符号化ストリームとは別ファイルで与えられてもよい。
【００１９】
Ｈ．２６４／ＡＶＣでは、ＧＯＰの区切りには、ＩＤＲ（Instantaneous Decoding Refresh）フレームと呼ばれるフレームが存在する。ＩＤＲフレームは、当該フレームよりも前のフレームの情報がなくても、それ以降のフレームの復号が可能となるフレームである。ＩＤＲフレームが読み出されると、フレーム間予測符号化で参照するフレームを一時的に保持していたバッファがリセットされる。言い換えれば、ＩＤＲフレームは、後続のフレームに自分より前のフレームを参照する事を禁止するフレームである。ＩＤＲフレームで区切られるＧＯＰはクローズドＧＯＰと呼ばれ、そのＧＯＰを構成するフレームのみを参照してフレーム間予測符号化がなされる。
【００２０】
時間的に前のＧＯＰに含まれる画像を参照画像として利用しないＧＯＰがクローズドＧＯＰと呼ばれるのに対して、時間的に前のＧＯＰに含まれる画像を参照画像として利用するＧＯＰはオープンＧＯＰと呼ばれる。フレーム間予測符号化がなされた動画ストリームにおいて、クローズドＧＯＰ内では他のＧＯＰのフレームを参照することなく復号が可能であり、クローズドＧＯＰは単独で復号可能な最小単位の符号化フレームの集合を与える。
【００２１】
切替部１４は、ストリームバッファ１２に記憶された複数の符号化ストリームのいずれか一つに切り替えながら、いずれか一つの符号化ストリームのデータをＧＯＰ単位で読み出し、多重化分離部１８に与える。切替部１４は、ある符号化ストリームから一つのＧＯＰを構成するフレームの符号化データを読み出し、一つのＧＯＰの読み出しが終わると、次の符号化ストリームに切り替えてその符号化ストリームから同様に一つのＧＯＰを構成するフレームの符号化データを読み出す。
【００２２】
切替部１４は、ＧＯＰ単位で符号化データを切り出すために、前述のエントリポイントのマップ情報を参照して、シンク（sync）フレームやＨ．２６４／ＡＶＣでいうＩＤＲフレームなど最小復号単位となる画像シーケンスの先頭を示すフレームのバイト位置を検出することでＧＯＰの区切りを検出する。別の方法として、エントリポイントのマップ情報などのメタ情報に頼らずに、符号化ストリーム内に多重化されたビデオストリームのヘッダを先頭から順に解析することでＧＯＰの区切りを検出してもよい。
【００２３】
切替部１４がＧＯＰ単位で複数の符号化ストリームを切り替えることにより、以下、多重化分離部１８、ビデオデコーダ２０およびオーディオデコーダ２２において、切替部１４により選択された符号化ストリームがＧＯＰ単位で復号される。クローズドＧＯＰの場合、他のＧＯＰのフレームを参照することなく、フレーム間予測符号化がなされているため、ＧＯＰ内で完全に閉じて復号を行うことができ、多重化分離部１８、ビデオデコーダ２０およびオーディオデコーダ２２が１つのインスタンスであっても、複数の符号化ストリームをＧＯＰ単位で切り替えながら並行して復号していくことができる。
【００２４】
切替部１４は、ラウンドロビン方式で複数の符号化ストリームを順番に切り替え、いずれか一つの符号化ストリームのデータをＧＯＰ単位で読み出す。あるいは、優先制御部１６が複数の符号化ストリームの間に何らかの優先順位をつけ、切替部１４は優先制御部１６によって指定された優先順位にしたがって、優先度の高い符号化ストリームのデータを優先して読み出してもよい。優先制御部１６の構成はオプションであり、優先制御部１６の構成は省略してもよい。優先制御部１６による優先制御は、後段の処理と関連する場合もあるため、後に具体的な例を説明する。
【００２５】
多重化分離部１８は、切替部１４から供給された符号化ストリームのデータからオーディオの符号化データとビデオの符号化データを分離し、ビデオの符号化データはビデオデコーダ２０に、オーディオの符号化データはオーディオデコーダ２２に与える。
【００２６】
オーディオデコーダ２２は、符号化されたオーディオを復号する。復号されたオーディオは、ビデオデコーダ２０により復号されたビデオのフレームに同期して再生される。オーディオの復号処理や、ビデオとオーディオの同期再生処理については公知の技術を用いることができる。
【００２７】
ビデオデコーダ２０は、切替部１４により選択された符号化ストリームからＧＯＰ単位で読み出されたビデオの符号化データを復号する。ビデオデコーダ２０は、可変長復号部、逆量子化部、逆直交変換部、動き補償部など復号処理に必要な構成を含み、ＧＯＰ内の各符号化フレームを復号してフレームを復元する。ＧＯＰ内のフレームが、フレーム内符号化がなされたＩ（Intra）フレームである場合、フレーム内符号化を復号し、フレーム間予測符号化されたＰ（Predictive）フレームまたはＢ（Bidirectionally predictive）フレームの予測画像を生成する際の参照画像として保持する。ＧＯＰ内のフレームが、ＰフレームまたはＢフレームである場合、その画像データは差分画像であるため、その差分画像と動き補償により得られる予測画像とを加算することにより、元のフレームを復元する。ビデオデコーダ２０は、こうして符号化ストリームから復号されたＧＯＰ内の各フレームをフレームバッファ２６の共有メモリ領域２８に書き込む。
【００２８】
図２は、フレームバッファ２６の共有メモリ領域２８のデータ構造を説明する図である。フレームバッファ２６は、複数の符号化ストリーム間で共有される単一の共有メモリ領域２８を含む。共有メモリ領域２８は、各符号化ストリームからＧＯＰ単位で復号されたフレームを表示するために一時的に保持するものであり、ＧＯＰを構成するフレームの枚数（「ＧＯＰフレーム数」という）Ｍに復号対象の符号化ストリームの本数Ｎを乗算したＭＮ個のフレームを保持するだけの容量を有する。一般にＧＯＰフレーム数は可変であり、符号化ストリーム毎に異なる。そこで、ＧＯＰフレーム数Ｍは、ＧＯＰを構成するフレームの平均的な枚数や取りうる最大枚数で見積もり、共有メモリ領域２８の容量を設計する。
【００２９】
共有メモリ領域２８は、復号されたフレームを保持するためのブロック（同図ではａ〜ｚの記号で表記される）に分かれており、各ブロックのバイト位置を指定することで、そのブロックに対して復号後のフレームデータを読み書きすることができる。共有メモリ領域２８内の各ブロックは、いずれの符号化ストリームから復号されたフレームであっても格納することができ、符号化ストリームによって格納位置が制限されることがない。すなわち、共有メモリ領域２８は複数の符号化ストリームの間で共用される単一のメモリ領域であり、符号化ストリーム毎に格納領域が区分けされているのではない。
【００３０】
Ｎ本のストリームの内、第ｉ番目のストリーム＃ｉについて、第ｊ番目に表示される復号後のフレームをフレーム＃ｉ−ｊと表記する。各ストリームから復号されたフレームは共有メモリ領域２８内の任意の空きブロックに格納することができる。同図では、第１ストリーム＃１のフレーム＃１−１、＃１−２、フレーム＃１−３、フレーム＃１−Ｍは、それぞれ共有メモリ領域２８のブロックａ、ｅ、ｉ、ｔに格納されている。
【００３１】
同様に、第２ストリーム＃２のフレーム＃２−１、＃２−２、フレーム＃２−Ｍは、それぞれ共有メモリ領域２８のブロックｂ、ｃ、ｓに格納されており、第Ｎストリーム＃Ｎのフレーム＃Ｎ−１、フレーム＃Ｎ−Ｍは、それぞれ共有メモリ領域２８のブロックｈ、ｚに格納されている。
【００３２】
共有メモリ領域２８においてフレームが格納されたブロックはそのフレームの再生が終わると無効化されて空きブロックとなる。空きブロックは他のストリームのフレームを保持するために使われる。
【００３３】
ビデオデコーダ２０は、フレームバッファ２６の共有メモリ領域２８の空きブロックに各ストリームから復号されたフレームを書き込む。このとき、ビデオデコーダ２０は、共有メモリ領域２８内のフレームの格納位置に関する情報、フレームの再生順序に関する情報、およびフレームの属性をストリーム毎にバッファ管理テーブル２４に記録する。
【００３４】
図３は、バッファ管理テーブル２４のデータ構造を説明する図である。バッファ管理テーブル２４は、共有メモリ領域２８の空きブロック情報と、復号対象であるストリーム＃１〜＃Ｎの管理情報とを格納する。空きブロック情報は、共有メモリ領域２８においてフレームの再生が終了して無効化された空きブロック（同図の例では、ブロックｊ、ｋ、ｍ、ｐ）のバイト位置のリストである。空きブロック情報は、ブロック数分の無効フラグの配列に空きであるかどうかを示すバイナリデータを保持することで管理してもよい。ビデオデコーダ２０は、バッファ管理テーブル２４の空きブロック情報を参照して、各ストリームから復号されたフレームをＧＯＰ単位で空きブロックに書き込む。
【００３５】
各ストリーム＃１〜＃Ｎの管理情報は、共有メモリ領域２８に再生待ちの状態で格納されている復号されたフレームの格納先ブロックとフレーム属性を含む。たとえば、図２の共有メモリ領域２８の例に対応して、ストリーム＃１の管理情報は、ＧＯＰを構成するフレームのフレーム番号１、２、３、…、Ｍに格納先ブロックａ、ｅ、ｉ、…、ｔのバイト位置を対応づけたものであり、各フレームがＩピクチャ、Ｐピクチャ、Ｂピクチャのいずれであるかを示す属性も合わせて対応づけられる。フレーム番号は再生順序を示しており、各ストリームについてフレーム番号の順にフレーム番号に対応づけられた格納先ブロックからフレームを読み出して表示することで、各ストリームを動画として再生することができる。
【００３６】
表示制御部３０は、バッファ管理テーブル２４を参照して、各符号化ストリームから復号されたフレームの再生順序と格納位置に関する情報を取得する。そして、表示制御部３０は、ディスプレイ１１０の垂直同期信号（ＶＳＹＮＣ；vertical synchronizing signal）に同期してフレームバッファ２６の共有メモリ領域２８から各ストリームのフレームを１枚ずつ読み出し、ディスプレイ１１０の画面に各ストリームの動画サムネイルを同時に表示する制御を行う。表示制御部３０は、垂直同期信号によって指示される垂直同期周波数でフレームバッファ２６から各ストリームの次のフレームを読み出し、画面に表示された各ストリームの動画サムネイルをリフレッシュする。表示制御部３０は、２回の垂直同期信号（２ＶＳＹＮＣ）毎に動画サムネイルをリフレッシュしてもよい。たとえば、プログレッシブ方式の場合、（１／６０）秒の周期で与えられる垂直同期信号毎に画面を１回リフレッシュするが、インタレース方式の場合、２回の垂直同期信号毎、すなわち（１／３０）秒の周期で１回、偶数番号の走査ラインからなるフィールドまたは奇数番号の走査ラインからなるフィールドを交互にリフレッシュする。
【００３７】
ここで、各ストリームのフレームレートに違いがある場合は、表示制御部３０は、各ストリームのフレームレートに応じた周期でフレームバッファ２６の共有メモリ領域２８から各ストリームのフレームを１枚ずつ読み出し、ディスプレイ１１０のＶＲＡＭなどに書き込むことで、各ストリームのフレームレートで動画をディスプレイ１１０に表示することができる。これにより、たとえば、２４フレーム／秒のストリームと３０フレーム／秒のストリームが混合している場合にも対応することができる。なお、この場合でも、ＶＲＡＭなどのフレームメモリからピクセルデータが読み出されて、ディスプレイ１１０に出力されるタイミング、すなわちリフレッシュレートは、前述の垂直同期信号で制御される。
【００３８】
表示制御部３０は、各ストリームについて表示が終了したフレームについてはバッファ管理テーブル２４のフレーム番号を各ストリームの管理情報から消去し、そのフレーム番号に対応づけられた格納先ブロックを空きブロックに変更してバッファ管理テーブル２４の空きブロック情報にその空きブロックを追加する。
【００３９】
表示制御部３０の動作により、フレームバッファ２６の共有メモリ領域２８から垂直同期信号のタイミングで各ストリーム＃１〜＃Ｎの次に表示すべきフレームが１枚ずつ読み出され、各ストリームのフレームが格納されていたブロックが空きブロックになる。すなわち、同時に動画サムネイルとして表示されるストリーム数（「同時表示ストリーム数」）Ｎと同じ数のフレームが同時に共有メモリ領域２８から読み出され、Ｎ個の空きブロックが生じる。
【００４０】
同時表示ストリーム数Ｎが、ＧＯＰフレーム数Ｍ以上であれば、表示制御部３０が垂直同期信号に同期して動画をリフレッシュの度に、共有メモリ領域２８には１ＧＯＰ内のフレームを格納するだけの空きブロックが生じることになり、ビデオデコーダ２０はあるストリームからＧＯＰ単位で復号されたフレームの集合をこれらの空きブロックに書き込むことができる。同時表示ストリーム数ＮがＧＯＰフレーム数Ｍの半分であれば、表示制御部３０が２回リフレッシュすると、ビデオデコーダ２０は１ＧＯＰのフレーム集合を空きブロックに書き込むことができる。
【００４１】
このように、表示制御部３０が複数のストリームから復号される動画を同時に画面にサムネイル表示することから、フレームバッファ２６からは各ストリームのフレームが１枚ずつ消費され、同時に複数の空きブロックが生じる。この点に着目して、本実施の形態では、フレームバッファ２６に共有メモリ領域２８を設け、同時に表示されるストリーム間で共有するようにし、いずれのストリームのフレームでも格納位置の制約を受けることなく、書き込むことができるようにした。これにより、同時に表示されるストリームを並列に復号処理をする代わりに、単一のビデオデコーダ２０が切替部１４により選択された一つのストリームについてのみＧＯＰ単位の復号処理を行っていても、同時に表示されるストリームの動画サムネイルが一斉にリフレッシュされるのを受けて、選択されたストリームから復号された１ＧＯＰ内のフレーム集合を共有メモリ領域２８の空きブロックに一気に書き込むことができ、ビデオデコーダ２０は次のストリームに切り替えてＧＯＰ単位の復号処理を続けることができる。
【００４２】
共有メモリ領域２８を中心に見れば、表示制御部３０は、各ストリームの次のフレームを共有メモリ領域２８から読み出す処理を行い、ビデオデコーダ２０は、切替部１４により選択されたストリームについてＧＯＰ単位で復号されたフレームを共有メモリ領域２８の空きブロックに書き込む処理を行う。表示制御部３０による共有メモリ領域２８からの読み出し処理と、ビデオデコーダ２０による共有メモリ領域２８への書き込み処理は非同期に行われる。
【００４３】
表示制御部３０は、垂直同期信号が与えられる周期で各ストリームのフレームを読み出す一方、ビデオデコーダ２０は、共有メモリ領域２８に１ＧＯＰ分の空きブロックがないときは、１ＧＯＰ分の空きブロックが生じるまで復号処理をサスペンドする。表示制御部３０は、画面に表示している動画サムネイルの本数分のストリームのフレームを同時に共有メモリ領域２８から読み出すため、共有メモリ領域２８には１ＧＯＰ分の空きブロックがすぐに生じる。ビデオデコーダ２０は、１ＧＯＰ分の空きブロックが生じると直ちに既に復号した１ＧＯＰ分のフレームを書き込み、サスペンドしていたプロセスをレジュームし、その後の他のストリームの復号処理に移行する。
【００４４】
もっとも、実装上は、ビデオデコーダ２０は自身で内部バッファをもつため、フレームバッファ２６の共有メモリ領域２８に１ＧＯＰ分の空きブロックがないときでも、プロセスをサスペンドせずにビデオデコーダ２０は復号処理を進め、復号されたフレームを内部バッファに蓄積しておくことができる。また、共有メモリ領域２８に１ＧＯＰ分の空きブロックがなくても、ビデオデコーダ２０は復号されたフレームを可能な限り、内部バッファから共有メモリ領域２８の空きブロックに移すことができる。１ＧＯＰに含まれるフレームの枚数は実際に復号してみないとわからないため、ビデオデコーダ２０は共有メモリ領域２８の空きブロックの数に関係なく、可能な限りデコード処理を進めることが効率的であり、システムリソースを有効に用いることができる。以下の図４Ａ〜図４Ｆでは、説明が必要以上に煩雑にならないように、このような実装上の工夫に直接触れることなく、動作を説明するが、図４Ａ〜図４Ｆにおいて、ここで述べた実装上の工夫を加えれば、さらに効率を上げることができることに留意する。
【００４５】
表示制御部３０は、ＧＯＰ単位で復号されたフレームを全部読み出して再生が終わると、次のＧＯＰのフレームデータを必要とする。ビデオデコーダ２０は、表示制御部３０が次のＧＯＰに移る前に、画面に同時に表示されているすべてのストリームについて次のＧＯＰの復号を完了して、共有メモリ領域２８にフレームデータを書き込んでいなければならない。
【００４６】
同時表示ストリーム数がＮ、ＧＯＰフレーム数がＭのとき、表示制御部３０がＭ枚のフレームをリフレッシュする時間、たとえば、垂直同期信号の周期がＬ秒であるとすると、ＬＭ秒の間に、ビデオデコーダ２０は、Ｎ本の符号化ストリームのすべてについて次の１ＧＯＰ分の復号処理、すなわち合計ＭＮ個のフレームの復号を完了し、共有メモリ領域２８に書き込んでいないといけない。すなわち、ビデオデコーダ２０には、ＬＭ秒でＭＮ個、すなわちＬ秒でＮ個のフレームを復号する性能が要求される。たとえば、同時表示動画サムネイル数Ｎが１０、垂直同期信号の周期Ｌが３３ミリ秒であるとすると、１秒で約３００枚のフレームを復号する性能が要求される。
【００４７】
ビデオデコーダ２０は、上記の性能が保証される限り、ハードウェアもしくはソフトウェア、あるいは両者の組合せのいずれで実現されてもよい。たとえば、ビデオデコーダ２０は、高性能なＣＰＵもしくはマルチプロセッサ、あるいは複数のプロセッサコアを一つのパッケージに集積したマルチコアプロセッサ上で実行されるプログラムであってもよい。あるいは、ビデオデコーダ２０は、ＭＰＥＧなどの規格にしたがって復号処理を行う専用回路であってもよい。
【００４８】
図４Ａ〜図４Ｆは、共有メモリ領域２８に対してフレームが読み書きされる様子を時系列順に説明する図である。これらの図を参照して、ビデオデコーダ２０によって共有メモリ領域２８に各符号化ストリームから復号されたフレームが書き込まれ、表示制御部３０によって共有メモリ領域２８からフレームが読み出されて再生される手順を説明する。ここでは、簡単のため、同時表示ストリーム数Ｎは３、ＧＯＰフレーム数Ｍは４または５であるとして説明する。
【００４９】
図４Ａは、共有メモリ領域２８に各ストリームのＧＯＰを構成するフレームが書き込まれた状態を示す図である。共有メモリ領域２８は１５個のブロックａ〜ｏを含み、最初はすべてのブロックが空いている。同図に示すように、第１ストリーム＃１の最初のＧＯＰを構成する５枚のフレーム＃１−１〜＃１−５は共有メモリ領域２８の５個の空きブロックａ〜ｅに格納され、第２ストリーム＃２の最初のＧＯＰを構成する５枚のフレーム＃２−１〜＃２−５は共有メモリ領域２８の５個の空きブロックｆ〜ｊに格納され、第３ストリーム＃３の最初のＧＯＰを構成する５枚のフレーム＃３−１〜＃３−５は共有メモリ領域２８の５個の空きブロックｋ〜ｏに格納される。
【００５０】
図４Ｂは、最初の垂直同期信号に同期して図４Ａに示した状態の共有メモリ領域２８から各ストリームの最初のフレームが１枚ずつ読み出されて表示された状態を示す図である。表示制御部３０は、最初の垂直同期信号に同期して、共有メモリ領域２８から第１ストリーム＃１の最初のフレーム＃１−１、第２ストリーム＃２の最初のフレーム＃２−１、第３ストリーム＃３の最初のフレーム＃３−１をそれぞれ読み出し、ディスプレイ１１０の画面に動画サムネイル１１１、１１２、１１３として表示する。共有メモリ領域２８において各ストリーム＃１、＃２、＃３の最初のフレーム＃１−１、＃２−１、＃３−１が格納されていたブロックａ、ｆ、ｋは空きブロックになる。もっとも、フレームレートの違いから、次のリフレッシュのタイミングでも引き続き、これらのブロックａ、ｆ、ｋに格納されていたフレームデータが必要で、そのデータを共有メモリ領域２８から読み出す構成であれば、これらのブロックを空きブロックとしなくてもよい。次のリフレッシュのタイミングでフレームデータが不要となるブロックだけを空きブロックとすればよい。
【００５１】
図４Ｃは、２回目の垂直同期信号に同期して図４Ｂに示した状態の共有メモリ領域２８から各ストリームの２番目のフレームが１枚ずつ読み出されて表示された状態を示す図である。表示制御部３０は、２回目の垂直同期信号に同期して、共有メモリ領域２８から第１ストリーム＃１の２番目のフレーム＃１−２、第２ストリーム＃２の２番目のフレーム＃２−２、第３ストリーム＃３の２番目のフレーム＃３−２をそれぞれ読み出し、ディスプレイ１１０の画面に表示された各ストリーム＃１、＃２、＃３の動画サムネイル１１１、１１２、１１３をそれぞれの２番目のフレームで更新する。共有メモリ領域２８において各ストリーム＃１、＃２、＃３の２番目のフレーム＃１−２、＃２−２、＃３−２が格納されていたブロックｂ、ｇ、ｉも空きブロックとなる。
【００５２】
図４Ｄは、図４Ｃに示した状態の共有メモリ領域２８の空きブロックに第１ストリーム＃１の次のＧＯＰを構成するフレームが書き込まれた状態を示す図である。表示制御部３０によりディスプレイ１１０の画面に各ストリーム＃１、＃２、＃３の２番目のフレーム＃１−２、＃２−２、＃３−２がサムネイル表示された後、ビデオデコーダ２０が第１ストリーム＃１について次のＧＯＰを構成する５枚のフレーム＃１−６〜＃１−１０の復号を完了したとする。ビデオデコーダ２０は、新たに復号された５枚のフレーム＃１−６〜＃１−１０を共有メモリ領域２８の空きブロックに書き込む。共有メモリ領域２８において６個のブロックａ、ｂ、ｆ、ｇ、ｋ、ｌが空き状態であった（図４Ｃ）から、ビデオデコーダ２０は、第１ストリーム＃１の次のＧＯＰ内の５枚のフレーム＃１−６〜＃１−１０を５個の空きブロックａ、ｂ、ｆ、ｇ、ｋに格納する。
【００５３】
図４Ｅは、３回目の垂直同期信号に同期して図４Ｄに示した状態の共有メモリ領域２８から各ストリームの３番目のフレームが１枚ずつ読み出されて表示された状態を示す図である。表示制御部３０は、３回目の垂直同期信号に同期して、共有メモリ領域２８から第１ストリーム＃１の３番目のフレーム＃１−３、第２ストリーム＃２の３番目のフレーム＃２−３、第３ストリーム＃３の２番目のフレーム＃３−３をそれぞれ読み出し、ディスプレイ１１０の画面の動画サムネイル１１１、１１２、１１３を更新する。共有メモリ領域２８において各ストリーム＃１、＃２、＃３の３番目のフレーム＃１−３、＃２−３、＃３−３が格納されていたブロックｃ、ｈ、ｍが新たに空きブロックになる。これにより、既に空いていたブロックｌも含めて４つのブロックが空き状態になる。
【００５４】
図４Ｆは、図４Ｅに示した状態の共有メモリ領域２８の空きブロックに第２ストリーム＃２の次のＧＯＰを構成するフレームが書き込まれた状態を示す図である。ディスプレイ１１０の画面に各ストリームの３番目のフレームがサムネイル表示された後、第２ストリーム＃２について次のＧＯＰを構成する４枚のフレーム＃２−６〜＃２−９が復号されたとする。共有メモリ領域２８において４個のブロックｃ、ｈ、ｌ、ｍが空き状態であった（図４Ｅ）から、第２ストリーム＃２の次のＧＯＰ内の４枚のフレーム＃２−６〜＃２−９はこれら４個の空きブロックｃ、ｈ、ｌ、ｍに格納される。
【００５５】
ここで、実装上の工夫について触れると、復号するまではＧＯＰを構成するフレーム数はわからないから、ビデオデコーダ２０は、第２ストリーム＃２について次のＧＯＰの復号を進め、少なくとも最初の４枚のフレームについては共有メモリ領域２８の４個の空きブロックに順次格納していく。仮に復号の結果、ＧＯＰを構成するフレームが４枚でなく、５枚であったという場合でも、最初の４枚のフレームについては復号して共有メモリ領域２８にバッファリングすることができる。また、ビデオデコーダ２０内部にもバッファがあるから、共有メモリ領域２８に空きがなくても、ビデオデコーダ２０は、１ＧＯＰ分の復号を終え、内部バッファに格納しておくこともできる。
【００５６】
また、ビデオデコーダ２０の復号処理のサスペンドとレジュームを制御する機構として、共有メモリ領域２８内の空きブロック数と、復号されたＧＯＰを構成するフレーム数を比較し、空きブロック数がＧＯＰフレーム数よりも大きい場合には、ＧＯＰを構成するフレームをすべて共有メモリ領域２８に書き込んで、次のストリームの復号処理に切り替え、空きブロック数がＧＯＰフレーム数よりも小さい場合には、空きブロック数がＧＯＰフレーム数に達するまでそれ以降の復号処理をサスペンドする制御部を設けてもよい。
【００５７】
このように、表示制御部３０が同時に表示される３つのストリーム＃１〜＃３のフレームを１枚ずつ共有メモリ領域２８から読み出して動画サムネイル１１１〜１１３を更新すると、３個の空きブロックが生じ、次の垂直同期信号に同期して動画サムネイル１１１〜１１３を更新すると、３つのストリーム＃１〜＃３の次のフレームが１枚ずつ共有メモリ領域２８から読み出されてさらに３個の空きブロックが生じる。ビデオデコーダ２０があるストリームのＧＯＰを復号し、ＧＯＰ内のすべてのフレームを書き込むだけの空きブロックが共有メモリ領域２８内に生じたならば、ビデオデコーダ２０は直ちにそのＧＯＰ内のフレームを空きブロックに書き込み、次のストリームのＧＯＰの復号処理を進める。ビデオデコーダ２０は、共有メモリ領域２８に１ＧＯＰを構成するフレームを格納するだけの空きブロックが生じるまでは復号処理を中断し、待ち状態になる。
【００５８】
本実施の形態では、フレームバッファ２６において複数のストリームで共有される共有メモリ領域２８を設け、いずれのストリームから復号されたフレームであっても区別することなく、任意の空きブロックに格納されるように構成した。画面に同時に複数の動画サムネイルを表示することにより、動画サムネイルがリフレッシュされる度に複数のフレームが同時に共有メモリ領域２８から読み出され、共有メモリ領域２８に複数の空きブロックが不連続に発生する。ビデオデコーダ２０は、復号されたＧＯＰ単位のフレームをこの空きブロックに非同期に書き込んで、次の符号化ストリームのＧＯＰの復号処理を進めることができる。
【００５９】
ここで、フレームバッファ２６内に共有メモリ領域２８を設けた意義をより良く理解するため、図５Ａ〜図５Ｄを参照して、フレームバッファ２６内に共有メモリ領域２８を設けず、ストリーム毎に独立した専用メモリ領域を設けた場合のフレームの読み書きの手順を時系列順に説明する。この場合、フレームバッファ２６において、ストリーム毎にメモリ領域が区分けされ、あるストリーム用に割り当てられたメモリ領域は、そのストリームから復号されたフレームのみを格納し、他のストリームから復号されたフレームを格納することはできないという制約が設けられる。
【００６０】
図５Ａは、ストリーム毎に独立に設けられた専用メモリ領域に各ストリームのＧＯＰを構成するフレームが書き込まれた状態を示す図である。フレームバッファ２６には、第１ストリーム＃１用の専用メモリ領域（「第１専用メモリ領域」と呼ぶ）２９ａ、第２ストリーム＃２用の専用メモリ領域（「第２専用メモリ領域」と呼ぶ）２９ｂ、第３ストリーム＃３用の専用メモリ領域（「第３専用メモリ領域」と呼ぶ）２９ｃが独立に設けられる。第１、第２、第３専用メモリ領域２９ａ、２９ｂ、２９ｃはそれぞれ５個のブロック１ａ〜１ｅ、２ａ〜２ｅ、３ａ〜３ｅを含み、これらのブロックは、それぞれのストリームのフレームだけを格納するために用いられ、他のストリームのフレームを格納することはできない。
【００６１】
第１ストリーム＃１のＧＯＰを構成する５枚のフレーム＃１−１〜＃１−５は、第１専用メモリ領域２９ａの５個のブロック１ａ〜１ｅに格納される。同様に、第２ストリーム＃２のＧＯＰを構成する５枚のフレーム＃２−１〜＃２−５は、第２専用メモリ領域２９ｂの５個のブロック２ａ〜２ｅに、第３ストリーム＃３のＧＯＰを構成する５枚のフレーム＃３−１〜＃３−５は、第３専用メモリ領域２９ｃの５個のブロック３ａ〜３ｅに格納される。
【００６２】
図５Ｂは、最初の垂直同期信号に同期して図５Ａに示した状態の各専用メモリ領域２９ａ、２９ｂ、２９ｃから各ストリームの最初のフレームが１枚ずつ読み出されて表示された状態を示す図である。最初の垂直同期信号に同期して各専用メモリ領域２９ａ、２９ｂ、２９ｃから最初のフレーム＃１−１、＃２−１、＃３−１が読み出され、画面に動画サムネイル１１１、１１２、１１３が表示される。このとき、各専用メモリ領域２９ａ、２９ｂ、２９ｃにはそれぞれ一つの空きブロック１ａ、２ａ、３ａが生じる。
【００６３】
図５Ｃは、２回目の垂直同期信号に同期して図５Ｂに示した状態の各専用メモリ領域２９ａ、２９ｂ、２９ｃから各ストリームの２番目のフレームが１枚ずつ読み出されて表示された状態を示す図である。２回目の垂直同期信号に同期して各専用メモリ領域２９ａ、２９ｂ、２９ｃから２番目のフレーム＃１−２、＃２−２、＃３−２が読み出され、画面の動画サムネイル１１１、１１２、１１３が更新される。各専用メモリ領域２９ａ、２９ｂ、２９ｃにはもう一つ空きブロック１ｂ、２ｂ、３ｂが生じる。
【００６４】
この時点で、第１ストリーム＃１の次のＧＯＰを構成する５枚のフレーム＃１−６〜＃１−１０が復号されたとする。第１専用メモリ領域２９ａに２個の空きブロック１ａ、１ｂ、第２専用メモリ領域２９ｂに２個の空きブロック２ａ、２ｂ、第３専用メモリ領域２９ｃに２個の空きブロック３ａ、３ｂがあり、合計で６個の空きブロックがある。しかし、第１ストリーム＃１の５枚のフレーム＃１−６〜＃１−１０は、第１専用メモリ領域２９ａにしか格納することができないため、これらのフレームはフレームバッファ２６に書き込むことができず、ビデオデコーダ２０は待ち状態となり、次のストリームの復号処理に進むことができない。
【００６５】
図５Ｄは、３〜５回目の垂直同期信号を経て各専用メモリ領域２９ａ〜２９ｃから各ストリームの残りのフレームがすべて読み出された状態を示す図である。同図に示すように、第１、第２、第３ストリーム＃１、＃２、＃３の５番目のフレーム＃１−５、＃２−５、＃３−５がそれぞれ第１、第２、第３専用メモリ領域２９ａ、２９ｂ、２９ｃから読み出されて画面の動画サムネイル１１１、１１２、１１３が更新されるまでは、第１専用メモリ領域に５個の空きブロックが生じない。このときようやく、第１ストリーム＃１の次のＧＯＰを構成する５枚のフレーム＃１−６〜＃１−１０が第１専用メモリ領域２９ａに書き込まれ、ビデオデコーダ２０は次の符号化ストリームの復号処理を進めることができるようになる。
【００６６】
しかし、この時点で第２、第３ストリーム＃２、＃３についてはまだ次のＧＯＰの復号処理が行われていないため、第２、第３専用メモリ領域２９ｂ、２９ｃには表示すべきフレームがバッファリングされていない。６回目の垂直同期信号のタイミングで動画サムネイルを更新するとき、第１ストリーム＃１については画像を更新できるが、第２、第３ストリーム＃２、＃３については画像を更新することができず、フレームが欠落する。
【００６７】
このように、フレームバッファ２６にストリーム毎に別々に独立した専用メモリ領域を設けると、専用メモリ領域に１ＧＯＰのフレームを格納できるたけの空き領域が生じるまでに時間がかかり、その間、ビデオデコーダ２０の復号処理が停止し、次のストリームに切り替えて復号処理を進めることができないから、複数の動画サムネイルを同時にフレーム落ちさせることなく表示することが難しくなる。そこで、本実施の形態では、フレームバッファ２６内に共有メモリ領域２８を設けて、複数の符号化ストリームの間で区別することなくフレームを空きブロックに書き込むことができるように構成し、同時に複数の動画サムネイルをフレーム落ちさせることなく表示することを可能にした。
【００６８】
なお、本実施の形態のフレームバッファ２６は、複数のストリームの各々から復号された１ＧＯＰ分のフレームデータを蓄積しておくための「バッファプール」を意味し、ディスプレイに表示されるピクセルデータを保持するＶＲＡＭ（Video Random Access Memory）とは異なる意味であることに留意する。ディスプレイ１１０にピクセルデータを出力するためのＶＲＡＭなどのフレームメモリがフレームバッファ２６とは別途設けられもよく、あるいは、フレームバッファ２６がディスプレイ１１０にピクセルデータを出力するためのフレームメモリとして流用されてもよい。
【００６９】
また、ビデオデコーダ２０はそれ自身で復号処理のためのバッファを内部にもっており、フレーム間予測符号化されたフレームの復号に必要な参照フレームのデータをその内部バッファに保持することができる。したがって、ビデオデコーダ２０は、クローズドＧＯＰであるかオープンＧＯＰであるかを問わず、復号することができる。オープンＧＯＰ、すなわち他のＧＯＰのフレームの参照が必要なＧＯＰの場合、ビデオデコーダ２０は、復号の際に参照が必要なフレームをデコーダ内部のバッファに残しておいて、次のＧＯＰの復号に利用すればよい。
【００７０】
ただし、本実施の形態のビデオデコーダ２０は、ＧＯＰ単位でストリームを切り替えて復号する構成であるため、オープンＧＯＰの場合に、あるストリームについて次のＧＯＰの復号で参照すべきフレームをデコーダ内部のバッファに保持すると、ストリームの切り替えが一巡して、当該ストリームに戻るまでその参照フレームをバッファ内に保持し続けなければならない。ビデオデコーダ２０の内部バッファの容量に制限がある場合、あるストリームの次回のＧＯＰの復号に用いられる参照フレームを、ストリームの切り替えが一巡するまでバッファリングすることはメモリ容量の面では得策ではない。
【００７１】
そこで、あるストリームについて次のＧＯＰの復号に用いられる参照フレームは、ビデオデコーダ２０の内部バッファではなく、フレームバッファ２６内に残し、ストリームの切り替えが一巡して、当該ストリームに戻ったときに、ビデオデコーダ２０がその参照フレームをフレームバッファ２６から読み出して復号に利用するように構成してもよい。ビデオデコーダ２０の内部バッファよりも、複数のストリームのフレームデータを蓄積可能なフレームバッファ２６の方がメモリ容量を大きく設計するのが普通である。フレームバッファ２６に参照フレームを保持して、ビデオデコーダ２０がフレームバッファ２６を参照する構成は、システムのメモリ設計の面で有利である。
【００７２】
ここで、表示制御部３０による動画サムネイルの表示制御と、優先制御部１６による復号対象の複数の符号化ストリームの優先制御について、いくつかの具体例を挙げながら説明する。
【００７３】
図６（ａ）〜（ｃ）は、動画サムネイルの表示制御の例を説明する図である。表示制御部３０は、ディスプレイ１１０の画面に動画サムネイルを上下に配列して表示し、上下のスクロール操作により画面に表示される動画サムネイルを切り替えるように制御する。この場合、画面に表示されていない動画サムネイルであっても、上下のスクロール操作によって表示対象となることがあるから、ビデオデコーダ２０は、上下のスクロール操作により表示される可能性があるストリームについても復号処理を実行し、共有メモリ領域２８に書き込む。表示制御部３０は、画面に動画サムネイルとして表示されているストリームについてのみ共有メモリ領域２８からフレームを読み出して表示する。
【００７４】
図６（ａ）の例では、ビデオデコーダ２０が復号する９本のストリーム＃１〜＃９の内、５つのストリーム＃３〜＃７だけが画面に動画サムネイル１２１〜１２５として表示されており、他の４つのストリーム＃１、＃２、＃８、＃９については、現時点では画面の外側にあり、動画サムネイルとして表示されていない。中央のストリーム＃５の動画サムネイル１２３は他のストリーム＃３、＃４、＃６、＃７の動画サムネイル１２１、１２２、１２４、１２５よりも大きく表示され、オーディオデコーダ２２は、中央の動画サムネイル１２４についてはオーディオを復号してビデオに同期して再生する。
【００７５】
ユーザは矢印キーなどを操作することで画面を上下にスクロールさせて中央に表示される動画サムネイルを切り替えることができる。たとえば、画面上で動画サムネイル列が上向きにシフトするようにスクロール操作を行うと、図６（ｂ）のように、それまで中央にあったストリーム＃５の動画サムネイル１２３は一つ上の位置に移動し、すぐ下の位置にあったストリーム＃６の動画サムネイル１２４が中央に移動して大きく表示される。このとき、図６（ａ）において画面の外側にあったストリーム＃８が新たに画面の最下端の位置に動画サムネイル１２６として表示され、図６（ａ）において画面の最上端の位置に表示されていたストリーム＃３の動画サムネイル１２１は画面の外側に出るため、それ以降は表示されなくなる。
【００７６】
ビデオデコーダ２０は、図６（ａ）において画面の外側にあるストリーム＃１、＃２、＃８、＃９についても復号し、共有メモリ領域２８にフレームを格納しているため、ユーザがスクロール操作を行っても画面に新たに現れるストリームを動画サムネイルとして直ちに表示することができる。図６（ａ）の例では、上下に動画サムネイル２つ分スクロールさせても、画面には動画サムネイルが遅延なく表示される。
【００７７】
優先制御部１６は、図６（ａ）において画面に表示されている５本のストリーム＃３〜＃７を、画面の外側にあって表示されていない４本のストリーム＃１、＃２、＃８、＃９よりも優先度を高くする優先順位を設定する。切替部１４は、優先制御部１６により設定された優先順位にしたがった優先度付きラウンドロビン方式で、復号対象の９本のストリーム＃１〜＃９を切り替える。これにより表示中の５本のストリーム＃３〜＃７は、非表示の４本のストリーム＃１、＃２、＃８、＃９よりも復号される頻度が高くなり、復号処理に使うことのできる計算資源に限度がある場合でも、表示中の５本のストリーム＃３〜＃７については再生時間に間に合うように復号処理を確実に行うことができる。
【００７８】
優先制御部１６は、図６（ａ）において画面の中央に表示されているストリーム＃５の優先度を最も高くしてもよい。また、画面の中央に近いストリームほど優先度を高くしてもよい。たとえば、＃５、＃４、＃６、＃３、＃７、＃２、＃８、＃１、＃９の順に優先度が下がるようにストリームの優先順位を設定してもよい。
【００７９】
画面のスクロール操作により図６（ｂ）の状態になると、切替部１４は、復号対象のストリームを入れ替え、図６（ｃ）のように、最上端のストリーム＃１は復号対象から外し、最下端にストリーム＃１０を新たに復号対象に含める。これにより、新たな９本のストリーム＃２〜＃１０がビデオデコーダ２０の復号対象となる。このように画面のスクロール操作に応じて復号対象となるストリームを入れ替えることで画面のスクロールにリアルタイムに適応して、動画サムネイルをいつでもスムーズに表示させることができる。
【００８０】
表示制御部３０による表示制御と優先制御部１６による優先制御にはいろいろなバリエーションが考えられる。上記の例では、表示制御部３０は、画面の中央にある動画サムネイルを大きく表示させ、画面をスクロールさせることにより注目したい動画サムネイルを中央に移動させるユーザインタフェースを提供した。表示制御部３０は、動画サムネイルを一覧表示し、ユーザが矢印キーなどでカーソルを移動させて注目したい動画サムネイルを選択させるインタフェースを提供し、選択された動画サムネイルを大きく表示させてもよい。
【００８１】
また、ユーザが注目している動画サムネイルを強調表示する他の方法として、表示制御部３０は、注目している動画サムネイルは、それ以外の動画サムネイルよりも高いフレームレートで再生したり、あるいは、注目している動画サムネイルは通常のフレームレートで復号し、それ以外の動画サムネイルはフレームレートを落として再生することで、注目している動画サムネイルの品質を相対的に高めてもよい。
【００８２】
優先制御部１６による優先制御のバリエーションを以下にまとめて説明する。これらの優先制御のバリエーションは単独もしくは組み合わせて用いることができる。
【００８３】
（ａ）優先制御部１６は、各ストリームのＧＯＰフレーム数に依存した優先順位を設定する。たとえば、ＧＯＰフレーム数が小さいストリームほど優先度を高く設定する。ＧＯＰ内のフレーム枚数が少ないストリームほど、早いタイミングで再生が終わるため、フレームバッファ２６の共有メモリ領域２８内のフレームが早く消費されてなくなる。ＧＯＰフレーム数が小さいストリームを優先して復号することで、再生に必要なフレームが共有メモリ領域２８内で枯渇するのを防ぎ、フレーム落ちを防ぐことができる。
【００８４】
（ｂ）優先制御部１６は、バッファ管理テーブル２４を参照して、フレームバッファ２６の共有メモリ領域２８内で再生されずに残存するフレームの枚数をストリーム毎に調べ、残存するフレームの枚数に依存した優先順位を設定する。たとえば、共有メモリ領域２８内に残存するフレームの枚数が少ないストリームほど優先度を高くする。これにより、複数のストリーム間でフレームの残存数を平均化することができ、再生に必要なフレームが枯渇してフレーム落ちが発生する状況を未然に防ぐことができる。
【００８５】
（ｃ）優先制御部１６は、各ストリームのフレームレートに依存した優先順位を設定する。高フレームレートのストリームほど共有メモリ領域２８からフレームが速く消費されるため、優先度を高くする。これにより、高フレームレートのストリームについて、フレームデータが再生時間に間に合うように復号され、共有メモリ領域２８にバッファリングされる。
【００８６】
（ｄ）画面に現時点で表示されているストリーム以外にも近い将来表示される可能性のあるストリームをあらかじめ復号しておくことがある。表示される可能性のあるストリームを前もって復号する例として、図６（ａ）〜（ｃ）で説明したスクロール操作による場合以外に、ある動画サムネイルに他のストリームがリンクづけされており、ユーザの操作によりリンク先のストリームの動画サムネイルを表示する場合などがある。そのような場合、優先制御部１６は、画面に表示されるストリームを画面に表示されないストリームよりも優先する優先順位を設定する。これにより、画面に表示されるストリームをより確実に復号してフレームバッファ２６に格納しておくとともに、画面に表示される可能性のある符号化ストリームを低い優先度で復号してフレームバッファ２６に格納し、再生の潜在的な可能性に備えることができる。
【００８７】
（ｅ）表示制御部３０が画面に表示する複数の動画サムネイルの再生品質を異ならせる制御を行う場合、優先制御部１６は、動画サムネイルの再生品質に応じた優先順位を設定する。たとえば、動画サムネイルの再生品質が高いストリームほど優先度が高くなる優先順位を設定し、再生品質要求の高いストリームを他のストリームよりも優先的に復号することで、再生品質要求の高いストリームについては高フレームレートや高解像度で再生するといった強調表示が可能になる。
【００８８】
以上述べたように、本実施の形態の復号装置１００によれば、単一のビデオデコーダ２０が、複数のストリームを切り替えながらＧＯＰ単位で復号して共有メモリ領域２８にバッファリングし、表示制御部３０は、共有メモリ領域２８から表示すべき複数のストリームのフレームを読み出して画面に同時に動画像として表示することができる。ビデオデコーダ２０は表示制御部３０とは非同期に動作し、共有メモリ領域２８にＧＯＰ単位で復号されたフレームを格納するための空き領域がなければ、復号処理をいったん停止する。そのため、共有メモリ領域２８以上の容量を設ける必要がなく、メモリ量を節約できる。
【００８９】
表示制御部３０は、同時に複数のストリームを表示するため、動画のリフレッシュの度に共有メモリ領域２８には同時表示ストリーム数のフレーム分の空き領域が生じる。共有メモリ領域２８に１ＧＯＰ分のフレームを格納するための空き領域が生じれば、ビデオデコーダ２０は直ちに１ＧＯＰ分のフレームを空き領域に書き込み、速やかに次のストリームの復号処理に移ることができるから、共有メモリ領域２８にフレームデータが枯渇してフレーム落ちが発生することがない。
【００９０】
本実施の形態の復号装置１００では、多重化分離部１８およびビデオデコーダ２０を一つだけ用意して複数のストリームを復号するため、ハードウェアで実装する場合、複数の多重化分離部１８およびビデオデコーダ２０を用いる構成に比べて、回路規模を小さくすることができる。ソフトウェアで実装する場合でも、多重化分離部１８およびビデオデコーダ２０のインスタンスを１つだけ実行させればよいから、システム制御プログラムを軽量化することができ、また、同時表示ストリーム数に応じてスケーラブルなソフトウェア構成を取ることができる。さらに、必然的にメモリやＣＰＵなどの計算資源の使用率も低減される。システム性能やシステムリソースに応じて、ビデオデコーダ２０のインスタンスを２つ以上設けてもかまわない。いずれにしても、極力少ない数のビデオデコーダ２０のインスタンスにより、多数のストリームを実質的に並列に復号して、多数の動画を同時に再生できる点に利点がある。
【００９１】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。そのような変形例を説明する。
【００９２】
上記の実施の形態では、複数の符号化ストリームを復号して同時に動画サムネイルとして一覧表示する例をもとに本発明を説明したが、本発明は、複数の符号化ストリームを復号して同時に再生する他の用途にも同様に適用することができる。たとえば、コンピュータグラフィックスで生成された仮想空間の画面に複数の動画を貼り付けて表示する場合にも本発明を適用して、単一のデコーダで複数の動画を効率良く同時再生することができる。
【００９３】
また、実施の形態では、ビデオの復号を説明したが、本発明は原理的にはオーディオの復号にも適用できる。オーディオにもビデオと同様にオーディオフレームと呼ばれる符号化および復号の単位があり、ビデオストリームの場合と同様、複数のオーディオストリームを切り替えながら、ビデオのＧＯＰに対応した最小復号単位でオーディオフレームの集合を復号してもよい。本発明を適用して複数のオーディオを同時に再生するニーズとして、たとえば、次のようなアプリケーションが考えられる。コンピュータグラフィックスにより生成される仮想空間において、場所によって異なる音声や音楽が聞こえてくる環境を実現し、ユーザが操作するキャラクタがその場所に近づくと音が大きく聞こえ、遠ざかると音が小さく聞こえるように構成する。このような仮想空間環境において、ユーザのキャラクタの周辺から各場所の音声または音楽が同時に聞こえてくるように複数のオーディオストリームを同時に再生する。
【００９４】
実施の形態では、符号化ストリームがフレーム間予測符号化されていることを前提として最小復号単位であるＧＯＰ単位で切り出して復号する例を説明したが、Ｍｏｔｉｏｎ−ＪＰＥＧのようなフレーム間予測符号化を行わない規格で符号化された動画ストリームについては、たとえば同時に表示されるストリームの本数に応じて設計されるフレーム数で切り出して複数のストリームを切り替えて復号してもよい。
【図面の簡単な説明】
【００９５】
【図１】実施の形態に係る復号装置の構成図である。
【図２】図１のフレームバッファの共有メモリ領域のデータ構造を説明する図である。
【図３】図１のバッファ管理テーブルのデータ構造を説明する図である。
【図４Ａ】図１の共有メモリ領域に各ストリームのＧＯＰを構成するフレームが書き込まれた状態を示す図である。
【図４Ｂ】最初の垂直同期信号に同期して図４Ａに示した状態の共有メモリ領域から各ストリームの最初のフレームが１枚ずつ読み出されて表示された状態を示す図である。
【図４Ｃ】２回目の垂直同期信号に同期して図４Ｂに示した状態の共有メモリ領域から各ストリームの２番目のフレームが１枚ずつ読み出されて表示された状態を示す図である。
【図４Ｄ】図４Ｃに示した状態の共有メモリ領域の空きブロックに第１ストリームの次のＧＯＰを構成するフレームが書き込まれた状態を示す図である。
【図４Ｅ】３回目の垂直同期信号に同期して図４Ｄに示した状態の共有メモリ領域から各ストリームの３番目のフレームが１枚ずつ読み出されて表示された状態を示す図である。
【図４Ｆ】図４Ｅに示した状態の共有メモリ領域の空きブロックに第２ストリームの次のＧＯＰを構成するフレームが書き込まれた状態を示す図である。
【図５Ａ】ストリーム毎に独立に設けられた専用メモリ領域に各ストリームのＧＯＰを構成するフレームが書き込まれた状態を示す図である。
【図５Ｂ】最初の垂直同期信号に同期して図５Ａに示した状態の各専用メモリ領域から各ストリームの最初のフレームが１枚ずつ読み出されて表示された状態を示す図である。
【図５Ｃ】２回目の垂直同期信号に同期して図５Ｂに示した状態の各専用メモリ領域から各ストリームの２番目のフレームが１枚ずつ読み出されて表示された状態を示す図である。
【図５Ｄ】３〜５回目の垂直同期信号を経て図５Ｂに示した状態の各専用メモリ領域から各ストリームの残りのフレームがすべて読み出された状態を示す図である。
【図６】図６（ａ）〜（ｃ）は、動画サムネイルの表示制御の例を説明する図である。
【符号の説明】
【００９６】
１０  ストレージ、  １２  ストリームバッファ、  １４  切替部、  １６  優先制御部、  １８  多重化分離部、  ２０  ビデオデコーダ、  ２２  オーディオデコーダ、  ２４  バッファ管理テーブル、  ２６  フレームバッファ、  ２８  共有メモリ領域、  ３０  表示制御部、  １００  復号装置、  １１０  ディスプレイ。
【図１】
2008072336.tif 000003
【図２】
2008072336.tif 000004
【図３】
2008072336.tif 000005
【図４Ａ】
2008072336.tif 000006
【図４Ｂ】
2008072336.tif 000007
【図４Ｃ】
2008072336.tif 000008
【図４Ｄ】
2008072336.tif 000009
【図４Ｅ】
2008072336.tif 000010
【図４Ｆ】
2008072336.tif 000011
【図５Ａ】
2008072336.tif 000012
【図５Ｂ】
2008072336.tif 000013
【図５Ｃ】
2008072336.tif 000014
【図５Ｄ】
2008072336.tif 000015
【図６】
2008072336.tif 000016