JP2006319943A - 符号化装置および方法、復号装置および方法、記録媒体、並びに、プログラム - Google Patents

符号化装置および方法、復号装置および方法、記録媒体、並びに、プログラム Download PDF

Info

Publication number
JP2006319943A
JP2006319943A JP2005241992A JP2005241992A JP2006319943A JP 2006319943 A JP2006319943 A JP 2006319943A JP 2005241992 A JP2005241992 A JP 2005241992A JP 2005241992 A JP2005241992 A JP 2005241992A JP 2006319943 A JP2006319943 A JP 2006319943A
Authority
JP
Japan
Prior art keywords
decoding
unit
video stream
frame
position information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005241992A
Other languages
English (en)
Other versions
JP4374548B2 (ja
Inventor
Miyoko Shibata
三代子 柴田
Shiho So
志芳 曾
Junichi Ogikubo
純一 荻窪
Taro Shigata
太郎 志潟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2005241992A priority Critical patent/JP4374548B2/ja
Priority to TW95109964A priority patent/TWI321428B/zh
Priority to EP20060251692 priority patent/EP1720360A1/en
Priority to US11/395,358 priority patent/US8670653B2/en
Priority to KR20060033989A priority patent/KR20060109338A/ko
Publication of JP2006319943A publication Critical patent/JP2006319943A/ja
Application granted granted Critical
Publication of JP4374548B2 publication Critical patent/JP4374548B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/76Television signal recording
    • H04N5/91Television signal processing therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/89Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving methods or arrangements for detection of transmission errors at the decoder

Abstract

【課題】より高速に映像ストリームを復号する。
【解決手段】
ストリーム解析部262は、映像ストリームに記録されているピクチャ位置情報およびスライス位置情報を映像ストリームから抽出する。スタート位置検出部271は、スライス位置情報に基づいて、デコーダ265がデコードを開始するスライスの開始位置を検出する。デコード制御部264は、デコーダ265がスタート位置検出部271により検出された位置からデコードを開始するように制御する。本発明は、映像ストリームを記録および再生する映像記録再生装置に適用することができる。
【選択図】図8

Description

本発明は、符号化装置および方法、復号装置および方法、記録媒体、並びに、プログラムに関し、特に、映像ストリームの復号の高速化を実現するようにした符号化装置および方法、復号装置および方法、記録媒体、並びに、プログラムに関する。
従来、映像ストリームのデコードを迅速に開始するために、エンコード時に、ユーザにより指定されたフレームの記録位置をインデックスデータとして記録し、デコード時に、インデックスデータを用いてデコードを開始する位置を検出することが提案されている(例えば、特許文献1参照)。
また、映像ストリームのデコードを高速化するために、デコード処理を複数のスレッドに分割して、複数のプロセッサで並列してデコードすることが考えられる。例えば、MPEG(Moving Picture Experts Group)2方式によりエンコードされた映像ストリームの場合、ピクチャ内のスライスを1単位として、デコード処理が分割される。具体的には、4つのプロセッサによりデコード処理を分割して行う場合、図1の左側に示されるように、1つのピクチャ内に16のスライスが含まれるとき、ピクチャ内のいちばん上のスライスから順番に1つずつ各プロセッサが並列してデコードする。すなわち、各プロセッサは、図1の右側に示される、スライス1−1乃至1−4、スライス2−1乃至2−4、スライス3−1乃至3−4、および、スライス4−1乃至4−4の4組のうちいずれかの組のスライスをデコードする。
特開平11−341437号公報
しかしながら、図1に示されるように処理を分割した場合、各プロセッサは1つのスライスをデコードする毎に、次にデコードするスライスの位置を検出する必要があり、各プロセッサのデコード位置の検出処理に要する時間が増大する。さらに、特許文献1に記載した発明を適用したとしても、スライスの位置の検出時間は短縮されないため、各プロセッサのデコード位置の検出処理に要する時間はほとんど短縮されない。
本発明は、このような状況に鑑みてなされたものであり、より高速に映像ストリームを復号することができるようにするものである。
本発明の第1のプログラムは、映像ストリームのフレームの位置を示す情報であるフレーム位置情報の記録を制御するフレーム位置記録制御ステップと、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御する単位領域位置記録制御ステップとを含む符号化処理をコンピュータに実行させる。
フレーム位置記録制御ステップにおいて、符号化された映像ストリーム内にフレーム位置情報を記録するように制御され、単位領域位置記録制御ステップにおいて、符号化された映像ストリーム内に単位領域位置情報を記録するように制御されるようにすることができる。
フレーム位置記録制御ステップにおいて、映像ストリームとは異なるファイルにフレーム位置情報を記録するように制御され、単位領域位置記録制御ステップにおいて、ファイルに単位領域位置情報を記録するように制御されるようにすることができる。
映像ストリームはMPEG(Moving Picture Experts Group)方式により符号化され、単位領域はスライスであるようにすることができる。
フレーム位置記録制御ステップにおいて、符号化された映像ストリームのシーケンス層のユーザデータ領域またはGOP(Group Of Pictures)層のユーザデータ領域にフレーム位置情報を記録するように制御され、単位領域位置記録制御ステップにおいて、符号化された映像ストリームのピクチャ層のユーザデータ領域に単位領域位置情報を記録するように制御されるようにすることができる。
フレーム位置情報は、映像ストリームの先頭からのフレームの相対位置を示す情報を含み、単位領域位置情報は、映像ストリームの先頭からの単位領域の相対位置を示す情報を含むようにすることができる。
フレーム位置情報は、さらに、フレームの番号およびフレームのデータ長を示す情報を含み、単位領域位置情報は、さらに、フレーム内における単位領域の番号および単位領域のデータ長を示す情報を含むようにすることができる。
フレーム位置情報は、データ記録媒体にフレームを記録する位置を示す情報を含み、単位領域位置情報は、データ記録媒体に単位領域を記録する位置を示す情報を含むようにすることができる。
フレーム位置情報は、さらに、フレームの番号およびフレームのデータ長を示す情報を含み、単位領域位置情報は、さらに、フレーム内における単位領域の番号および単位領域のデータ長を示す情報を含むようにすることができる。
本発明の符号化方法は、映像ストリームを符号化する符号化方法であって、映像ストリームのフレームの位置を示す情報であるフレーム位置情報の記録を制御するフレーム位置記録制御ステップと、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御する単位領域位置記録制御ステップとを含む。
本発明の符号化装置は、映像ストリームを符号化する符号化手段と、映像ストリームのフレームの位置を示す情報であるフレーム位置情報、および、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御する記録制御手段とを含む。
本発明の第2のプログラムは、映像ストリームのフレームの位置を示すフレーム位置情報、および、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、映像ストリームの復号を開始する復号開始位置を検出する検出ステップと、復号開始位置から復号を開始するように映像ストリームの復号を制御する復号制御ステップとを含む復号処理をコンピュータに実行させる。
映像ストリームに記録されているフレーム位置情報を抽出するフレーム位置情報抽出ステップと、映像ストリームに記録されている単位領域位置情報を抽出する単位領域位置情報抽出ステップとをさらに含むようにすることができる。
映像ストリームとは異なるファイルからの、フレーム位置情報および単位領域位置情報の取得を制御する取得制御ステップをさらに含むようにすることができる。
映像ストリームはMPEG(Moving Picture Experts Group)方式により符号化された映像ストリームであり、単位領域はスライスであるようにすることができる。
復号装置は、映像ストリームを並列して復号する複数の復号手段を備え、検出ステップにおいて、フレーム位置情報および単位領域位置情報に基づいて、複数の復号手段に対応する復号開始位置が検出され、復号制御ステップにおいて、複数の復号手段が復号開始位置から復号を開始するように映像ストリームの復号が制御されるようにすることができる。
複数の単位領域を含み、映像ストリームの1フレームの画像に対応する領域を復号手段の数に応じて分割した分割領域を設定する設定ステップをさらに含み、復号制御ステップにおいて、フレーム内のそれぞれの分割領域を復号手段が並列して復号するように映像ストリームの復号が制御されるようにすることができる。
フレーム位置情報は、映像ストリームの先頭からのフレームの相対位置を示す情報を含み、単位領域位置情報は、映像ストリームの先頭からの単位領域の相対位置を示す情報を含むようにすることができる。
フレーム位置情報は、さらに、フレームの番号およびフレームのデータ長を示す情報を含み、単位領域位置情報は、さらに、フレーム内における単位領域の番号および単位領域のデータ長を示す情報を含むようにすることができる。
フレーム位置情報は、データ記録媒体にフレームを記録する位置を示す情報を含み、単位領域位置情報は、データ記録媒体に単位領域を記録する位置を示す情報を含むようにすることができる。
フレーム位置情報は、さらに、フレームの番号およびフレームのデータ長を示す情報を含み、単位領域位置情報は、さらに、フレーム内における単位領域の番号および単位領域のデータ長を示す情報を含むようにすることができる。
本発明の復号方法は、映像ストリームを復号する復号方法であって、映像ストリームのフレームの位置を示すフレーム位置情報、および、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、映像ストリームの復号を開始する復号開始位置を検出する検出ステップと、復号開始位置から復号を開始するように映像ストリームの復号を制御する復号制御ステップとを含む。
本発明の復号装置は、映像ストリームを復号する復号装置であって、映像ストリームのフレームの位置を示すフレーム位置情報、および、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、映像ストリームの復号を開始する復号開始位置を検出する検出手段と、復号開始位置から復号を開始するように映像ストリームの復号を制御する復号制御手段とを含む。
本発明の第1のプログラム、記録媒体に記録されている第1のプログラム、符号化方法、および、符号化装置においては、映像ストリームのフレームの位置を示す情報であるフレーム位置情報の記録が制御され、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録が制御される。
本発明の第2のプログラム、記録媒体に記録されている第2のプログラム、復号方法、および、復号装置においては、映像ストリームのフレームの位置を示すフレーム位置情報、および、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、映像ストリームの復号を開始する復号開始位置が検出され、復号開始位置から復号を開始するように映像ストリームの復号が制御される。
本発明によれば、映像ストリームの復号の開始位置の検出に要する時間を短縮することができる。また、本発明によれば、より高速に映像ストリームを復号することができる。
以下に本発明の実施の形態を説明するが、請求項に記載の構成要件と、発明の実施の形態における具体例との対応関係を例示すると、次のようになる。この記載は、請求項に記載されている発明をサポートする具体例が、発明の実施の形態に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、構成要件に対応するものとして、ここには記載されていない具体例があったとしても、そのことは、その具体例が、その構成要件に対応するものではないことを意味するものではない。逆に、具体例が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その具体例が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
さらに、この記載は、発明の実施の形態に記載されている具体例に対応する発明が、請求項に全て記載されていることを意味するものではない。換言すれば、この記載は、発明の実施の形態に記載されている具体例に対応する発明であって、この出願の請求項には記載されていない発明の存在、すなわち、将来、分割出願されたり、補正により追加される発明の存在を否定するものではない。
請求項1に記載のプログラムは、映像ストリームのフレーム(例えば、ピクチャ)の位置を示す情報であるフレーム位置情報(例えば、図9または図19のピクチャ位置情報)の記録を制御するフレーム位置記録制御ステップ(例えば、図10または図20のスライス位置情報)と、前記映像ストリームを復号する場合の処理単位である単位領域(例えば、スライス)の位置を示す単位領域位置情報(例えば、図10または図20のスライス位置情報)の記録を制御する単位領域位置記録制御ステップ(例えば、図12のステップS129)とを含む符号化処理をコンピュータ(例えば、図2のCPU121)に実行させる。
また、請求項10に記載の復号方法においても、各ステップが対応する実施の形態(但し一例)は、請求項1に記載のプログラムと同様である。
請求項11に記載の符号化装置(例えば、図7のエンコード部201または図16のエンコード部301)は、映像ストリームを符号化する符号化手段(例えば、図7のエンコーダ211または図16のエンコーダ311)と、前記映像ストリームのフレーム(例えば、ピクチャ)の位置を示す情報であるフレーム位置情報(例えば、図9または図19のピクチャ位置情報)、および、前記映像ストリームを復号する場合の処理単位である単位領域(例えば、スライス)の位置を示す単位領域位置情報(例えば、図10または図20のスライス位置情報)の記録を制御する記録制御手段(例えば、図7のスタート位置記録制御部215または図16のスタート位置記録制御部315)とを含む。
請求項12に記載のプログラムは、映像ストリームのフレーム(例えば、ピクチャ)の位置を示すフレーム位置情報(例えば、図9または図19のピクチャ位置情報)、および、前記映像ストリームを復号する場合の処理単位である単位領域(例えば、スライス)の位置を示す単位領域位置情報(例えば、図10または図20のスライス位置情報)に基づいて、前記映像ストリームの復号を開始する復号開始位置を検出する検出ステップ(例えば、図13のステップS160、図15のステップS181、図22のステップS259、または、図26のステップS262)と、前記復号開始位置から復号を開始するように前記映像ストリームの復号を制御する復号制御ステップ(例えば、図13のステップS161、図15のステップS189、図22のステップS260、または、図26のステップS263)とを含む復号処理をコンピュータ(例えば、図2のCPU121)に実行させる。
請求項13に記載のプログラムは、前記映像ストリームに記録されている前記フレーム位置情報を抽出するフレーム位置情報抽出ステップ(例えば、図13のステップS155、図15のステップS184、または、図25のステップS257)と、前記映像ストリームに記録されている前記単位領域位置情報を抽出する単位領域位置情報抽出ステップ(例えば、図13のステップS159、図15のステップS187、または、図25のステップS261)とをさらに含む。
請求項14に記載のプログラムは、前記映像ストリームとは異なるファイルからの、前記フレーム位置情報および前記単位領域位置情報の取得を制御する取得制御ステップ(例えば、図22のステップS251)をさらに含む。
請求項16に記載のプログラムにおいては、前記復号装置は、前記映像ストリームを並列して復号する複数の復号手段(例えば、図8のデコーダ265−1乃至265−4、図17のデコーダ365−1乃至365−4、または、図24のデコーダ465−1乃至465−4)を備え、前記検出ステップにおいて、前記フレーム位置情報および前記単位領域位置情報に基づいて、複数の前記復号手段に対応する前記復号開始位置が検出され、前記復号制御ステップにおいて、複数の前記復号手段が前記復号開始位置から復号を開始するように前記映像ストリームの復号が制御される。
請求項17に記載のプログラムにおいては、複数の前記単位領域を含み、前記映像ストリームの1フレームの画像に対応する領域を前記復号手段の数に応じて分割した分割領域(例えば、分割デコード領域)を設定する設定ステップ(例えば、図25のステップS254)をさらに含み、復号制御ステップにおいて、前記フレーム内のそれぞれの前記分割領域を前記復号手段が並列して復号するように前記映像ストリームの復号が制御される。
また、請求項22に記載の復号方法においても、各ステップが対応する実施の形態(但し一例)は、請求項12に記載のプログラムと同様である。
請求項23に記載の復号装置(例えば、図8のデコード部251、図17のデコード部251、または、図24のデコード部251)は、映像ストリームを復号する復号装置であって、前記映像ストリームのフレーム(例えば、ピクチャ)の位置を示すフレーム位置情報(例えば、図9または図19のピクチャ位置情報)、および、前記映像ストリームを復号する場合の処理単位である単位領域(例えば、スライス)の位置を示す単位領域位置情報(例えば、図10または図20のスライス位置情報)に基づいて、前記映像ストリームの復号を開始する復号開始位置を検出する検出手段(例えば、図8のスタート位置検出部271、図17のスタート位置検出部371、または、図24のスタート位置検出部471)と、前記復号開始位置から復号を開始するように前記映像ストリームの復号を制御する復号制御手段(例えば、図8のデコード制御部264、図17のデコード制御部364、または、図24のデコード制御部464)とを含む。
請求項24に記載の記録媒体(例えば、図2のリムーバブルメディア117)は、請求項1乃至8または請求項12乃至21のいずれかのプログラムが記録されている。
以下、図を参照して、本発明の実施の形態について説明する。
図2は、本発明を適用したAV(Audio/Visual)処理システム101の一実施の形態を示す図である。AV処理システム101は、AV(Audio/Visual)処理装置111、ドライブ112、外部映像記録再生装置113−1乃至113−n、マウス114、および、キーボード115を含むように構成される。
AV処理装置111は、映像ストリーム、音声ストリーム、映像ストリームおよび音声ストリームが多重化されたAV(Audio/Visual)ストリーム、静止画像データなどのAV(Audio/Visual)データの再生、記録、表示、出力、デコード、エンコードなどの処理を行う。
ドライブ112は、AV処理装置111のインタフェース129−3に接続される。ドライブ112は、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア116が適宜接続され、リムーバブルメディア116から読み出した各種のデータをAV処理装置111に入力したり、AV処理装置111から出力される各種のデータをリムーバブルメディア116に記録させる。また、ドライブ112は、光ディスク、光磁気ディスク、あるいは半導体メモリなどよりなるリムーバブルメディア117が適宜接続され、そこから読み出されプログラムが、HDD124にインストールされる。
外部映像記録再生装置113−1乃至113−nは、AV処理装置111のインタフェース129−2に接続される。外部映像記録再生装置113−1乃至113−nは、AVストリーム、映像ストリーム、音声ストリーム、静止画像データなどのAVデータを再生し、再生したストリームをAV処理装置111に入力する。また、外部映像記録再生装置113−1乃至113−nは、AV処理装置111から出力されるAVストリーム、映像ストリーム、音声ストリーム、静止画像データなどのAVデータを記録する。
また、外部映像記録再生装置113−1乃至113−nは、AV処理装置111の映像特殊効果音声ミキシング処理部126に接続される。外部映像記録再生装置113−1乃至113−nは、AVストリーム、映像ストリーム、音声ストリーム、静止画像データなどのAVデータを映像特殊効果音声ミキシング処理部126に入力し、各種の特殊効果またはミキシングが施されたAVデータを映像特殊効果音声ミキシング処理部126から取得する。
なお、以下、外部映像記録再生装置113−1乃至113−nを個々に区別する必要がない場合、単に外部映像記録再生装置113と称する。
マウス114およびキーボード115は、AV処理装置111のインタフェース129−1に接続される。
AV処理装置111は、CPU(Central Processing Unit)121、ROM(Read Only Memory)122、RAM(Random Access Memory)123、ハードディスク(HDD)124、信号処理部125、映像特殊効果音声ミキシング処理部126、ディスプレイ127、スピーカ128、および、インタフェース(I/F)129−1乃至129−3を含むように構成される。CPU121、ROM122、RAM123、HDD124、信号処理部125、映像特殊効果音声ミキシング処理部126、および、インタフェース129−1乃至129−3は、バス130を介して相互に接続される。
CPU121は、インタフェース129−1およびバス130を介して、ユーザがマウス114またはキーボード115を用いて入力した処理の指示やデータの入力を受け、入力された処理の指示などに基づいて、ROM122に記憶されているプログラム、または、HDD124からRAM123にロードされたプログラムに従って各種の処理を実行する。
また、CPU121は、AVストリーム、映像ストリーム、音声ストリーム、静止画像データなどのAVデータの各種の処理(例えば、多重化、分離、エンコード、デコードなど)を行う。例えば、CPU121は、マルチコアプロセッサにより構成され、図4などを参照して後述するように、所定のプログラムを実行することにより、所定の方式(例えば、MPEG2方式)によりエンコード(符号化)された映像ストリームのデコード(復号)処理を複数のスレッドに分割して、複数のプロセッサコアにより並列して映像ストリームをデコードする。さらに、CPU121は、図11などを参照して後述するように、エンコード前のベースバンド信号である映像ストリームを、所定の方式(例えば、MPEG2方式)によりエンコード(符号化)する。
ROM122は、CPU121が使用するプログラムや演算用のパラメータのうちの基本的に固定のデータを格納する。
RAM123は、CPU121の実行において使用するプログラムや、その実行において適宜変化するパラメータやデータを格納する。
HDD124は、例えば、CPU121によって実行するプログラムや情報を記録または再生させる。
信号処理部125は、AVストリーム、映像ストリーム、音声ストリーム、静止画像データなどのAVデータの各種の処理(例えば、多重化、分離、エンコード、デコードなど)を、ハードウェアにより実行する。また、信号処理部125は、入力された映像ストリームから、ディスプレイ127の規格に適応した映像信号を生成し、ディスプレイ127に供給する。また、信号処理部125は、入力された音声ストリームから、スピーカ128の規格に適応した音声信号を生成し、スピーカ128に供給する。
映像特殊効果音声ミキシング処理部126は、CPU121、信号処理部125、または、外部映像記録再生装置113から供給されるAVストリーム、映像ストリーム、音声ストリーム、静止画像データなどのAVデータに、各種の特殊効果(例えば、画像の合成、分割、変換など)またはミキシング(例えば、音声の合成など)を施す。映像特殊効果音声ミキシング処理部126は、各種の特殊効果またはミキシングを施したAVデータを、CPU121、信号処理部125、または、外部映像記録再生装置113に供給する。
ディスプレイ127は、例えば、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などにより構成され、信号処理部125から供給される映像信号に基づく映像を表示する。
スピーカ128は、信号処理部125から供給される音声信号に基づく音声を出力する。
なお、以下、AV処理装置111が、MPEG2方式により映像ストリームをエンコードまたはデコードする場合の処理の例を説明する。
図3は、所定のプログラムを実行するCPU121により実現されるデコード部151の機能の構成の例を示す図である。デコード部151は、ストリーム読出し制御部161、ストリーム解析部162、デコード領域設定部163、デコード制御部164、デコーダ165−1乃至165−4、および、ベースバンド出力制御部166を含むように構成される。
ストリーム読出し制御部161は、ドライブ112を制御して、リムーバブルメディア116に記録されている映像ストリームを読み出させる。ストリーム読出し制御部161は、ドライブ112により読み出された映像ストリームを、インタフェース129−3およびバス130を介して取得する。また、ストリーム読出し制御部161は、バス130を介して、HDD124に記録されている映像ストリームを読み出す。ストリーム読出し制御部161は、必要に応じて、取得した映像ストリームを、CPU121内の図示せぬキャッシュメモリなどにより構成されるストリーム用メモリ152に一時的に記憶させる。また、ストリーム読出し制御部161は、必要に応じて、取得した映像ストリームを、ストリーム解析部162またはデコーダ165−1乃至165−4に供給する。
ストリーム解析部162は、映像ストリームのピクチャ層までの層をデコードし、デコードすることにより得られた情報をデコード制御部164に供給する。また、ストリーム解析部162は、映像ストリームのシーケンス層をデコードすることにより得られた映像ストリームの画像サイズ(画像の縦横の画素数)を示す情報をデコード領域設定部163に供給する。
デコード領域設定部163は、図4および図5を参照して後述するように、映像ストリームの映像サイズおよびデコード部151のデコーダの数に基づいて、映像ストリームの各フレームに対して、デコーダ165−1乃至165−4により分割してデコードする領域(以下、分割デコード領域と称する)を設定する。デコード領域設定部163は、設定した分割デコード領域を示す情報をデコード制御部164に供給する。
デコード制御部164は、ユーザがマウス114またはキーボード115を用いて入力したデコードの指示、または、AV処理装置111の各部、あるいは、CPU121により実現されるデコード部151と異なる機能ブロックから入力されるデコードの指示に基づいて、デコード部151の処理を制御する。デコード制御部164は、ストリーム解析部162またはデコーダ165−1乃至165−4への映像ストリームの供給を指示する情報をストリーム読出し制御部161に供給する。また、デコード制御部164は、デコードの開始を指示する情報をデコーダ165−1乃至165−4に供給する。
さらに、デコード制御部164は、デコーダ165−1乃至165−4から、デコードの終了またはエラーの発生を通知する情報を取得する。デコード制御部164は、デコードのエラーの発生を通知する情報を取得した場合、デコードを再開する位置を決定し、決定した位置からのデコードの再開を指示する情報を、エラーが発生したデコーダに供給する。さらに、デコード制御部164は、映像ストリームをデコードすることにより得られたベースバンド信号である映像ストリームの出力を指示する情報をベースバンド出力制御部166に供給する。
デコーダ165−1乃至165−4は、映像ストリームの各フレーム内の各デコーダに割り当てられた分割デコード領域を並列してデコードする。すなわち、デコーダ165−1乃至165−4は、映像ストリームのスライス層以下のデコードを行う。デコーダ165−1乃至165−4は、デコードしたデータをベースバンド出力制御部166に供給する。なお、以下、デコーダ165−1乃至165−4を個々に区別する必要がない場合、単にデコーダ165と称する。
ベースバンド出力制御部166は、デコーダ165−1乃至165−4から供給されたデータを合成して、デコード後のベースバンド信号である映像ストリームを生成する。ベースバンド出力制御部166は、必要に応じて、例えば、CPU121内の図示せぬキャッシュメモリなどにより構成されるベースバンド用メモリ153に、生成した映像ストリームを一時的に記憶させる。ベースバンド出力制御部166は、デコード制御部164の指示に基づいて、映像ストリームを外部(例えば、バス130を介して信号処理部125)に出力する。
次に、図4および図5のフローチャートを参照して、デコード部151により実行されるデコード処理を説明する。なお、この処理は、例えば、デコード制御部164が、ユーザがマウス114またはキーボード115を用いて入力したデコードの指示を、インタフェース129−1およびバス130を介して取得した場合、開始される。また、以下、リムーバブルメディア116に記録されている映像ストリームをデコードする場合の例を説明する。
ステップS1において、デコード制御部164は、映像ストリームを全てデコードしたか否かを判定する。デコード制御部164は、ユーザによりデコードが指示された範囲の映像ストリームをまだ全てデコードしていない場合、まだ映像ストリームを全てデコードしていないと判定し、処理はステップS2に進む。
ステップS2において、ストリーム解析部162は、シーケンス層をデコードする。具体的には、デコード制御部164は、デコードする映像ストリームのシーケンス層の読出しを指示する情報をストリーム読出し制御部161に供給する。ドライブ112は、ストリーム読出し制御部161の制御の基に、デコードする映像ストリームのシーケンス層をリムーバブルメディア116から読み出し、読み出したデータを、インタフェース129−3およびバス130を介して、ストリーム読出し制御部161に供給する。ストリーム読出し制御部161は、映像ストリームのシーケンス層をストリーム解析部162に供給する。ストリーム解析部162は、シーケンス層をデコードし、デコードすることにより得られた情報をデコード制御部164に供給する。
ステップS3において、ストリーム解析部162は、映像ストリームの画像サイズを検出する。具体的には、ストリーム解析部162は、映像ストリームのシーケンス層の情報に基づいて、映像ストリームの画像サイズを検出する。ストリーム解析部162は、検出した画像サイズを示す情報をデコード領域設定部163に供給する。
ステップS4において、デコード領域設定部163は、各デコーダ165がデコードする領域を設定する。具体的には、まず、デコード領域設定部163は、各デコーダ165が1フレームあたりにデコードするスライス数(以下、分割スライス数とも称する)を算出する。なお、以下、各スライスの横方向の幅はフレーム(ピクチャ)の幅と等しく、1つのスライスは行間をまたがないものとする。
デコード領域設定部163は、映像ストリームの画像サイズに基づいて、映像ストリームの1フレーム(ピクチャ)内に含まれるスライス数を検出する。例えば、映像ストリームの縦方向の画像サイズをSpv、スライスの縦方向のサイズをSsvとすると、1フレーム当たりのスライス数Nsfは、以下の式(1)により検出される。
Nsf=Spv÷Ssv ・・・(1)
デコード領域設定部163は、検出した1フレーム当たりのスライス数をデコーダ165の数で割ることにより、分割スライス数を算出する。例えば、デコーダ165の数をNdとすると、分割スライス数をXは、式(2)により算出される。
X=Nsf÷Nd ・・・(2)
従って、各デコーダ165が、デコードするスライス数は等しくなり、1フレーム当たりにデコードするデータ量はほぼ等しくなる。
例えば、映像ストリームの縦方向の画像サイズを1088画素、スライスの縦方向のサイズを16画素とした場合、いまの場合、デコーダ165の数が4つなので、分割スライス数Xは、以下のとおり17となる。
Nsf=1088÷16=68
X=68÷4=17
次に、デコード領域設定部163は、フレーム内のスライスを上から順番に、分割スライス数ごとに分割することにより、分割デコード領域を設定する。例えば、図6の左側の図のように、1フレーム内に16のスライスが含まれ、4つのデコーダにより並行してデコードする場合、分割スライス数は4となるので、フレーム内のスライスを上から順番に4つごとに分割した領域、すなわち、スライス181−1乃至181−4を含む領域、スライス182−1乃至182−4を含む領域、スライス183−1乃至183−4を含む領域、および、スライス184−1乃至184−4を含む領域の4つの領域が分割デコード領域に設定される。
なお、MPEG2方式でエンコードされた映像ストリームにおいて、スライス(スライス層)は、先頭にスタートコードが付加されることにより映像ストリームの解析を行わなくても開始位置を検出することができる層の最下層であり、映像ストリームを復号する場合の最小の処理単位となる。従って、分割デコード領域は、デコーダ165の処理単位である複数のスライスを含み、映像ストリームのピクチャに対応する領域をデコーダ165の数に応じて分割した領域となる。また、映像ストリーム上で連続するスライスが、フレーム(ピクチャ)内でいちばん上から順に配列されるので、分割デコード領域内のスライスは、分割デコード領域のいちばん上から下方向の順に映像ストリーム上において連続する。
デコード領域設定部163は、設定した分割デコード領域を示す情報をデコード制御部164に供給する。
ステップS5において、デコード制御部164は、全てのGOP(Group Of Pictures)をデコードしたか否かを判定する。デコード制御部164は、ステップS2においてデコードされたシーケンス層より下に含まれる全てのGOPがデコードされたか否かを判定し、まだ全てのGOPがデコードされていないと判定された場合、処理はステップS6に進む。
ステップS6において、ストリーム解析部162は、GOP層をデコードする。具体的には、デコード制御部164は、次にデコードするGOPの読出しを指示する情報をストリーム読出し制御部161に供給する。ドライブ112は、ストリーム読出し制御部161の制御の基に、次にデコードするGOPをリムーバブルメディア116から読み出し、読み出したGOPを、インタフェース129−3およびバス130を介して、ストリーム読出し制御部161に供給する。ストリーム読出し制御部161は、取得したGOPをストリーム用メモリ152に一時的に記憶させる。ストリーム読出し制御部161は、取得したGOPのGOP層をストリーム解析部162に供給する。ストリーム解析部162は、GOP層をデコードし、デコードすることにより得られた情報をデコード制御部164に供給する。
なお、ステップS6において、複数のGOPを一度にリムーバブルメディア116から読み出し、ストリーム用メモリ152に記憶させるようにしてもよい。
ステップS7において、デコード制御部164は、GOP内の全てのピクチャをデコードしたか否かを判定する。まだGOP内の全てのピクチャがデコードされていないと判定された場合、処理はステップS8に進む。
ステップS8において、ストリーム読出し制御部161は、次にデコードするピクチャのピクチャ層を読み出す。具体的には、デコード制御部164は、次にデコードするピクチャのピクチャ層の読出しを指示する情報をストリーム読出し制御部161に供給する。ストリーム読出し制御部161は、ストリーム用メモリ152に記憶されているGOPについて、次にデコードするピクチャの開始位置(ピクチャスタートコード)をGOPの先頭から検索していき、検出した開始位置から次にデコードするピクチャのピクチャ層を読み出す。ストリーム読出し制御部161は、読み出したピクチャ層をストリーム解析部162に供給する。
ステップS9において、ストリーム解析部162は、ピクチャ層をデコードする。ストリーム解析部162は、ピクチャ層をデコードすることにより得られた情報をデコード制御部164に供給する。
ステップS10において、デコード制御部164は、デコードの開始を指示する。具体的には、デコード制御部164は、各デコーダ165に割り当てられた分割デコード領域に含まれるスライスの各デコーダ165への供給を指示する情報をストリーム読出し制御部161に供給する。また、デコード制御部164は、デコードの開始を指示する情報を各デコーダ165に供給する。
ステップS11において、ストリーム読出し制御部161は、分割デコード領域の開始位置を検出する。具体的には、ストリーム読出し制御部161は、ストリーム用メモリ152に記憶されているGOPについて、次にデコードするピクチャのスライス層の開始位置(スライススタートコード)を順に検索していき、各デコーダ165に割り当てられている分割デコード領域の先頭のスライスの開始位置、すなわち、各デコーダ165がデコードを開始する位置を検出する。
ステップS12において、デコーダ165は、デコードを開始する。具体的には、ストリーム読出し制御部161は、ステップS11において検出した各分割デコード領域の開始位置から始まる分割スライス数のスライス、すなわち、各分割デコード領域に含まれるスライスをストリーム用メモリ152から順に読み出す。ストリーム読出し制御部161は、読み出したスライスを、分割デコード領域ごとに、その分割デコード領域のデコードが割り当てられたデコーダ165に供給する。デコーダ165は、分割デコード領域内の先頭のスライスからデコードを開始する。デコーダ165は、デコードしたデータを順次ベースバンド出力制御部166に供給する。ベースバンド出力制御部166は、取得したデータをベースバンド用メモリ153に記憶させる。
ステップS13において、デコード制御部164は、エラーが発生したか否かを判定する。具体的には、デコード制御部164は、デコーダ165からエラーの発生を通知する情報が供給されている場合、エラーが発生していると判定し、処理はステップS14に進む。
ステップS14において、デコード制御部164は、デコードを再開する位置を決定する。デコード制御部164は、例えば、デコードを失敗したスライスの次のスライスをデコードを再開する位置に決定する。
ステップS15において、デコーダ165は、デコードを再開する。具体的には、デコード制御部164は、エラーが発生したスライスの次のスライスからのデコードの再開を指示する情報を、エラーが発生したデコーダ165に供給する。デコーダ165は、指定されたスライスからデコードを再開する。
ステップS13において、デコード制御部164は、デコーダ165からエラーの発生を通知する情報が供給されていない場合、エラーが発生していないと判定し、ステップS14およびS15の処理はスキップされ、処理はステップS16に進む。
ステップS16において、デコード制御部164は、全てのデコーダ165の処理が終了したか否かを判定する。具体的には、デコード制御部164は、各デコーダ165に割り当てられた分割デコード領域の全てのスライスのデコードの終了を通知する情報が、全てのデコーダ165から供給されているか否かを検出する。デコード制御部164は、各デコーダ165に割り当てられた分割デコード領域の全てのスライスのデコードの終了を通知する情報が、まだ全てのデコーダ165から供給されていない場合、まだ全てのデコーダ165の処理がまだ終了していないと判定し、処理はステップS13に戻り、ステップS16において、全てのデコーダ165の処理が終了したと判定されるまで、ステップS13乃至S16の処理が繰り返し実行される。
ステップS16において、全てのデコーダ165の処理が終了したと判定された場合、すなわち、各デコーダ165に割り当てられた分割デコード領域の全てのスライスのデコードの終了を通知する情報が、全てのデコーダ165からデコード制御部164に供給されている場合、処理はステップS17に進む。
ステップS17において、ベースバンド出力制御部166は、1フレーム分のデータを出力する。具体的には、デコード制御部164は、1フレーム分のデータの出力を指示する情報をベースバンド出力制御部166に供給する。ベースバンド出力制御部166は、ベースバンド用メモリ153に記憶されている1フレーム分のデータを外部(例えば、バス130を介して信号処理部125)に出力する。その後、処理はステップS7に戻る。
ステップS7において、まだGOP内の全てのピクチャがデコードされていないと判定された場合、処理はステップS8に進み、上述したステップS8以降の処理が実行される。すなわち、次のピクチャがデコードされる。
ステップS7において、GOP内の全てのピクチャがデコードされたと判定された場合、処理はステップS5に戻る。
ステップS5において、まだ全てのGOPがデコードされていないと判定された場合、処理はステップS6に進み、上述したステップS6以降の処理が実行される。すなわち、次のGOPがデコードされる。
ステップS5において、全てのGOPがデコードされたと判定された場合、処理はステップS1に戻る。
ステップS1において、まだ映像ストリームが全てデコードされていないと判定された場合、処理はステップS2に進み、上述したステップS2以降の処理が実行される。すなわち、映像ストリームの次のシーケンス層がデコードされる。
ステップS1において、映像ストリームが全てデコードされたと判定された場合、デコード処理は終了する。
このように、各フレーム(ピクチャ)について、各デコーダ165がデコードを開始する位置として各分割デコード領域の開始位置を検出するだけでよいため、各デコーダ165がデコードを開始する位置を検出する時間が短縮され、映像ストリームのデコードを高速化することができる。
次に、図7乃至図15を参照して、映像ストリームのデコードを高速化する他の実施の形態について説明する。
図7は、所定のプログラムを実行するCPU121により実現されるエンコード部201の機能の構成の例を示す図である。エンコード部201は、エンコーダ211、ピクチャカウント部212、スライスカウント部213、スタート位置メモリ214、スタート位置記録制御部215、および、ストリーム出力制御部216を含むように構成される。
エンコーダ211は、ユーザがマウス114またはキーボード115を用いて入力したエンコードの指示、または、AV処理装置111の各部、あるいは、CPU121に実現されるエンコード部201と異なる機能ブロックから入力されるエンコードの指示に基づいて、外部から入力されるエンコード前のベースバンド信号である映像ストリームを、MPEG2方式に基づいてエンコード(符号化)し、エンコードしたデータをストリーム出力制御部216に供給する。
また、エンコーダ211は、ピクチャ(ピクチャ層)のエンコードを開始する度に、ピクチャのエンコードの開始を通知する情報をピクチャカウント部212およびスタート位置記録制御部215に供給する。さらに、エンコーダ211は、エンコードした映像ストリームの各フレーム(ピクチャ)の開始位置を示す情報(以下、ピクチャ開始位置情報と称する)を、スタート位置メモリ214に記録させる。また、エンコーダ211は、各ピクチャのエンコードが終了する度に、ピクチャのエンコードの終了を通知する情報をスライスカウント部213、および、スタート位置記録制御部215に供給する。さらに、エンコーダ211は、エンコードしたピクチャのデータ長を示す情報(以下、ピクチャデータ長情報と称する)を、スタート位置メモリ214に記録させる。
さらに、エンコーダ211は、スライス(スライス層)のエンコードを開始する度に、スライスのエンコードの開始を通知する情報をスライスカウント部213およびスタート位置記録制御部215に供給する。さらに、エンコーダ211は、エンコードした映像ストリームの開始位置を示す情報(以下、スライス開始位置情報と称する)を、スタート位置メモリ214に記録させる。また、エンコーダ211は、各スライスのエンコードが終了する度に、スライスのエンコードの終了を通知する情報をスタート位置記録制御部215に供給する。さらに、エンコーダ211は、エンコードしたスライスのデータ長を示す情報(以下、スライスデータ長情報と称する)を、スタート位置メモリ214に記録させる。
ピクチャカウント部212は、映像ストリームを記録媒体上で管理する単位であるクリップ内のピクチャの数をカウントする。具体的には、ピクチャカウント部212は、ピクチャカウンタを管理し、エンコーダ211からピクチャのエンコードの開始を通知する情報が供給される毎に、ピクチャカウンタの値をインクリメントする。ピクチャカウント部212は、ピクチャカウンタの値を示す情報をスタート位置記録制御部215に供給する。
スライスカウント部213は、ピクチャ内のスライスの数をカウントする。具体的には、スライスカウント部213は、スライスカウンタを管理し、エンコーダ211からスライスのエンコードの開始を通知する情報が供給される毎に、スライスカウンタの値をインクリメントする。また、スライスカウント部213は、エンコーダ211からピクチャのエンコードの終了を通知する情報が供給された場合、スライスカウンタの値をリセットする。
スタート位置記録制御部215は、スタート位置メモリ214に記録されているピクチャ開始位置情報、スライス開始位置情報、ピクチャデータ長情報、または、スライスデータ長情報を読み出す。また、スタート位置記録制御部215は、ピクチャカウンタの値を示す情報をピクチャカウント部212から取得する。さらに、スタート位置記録制御部215は、スライスカウンタの値を示す情報をスライスカウント部213から取得する。
スタート位置記録制御部215は、ピクチャカウンタの値、ピクチャ開始位置情報、および、ピクチャデータ長情報に基づく、各ピクチャの位置を示す情報(以下、ピクチャ位置情報と称する)の映像ストリームへの記録を指示する情報をストリーム出力制御部216に供給することにより、ピクチャ位置情報の記録を制御する。また、スタート位置記録制御部215は、スライスカウンタの値、スライス開始位置情報、および、スライスデータ長情報に基づく、各スライスの位置を示す情報(以下、スライス位置情報と称する)の映像ストリームへの記録を指示する情報をストリーム出力制御部216に供給することにより、スライス位置情報の記録を制御する。
ストリーム出力制御部216は、エンコーダ211によりエンコードされた映像ストリームを、例えば、CPU121内のキャッシュメモリなどにより構成されるストリーム用メモリ202に一時的に記憶させる。ストリーム出力制御部216は、スタート位置記録制御部215の指示に基づいて、例えば、エンコードされた映像ストリームの各GOPに対応するGOP層のユーザデータ(User Data)領域にピクチャ位置情報を記録する。なお、シーケンス層以下に含まれる全てのGOPに対応するピクチャ位置情報を、映像ストリームのシーケンス層のエクステンション・アンド・ユーザ(Extension and User)領域のユーザデータ(User Data)領域に記録するようにしてもよい。また、ストリーム出力制御部216は、スタート位置記録制御部215の指示に基づいて、例えば、エンコードされた映像ストリームの各ピクチャに対応するピクチャ層のエクステンション・アンド・ユーザ(Extension and User)領域のユーザデータ(User Data)領域にスライス位置情報を記録する。
ストリーム出力制御部216は、ストリーム用メモリ202に記憶されている映像ストリームを読み出し、読み出した映像ストリームを外部(例えば、バス130を介して、ドライブ112またはHDD124)に出力する。
図8は、所定のプログラムを実行するCPU121により実現されるデコード部251の機能の構成の例を示す図である。デコード部251は、図3のデコード部151と比較して、デコード領域設定部163の代わりにスタート位置検出部271が設けられている点が異なる。なお、図中、図3と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
デコード部251は、ストリーム読出し制御部261、ストリーム解析部262、デコード制御部264、デコーダ265−1乃至265−4、ベースバンド出力制御部266、および、スタート位置検出部271を含むように構成される。
ストリーム解析部262は、図3のストリーム解析部162の処理に加えて、映像ストリームに記録されているピクチャ位置情報およびスライス位置情報を抽出し、抽出したピクチャ位置情報およびスライス位置情報をスタート位置検出部271に供給する。
デコード制御部264は、図3のデコード制御部164の処理に加えて、ピクチャNo.(図9)により指定したピクチャの開始位置の検出を指示する情報(以下、開始位置検出指示情報と称する)、または、スライスNo.(図10)により指定したスライスの開始位置の検出を指示する開始位置検出指示情報をスタート位置検出部271に供給する。
スタート位置検出部271は、ピクチャ位置情報またはスライス位置情報に基づいて、開始位置検出指示情報により指定されたピクチャまたはスライスの開始位置を検出する。スタート位置検出部271は、検出したピクチャまたはスライスの開始位置を示す情報をデコード制御部264に供給する。
なお、以下、デコーダ265−1乃至265−4を個々に区別する必要がない場合、単に、デコーダ265と称する。
図9は、ピクチャ位置情報のデータの構成の例を示す図である。ピクチャ位置情報は、映像ストリーム内のGOPごとに記録され、ピクチャ開始アドレス、および、GOPに含まれる各ピクチャに対応する個別情報を含むように構成される。
ピクチャ開始アドレスは、GOP内の先頭のピクチャの開始位置のクリップの先頭からの相対位置(相対アドレス)を示す。なお、映像ストリームを記録媒体(例えば、リムーバブルメディア116またはHDD124)に記録する場合、ピクチャ開始アドレスを、GOP内の先頭のピクチャが記録媒体に記録される位置の先頭のアドレスとするようにしてもよい。
個別情報は、ピクチャNo.、データ長、および、オフセットを含むように構成される。
ピクチャNo.は、クリップ内の先頭のピクチャを起点にしてカウントしたシリアルNo.である。ピクチャNo.は、1つのクリップ内でリセットされないため、クリップの先頭から何番目のピクチャであるかを示す。
データ長は、ピクチャのデータ長を示す。
オフセットは、ピクチャ開始アドレスからのオフセット(相対アドレス)を示す。従って、ピクチャ開始アドレスとオフセットに基づいて、各ピクチャの開始位置のクリップの先頭からの相対アドレスを求めることができる。なお、映像ストリームを記録媒体(例えば、リムーバブルメディア116またはHDD124)に記録する場合、映像ストリームを記録媒体に記録する場合、各ピクチャについて、オフセットの代わりに、ピクチャが記録媒体に記録される位置の先頭のアドレスを記録するようにしてもよい。
図10は、スライス位置情報のデータの構成の例を示す図である。スライス位置情報は、映像ストリーム内のピクチャごとに記録され、スライス開始アドレス、および、ピクチャに含まれる各スライスに対応する個別情報を含むように構成される。
スライス開始アドレスは、ピクチャ内の先頭のスライスの開始位置のクリップの先頭からの相対アドレスを示す。なお、スライス開始アドレスを、ピクチャ内の先頭のスライスが記録媒体(例えば、リムーバブルメディア116またはHDD124)に記録される位置の先頭のアドレスとするようにしてもよい。
個別情報は、スライスNo.、データ長、および、オフセットを含むように構成される。
スライスNo.は、ピクチャ内の先頭のスライスを起点にしてカウントしたシリアルNo.である。スライスNo.は、ピクチャが変わるごとにリセットされるため、ピクチャ内において先頭から何番目のスライスであるかを示す。
データ長は、スライスのデータ長を示す。
オフセットは、スライス開始アドレスからのオフセット(相対アドレス)を示す。従って、スライス開始アドレスとオフセットに基づいて、各スライスの開始位置のクリップの先頭からの相対アドレスを求めることができる。なお、映像ストリームを記録媒体(例えば、リムーバブルメディア116またはHDD124)に記録する場合、各スライスについて、オフセットの代わりに、スライスが記録媒体(例えば、リムーバブルメディア116またはHDD124)に記録される位置のアドレスを記録するようにしてもよい。
次に、図11のフローチャートを参照して、エンコード部201により実行されるエンコード処理を説明する。なお、この処理は、例えば、エンコーダ211が、ユーザがマウス114またはキーボード115を用いて入力したエンコードの指示を、インタフェース129−1およびバス130を介して取得した場合、開始される。また、以下、外部映像記録装置113−1からエンコード前のベースバンド信号である映像ストリームが、インタフェース129−2およびバス130を介してエンコーダ211に入力され、エンコードされた映像ストリームがリムーバブルメディア116に記録される場合の例を説明する。
ステップS101において、エンコーダ211は、全ての映像ストリームをエンコードしたか否かを判定する。まだ全ての映像ストリームがエンコードされていないと判定された場合、例えば、外部映像記録装置113−1からの映像ストリームの入力が継続している場合、処理はステップS102に進む。
ステップS102において、エンコーダ211は、シーケンス層を変更するか否かを判定する。シーケンス層を変更すると判定された場合、例えば、映像ストリームの画像サイズが変更されたり、外部からエンコーダ211にシーケンス層の変更を指示する情報が入力された場合、処理はステップS103に進む。
ステップS103において、エンコーダ211は、映像ストリームのシーケンス層をエンコードする。エンコーダ211は、エンコードしたデータをストリーム出力制御部216に供給する。ストリーム出力制御部216は、取得したデータをストリーム用メモリ202に記憶させる。
ステップS102において、シーケンス層を変更しないと判定された場合、ステップS103の処理はスキップされ、処理はステップS104に進む。
ステップS104において、エンコーダ211は、GOP層をエンコードする。このとき、エンコーダ211は、GOP層のユーザデータ領域にピクチャ位置情報を後から記録するための領域を確保する。エンコーダ211は、エンコードしたデータをストリーム出力制御部216に供給する。ストリーム出力制御部216は、取得したデータをストリーム用メモリ202に記憶させる。
ステップS105において、エンコード部201は、ピクチャ層以下エンコード処理を行う。ピクチャ層以下エンコード処理の詳細は、図12を参照して後述するが、この処理により、ピクチャ層以下がエンコードされる。その後、処理はステップS101に戻り、ステップS101において、映像ストリームが全てエンコードされたと判定されるまで、ステップS101乃至S105の処理が繰り返し実行され、映像ストリームがエンコードされる。
ステップS101において、映像ストリームが全てエンコードされたと判定された場合、例えば、外部映像記録装置113−1からの映像ストリームの入力が終了し、入力された映像ストリームのエンコードが全て終了している場合、エンコード処理は終了する。
次に、図12のフローチャートを参照して、図11のステップS105のピクチャ層以下エンコード処理の詳細を説明する。
ステップS121において、エンコーダ211は、GOP内の全てのピクチャをエンコードしたか否かを判定する。エンコーダ211は、現在エンコード中のGOPに含める予定の数のピクチャをエンコードしたか否かを確認し、まだ現在エンコード中のGOPに含める予定の数のピクチャをエンコードしていない場合、まだGOP内の全てのピクチャをエンコードしていないと判定し、処理はステップS122に進む。
ステップS122において、ピクチャカウント部212は、ピクチャカウンタをインクリメントする。具体的には、エンコーダ211は、次のピクチャのエンコードの開始を通知する情報をピクチャカウント部212に供給する。ピクチャカウント部212は、ピクチャカウンタをインクリメントする。
ステップS123において、エンコーダ211は、ピクチャの開始位置を決定する。具体的には、エンコーダ211は、次にエンコードするピクチャの記録を開始する位置を決定する。エンコーダ211は、次にエンコードするピクチャがGOPの先頭のピクチャである場合、決定した開始位置のクリップの先頭からの相対アドレスを示すピクチャ開始位置情報をスタート位置メモリ214に記憶させる。また、エンコーダ211は、次にエンコードするピクチャがGOPの先頭のピクチャでない場合、決定した開始位置のGOPの先頭のピクチャからのオフセットを示すピクチャ開始位置情報をスタート位置メモリ214に記憶させる。
ステップS124において、ストリーム出力制御部216は、ピクチャの開始位置を記録する。具体的には、エンコーダ211は、次のピクチャのエンコードの開始を通知する情報をスタート位置記録制御部215に供給する。スタート位置記録制御部215は、ピクチャカウント部212から、ピクチャカウンタの値を示す情報を取得し、スタート位置メモリ214から、ピクチャ開始位置情報を取得する。
次にエンコードするピクチャがGOPの先頭のピクチャである場合、ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、ストリーム用メモリ202に記憶されているエンコード中のGOPに対応するピクチャ位置情報について、ピクチャ開始アドレスにピクチャ開始位置情報の値を記録する。また、ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、エンコード中のGOPに対応するピクチャ位置情報の先頭の個別情報について、ピクチャNo.にピクチャカウンタの値を記録し、オフセットに0を記録する。
また、次にエンコードするピクチャがGOPの先頭のピクチャでない場合、ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、エンコード中のGOPに対応するピクチャ位置情報の次にエンコードするピクチャに対応する個別情報について、ピクチャNo.にピクチャカウンタの値を記録し、オフセットにピクチャ開始位置情報の値を記録する。
ステップS125において、エンコーダ211は、ピクチャ層をエンコードする。このとき、エンコーダ211は、ピクチャ層のユーザデータ領域にスライス位置情報を後から記録するための領域を確保する。エンコーダ211は、エンコードしたデータをストリーム出力制御部216に供給する。ストリーム出力制御部216は、取得したデータをストリーム用メモリ202に記憶させる。
ステップS126において、エンコーダ211は、ピクチャ内の全てのスライスをエンコードしたか否かを判定する。エンコーダ211は、ピクチャ内に含まれる所定の数のスライスをエンコードしたか否かを確認し、まだピクチャ内に含まれる所定の数のスライスをエンコードしていない場合、まだピクチャ内の全てのスライスをエンコードしていないと判定し、処理はステップS127に進む。
ステップS127において、スライスカウント部213は、スライスカウンタをインクリメントする。具体的には、エンコーダ211は、次のスライスのエンコードの開始を通知する情報をスライスカウント部213に供給する。スライスカウント部213は、スライスカウンタをインクリメントする。
ステップS128において、エンコーダ211は、スライスの開始位置を決定する。具体的には、エンコーダ211は、次にエンコードするスライスの記録を開始する位置を決定する。エンコーダ211は、次にエンコードするスライスがピクチャの先頭のスライスである場合、決定した開始位置のクリップの先頭からの相対アドレスを示すスライス開始位置情報をスタート位置メモリ214に記憶させる。また、エンコーダ211は、次にエンコードするスライスがピクチャの先頭のスライスでない場合、決定した開始位置のピクチャの先頭のスライスからのオフセットを示すスライス開始位置情報をスタート位置メモリ214に記憶させる。
ステップS129において、ストリーム出力制御部216は、スライスの開始位置を記録する。具体的には、エンコーダ211は、次のスライスのエンコードの開始を通知する情報をスタート位置記録制御部215に供給する。スタート位置記録制御部215は、スライスカウント部213から、スライスカウンタの値を示す情報を取得し、スタート位置メモリ214から、スライス開始位置情報を取得する。
次にエンコードするスライスがピクチャの先頭のスライスである場合、ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、ストリーム用メモリ202に記憶されているエンコード中のピクチャに対応するスライス位置情報について、スライス開始アドレスにスライス開始位置情報の値を記録する。また、ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、エンコード中のピクチャに対応するスライス位置情報内の先頭の個別情報について、スライスNo.にスライスカウンタの値を記録し、オフセットに0を記録する。
また、次にエンコードするスライスがピクチャの先頭のスライスでない場合、ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、エンコード中のピクチャに対応するスライス位置情報内の次にエンコードするスライスに対応する個別情報について、スライスNo.にスライスカウンタの値を記録し、オフセットにスライス開始位置情報の値を記録する。
ステップS130において、エンコーダ211は、スライス層以下の層をエンコードする。エンコーダ211は、エンコードしたデータをストリーム出力制御部216に供給する。ストリーム出力制御部216は、取得したデータをストリーム用メモリ202に記憶させる。
ステップS131において、ストリーム出力制御部216は、スライスのデータ長を記録する。具体的には、エンコーダ211は、エンコードが終了したスライスのデータ長を示すスライスデータ長情報をスタート位置メモリ214に記憶させる。また、エンコーダ211は、スライスのエンコードが終了したことを示す情報をスタート位置記録制御部215に供給する。スタート位置記録制御部215は、スタート位置メモリ214から、スライスデータ長情報を取得する。ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、ストリーム用メモリ202に記憶されているエンコード中のピクチャに対応するスライス位置情報内のエンコードが終了したスライスに対応する個別情報について、データ長にスライスデータ長情報の値を記録する。
その後、処理はステップS126に戻り、ステップS126において、ピクチャ内の全てのスライスがエンコードされたと判定されるまで、ステップS126乃至S131の処理が繰り返し実行され、ピクチャ内の全てのスライスがエンコードされる。
ステップS126において、エンコーダ211は、ピクチャ内に含まれる所定の数のスライスのエンコードが終了している場合、ピクチャ内の全てのスライスをエンコードしたと判定し、処理はステップS132に進む。
ステップS132において、ストリーム出力制御部216は、ピクチャのデータ長を記録する。具体的には、エンコーダ211は、エンコードが終了したピクチャのデータ長を示すピクチャデータ長情報をスタート位置メモリ214に記憶させる。また、エンコーダ211は、ピクチャのエンコードが終了したことを示す情報をスタート位置記録制御部215に供給する。スタート位置記録制御部215は、スタート位置メモリ214から、ピクチャデータ長情報を取得する。ストリーム出力制御部216は、スタート位置記録制御部215の制御の基に、ストリーム用メモリ202に記憶されているエンコード中のGOPに対応するピクチャ位置情報内のエンコードが終了したピクチャに対応する個別情報について、データ長にピクチャデータ長情報の値を記録する。
ステップS133において、スライスカウント部213は、スライスカウンタをリセットする。具体的には、エンコーダ211は、ピクチャのエンコードが終了したことを示す情報をスライスカウント部213に供給する。スライスカウント部213は、スライスカウンタをリセットする。
その後、処理はステップS121に戻り、ステップS121において、GOP内の全てのピクチャがエンコードされたと判定されるまで、ステップS121乃至S133の処理が繰り返し実行され、GOP内の全てのピクチャがエンコードされる。
ステップS121において、エンコーダ211は、現在エンコード中のGOPに含める予定の数のピクチャのエンコードが終了している場合、GOP内の全てのピクチャをエンコードしたと判定し、処理はステップS134に進む。
ステップS134において、ストリーム出力制御部216は、映像ストリームを出力し、ピクチャ層以下エンコード処理は終了する。具体的には、例えば、ストリーム出力制御部216は、ストリーム用メモリ202のデータ量が所定の閾値を超えている場合、ストリーム用メモリ202に記憶されているエンコードされた映像ストリームを、バス130およびインタフェース129−3を介して、ドライブ112に供給する。ドライブ112は、リムーバブルメディア116に映像ストリームを記録する。
次に、図13および図14のフローチャートを参照して、エンコード部201によりエンコードされた映像ストリームをデコード部251によりデコードする場合のデコード処理を説明する。なお、この処理は、例えば、デコード制御部264が、ユーザがマウス114またはキーボード115を用いて入力したデコードの指示を、インタフェース129−1およびバス130を介して取得した場合、開始される。また、以下、リムーバブルメディア116に記録されている映像ストリームをデコードする場合の例を説明する。さらに、以下、上述した図1の右側に示されるように、各ピクチャについて、ピクチャ内のいちばん上のスライスから順番に1つずつ各デコーダ265が並列してスライスをデコードするものとする。
ステップS151において、上述した図4のステップS1と同様の処理により、映像ストリームが全てデコードされたか否かが判定される。まだ映像ストリームが全てデコードされていないと判定された場合、処理はステップS152に進む。
ステップS152において、上述した図4のステップS2と同様の処理により、デコードする映像ストリームのシーケンス層がリムーバブルメディア116から読み出され、シーケンス層がデコードされる。
ステップS153において、上述した図4のステップS5と同様の処理により、全てのGOPがデコードされたか否かが判定される。まだ全てのGOPがデコードされていないと判定された場合、処理はステップS154に進む
ステップS154において、上述した図4のステップS6と同様の処理により、次にデコードするGOPがリムーバブルメディア116から読み出され、読み出されたGOPのGOP層がデコードされる。
ステップS155において、ストリーム解析部262は、ピクチャ位置情報を抽出する。具体的には、ストリーム解析部262は、ステップS154においてデコードしたGOP層のユーザデータ領域に記録されているピクチャ位置情報を抽出する。ストリーム解析部262は、抽出したピクチャ位置情報をスタート位置検出部271に供給する。
ステップS156において、上述した図4のステップS7と同様の処理により、GOP内の全てのピクチャがデコードされたか否かが判定される。まだGOP内の全てのピクチャがデコードされていないと判定された場合、処理はステップS157に進む。
ステップS157において、ストリーム読出し制御部261は、次にデコードするピクチャのピクチャ層を読み出す。具体的には、デコード制御部264は、ピクチャNo.を指定することにより次にデコードするピクチャの開始位置の検出を指示する開始位置検出指示情報をスタート位置検出部271に供給する。スタート位置検出部271は、ピクチャ位置情報に基づいて、指定されたピクチャNo.のピクチャの開始位置を検出する。スタート位置検出部271は、検出したピクチャの開始位置を示す情報をデコード制御部264に供給する。デコード制御部264は、スタート位置検出部271により検出されたピクチャの開始位置からのピクチャ層の読出しを指示する情報をストリーム読出し制御部261に供給する。ストリーム読出し制御部261は、指定された開始位置から始まる、次にデコードするピクチャのピクチャ層をストリーム用メモリ152に記憶されているGOPから読み出す。ストリーム読出し制御部261は、読み出したピクチャ層をストリーム解析部262に供給する。
ステップS158において、上述した図4のステップS9と同様の処理により、ピクチャ層がデコードされる。
ステップS159において、ストリーム解析部262は、スライス位置情報を抽出する。具体的には、ストリーム解析部262は、ステップS158においてデコードしたピクチャ層のユーザデータ領域に記録されているスライス位置情報を抽出する。ストリーム解析部262は、抽出したスライス位置情報をスタート位置検出部271に供給する。
ステップS160において、スタート位置検出部271は、デコードを開始する位置を検出する。具体的には、デコード制御部264は、スライスNo.を指定することにより次に各デコーダ265がデコードする各スライスの開始位置の検出を指示する開始位置検出指示情報をスタート位置検出部271に供給する。スタート位置検出部271は、スライス位置情報に基づいて、指定されたスライスNo.のスライスの開始位置を検出する。デコード制御部264は、検出した各スライスの開始位置を示す情報をデコード制御部264に供給する。
ステップS161において、デコード制御部264は、デコードの開始を指示する。具体的には、デコード制御部264は、ステップS160において検出された開始位置から始まる各スライスの各デコーダ265への供給を指示する情報をストリーム読出し制御部261に供給する。また、デコード制御部264は、次のスライスのデコードの開始を指示する情報を各デコーダ265に供給する。
ステップS162において、デコーダ265は、デコードを開始する。具体的には、ストリーム読出し制御部261は、デコード制御部264により指示された開始位置から始まるスライスをストリーム用メモリ152から読み出し、読み出したスライスを各デコーダ265に供給する。デコーダ265は、取得したスライスのデコードを開始する。デコーダ265は、ステップS162において開始したスライスのデコードが終了した場合、デコードが終了したことを示す情報をデコード制御部264に供給し、デコードしたデータをベースバンド出力制御部266に供給する。ベースバンド出力制御部266は、取得したデータをベースバンド用メモリ153に記憶させる。
ステップS163において、上述した図5のステップS13と同様の処理により、エラーが発生したか否かが判定される。エラーが発生していないと判定された場合、処理はステップS164に進む。
ステップS164において、デコード制御部264は、デコードが終了したデコーダ265があるか否かを判定する。デコード制御部264は、デコードが終了したことを示す情報をどのデコーダ165からも取得していない場合、デコードが終了したデコーダ265がないと判定し、処理はステップS163に戻り、ステップS163において、エラーが発生したと判定されるか、または、ステップS164において、デコードが終了したデコーダ265があると判定されるまで、ステップS163およびS164の判定処理が繰り返し実行される。
ステップS164において、デコード制御部264は、デコードが終了したことを示す情報を1つ以上のデコーダ165から取得している場合、デコードが終了したデコーダ265があると判定し、処理はステップS165に進む。
ステップS165において、デコード制御部264は、デコードが終了したデコーダ265が、デコード中のピクチャにおいて割り当てられたスライスを全てデコードしたか否かを判定する。デコード中のピクチャにおいて割り当てられているスライスがまだ全てデコードされていないと判定された場合、処理はステップS160に戻り、ステップS160以降の処理が実行される。すなわち、デコードが終了したデコーダ265は、デコード中のピクチャにおいて割り当てられている次のスライスをデコードする。
ステップS163において、エラーが発生したと判定された場合、処理はステップS166に進む。
ステップS166において、デコード制御部264は、デコードを再開する位置を決定する。デコード制御部264は、例えば、デコードを失敗したスライスの次のスライスをデコードの再開位置に決定する。その後、処理はステップS160に戻り、ステップS160以降の処理が実行される。すなわち、エラーが発生したデコーダ265は、エラーが発生したスライスの次のスライスをデコードする。
ステップS165において、デコードが終了したデコーダ265が、デコード中のピクチャにおいて割り当てられたスライスを全てデコードしたと判定された場合、処理はステップS167に進む。
ステップS167において、デコード制御部264は、全てのデコーダ265の処理が終了したか否かを判定する。具体的には、デコード制御部264は、デコード中のピクチャにおいてそれぞれ割り当てられたスライスのデコードが終了していないデコーダ265があるか否かを検出し、割り当てられたスライスのデコードが終了していないデコーダ265がある場合、まだ全てのデコーダ265の処理が終了していないと判定し、処理はステップS163に戻り、ステップS163以降の処理が実行される。すなわち、デコード中のピクチャにおいて割り当てられたスライスのデコードが終了したデコーダ265は待機したまま、割り当てられたスライスのデコードが終了していないデコーダ265の処理が継続して実行される。
ステップS167において、全てのデコーダ265の処理が終了したと判定された場合、処理はステップS168に進む。
ステップS168において、上述した図5のステップS17と同様の処理により、1フレーム分のデータが出力され、処理はステップS156に戻る。
ステップS156において、まだGOP内の全てのピクチャがデコードされていないと判定された場合、処理はステップS157に進み、上述したステップS157以降の処理が実行される。すなわち、次のピクチャがデコードされる。
ステップS156において、GOP内の全てのピクチャがデコードされたと判定された場合、処理はステップS153に戻る。
ステップS153において、まだ全てのGOPがデコードされていないと判定された場合、処理はステップS154に進み、上述したステップS154以降の処理が実行される。すなわち、次のGOPがデコードされる。
ステップS153において、全てのGOPがデコードされたと判定された場合、処理はステップS151に戻る。
ステップS151において、まだ映像ストリームが全てデコードされていないと判定された場合、処理はステップS152に進み、上述したステップS152以降の処理が実行される。すなわち、映像ストリームの次のシーケンス層がデコードされる。
ステップS151において、映像ストリームが全てデコードされたと判定された場合、デコード処理は終了する。
次に、図15のフローチャートを参照して、映像ストリームを先頭からデコードせずに、ユーザの指示などにより指定されてピクチャからデコードを開始する場合、デコード部251により実行されるデコード開始位置検出処理を説明する。
ステップS181において、デコード制御部164は、デコードを開始する位置を検出する。具体的には、デコード制御部164は、ユーザにより指示されたデコードの開始位置のピクチャのピクチャNo.を検出する。
ステップS182において、上述した図4のステップS2と同様の処理により、シーケンス層がデコードされる。
ステップS183において、上述した図4のステップS6と同様の処理により、デコードを開始するピクチャを含むGOPのGOP層がデコードされる。
ステップS184において、上述した図13のステップS155と同様の処理により、デコードを開始するピクチャを含むGOPのピクチャ位置情報が抽出される。
ステップS185において、上述した図13のステップS157と同様の処理により、ピクチャ位置情報に基づいて、デコードを開始するピクチャのピクチャ層が読み出される。
ステップS186において、上述した図13のステップS158と同様の処理により、デコードを開始するピクチャのピクチャ層がデコードされる。
ステップS187において、上述した図13のステップS159と同様の処理により、デコードを開始するピクチャのスライス情報が抽出される。
ステップS188において、上述した図13のステップS160と同様の処理により、スライス位置情報に基づいて、各デコーダ265がデコードを開始するスライスの位置が検出される。
ステップS189において、上述した図13のステップS161と同様の処理により、ステップS188において検出された開始位置から始まる各スライスの各デコーダ265への供給を指示する情報がストリーム読出し制御部261に供給され、ステップS188に検出された開始位置から始まるスライスのデコードの開始が各デコーダ265に指示され、デコード開始位置検出処理は終了する。
このように、ストリーム解析部262がピクチャ層をデコードする場合、映像ストリーム上のピクチャ層の開始位置(スタートコード)を検索することなく、ピクチャ位置情報に基づいて、迅速にデコードの開始位置が検出される。また、各デコーダ465がスライスをデコードする場合、映像ストリーム上のスライス層の開始位置(スタートコード)を検索することなく、スライス位置情報に基づいて、迅速にデコードの開始位置が検出される。従って、デコードを開始する位置を検出する時間が短縮され、映像ストリームのデコードを高速化することができる。なお、デコード処理を分割せずに1つのデコーダによりデコードする場合も同様に、デコードを開始する位置を検出する時間が短縮され、映像ストリームのデコードを高速化することができる。
なお、ピクチャ位置情報およびスライス位置情報を、映像ストリーム内に記録せずに、映像ストリームとは異なるファイルに記録することも可能である。図16乃至図23を参照して、ピクチャ位置情報およびスライス位置情報を映像ストリームとは異なるファイルに記録する場合の実施の形態を説明する。
図16は、所定のプログラムを実行するCPU121により実現されるエンコード部301の機能の構成の例を示す図である。エンコード部301は、図7のエンコード部201と比較して、GOPカウント部321が設けられている点が異なる。なお、図中、図7と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
エンコード部301は、エンコーダ311、ピクチャカウント部312、スライスカウント部313、スタート位置メモリ314、スタート位置記録制御部315、ストリーム出力制御部316、および、GOPカウント部321を含むように構成される。
エンコーダ311は、図7のエンコーダ211の処理に加えて、映像ストリームのエンコードを開始する前に、エンコードすることにより生成される映像ストリームのクリップの記録媒体(例えば、リムーバブルメディア116またはHDD124)への記録を開始する位置を示す情報(以下、クリップ開始位置情報と称する)を、スタート位置メモリ314に記憶させる。また、エンコーダ311は、映像ストリームのエンコードを開始するとき、映像ストリームのエンコードの開始を通知する情報をスタート位置記録制御部315に供給する。さらに、エンコーダ311は、GOP(GOP層)のエンコードを開始する度に、GOPのエンコードの開始を通知する情報をGOPカウント部321およびスタート位置記録制御部315に供給する。
GOPカウント部321は、クリップ内のGOPの数をカウントする。具体的には、GOPカウント部321は、GOPカウンタを管理し、エンコーダ311からGOPのエンコードの開始を通知する情報が供給される毎に、GOPカウンタの値をインクリメントする。
スタート位置記録制御部315は、スタート位置メモリ314に記録されているピクチャ開始位置情報、スライス開始位置情報、ピクチャデータ長情報、スライスデータ長情報、または、クリップ開始位置情報を読み出す。また、スタート位置記録制御部315は、ピクチャカウンタの値を示す情報をピクチャカウント部312から取得する。さらに、スタート位置記録制御部315は、スライスカウンタの値を示す情報をスライスカウント部313から取得する。また、スタート位置記録制御部315は、GOPカウンタの値を示す情報をGOPカウント部321から取得する。
スタート位置記録制御部315は、クリップ内の各ピクチャおよび各スライスの位置を示す情報(以下、クリップ位置情報と称する)を生成する。スタート位置記録制御部315は、ストリーム用メモリ202にクリップ位置情報を一時的に記憶させ、クリップ位置情報を適宜更新する。
ストリーム出力制御部316は、エンコーダ311によりエンコードされた映像ストリームをストリーム用メモリ202に一時的に記憶させる。ストリーム出力制御部316は、トリーム用メモリ202に記憶されている映像ストリームまたはクリップ位置情報を読み出し、読み出した映像ストリームまたはクリップ位置情報を外部(例えば、バス130を介して、ドライブ112またはHDD124)に出力する。
図17は、所定のプログラムを実行するCPU121により実現されるデコード部351の機能の構成の例を示す図である。なお、図中、図8と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
デコード部351は、ストリーム読出し制御部361、ストリーム解析部362、デコード制御部364、デコーダ365−1乃至365−4、および、ベースバンド出力制御部366、および、スタート位置検出部371を含むように構成される。
デコード制御部364は、図8のデコード制御部264の処理に加えて、デコードする映像ストリームのクリップに対応するクリップ位置情報の取得を指示する情報をスタート位置検出部371に供給する。
スタート位置検出部371は、デコードする映像ストリームのクリップに対応するクリップ位置情報を、クリップが記録されている記録媒体から読み出す。スタート位置検出部371は、クリップ位置情報に基づいて、デコード制御部364からの開始位置検出指示情報により指定されたピクチャまたはスライスの開始位置を検出する。スタート位置検出部371は、検出したピクチャまたはスライスの開始位置を示す情報をデコード制御部364に供給する。
なお、以下、デコーダ365−1乃至365−4を個々に区別する必要がない場合、単にデコーダ365と称する。
図18は、クリップ位置情報のデータの構成の例を示す図である。クリップ位置情報は、映像ストリームのクリップごとに記録され、クリップNo.、クリップ開始アドレス、ピクチャ位置情報、および、スライス位置情報を含むように構成される。
クリップNo.は、クリップ位置情報に対応するクリップを識別するための番号であって、記録媒体に記録されている映像ストリームのクリップを一意に識別するために割り当てられた番号である。
クリップ開始アドレスは、クリップが記録媒体(例えば、リムーバブルメディア116またはHDD124)に記録される位置の先頭のアドレスを示す。
ピクチャ位置情報は、図19を参照して後述するように、クリップに含まれる各GOPについて、GOP内の各ピクチャの位置を示す情報が記録される。
スライス位置情報は、図20を参照して後述するように、クリップに含まれる各ピクチャについて、ピクチャ内の各スライスの位置を示す情報が記録される。
図19は、図18のクリップ位置情報に含まれるピクチャ位置情報のデータの構成の例を示す図である。クリップ位置情報のピクチャ位置情報は、図10のピクチャ位置情報と比較して、GOP No.が追加されている点が異なる。GOP No.は、クリップ内のGOPを一意に識別するために割り当てられた番号であり、ピクチャ位置情報に対応するGOPのGOP No.を示す。
図20は、図18のクリップ位置情報に含まれるスライス位置情報のデータの構成の例を示す図である。クリップ位置情報のスライス位置情報は、図11のスライス位置情報と比較して、ピクチャ No.が追加されている点が異なる。ピクチャ No.は、スライス位置情報に対応するピクチャのピクチャ No.を示す。
次に、図21のフローチャートを参照して、エンコード部301により実行されるエンコード処理を説明する。なお、この処理は、例えば、エンコーダ311が、ユーザがマウス114またはキーボード115を用いて入力したエンコードの指示を、インタフェース129−1およびバス130を介して取得した場合、開始される。また、以下、外部映像記録装置113−1からエンコード前のベースバンド信号である映像ストリームが、インタフェース129−2およびバス130を介してエンコーダ311に入力され、エンコードされた映像ストリームがリムーバブルメディア116に記録される場合の例を説明する。
ステップS201において、エンコーダ311は、クリップの開始位置を決定する。具体的には、エンコーダ311は、エンコードする映像ストリームのクリップのリムーバブルメディア116への記録を開始する位置を決定する。エンコーダ311は、決定した開始位置を示すクリップ開始位置情報をスタート位置メモリ314に記憶させる。
ステップS202において、スタート位置記録制御部315は、クリップの開始位置を記録する。具体的には、エンコーダ311は、映像ストリームのエンコードの開始を通知する情報をスタート位置記録制御部315に供給する。スタート位置記録制御部315は、スタート位置メモリ314からクリップ開始位置情報を取得する。スタート位置記録制御部315は、クリップ位置情報を生成する。スタート位置記録制御部315は、エンコードを開始する映像ストリームのクリップのクリップNo.をクリップ位置情報に記録する。また、スタート位置記録制御部315は、クリップ位置情報のクリップ開始アドレスに、クリップ開始位置情報の値を記録する。スタート位置記録制御部315は、クリップ位置情報をストリーム用メモリ152に記憶させる。
ステップS203において、上述した図11のステップS101と同様の処理により、映像ストリームが全てエンコードされたか否かが判定される。まだ全ての映像ストリームがエンコードされていないと判定された場合、処理はステップS204に進む。
ステップS204において、上述した図11のステップS102と同様の処理により、シーケンス層を変更するか否かが判定される。シーケンス層を変更すると判定された場合、処理はステップS205に進む。
ステップS205において、上述した図11のステップS103と同様の処理により、シーケンス層がエンコードされる。
ステップS204において、シーケンス層を変更しないと判定された場合、ステップS205の処理はスキップされ、処理はステップS206に進む。
ステップS206において、GOPカウント部321は、GOPカウンタをインクリメントする。具体的には、エンコーダ311は、次のGOPのエンコードの開始を通知する情報をGOPカウント部321に供給する。GOPカウント部321は、GOPカウンタをインクリメントする。
ステップS207において、スタート位置記録制御部315は、GOP No.を記録する。具体的には、エンコーダ311は、次のGOPのエンコードの開始を通知する情報をスタート位置記録制御部315に供給する。スタート位置記録制御部315は、GOPカウント部321から、GOPカウンタの値を示す情報を取得する。スタート位置記録制御部315は、ストリーム用メモリ202に記憶されているクリップ位置情報の次にエンコードするGOPに対応するピクチャ位置情報について、GOP No.にGOPカウンタの値を記録する。
ステップS208において、上述した図11のステップS104と同様の処理により、GOP層がエンコードされる。
ステップS209において、図12を参照して上述したピクチャ層以下エンコード処理が行われる。なお、図7のエンコーダ211により実行されるピクチャ層以下エンコード処理と異なり、ピクチャ位置情報およびスライス位置情報が、ストリーム用メモリ202に記憶されているクリップ位置情報に記録される。
その後、処理はステップS203に戻り、ステップS203において、映像ストリームを全てエンコードしたと判定されるまで、ステップS203乃至S209の処理が繰り返し実行される。
ステップS203において、映像ストリームが全てエンコードされたと判定された場合、処理はステップS210に進む。
ステップS210において、ストリーム出力制御部316は、クリップ位置情報を出力し、エンコード処理は終了する。具体的には、ストリーム出力制御部316は、ストリーム用メモリ202に記憶されているクリップ位置情報を読出し、読み出したクリップ位置情報を、バス130およびインタフェース129−3を介して、ドライブ112に供給する。ドライブ112は、リムーバブルメディア116に、対応するクリップとは別のファイルとしてクリップ位置情報を記録する。
次に、図22および図23のフローチャートを参照して、デコード部351により実行されるデコード処理を説明する。図22および図23のフローチャートは、上述した図13および図14のフローチャートと比較して、ステップS251の処理が追加されている。
すなわち、ステップS251において、スタート位置検出部371は、クリップ位置情報を取得する。具体的には、デコード制御部364は、デコードする映像ストリームのクリップに対応するクリップ位置情報の取得を指示する情報をスタート位置検出部371に供給する。ドライブ112は、スタート位置検出部371の制御の基に、クリップ位置情報をリムーバブルメディア116から読み出し、読み出したクリップ位置情報を、インタフェース129−3およびバス130を介して、スタート位置検出部371に供給する。
また、図22および図23のフローチャートは、上述した図13および図14のフローチャートと比較して、映像ストリームに記録されているピクチャ位置情報およびスライス位置情報を抽出する必要がないため、図13のステップS155およびS159に相当する処理が削除される。従って、ピクチャ位置情報およびスライス位置情報の抽出に要する時間が短縮される。
その他のステップの処理は、図13および図14を参照して上述した処理と同様であり、その説明は繰り返しになるので省略する。なお、ピクチャ層のデコードの開始位置、および、各デコーダ365のデコードの開始位置が、クリップ位置情報に基づいて検出される。
なお、図3乃至図6を参照して上述した処理と、図7乃至図15または図16乃至図21を参照して上述した処理とを組み合わせることにより、すなわち、映像ストリーム上で連続したスライスを含むように分割デコード領域を設定するとともに、ピクチャ位置情報およびスライス位置情報を記録するようにした場合、さらに映像ストリームのデコードを高速化することかできる。以下、図3乃至図6を参照して上述した処理と、図7乃至図15を参照して上述した処理とを組み合わせた場合の実施の形態を説明する。なお、映像ストリームのエンコードについては、図7、図11および図12を参照して上述した処理と同様であり、その説明は繰り返しになるので省略する。
図24は、所定のプログラムを実行するCPU121により実現されるデコード部451の機能の構成の例を示す図である。デコード部451は、図8のデコード部251と比較して、デコード領域設定部463が設けられている点が異なる。なお、図中、図8と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
デコード部451は、ストリーム読出し制御部461、ストリーム解析部462、デコード領域設定部463、デコード制御部464、デコーダ465−1乃至465−4、ベースバンド出力制御部466、および、スタート位置検出部471を含むように構成される。
ストリーム解析部462は、映像ストリームのピクチャ層までの層をデコードし、デコードすることに得られた情報をデコード制御部464に供給する。また、ストリーム解析部462は、映像ストリームのシーケンス層をデコードすることにより得られた映像ストリームの画像サイズを示す情報をデコード領域設定部463に供給する。さらに、ストリーム解析部462は、映像ストリームに記録されているピクチャ位置情報およびスライス位置情報を抽出し、抽出したピクチャ位置情報およびスライス位置情報をスタート位置検出部471に供給する。
デコード領域設定部463は、図3のデコード領域設定部163と同様に、分割デコード領域を設定する。デコード領域設定部163は、設定した分割デコード領域を示す情報を、デコード制御部464に供給する。
デコード制御部464は、図8のデコード制御部264の処理に加えて、分割デコード領域に基づいて、デコーダ465−1乃至465−4がデコードするスライスを決定する。
なお、以下、デコーダ465−1乃至465−4を個々に区別する必要がない場合、単にデコーダ465と称する。
次に、図25および図26のフローチャートを参照して、デコード部451により実行されるデコード処理を説明する。
ステップS351において、上述した図4のステップS1と同様の処理により、映像ストリームが全てデコードされたか否かが判定される。まだ映像ストリームが全てデコードされていないと判定された場合、処理はステップS352に進む。
ステップS352において、上述した図4のステップS2と同様の処理により、デコードする映像ストリームのシーケンス層がリムーバブルメディア116から読み出され、シーケンス層がデコードされる。
ステップS353において、上述した図4のステップS3と同様の処理により、映像ストリームの画像サイズが検出される。
ステップS354において、上述した図4のステップS4と同様の処理により、各デコーダ465がデコードする分割デコード領域が設定され、分割デコード領域を示す情報がデコード制御部464に供給される。
ステップS355において、上述した図4のステップS5と同様の処理により、全てのGOPがデコードされたか否かが判定される。まだ全てのGOPがデコードされていないと判定された場合、処理はステップS356に進む
ステップS356において、上述した図4のステップS6と同様の処理により、次にデコードするGOPがリムーバブルメディア116から読み出され、読み出されたGOPのGOP層がデコードされる。
ステップS357において、上述した図13のステップS155と同様の処理により、ピクチャ位置情報が抽出され、ピクチャ位置情報がスタート位置検出部471に供給される。
ステップS358において、上述した図4のステップS7と同様の処理により、GOP内の全てのピクチャがデコードされたか否かが判定される。まだGOP内の全てのピクチャがデコードされていないと判定された場合、処理はステップS359に進む。
ステップS359において、上述した図13のステップS157と同様の処理により、次にデコードするピクチャのピクチャ層が読み出され、ピクチャ層がストリーム解析部462に供給される。
ステップS360において、上述した図4のステップS9と同様の処理により、ピクチャ層がデコードされる。
ステップS361において、上述した図13のステップS159と同様の処理により、スライス位置情報が取得され、スライス位置情報がスタート位置検出部471に供給される。
ステップS362において、スタート位置検出部471は、分割デコード領域の開始位置を検出する。具体的には、デコード制御部464は、次にデコードするピクチャにおいて、各デコーダ465がデコードする分割デコード領域の先頭のスライスのスライスNo.を指定することにより、各分割デコード領域の開始位置の検出を指示する開始位置検出指示情報をスタート位置検出部471に供給する。スタート位置検出部471は、スライス位置情報に基づいて、指定されたスライスNo.のスライスの開始位置、すなわち、各分割デコード領域の開始位置を検出する。スタート位置検出部471は、検出した開始位置を示す情報をデコード制御部464に供給する。
ステップS363において、デコード制御部464は、デコードの開始を指示する。具体的には、デコード制御部464は、ステップS362において検出された開始位置から始まる各分割デコード領域に含まれるスライスの各デコーダ465への供給を指示する情報をストリーム読出し制御部461に供給する。また、デコード制御部464は、次のピクチャのデコードの開始を指示する情報を各デコーダ465に供給する。
ステップS364において、デコーダ465は、デコードを開始する。具体的には、ストリーム読出し制御部461は、デコード制御部464により指示された開始位置から始まる各分割デコード領域に含まれるスライスをストリーム用メモリ152から読出す。ストリーム読出し制御部461は、読み出したスライスを、分割デコード領域ごとに、その分割デコード領域のデコードが割り当てられたデコーダ465に供給する。デコーダ465は、分割デコード領域内の先頭のスライスからデコードを開始する。デコーダ465は、デコードしたデータを順次ベースバンド出力制御部466に供給する。ベースバンド出力制御部466は、取得したデータをベースバンド用メモリ153に記憶させる。
ステップS365において、上述した図5のステップS13と同様の処理により、エラーが発生したか否かが判定される。エラーが発生したと判定された場合、処理はステップS366に進む。
ステップS366において、デコード制御部464は、デコードを再開する位置を決定する。デコード制御部464は、例えば、デコードを失敗したスライスの次のスライスをデコードを再開する位置に決定する。
ステップS367において、デコーダ465は、デコードを再開する。具体的には、デコード制御部464は、エラーが発生したスライスの次のスライスからのデコードの再開を指示する情報を、エラーが発生したデコーダ465に供給する。デコーダ465は、指定されたスライスからデコードを再開する。
ステップS365において、エラーが発生していないと判定された場合、ステップS366およびS367の処理はスキップされ、処理はステップS368に進む。
ステップS368において、上述した図5のステップS16と同様の処理により、全てのデコーダ465の処理が終了したか否かが判定される。まだ全てのデコーダ465の処理がまだ終了していないと判定された場合、処理はステップS365に戻り、ステップS368において、全てのデコーダ465の処理が終了したと判定されるまで、ステップS365乃至S368の処理が繰り返し実行される。
ステップS368において、全てのデコーダ465の処理が終了したと判定された場合、処理はステップS369に進む。
ステップS369において、上述した図5のステップS17と同様の処理により、1フレーム分のデータが出力される。その後、処理はステップS358に戻る。
ステップS358において、まだGOP内の全てのピクチャをデコードしてないと判定された場合、処理はステップS359に進み、上述したステップS359以降の処理が実行される。すなわち、次のピクチャがデコードされる。
ステップS358において、GOP内の全てのピクチャがデコードされたと判定された場合、処理はステップS355に戻る。
ステップS355において、まだ全てのGOPがデコードされていないと判定された場合、処理はステップS356に進み、上述したステップS356以降の処理が実行される。すなわち、次のGOPがデコードされる。
ステップS355において、全てのGOPがデコードされたと判定された場合、処理はステップS351に戻る。
ステップS351において、まだ映像ストリームを全てデコードしていないと判定された場合、処理はステップS352に進み、上述したステップS352以降の処理が実行される。すなわち、映像ストリームの次のシーケンス層がデコードされる。
ステップS351において、映像ストリームを全てデコードしたと判定された場合、デコード処理は終了する。
このように、ストリーム解析部462がピクチャ層をデコードする場合、映像ストリーム上のピクチャ層の開始位置(スタートコード)を検索することなく、ピクチャ位置情報に基づいて、迅速にデコードの開始位置が検出される。また、各デコーダ465がデコードする場合、各フレーム(ピクチャ)について、各デコーダ465がデコードを開始する位置として各分割デコード領域の開始位置を検出するだけでよく、かつ、映像ストリーム上のスライス層の開始位置(スタートコード)を検索することなく、スライス位置情報に基づいて、迅速に各分割デコード領域の開始位置が検出される。従って、デコードを開始する位置を検出する時間が短縮され、映像ストリームのデコードを高速化することができる。なお、デコード処理を分割せずに1つのデコーダによりデコードする場合も同様に、デコードを開始する位置を検出する時間が短縮され、映像ストリームのデコードを高速化することができる。
なお、図3乃至図6を参照して上述した処理と、図16乃至図23を参照して上述した処理とを組み合わせた場合も、ピクチャ位置情報およびスライス位置情報がクリップ位置情報に記録されていることを除いて、図24乃至図26を参照して上述した処理とほぼ同様の処理となるため、その説明は省略する。
また、映像ストリームのデコード処理をさらに複数の段階に分割し、分割した各段階のデコード処理を複数のハードウェアにより並行して行うことにより、さらにデコード処理を高速化することが可能である。図27乃至図37を参照して、デコード処理を複数の段階に分割し、分割した各段階のデコード処理を複数のハードウェアにより並行して行う場合の実施の形態を説明する。
図27は、デコード処理を複数の段階に分割し、分割した各段階のデコード処理を複数のハードウェアにより並行して行うAV処理システム501の一実施の形態を示す図である。なお、図中、図2と対応する部分については同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
AV処理システム501は、図2のAV処理システム101と比較して、ドライブ112、外部映像記録再生装置113−1乃至113−n、マウス114、および、キーボード115を含む点が共通し、AV処理装置111の代わりにAV処理装置511が設けられている点が異なる。
また、AV処理装置511は、図2のAV処理装置111と比較して、CPU121、ROM122、RAM123、ハードディスク124、信号処理部125、映像特殊効果音声ミキシング処理部126、ディスプレイ127、スピーカ128、および、インタフェース129−1乃至129−3を含む点が共通し、GPU(Graphics Processing Unit)521が設けられている点が異なる。なお、CPU121、ROM122、RAM123、HDD124、信号処理部125、映像特殊効果音声ミキシング処理部126、インタフェース129−1乃至129−3、および、GPU521は、バス130を介して相互に接続される。
GPU521は、主にグラフィックス処理を行うプロセッサである。AV処理装置511においては、後述するように、CPU121およびGPU521の2つのハードウェア(プロセッサ)が、映像ストリームのデコード処理を2つの段階に分割し、分割した各段階のデコード処理を並行して実行する。
図28は、所定のプログラムを実行するCPU121により実現されるデコード部551の機能の構成の例を示す図である。なお、図中、図24と対応する部分については下2桁が同じ符号を付してあり、処理が同じ部分に関しては、その説明は繰り返しになるので省略する。
デコード部551は、ストリーム読出し制御部561、ストリーム解析部562、デコード領域設定部563、デコード制御部564、デコーダ565−1乃至565−4、スタート位置検出部571、スライスデータ蓄積メモリ572、転送用メモリ573、および、メモリ転送制御部574を含むように構成される。
ストリーム読出し制御部561は、ドライブ112を制御して、リムーバブルメディア116に記録されている映像ストリームを読み出させる。ストリーム読出し制御部561は、ドライブ112により読み出された映像ストリームを、インタフェース129−3およびバス130を介して取得する。また、ストリーム読出し制御部561は、バス130を介して、HDD124に記録されている映像ストリームを読み出す。ストリーム読出し制御部561は、必要に応じて、取得した映像ストリームを、CPU121内の図示せぬキャッシュメモリなどにより構成されるストリーム用メモリ152に一時的に記憶させる。また、ストリーム読出し制御部561は、必要に応じて、取得した映像ストリームを、ストリーム解析部562またはデコーダ565−1乃至565−4に供給する
デコード制御部564は、図24のデコード制御部464の処理に加えて、分割デコード領域内のスライスの所定の途中の段階までのデコード処理(図32を参照して後述するデコード前半処理)を実行させるためのスレッドを生成し、各デコーダに割り当てた分割デコード領域に対する前半デコード処理を他のデコーダと並行して実行するようにデコーダ565−1乃至565−4を制御する。また、デコード制御部564は、デコーダ565−1乃至565−4により途中の段階までデコードされたスライスの残りの段階のデコード処理(図33および図34を参照して後述するデコード後半処理)を実行させるためのスレッドを生成し、デコーダ565−1乃至565−4によるデコード前半処理と並行してデコード後半処理を実行するようにメモリ転送制御部574およびGPU521を制御する。
さらに、デコード制御部564は、GPU521の処理が終了したことを通知する情報を、バス130を介してGPU521から取得する。また、デコード制御部564は、GPU521が処理を実行中であるか否かを示す情報を、デコーダ565−1乃至565−4に供給する。さらに、デコード制御部564は、デコード前半処理の開始を指示する情報をデコーダ565−1乃至565−4に供給する(デコード前半処理を実行させるスレッドを呼び出し、呼び出したスレッドにデコード前半処理に必要な情報を与える)。
また、デコード制御部564は、デコード後半処理の開始を指示する情報をメモリ転送制御部574およびGPU521に供給する(デコード後半処理を実行させるスレッドを呼び出し、呼び出したスレッドにデコード後半処理に必要な情報を与える)。このデコード後半処理の開始を指示する情報には、例えば、デコードする対象となるスライスがどの段階までデコードされているかを示す履歴情報が含まれる。
デコーダ565−1乃至565−4は、各デコーダに割り当てられた映像ストリームの各フレーム内の分割デコード領域を並列してデコード(可変長復号および逆量子化)する。デコーダ565−1乃至565−4は、VLD(可変長復号)部581−1乃至581−4およびIQ(逆量子化)部582−1乃至582−4をそれぞれ1組ずつ含むように構成される。なお、以下、デコーダ565−1乃至565−4を個々に区別する必要がない場合、単にデコーダ565と称し、VLD部581−1乃至581−4を個々に区別する必要がない場合、単にVLD部581と称し、IQ部582−1乃至582−4を個々に区別する必要がない場合、単にIQ部582と称する。
VLD部581は、ストリーム読出し制御部561から供給されたデータ(映像ストリーム)を可変長復号し、可変長復号したデータをIQ部582に供給する。また、VLD部581は、復号したデータに含まれる予測モード、動きベクトル、および、フレーム/フィールド予測フラグを示す情報を、バス130を介してGPU521に供給する。さらに、VLD部581は、復号したデータに含まれる量子化スケールを示す情報をIQ部582に供給する。
IQ部582は、VLD部581より供給された量子化スケールに従って、VLD部581より供給されたデータを逆量子化し、逆量子化したデータをスライスデータ蓄積メモリ572に記憶させる。また、IQ部582は、自分が逆量子化したデータがスライスデータ蓄積メモリ572に1スライス分蓄積された場合、その1スライス分のデータをスライスデータ蓄積メモリ572から転送用メモリ573に転送する。
メモリ転送制御部574は、転送用メモリ573に記憶されているデータを、バス130を介してGPU521に転送する。
図29は、所定のプログラムを実行するGPU521により実現されるデコード部601の機能の構成の例を示す図である。デコード部601は、スライスデータメモリ611、IDCT(逆離散コサイン変換)部612、動き補償部613、フレームデータ生成部614、および、フレームメモリ615を含むように構成される。
スライスデータメモリ611は、バス130を介して、メモリ転送制御部574から供給される1スライス分の逆量子化されたデータを記憶する。
IDCT部612は、デコード制御部564の制御の基に、スライスデータメモリ611に記憶されているスライスに対して、図34を参照して後述するIDCT処理を行う。IDCT部612は、IDCT処理を行うことにより得られた画像データをフレームデータ生成部614に供給する。なお、IDCT部612は、例えば、Fast IDCTのアルゴリズムに基づいて、映像ストリームのマクロブロックのIDCTを行う。Fast IDCTのアルゴリズムの詳細については、例えば、「Yukihiro Arai他2名、尿 Fast DCT-SQ Scheme for Images THE TRANSACTIONS OF THE IEICE, VOL.E 71, NO.11 NOBEMBER 1988,pp.1095-1097」に、その詳細が開示されている。
動き補償部613は、バス130を介して、VLD部581から供給される予測モード、動きベクトル、および、フレーム/フィールド予測フラグを示す情報を取得する。動き補償部613は、次にフレームデータ生成部614が生成する画像データが順方向予測モードのPピクチャである場合、フレームメモリ615の過去参照画像部615aに記憶されている1フレーム前の画像データに、VLD部581より供給された動きベクトルに対応する動き補償を施して、予測画像データを生成する。動き補償部613は、生成した予測画像データをフレームデータ生成部614に供給する。
また、動き補償部613は、次にフレームデータ生成部614が生成する画像データがBピクチャである場合、VLD部581より供給された予測モードに対応して、フレームメモリ615の過去参照画像部615aに記憶されている画像データ(順方向予測モードの場合)、未来参照画像部615bに記憶されている画像データ(逆方向予測モードの場合)、または、その両方の画像データ(双方向予測モードの場合)に、VLD部581より供給された動きベクトルに対応する動き補償を施して、予測画像データを生成する。動き補償部613は、生成した予測画像データをフレームデータ生成部614に供給する。
さらに、動き補償部613は、未来画像参照部615bに記憶されている画像データがPピクチャである場合、そのPピクチャより時系列で前に位置するBピクチャのデコードが全て終了したとき、未来画像参照部615bに記憶されているPピクチャを読出し、動き補償を施さずに、フレームデータ生成部614に供給する。
フレームデータ生成部614は、デコード制御部564の制御の基に、IDCT部612から供給された画像データを蓄積するとともに、1フレーム分の画像データを生成し、生成した画像データを出力する。具体的には、IDCT部612から供給された画像データがIピクチャ、または、フレーム内予測モードのPピクチャもしくはBピクチャである場合、フレームデータ生成部614は、IDCT部612から供給された画像データに基づいて生成した1フレーム分の画像データを生成する。また、IDCT部612から供給された画像データがフレーム内予測モードでないPピクチャまたはBピクチャである場合、フレームデータ生成部614は、IDCT部612から供給された画像データに基づいて生成した画像データに、動き補償部613から供給される予測画像データを加算して、1フレーム分の画像データを生成する。
フレームデータ生成部614は、生成した画像データがIピクチャである場合、生成した画像データを、デコード部601の外部(例えば、バス130を介して信号処理部125)に出力するとともに、フレームメモリ615の過去参照画像部615aまたは未来参照画像部615bに記憶させる。また、フレームデータ生成部614は、生成した画像データがPピクチャである場合、生成した画像データを、デコード部601の外部に出力せずに、フレームメモリ615の未来参照画像部615bに記憶させる。さらに、フレームデータ生成部614は、生成した画像データがBピクチャである場合、生成した画像データを、デコード部601の外部に出力する。
また、フレームデータ生成部614は、未来画像参照部615bに記憶されている画像データ(Pピクチャ)が動き補償部613から供給された場合、供給された画像データをデコード部601の外部に出力する。
さらに、フレームデータ生成部614は、デコード後半処理が終了したことを通知する情報を、バス130を介してデコード制御部564に供給する。
フレームメモリ615は、上述したように、予測画像データを生成するために用いる画像データ(IピクチャまたはPピクチャ)を過去参照画像部615aまたは未来参照画像部615bに記憶させる。また、必要に応じて、過去参照画像部615aおよび未来参照画像部615bの間で、画像データの転送を行う(バンク切替えを行う)。
次に、図30および図31のフローチャートを参照して、デコード部551により実行されるデコード処理を説明する。なお、以下、説明を簡単にするために、各マクロブロックのブロックタイプはイントラ(フレーム内符号化)タイプであるものとする。また、説明を簡単にするために、上述したエラー発生時の対応処理(例えば、図26のステップS365乃至S367)に関するステップは、図30および図31のフローチャートにおいて省略されている。
ステップS451およびステップS462の処理は、上述した図25および図26のステップS351乃至S362の処理と同様であり、その説明は繰り返しになるので省略する。
ステップS463において、デコード制御部564は、デコード前半処理の開始を指示する。具体的には、デコード制御部564は、ステップS462において検出された開始位置から始まる各分割デコード領域に含まれるスライスの各デコーダ465への供給を指示する情報をストリーム読出し制御部461に供給する。また、デコード制御部464は、次のピクチャのデコード前半処理の開始を指示する情報を各デコーダ565に供給する。
ステップS464において、各デコーダ565は、デコード前半処理を行う。デコード前半処理の詳細は、図32を参照して後述する。
ステップS465において、デコード制御部564は、全てのデコーダ565の処理が終了したか否かを判定する。具体的には、デコード制御部564は、各デコーダ565に割り当てられた分割デコード領域の全てのスライスのデコードの終了を通知する情報が、全てのデコーダ565から供給されているか否かを検出する。デコード制御部564は、デコードの終了を通知する情報が全てのデコーダから供給されるまで、ステップS465の判定処理を繰返し行い、デコードの終了を通知する情報が全てのデコーダから供給された場合、全てのデコーダ565の処理が終了したと判定され、処理はステップS458に戻る。その後、ステップS458以降の処理が実行される。
次に、図32のフローチャートを参照して、図31のステップS464のデコード前半処理の詳細を説明する。
ステップS501において、VLD部581は、可変長復号する。具体的には、VLD部581は、ストリーム読出し制御部561から供給されたスライスの先頭のマクロブロックを可変長復号する。VLD部581は、可変長復号したマクロブロックをIQ部582に供給する。また、VLD部581は、マクロブロックの逆量子化に用いる量子化スケールを示す情報をIQ部582に供給する。
ステップS502において、IQ部582は、逆量子化する。具体的には、IQ部582は、VLD部581から供給された量子化スケールに従って、VLD部581から供給されたマクロブロックを逆量子化する。
ステップS503において、IQ部582は、ステップS502において逆量子化したデータをスライスデータ蓄積メモリ572に記憶させる。
ステップS504において、IQ部582は、1スライス分のデータが蓄積されたか否かを判定する。具体的には、IQ部582は、スライスデータ蓄積メモリ572に蓄積されている、自分が逆量子化したデータが1スライス分に達していない場合、1スライス分のデータが蓄積されていないと判定し、処理はステップS501に戻り、ステップS504において、1スライス分のデータが蓄積されたと判定されるまで、ステップS501乃至S504の処理が繰り返し実行される。すなわち、スライスの先頭から2番目以降のマクロブロックが順に可変長復号および逆量子化される。
ステップS504において、IQ部582は、スライスデータ蓄積メモリ572に蓄積されている、自分が逆量子化したデータが1スライス分に達している場合、1スライス分のデータが蓄積されていると判定し、処理はステップS505に進む。
ステップS505において、IQ部582は、GPU521の処理が終了しているか否かを判定する。具体的には、IQ部582は、GPU521が処理を実行中であるか否かを示す情報をデコード制御部564から取得する。GPU521がIDCT処理を実行中である場合、IQ部582は、GPU521の処理が終了していないと判定し、処理はステップS506に進む。
ステップS506において、IQ部582は、分割デコード領域内の全てのマクロブロックを処理したか否かを判定する。IQ部582は、分割デコード領域内のマクロブロックをまだ全て処理していない、すなわち、まだ可変長復号および逆量子化されていないマクロブロックが自分に割り当てられた分割デコード領域内にある場合、処理はステップS501に戻り、分割デコード領域内のマクロブロックの可変長復号および逆量子化が継続して行われる。
ステップS506において、分割デコード領域内のマクロブロックを全て処理していると判定された場合、すなわち、自分に割り当てられた分割デコード領域内の全てのマクロブロックを可変長復号および逆量子化している場合、処理はステップS507に進む。
ステップS507において、ステップS505の処理と同様に、GPU521の処理が終了しているか否かが判定される。GPU521の処理が終了していると判定されるまで、ステップS507の処理は繰り返し実行され、GPU521の処理が終了していると判定された場合、すなわち、GPU521がアイドル状態である場合、処理はステップS508に進む。
ステップS508において、IQ部582は、逆量子化したデータを転送する。具体的には、IQ部582は、スライスデータ蓄積メモリ572に蓄積されている自分が逆量子化したデータのうち、先頭の1スライス分のデータを転送用メモリ573に転送する。
ステップS509において、デコード制御部564は、後半デコード処理の開始を指示する。デコード制御部564は、転送用メモリ573に蓄積されたスライスに対するデコード後半処理の開始を指示する情報を、メモリ転送制御部574およびデコード部601に供給する。これにより、図33を参照して後述するデコード後半処理が開始される。その後、処理はステップS513に進む。
ステップS505において、GPU521の処理が終了していると判定された場合、処理はステップS510に進む。
ステップS510において、ステップS507の処理と同様に、1スライス分の逆量子化したデータが転送用メモリ573に転送される。
ステップS511において、上述したステップS509の処理と同様に、デコード後半処理の開始が指示される。
ステップS512において、ステップS506の処理と同様に、分割デコード領域内の全てのマクロブロックを処理したか否かが判定される。分割デコード領域内のマクロブロックをまだ全て処理していないと判定された場合、処理はステップS501に戻り、分割デコード領域内のマクロブロックの可変長復号および逆量子化が継続して行われる。
ステップS512において、分割デコード領域内の全てのマクロブロックを処理したと判定された場合、処理はステップS513に進む。
ステップS513において、IQ部582は、逆量子化したデータを全て転送したか否かを判定する。IQ部582は、自分が逆量子化したデータのうちまだ転送用メモリ573に転送していないデータがスライスデータ蓄積メモリ572に残っている場合、逆量子化したデータをまだ全て転送していないと判定し、処理はステップS507に戻る。その後、ステップS513において、逆量子化したデータを全て転送したと判定されるまで、ステップS507、S508およびS513の処理が繰り返し実行される。
ステップS513において、逆量子化したデータを全て転送したと判定された場合、処理はステップS514に進む。
ステップS514において、デコーダ565は、デコード前半処理の終了を通知し、デコード前半処理は終了する。具体的には、デコーダ565は、デコード前半処理の終了を通知する情報をデコード制御部564に供給する。
なお、以上では、1つのデコーダに注目してデコード前半処理を説明したが、実際には、このデコード前半処理はデコーダ565−1乃至565−4により並行して実行される。
次に、図33のフローチャートを参照して、図32のデコード前半処理に対応して、デコード部551およびデコード部601により実行されるデコード後半処理を説明する。なお、この処理は、図32を参照して上述した各デコーダ565により実行されるデコード前半処理と並行して実行される。
ステップS521において、メモリ転送制御部574は、デコード後半処理の開始が指示されたか否かを判定する。デコード後半処理の開始が指示されたと判定されるまで、ステップS521の判定処理は繰り返し実行され、上述した図32のステップS509またはS511において、デコード後半処理の開始を指示する情報がデコード制御部564からメモリ転送制御部574に供給された場合、デコード後半処理の開始が指示されたと判定され、処理はステップS522に進む。
ステップS522において、メモリ転送制御部574は、データを転送する。具体的には、メモリ転送制御部574は、転送用メモリ573に蓄積されている1スライス分の逆量子化されたデータを、バス130を介して、デコード部601のスライスデータメモリ611に転送し、記憶させる。
ステップS523において、IDCT部612は、IDCT(逆離散コサイン変換)処理を行う。なお、IDCT処理の詳細は、図34を参照して後述する。
ステップS524において、フレームデータ生成部614は、1フレーム分の画像データがデコードされたか否かを判定する。1フレーム分の画像データがデコードされていないと判定された場合、処理はステップS525に進む。
ステップS525において、フレームデータ生成部614は、1フレーム分の画像データを出力する。具体的には、フレームデータ生成部614は、デコードが完了した1フレーム分の画像データを外部(例えば、バス130を介して信号処理部125)に出力する。
ステップS524において、1フレーム分の画像データがデコードされていないと判定された場合、ステップS525の処理はスキップされ、処理はステップS526に進む。
ステップS526において、フレームデータ生成部614は、デコード後半処理の終了を通知する。具体的には、フレームデータ生成部614は、デコード後半処理が終了したことを通知する情報を、バス130を介してデコード制御部564に供給する。その後、処理はステップS521に戻り、上述したステップS521以降の処理が実行される。
次に、図34のフローチャートを参照して、図33のステップS523のIDCT処理の詳細を説明する。
ステップS541において、IDCT部612は、テクスチャを生成する。具体的には、IDCT部612は、スライスデータメモリ611に蓄積されている1スライス分のデータを読出す。
なお、以下、1スライス分のデータが、図35のスライス651に示されるフォーマットにより構成されるものとして説明する。スライス651は、n個のマクロブロック(MB)により構成される。1つのマクロブロックは、16×16個の輝度情報Y、それぞれ16×8個の色差情報Cb,Crにより構成される。すなわち、輝度情報Yと色差情報Cb,Crの3つの成分の比率は4:2:2である。また、縦16×横16個の輝度情報Y、縦16×横8個の色差情報Cb、縦16×横8個の色差情報Cr、縦16×横8個の色差情報Cb、縦16×横8個の色差情報Crという順にマクロブロックの先頭から各情報が配置される。
IDCT部612は、スライス651に含まれる各マクロブロックについて、1マクロブロックあたり、輝度情報Y×64個、色差情報Cb×16個、色差情報Cr×16個、色差情報Cb×16個、色差情報Cr×16個の順に配列した4つの情報の列を生成する。IDCT部612は、各マクロブロックから生成した4つの情報の列を、各列ごとに順に整列した4つのテクスチャ661乃至664を生成する。従って、1つのテクスチャは、縦n×横128個の情報により構成される。
ステップS542において、IDCT部612は、行変換を行う。具体的には、IDCT部612は、テクスチャ661乃至664の先頭の行(横方向の列)に配列されている情報、すなわち、スライス651の先頭のマクロブロックに含まれる情報から、縦8個×横8個×奥行き8個の情報により構成される3次元のブロック671−1を生成する。
なお、3次元ブロック671−1を構成する各情報は、所定の規則に従って、テクスチャ661乃至664の先頭の行(横方向の列)の各情報に所定の係数を乗じ、係数を乗じた情報を足し合わせることにより生成される。また、ブロック671−1の上から1行目乃至4行目に、輝度情報Yが配置され、上から5行目および6行目に色差情報Cbが配置され、上から7行目および8行目に色差情報Crが配置される。
ステップS543において、IDCT部612は、行変換が全て終了したか否かを判定する。行変換がまだ全て終了していないと判定された場合、処理はステップS542に戻り、ステップS543において、行変換が全て終了したと判定されるまで、ステップS542およびS543の処理が繰り返し実行される。すなわち、テクスチャ661乃至664の各行に対して、上述した行変換が順次行われ、その結果、3次元ブロック671−1乃至671−nが生成される。
なお、以下、3次元ブロック671−m(m=1,2,3,…n)を構成する縦8個×横8個の情報からなる8個の2次元のブロックを2次元ブロック671−m1乃至671−m8(m=1,2,3,…n)と称する。
ステップS543において、行変換が全て終了した判定された場合、処理はステップS544に進む。
ステップS544において、IDCT部612は、列変換を行う。具体的には、IDCT部612は、所定の規則に従って、スライス651の先頭のマクロブロックから生成された3次元ブロック671−1から、縦8個×横8個×奥行き8個の情報からなる3次元ブロック681−1を生成する。
なお、3次元ブロック681−1の奥行き方向の各列の情報は、所定の規則により各列に対応づけられている3次元ブロック671−1の横方向の行の情報に所定の係数を乗じたり、係数を乗じた情報を足し合わせることにより生成される。例えば、3次元ブロック681−1のいちばん上の面の図内左端の奥行き方向の列の情報は、その列に対応する3次元ブロック671−1を構成する2次元ブロック671−11の図内横方向の1行目の情報に所定の係数を乗じたり、係数を乗じた情報を足し合わせることにより生成される。また、ブロック681−1の上から1行目乃至4行目に、輝度情報Yが配置され、上から5行目および6行目に色差情報Cbが配置され、上から7行目および8行目に色差情報Crが配置される。
ステップS545において、IDCT部612は、列変換が全て終了したか否かを判定する。列変換がまだ全て終わっていないと判定された場合、処理はステップS544に戻り、ステップS545において、列変換が全て終了したと判定されるまで、ステップS544およびS545の処理が繰り返し実行される。すなわち、3次元ブロック671−1乃至671−nに対して、上述した列変換が順次行われ、その結果、3次元ブロック681−1乃至681−nが生成される。
なお、以下、3次元ブロック681−m(m=1,2,3,…n)を構成する縦8個×横8個の情報からなる8個の2次元のブロックを2次元ブロック681−m1乃至681−m8(m=1,2,3,…n)と称する。
ステップS545において、列変換が全て終了したと判定された場合、処理はステップS546に進む。
ステップS546において、IDCT部612は、情報を並び替える。具体的には、IDCT部612は、図36に示すように、3次元ブロック681−1のいちばん上の面(2次元ブロック681−11乃至681−18のいちばん上の行)に含まれる輝度情報Yから8×8のマクロブロック711−1を生成する。同様に、IDCT部612は、ブロック681−1の上から2番目の面に含まれる輝度情報Yからマクロブロック711−2を生成し、上から3番目の面に含まれる輝度情報Yからマクロブロック711−3を生成し、上から4番目の面に含まれる輝度情報Yからマクロブロック711−4を生成する。
さらに、デコード中のスライスを含むピクチャがフィールド構造である場合、IDCT部612は、マクロブロック711−1および711−3の各行を交互に配列したマクロブロック712−1および712−2を生成し、マクロブロック711−2および711−4の各行を交互に配列したマクロブロック712−3および712−4を生成する。IDCT部612は、図中、マクロブロック712−1を左上、マクロブロック712−2を左下、マクロブロック712−3を右上、マクロブロック712−4を右下に配列した16×16のマクロブロック713を生成する。
また、デコード中のスライスを含むピクチャがフレーム構造である場合、IDCT部612は、図中、マクロブロック711−1を左上、マクロブロック711−2を右上、マクロブロック711−3を左下、マクロブロック711−4を右下に配列した16×16のマクロブロック714を生成する。
IDCT部612は、3次元ブロック681−2乃至681−nに含まれる輝度情報Yについても同様の並び替えを行う。また、3次元ブロック681−1乃至681−nに含まれる色差情報Cr,Cbについても同様の並び替えを行う。また、IDCT部612は、情報を並び替えたマクロブロックを先頭から順に配列したスライス691を生成する。例えば、デコード中のスライスを含むピクチャがフィールド構造である場合、図37に示されるように、3次元ブロック681−1から生成されたマクロブロック712−1乃至712−4がスライス691の先頭(図内、左端)に配置され、以降、同様に、3次元ブロック681−2乃至688−nから生成されたマクロブロックが順番に配列される。
ステップS547において、IDCT部612は、RGB変換を行い、IDCT処理は終了する。具体的には、スライス691を構成する輝度情報Y、色差情報Cb,Crを、RGB方式のR信号、G信号、B信号に変換することにより画像データ701を生成する。IDCT部612は、生成した画像データ701をフレーム生成部614に供給する。また、IDCT部612は、IDCT処理が終了したことを通知する情報を、バス130を介してデコード制御部564に供給する。
このように、スライス層以下のデコード処理をCPU121とGPU521により分割かつ並行して実行することにより、デコード処理に要する時間を短縮することができるとともに、CPU121の負荷を軽減することができる。また、CPUなどの高性能なプロセッサと比較して安価なGPU521を用いることにより、コストを削減することができる。
以上のように、映像ストリームのフレームの位置を示す情報であるフレーム位置情報の記録を制御し、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御し、映像ストリームのフレームの位置を示すフレーム位置情報、および、映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、映像ストリームの復号を開始する復号開始位置を検出し、復号開始位置から復号を開始するように映像ストリームの復号を制御する場合には、映像ストリームの復号の開始位置の検出に要する時間を短縮することができ、より高速に映像ストリームを復号することができる。
なお、以上の説明では、CPUにより実現されるデコーダの数を4つとする例を示したが、4以外の数とするようにしてもよい。
また、以上の説明では、GPUにより実現されるデコーダの数を1つとする例を説明したが、1つのGPUにより複数のデコーダを実現するようにしたり、複数のデコーダを設けるようにしたりして、デコード後半処理を複数のデコーダにより並行して実行するようにしてもよい。
さらに、以上の説明では、CPU121をマルチコアプロセッサにより構成するようにしたが、CPU等のプロセッサを複数設けて、CPU121により実現される各デコーダの処理を複数のプロセッサにより並列して行うようにしてもよい。
また、以上の説明では、MPEG2方式により映像ストリームをエンコードまたはデコードする場合の例を示したが、本発明は、例えば、映像ストリームのフレームの位置(例えば、映像ストリームの先頭からの相対位置、記録媒体に記録する位置など)、または、映像ストリームをデコードする場合の処理単位の位置(例えば、映像ストリームの先頭からの相対位置、記録媒体に記録する位置など)を示す情報を記録しない方式により映像ストリームをエンコードまたはデコードする場合に適用することができる。また、本発明は、例えば、映像ストリームの1フレームの画像に対応する映像ストリーム上の領域に処理単位が複数含まれる方式でエンコードされた映像ストリームを、複数のデコーダにより並列してデコードする場合に適用することができる。
さらに、図30のステップS509またはS511において、デコード制御部564が、転送用メモリ573に記憶されているスライスがどの段階までデコードされているかを示す履歴情報を、スライスと関連づけて転送用メモリ573に記憶させるようにしてもよい。これにより、各デコーダが転送用メモリ573に記憶されているスライスがどの段階までデコードされているかが明確になるので、例えば、デコード処理を3段階以上に分けてデコードする場合、転送用メモリ573に記憶されているスライスを次にどのデコーダがデコードするかを決定するための情報として用いることができる。
上述した一連の処理は、ハードウェア(例えば、図2または図27の信号処理部125)により実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、例えばAV処理装置111などに、ネットワークや記録媒体からインストールされる。
この記録媒体は、図2または図27に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されているリムーバブルメディア117により構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM122、または、HDD124などで構成される。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置、手段などにより構成される全体的な装置を意味するものである。
従来、複数のプロセッサにより並列して映像ストリームをデコードする場合の処理の分割の例を説明する図である。 本発明を適用したAV処理システムの一実施の形態を示すブロック図である。 図2のCPUにより実現されるデコード部の機能の構成の例を示すブロック図である。 図3のデコード部により実行されるデコード処理を説明するフローチャートである。 図3のデコード部により実行されるデコード処理を説明するフローチャートである。 図3のデコード部により並列して映像ストリームをデコードする場合の処理の分割の例を説明する図である。 図2のCPUにより実現されるエンコード部の機能の構成の例を示すブロック図である。 図2のCPUにより実現されるデコード部の機能の構成の他の例を示すブロック図である。 ピクチャ位置情報のデータの構成の例を示す図である。 スライス位置情報のデータの構成の例を示す図である。 図7のエンコード部により実行されるエンコード処理を説明するフローチャートである。 図11のステップS105のピクチャ層以下エンコード処理の詳細を説明するフローチャートである。 図8のデコード部により実行されるデコード処理を説明するフローチャートである。 図8のデコード部により実行されるデコード処理を説明するフローチャートである。 図8のデコード部により実行されるデコード開始位置検出処理を説明するフローチャートである。 図2のCPUにより実現されるエンコード部の機能の構成の他の例を示すブロック図である。 図2のCPUにより実現されるデコード部の機能の構成のさらに他の例を示すブロック図である。 クリップ位置情報のデータの構成の例を示す図である。 図18のクリップ位置情報に含まれるピクチャ位置情報のデータの構成の例を示す図である。 図18のクリップ位置情報に含まれるスライス位置情報のデータの構成の例を示す図である。 図16のエンコード部により実行されるエンコード処理を説明するフローチャートである。 図17のデコード部により実行されるデコード処理を説明するフローチャートである。 図17のデコード部により実行されるデコード処理を説明するフローチャートである。 図2のCPUにより実現されるデコード部の機能の構成のさらに他の例を示すブロック図である。 図24のデコード部により実行されるデコード処理を説明するフローチャートである。 図24のデコード部により実行されるデコード処理を説明するフローチャートである。 本発明を適用したAV処理システムの他の実施の形態を示すブロック図である。 図27のCPUにより実現されるデコード部の機能の構成の例を示すブロック図である。 図27のGPUにより実現されるデコード部の機能の構成の例を示すブロック図である。 図28のデコード部により実行されるデコード処理を説明するフローチャートである。 図28のデコード部により実行されるデコード処理を説明するフローチャートである。 図31のステップS464のデコード前半処理の詳細を説明するフローチャートである。 図28のデコード部および図29のデコード部により実行されるデコード後半処理を説明するフローチャートである。 図33のステップS423のIDCT処理の詳細を説明するフローチャートである。 IDCT処理により生成されるデータの遷移を説明する図である。 マクロブロックを構成する情報の並び替えを説明する図である。 スライス内の情報の配列を説明するための図である。
符号の説明
101 AV処理システム, 111 AV処理装置, 112 ドライブ, 116,117 リムーバブルメディア, 121 CPU, 122 ROM, 124 HDD, 125 信号処理部, 151 デコード部, 161 ストリーム読出し制御部, 162 ストリーム解析部, 163 デコード領域設定部, 164 デコード制御部, 165 デコーダ, 166 ベースバンド出力制御部, 201 エンコード部, 211 エンコーダ, 212 ピクチャカウント部, 213 スライスカウント部, 214 スタート位置メモリ, 215 スタート位置記録制御部, 216 ストリーム出力制御部, 251 デコード部, 261 ストリーム読出し制御部, 262 ストリーム解析部, 264 デコード制御部, 265 デコーダ, 266 ベースバンド出力制御部, 271 スタート位置検出部, 301 エンコード部, 311 エンコーダ, 312 ピクチャカウント部, 313 スライスカウント部, 314 スタート位置メモリ, 315 スタート位置記録制御部, 316 ストリーム出力制御部, 321 GOPカウンタ, 351 デコード部, 361 ストリーム読出し制御部, 362 ストリーム解析部, 364 デコード制御部, 365 デコーダ, 366 ベースバンド出力制御部, 371 スタート位置検出部, 451 デコード部, 461 ストリーム読出し制御部, 462 ストリーム解析部, 463 デコード領域設定部, 464 デコード制御部, 465 デコーダ, 466 ベースバンド出力制御部, 471 スタート位置検出部, 501 AV処理システム, 511 AV処理装置, 521 GPU, 551 デコード部, 561 ストリーム読出し制御部, 562 ストリーム解析部, 563 デコード領域設定部, 564 デコード制御部, 565 デコーダ, 571 スタート位置検出部, 572 スライスデータ蓄積メモリ, 574 メモリ転送制御部, 601 デコード部, 612 IDCT部, 613 動き補償部, 614 フレームデータ生成部, 651 スライス, 671 3次元ブロック, 681 3次元ブロック, 691 スライス, 701 画像データ

Claims (24)

  1. 映像ストリームのフレームの位置を示す情報であるフレーム位置情報の記録を制御するフレーム位置記録制御ステップと、
    前記映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御する単位領域位置記録制御ステップと
    を含む符号化処理をコンピュータに実行させるプログラム。
  2. 前記フレーム位置記録制御ステップにおいて、符号化された前記映像ストリーム内に前記フレーム位置情報を記録するように制御され、
    前記単位領域位置記録制御ステップにおいて、符号化された前記映像ストリーム内に前記単位領域位置情報を記録するように制御される
    請求項1に記載のプログラム。
  3. 前記フレーム位置記録制御ステップにおいて、前記映像ストリームとは異なるファイルに前記フレーム位置情報を記録するように制御され、
    前記単位領域位置記録制御ステップにおいて、前記ファイルに前記単位領域位置情報を記録するように制御される
    請求項1に記載のプログラム。
  4. 前記映像ストリームはMPEG(Moving Picture Experts Group)方式により符号化され、前記単位領域はスライスである
    請求項1に記載のプログラム。
  5. 前記フレーム位置記録制御ステップにおいて、符号化された前記映像ストリームのシーケンス層のユーザデータ領域またはGOP(Group Of Pictures)層のユーザデータ領域に前記フレーム位置情報を記録するように制御され、
    前記単位領域位置記録制御ステップにおいて、符号化された前記映像ストリームのピクチャ層のユーザデータ領域に前記単位領域位置情報を記録するように制御される
    請求項4に記載のプログラム。
  6. 前記フレーム位置情報は、前記映像ストリームの先頭からの前記フレームの相対位置を示す情報を含み、
    前記単位領域位置情報は、前記映像ストリームの先頭からの前記単位領域の相対位置を示す情報を含む
    請求項1に記載のプログラム。
  7. 前記フレーム位置情報は、さらに、前記フレームの番号および前記フレームのデータ長を示す情報を含み、
    前記単位領域位置情報は、さらに、前記フレーム内における前記単位領域の番号および前記単位領域のデータ長を示す情報を含む
    請求項6に記載のプログラム。
  8. 前記フレーム位置情報は、データ記録媒体に前記フレームを記録する位置を示す情報を含み、
    前記単位領域位置情報は、前記データ記録媒体に前記単位領域を記録する位置を示す情報を含む
    請求項1に記載のプログラム。
  9. 前記フレーム位置情報は、さらに、前記フレームの番号および前記フレームのデータ長を示す情報を含み、
    前記単位領域位置情報は、さらに、前記フレーム内における前記単位領域の番号および前記単位領域のデータ長を示す情報を含む
    請求項8に記載のプログラム。
  10. 映像ストリームを符号化する符号化方法であって、
    前記映像ストリームのフレームの位置を示す情報であるフレーム位置情報の記録を制御するフレーム位置記録制御ステップと、
    前記映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御する単位領域位置記録制御ステップと
    を含む符号化方法。
  11. 映像ストリームを符号化する符号化手段と、
    前記映像ストリームのフレームの位置を示す情報であるフレーム位置情報、および、前記映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報の記録を制御する記録制御手段と
    を含む符号化装置。
  12. 映像ストリームのフレームの位置を示すフレーム位置情報、および、前記映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、前記映像ストリームの復号を開始する復号開始位置を検出する検出ステップと、
    前記復号開始位置から復号を開始するように前記映像ストリームの復号を制御する復号制御ステップと
    を含む復号処理をコンピュータに実行させるプログラム。
  13. 前記映像ストリームに記録されている前記フレーム位置情報を抽出するフレーム位置情報抽出ステップと、
    前記映像ストリームに記録されている前記単位領域位置情報を抽出する単位領域位置情報抽出ステップと
    をさらに含む請求項12に記載のプログラム。
  14. 前記映像ストリームとは異なるファイルからの、前記フレーム位置情報および前記単位領域位置情報の取得を制御する取得制御ステップを
    さらに含む請求項12に記載のプログラム。
  15. 前記映像ストリームはMPEG(Moving Picture Experts Group)方式により符号化された映像ストリームであり、
    前記単位領域はスライスである
    請求項12に記載のプログラム。
  16. 前記復号装置は、前記映像ストリームを並列して復号する複数の復号手段を備え、
    前記検出ステップにおいて、前記フレーム位置情報および前記単位領域位置情報に基づいて、複数の前記復号手段に対応する前記復号開始位置が検出され、
    前記復号制御ステップにおいて、複数の前記復号手段が前記復号開始位置から復号を開始するように前記映像ストリームの復号が制御される
    請求項12に記載のプログラム。
  17. 複数の前記単位領域を含み、前記映像ストリームの1フレームの画像に対応する領域を前記復号手段の数に応じて分割した分割領域を設定する設定ステップを
    さらに含み、
    復号制御ステップにおいて、前記フレーム内のそれぞれの前記分割領域を前記復号手段が並列して復号するように前記映像ストリームの復号が制御される
    請求項16に記載のプログラム。
  18. 前記フレーム位置情報は、前記映像ストリームの先頭からの前記フレームの相対位置を示す情報を含み、
    前記単位領域位置情報は、前記映像ストリームの先頭からの前記単位領域の相対位置を示す情報を含む
    請求項12に記載のプログラム。
  19. 前記フレーム位置情報は、さらに、前記フレームの番号および前記フレームのデータ長を示す情報を含み、
    前記単位領域位置情報は、さらに、前記フレーム内における前記単位領域の番号および前記単位領域のデータ長を示す情報を含む
    請求項18に記載のプログラム。
  20. 前記フレーム位置情報は、データ記録媒体に前記フレームを記録する位置を示す情報を含み、
    前記単位領域位置情報は、前記データ記録媒体に前記単位領域を記録する位置を示す情報を含む
    請求項12に記載のプログラム。
  21. 前記フレーム位置情報は、さらに、前記フレームの番号および前記フレームのデータ長を示す情報を含み、
    前記単位領域位置情報は、さらに、前記フレーム内における前記単位領域の番号および前記単位領域のデータ長を示す情報を含む
    請求項20に記載のプログラム。
  22. 映像ストリームを復号する復号方法であって、
    前記映像ストリームのフレームの位置を示すフレーム位置情報、および、前記映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、前記映像ストリームの復号を開始する復号開始位置を検出する検出ステップと、
    前記復号開始位置から復号を開始するように前記映像ストリームの復号を制御する復号制御ステップと
    を含む復号方法。
  23. 映像ストリームを復号する復号装置において、
    前記映像ストリームのフレームの位置を示すフレーム位置情報、および、前記映像ストリームを復号する場合の処理単位である単位領域の位置を示す単位領域位置情報に基づいて、前記映像ストリームの復号を開始する復号開始位置を検出する検出手段と、
    前記復号開始位置から復号を開始するように前記映像ストリームの復号を制御する復号制御手段と
    を含む復号装置。
  24. 請求項1乃至8または請求項12乃至21のいずれかのプログラムが記録されている記録媒体。
JP2005241992A 2005-04-15 2005-08-24 復号装置および方法、記録媒体、並びに、プログラム Expired - Fee Related JP4374548B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2005241992A JP4374548B2 (ja) 2005-04-15 2005-08-24 復号装置および方法、記録媒体、並びに、プログラム
TW95109964A TWI321428B (en) 2005-04-15 2006-03-22 Decoding apparatus and method
EP20060251692 EP1720360A1 (en) 2005-04-15 2006-03-28 Encoding apparatus and method, and decoding apparatus and method
US11/395,358 US8670653B2 (en) 2005-04-15 2006-04-03 Encoding apparatus and method, and decoding apparatus and method
KR20060033989A KR20060109338A (ko) 2005-04-15 2006-04-14 인코딩 장치 및 방법, 그리고 디코딩 장치 및 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005119002 2005-04-15
JP2005241992A JP4374548B2 (ja) 2005-04-15 2005-08-24 復号装置および方法、記録媒体、並びに、プログラム

Publications (2)

Publication Number Publication Date
JP2006319943A true JP2006319943A (ja) 2006-11-24
JP4374548B2 JP4374548B2 (ja) 2009-12-02

Family

ID=36992782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005241992A Expired - Fee Related JP4374548B2 (ja) 2005-04-15 2005-08-24 復号装置および方法、記録媒体、並びに、プログラム

Country Status (5)

Country Link
US (1) US8670653B2 (ja)
EP (1) EP1720360A1 (ja)
JP (1) JP4374548B2 (ja)
KR (1) KR20060109338A (ja)
TW (1) TWI321428B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009048469A (ja) * 2007-08-21 2009-03-05 Fujitsu Ltd 情報処理装置及び情報処理方法
US8351722B2 (en) 2008-12-25 2013-01-08 Sony Corporation Encoder, decoder, encoding method and decoding method, and recording medium
WO2013100694A1 (ko) * 2011-12-29 2013-07-04 엘지전자 주식회사 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
JP2014535223A (ja) * 2011-11-04 2014-12-25 クゥアルコム・インコーポレイテッドQualcomm Incorporated 複数の符号化ピクチャ区画を含むネットワーク抽象化レイヤユニットによるビデオコーディング
CN108353183A (zh) * 2015-09-30 2018-07-31 沃高公司 用于基于图片组(gop)对视频数据流进行编码的方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080152014A1 (en) * 2006-12-21 2008-06-26 On Demand Microelectronics Method and apparatus for encoding and decoding of video streams
US20080199154A1 (en) * 2007-01-24 2008-08-21 Yuichi Kanai Apparatus and method with frame-by-frame display control
US8411734B2 (en) * 2007-02-06 2013-04-02 Microsoft Corporation Scalable multi-thread video decoding
US8265144B2 (en) 2007-06-30 2012-09-11 Microsoft Corporation Innovations in video decoder implementations
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US9092408B2 (en) * 2007-08-03 2015-07-28 Sap Se Data listeners for type dependency processing
KR100939917B1 (ko) 2008-03-07 2010-02-03 에스케이 텔레콤주식회사 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법
US8094712B2 (en) * 2008-03-31 2012-01-10 Himax Technologies Limited Apparatus for processing a data stream having a hierarchical layer structure and including encoded data sets and raw data sets and method thereof
US8331446B2 (en) * 2008-08-31 2012-12-11 Netlogic Microsystems, Inc. Method and device for reordering video information
CN103067792B (zh) * 2010-04-01 2016-03-09 鸿富锦精密工业(深圳)有限公司 媒体数据播放装置及其回放方法
US8885729B2 (en) 2010-12-13 2014-11-11 Microsoft Corporation Low-latency video decoding
US9706214B2 (en) 2010-12-24 2017-07-11 Microsoft Technology Licensing, Llc Image and video decoding implementations
KR101803970B1 (ko) * 2011-03-16 2017-12-28 삼성전자주식회사 컨텐트를 구성하는 장치 및 방법
TWI533677B (zh) 2011-06-30 2016-05-11 微軟技術授權有限責任公司 用於減少視訊編碼及解碼中之延遲的方法、系統及電腦可讀取媒體
US8731067B2 (en) 2011-08-31 2014-05-20 Microsoft Corporation Memory management for video decoding
US9819949B2 (en) 2011-12-16 2017-11-14 Microsoft Technology Licensing, Llc Hardware-accelerated decoding of scalable video bitstreams
JP5979406B2 (ja) * 2012-02-22 2016-08-24 ソニー株式会社 画像処理装置、画像処理方法、および画像処理システム
WO2015107925A1 (ja) * 2014-01-16 2015-07-23 ソニー株式会社 データ処理装置、及び、データ処理方法
US10277913B2 (en) * 2014-10-22 2019-04-30 Samsung Electronics Co., Ltd. Application processor for performing real time in-loop filtering, method thereof and system including the same
KR102273670B1 (ko) * 2014-11-28 2021-07-05 삼성전자주식회사 움직임 보상 정보를 수정하는 데이터 처리 시스템과 데이터 처리 방법
JP2021145157A (ja) * 2018-06-14 2021-09-24 ソニーグループ株式会社 画像処理装置および方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0128244B1 (ko) * 1992-09-23 1998-04-02 배순훈 병렬 구조를 갖는 부호 화상 데이타의 복호 장치
JP3308129B2 (ja) 1995-03-27 2002-07-29 ソニー株式会社 画像信号復号化方法及び画像信号復号化装置
JPH08307868A (ja) 1995-04-28 1996-11-22 Nec Corp 動画像復号装置
US5768429A (en) * 1995-11-27 1998-06-16 Sun Microsystems, Inc. Apparatus and method for accelerating digital video decompression by performing operations in parallel
JPH11341437A (ja) 1998-05-25 1999-12-10 Sony Corp 符号化装置、符号化方法、復号装置及び復号方法
JP4427827B2 (ja) * 1998-07-15 2010-03-10 ソニー株式会社 データ処理方法、データ処理装置及び記録媒体
JP2000253405A (ja) 1999-03-01 2000-09-14 Matsushita Electric Ind Co Ltd ビデオ復号化のためのパイプライン回路
JP2001148833A (ja) 1999-09-12 2001-05-29 Sony Computer Entertainment Inc 圧縮画像データを復号処理する方法及び電子装置、並びに補助記録装置
US6643763B1 (en) 2000-02-28 2003-11-04 International Business Machines Corporation Register pipe for multi-processing engine environment
JP4906197B2 (ja) 2000-05-29 2012-03-28 ソニー株式会社 復号装置および方法、並びに記録媒体
US7292772B2 (en) * 2000-05-29 2007-11-06 Sony Corporation Method and apparatus for decoding and recording medium for a coded video stream
JP2003009147A (ja) 2001-06-19 2003-01-10 Sony Corp デコード装置及び方法
US7444068B2 (en) * 2002-06-28 2008-10-28 Hewlett-Packard Development Company, L.P. System and method of manual indexing of image data

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009048469A (ja) * 2007-08-21 2009-03-05 Fujitsu Ltd 情報処理装置及び情報処理方法
US8351722B2 (en) 2008-12-25 2013-01-08 Sony Corporation Encoder, decoder, encoding method and decoding method, and recording medium
US9124895B2 (en) 2011-11-04 2015-09-01 Qualcomm Incorporated Video coding with network abstraction layer units that include multiple encoded picture partitions
JP2014535223A (ja) * 2011-11-04 2014-12-25 クゥアルコム・インコーポレイテッドQualcomm Incorporated 複数の符号化ピクチャ区画を含むネットワーク抽象化レイヤユニットによるビデオコーディング
US10742985B2 (en) 2011-12-29 2020-08-11 Lg Electronics Inc. Video encoding and decoding method based on entry point information in a slice header, and apparatus using same
US9883185B2 (en) 2011-12-29 2018-01-30 Lg Electronics Inc. Method for encoding and decoding image based on entry point in bitstream and apparatus using same
US10356414B2 (en) 2011-12-29 2019-07-16 Lg Electronics Inc. Video encoding and decoding method and apparatus using same
WO2013100694A1 (ko) * 2011-12-29 2013-07-04 엘지전자 주식회사 비디오 인코딩 및 디코딩 방법과 이를 이용하는 장치
US11240506B2 (en) 2011-12-29 2022-02-01 Lg Electronics Inc. Video encoding and decoding method based on entry point information in a slice header, and apparatus using same
US11711549B2 (en) 2011-12-29 2023-07-25 Lg Electronics Inc. Video encoding and decoding method based on entry point information in a slice header, and apparatus using same
CN108353183A (zh) * 2015-09-30 2018-07-31 沃高公司 用于基于图片组(gop)对视频数据流进行编码的方法
JP2018536325A (ja) * 2015-09-30 2018-12-06 ヴォゴVogo 画像群(gop)に基づいてビデオデータのストリームを符号化するための方法
CN108353183B (zh) * 2015-09-30 2021-02-09 沃高公司 用于基于图片组(gop)对视频数据流进行编码的方法

Also Published As

Publication number Publication date
US20060233525A1 (en) 2006-10-19
TWI321428B (en) 2010-03-01
TW200644639A (en) 2006-12-16
US8670653B2 (en) 2014-03-11
JP4374548B2 (ja) 2009-12-02
EP1720360A1 (en) 2006-11-08
KR20060109338A (ko) 2006-10-19

Similar Documents

Publication Publication Date Title
JP4374548B2 (ja) 復号装置および方法、記録媒体、並びに、プログラム
JP7159427B2 (ja) 画像復号装置、画像復号方法及びプログラム
CN109417642B (zh) 用于高分辨率影像流的影像比特流生成方法和设备
US20190364289A1 (en) Method of generating media file and storage medium storing media file generation program
US8831107B2 (en) Method and device for video coding and decoding
JP2006319944A (ja) 復号制御装置および方法、記録媒体、並びに、プログラム
RU2749536C2 (ru) Устройство кодирования, способ кодирования и запоминающий носитель, устройство декодирования, способ декодирования и запоминающий носитель
WO2013069216A1 (en) Image coding apparatus, image coding method, image decoding apparatus, image decoding method, and storage medium
JPH08251595A (ja) 画像伸張装置
US20170201757A1 (en) Video data encoding and decoding
US20230262221A1 (en) Method and device for video coding and decoding
EP3243329B1 (en) Image decoding apparatus, image decoding method, and storage medium
CN109618227A (zh) 视频数据存储方法及其系统
JP4875008B2 (ja) 動画像符号化方法、動画像復号化方法、動画像符号化装置及び動画像復号化装置
US20170070734A1 (en) Coding apparatus, decoding apparatus, and video transmission system
US20100150237A1 (en) Selecting a macroblock encoding mode
JP2006262159A (ja) 動画像符号化装置及びその制御方法、コンピュータプログラム及び記憶媒体
US20130107971A1 (en) Image encoding apparatus, image encoding method and program, image decoding apparatus, image decoding method and program
JP5016564B2 (ja) 動画像復号装置、方法、プログラム、及び記録媒体
JP2021064979A (ja) 符号化装置、符号化方法及びプログラム、復号装置、復号方法及びプログラム
JP2012019462A (ja) 画像復号装置および画像復号方法
JP2007235271A (ja) 映像復号装置
JP2007288443A (ja) 画像データ復号装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090723

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090813

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090826

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130918

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees