従来の符号化装置及び復号化装置の例を図6と図7に示す。図6において、ビデオ信号は、ビデオエンコーダ1により圧縮されるとともに符号化(エンコード)され、多重化装置3内のコードバッファ4に入力される。また、音声信号は、オーディオエンコーダ2により圧縮されるとともに符号化(エンコード)され、多重化装置3のコードバッファ5に入力される。
コードバッファ4,5の出力端子は、それぞれスイッチング回路6の入力端子E1,E2に接続されている。スイッチング回路6の出力端子Fは、ヘッダ付加回路7の入力端子に接続されている。ヘッダ付加回路7の出力は、例えば光磁気ディスク、磁気ディスク(ハードディスク)などからなる記録媒体の駆動装置(DSM)10に供給されるようになっている。制御装置8は、多重化システムクロック発生回路9の出力するシステムクロックの入力を受けて、所定の周期でスイッチング回路6の入力端子E1,E2を出力端子Fと順次接続状態にして、コードバッファ4または5からのデータを順次取り出して、時分割多重する。
制御装置8は、図8に示すフォーマットに従ってビットストリームが生成されるように、スイッチング回路6とヘッダ付加回路7を制御する。
即ち、図8に示すように、ISO11172(MPEG)の多重化方式では、1つの多重化ビットストリームは、1つ以上のパック(PACK)と、1つのISO _11172 _end_codeで構成される。ISO _11172 _end _codeは、32ビットの符号で、16進で表すと0x000001b9である。ここでx は不定を意味する。
1つのパックは、Pack_Start _Code、SCR (System Clock Reference) 、MUX_Rateよりなるヘッダと、1つ以上のパケット (Packet) で構成される。ヘッダのPack_Start _Codeは、32ビットの符号で、16進で表すと、0x000001b4である。パックの長さは、可変長として定義されているが、最大2048バイトとされる。
1つのパケットは、Packet_Start _Code_Prefix、Stream_ID、Packet_length、PTS(Presentation Time Stamp)、DTS(Decoding Time Stamp)よりなるヘッダと、パケットデータ(Code Data )とで構成される。Packet_Start _Code_Prefixは、24ビットの符号で0x000001である。Stream_IDは、8ビットの符号で、図9に示すように、パケットの種類を表す。Packet_length(16ビット)は、それ以降のパケットの長さを示す。
各パケットのCode Data には、オーディオデータ(audio stream)の場合、または、ビデオデータ(video streamの場合)が記録される。また、audio streamは32種類、video streamは16種類の異なったstream id を持つため、この数までの複数のオーディオ信号とビデオ信号を多重化することが出来る。
reserved stream は、例えば字幕等のデータを持つ。private _stream_1 及びprivate _stream_2 は用途が定められていない。padding _streamはデータ量を増やすために使用される。
以上のフォーマットに従って、パックの間隔が2048バイトになるように、制御装置8は、例えば図10に示すようなアルゴリズムを使用してヘッダ付加、コード読み込みの処理を行う。
最初に、制御装置8は、ヘッダ付加回路7に命令してパックヘッダを付加させる(ステップS1)。そしてM4 とM5 の和が、1つのパックに含まれるコードデータ量Dに等しくなるか、それより大きくなるまで待機する(ステップS2)。すなわち、1つのパックに収めるだけのデータがコードバッファ4,5に蓄積されるまで待機する。
ここで、M4 はコードバッファ4に書き込まれたデータ量、M5 はコードバッファ5に書き込まれたデータ量である。また、Dは1つのパック中に含まれるデータの総量を示す。ここでは簡単化するためにDを定数、すなわちパックの大きさ(2048)から、パックヘッダの大きさ、ビデオパケットヘッダの大きさ及びオーディオパケットヘッダの大きさを減じたものとする。
次に、そのパックに収めるビデオデータの量P1と、そのパックに収めるオーディオデータの量P2を、次式に従って演算する(ステップ3)。P1=D×M4 /(M4 +M5 )P2=D−P1ここでは単にパックに含まれるコードデータの総量Dを、各コードバッファ4,5のデータ量の比で配分している。
データ量が決まったら、制御装置8はヘッダ付加回路7に指令し、ビデオパケットヘッダを出力させる(ステップS4)。次にP1バイトのビデオデータをコードバッファ4より読み出し、駆動装置10に出力させる(ステップS5)。同様に、オーディオパケットヘッダを付加し(ステップS6)、P2バイトのオーディオデータをコードバッファ5より読み出し、駆動装置10に出力させる(ステップS7)。駆動装置10においては、内蔵するディスクにこれらの入力データが記録される。
このようにしてディスクに記録されたデータは図7に示す復号化装置において復号化される。すなわち、分離装置21のヘッダ分離回路22は、駆動装置10から読み出されたデータから、パックヘッダ及びパケットヘッダを分離して制御装置24に供給するとともに、時分割多重されたデータをスイッチング回路23の入力端子Gに供給する。スイッチング回路23の出力端子H1,H2は、それぞれビデオデコーダ25、オーディオデコーダ26の入力端子に接続されている。分離装置21の制御装置24は、ヘッダ分離回路22から供給されたパケットヘッダのstream idに従い、スイッチング回路23の入力端子Gと出力端子H1,H2を順次接続状態にして、時分割多重されたデータを正しく分離し、対応するデコーダに供給する。
このように、多重化したビデオデータがMPEGの符号化方式で圧縮されている場合、ランダムアクセスやサーチ動作に制限が生じる。すなわち、MPEGにおいては、フレーム内符号化ピクチャ(I(イントラ)ピクチャ)とフレーム間符号化ピクチャ(P(前方予測)ピクチャ、B(両方向予測)ピクチャ)を持っている。Iピクチャの符号化は、その画像(フレームまたはフイールド)内のデータのみを用いて行なわれるため、データの圧縮効率は低くなる。このIピクチャ自体をデコードすることが可能である。PピクチャとBピクチャは、前後のピクチャからの差分信号を符号化したものであるため、データの圧縮効率は高くなる。このPピクチャまたはBピクチャをデコードするには、それより前または後の予測画像が必要となる。このため、通常は1秒間に2枚程度のIピクチャが出現するようにして、ランダムアクセス性と圧縮効率のバランスを取っている。
図11に、駆動装置10によりディスクに記録されるIピクチャ、PピクチャおよびBピクチャを含むビットストリームの概念図を示す。一続きのビデオビットストリームは、1つ以上のGOP(Group of Pictures) に分割される。GOPは先頭部分にIピクチャを持つ。ビデオデータに対して固定レートの圧縮が行われている場合、Iピクチャは周期的に所定の位置に出現するため、その位置を計算により求め、アクセスすることができる。しかしながら、可変レートの圧縮が行われている場合、Iピクチャの位置は不定となり、アクセスすることが困難になる。
即ち、図7の多重化データ復号化装置において、サーチの命令を受けた場合、図示せぬ主制御装置は、制御装置24、ビデオデコーダ25及びオーディオデコーダ26に対してサーチモードへの遷移を命令する。サーチモードにおいてビデオデコーダ25は、入力されたビデオデータの中からIピクチャのデータのみをデコードする。あるいはまた、分離装置21でIピクチャのデータのみが選択され、ビデオデコーダ25に入力される。ビデオデコーダ25では、入力されたデータがデコードされる。
サーチモードにおいて、制御装置24は駆動装置10に対し、ディスク上のデータの読出位置を前方(または後方)に移動するコマンドを指令する。このときの読出位置の移動量は、サーチの速度や符号化レート等に依存するが、一般的に、サーチの速度が速いほど、また符号化レートが高いほど、移動量が増える。読出位置が所定の位置まで移動したとき、駆動装置10から出力されたデータは分離装置21に入力される。ヘッダ分離回路22はビデオデータを分離し、ビデオデコーダ25に供給する。ビデオデコーダ25は最初に出現したIピクチャをデコードし、出力する。サーチモードにおいて、オーディオデコーダ26はミユート状態とされる。
このように、サーチ動作(Iピクチャの連続再生)は、ランダムアクセスの繰り返しとして実現される。つまりユーザから、例えば前方への高速サーチが指示された場合、ビデオデコーダ25は入力されるデータのうち、所定のフレーム数のデータを読み飛ばし、Iピクチャを探し、デコードして出力する。あるいはまた、駆動装置10によりIピクチャのサーチが行なわれ、Iピクチャのデータのみがビデオデコーダ25に供給され、デコードされる。このような動作を繰り返すことによってサーチ動作(Iピクチャの連続再生)が実現される。
図1および図2は、本発明のデータ符号化装置及びデータ復号化装置の一実施例の構成を示すブロック図であり、図6および図7における場合と同一の構成要素には同一の参照符号が付されている。
図1の符号化装置では、ビデオエンコーダ1の出力端子は、ビデオエントリポイント検出回路31の入力端子に接続され、その出力端子はコードバッファ4の入力端子に接続されている。エントリパケット発生回路32は、制御装置8の制御入力を受け、その出力をスイッチング回路6の入力端子E3に供給するようになされている。また制御装置8は、多重化システムクロック発生回路9の出力するシステムクロックの入力を受け、所定の周期でスイッチング回路6の入力端子E1,E2,E3を出力端子Fと順次接続状態にして、コードバッファ4,5またはエントリパケット発生回路32からデータを順次取り出して時分割多重し、ヘッダ付加回路7に出力する。
また、制御装置8はヘッダ付加回路7を制御して、コードバッファ4から読み出したビデオデータにはビデオパケットヘッダを付加させる。またコードバッファ5から読み出したオーディオデータにはオーディオパケットヘッダを付加させる。
さらに、制御装置8は、ビデオエンコーダ1またはビデオエントリポイント検出回路31から、Iピクチャの発生タイミングで発生されるエントリポイント発生信号の入力を受け、エントリパケット発生回路32を制御して、ビットストリームの所定の位置にエントリパケットを挿入させる。ビデオエンコーダ1がエントリポイント発生信号を出力することができるように構成されている場合、ビデオエンコーダ1がIピクチャの発生タイミングでエントリポイント発生信号を出力する。
また、ビデオエンコーダ1がエントリポイント発生信号を出力することができない構成の場合や、既にエンコードしてあるビデオビットストリームを多重化する際には、ビデオエントリポイント検出回路31がIピクチャの発生タイミングでエントリポイント発生信号を発生するか、またはビデオエンコーダ1より入力されたビデオデータからエントリポイントを検出し、エントリポイント発生信号を出力する。エントリポイント記憶装置33は、制御装置8から読み書きできるメモリで、検出されたエントリポイントの位置を記憶する。その他の構成は、図6における場合と同様である。
図1に示した実施例においても、多重化ビットストリームは、少なくとも1つのパックと、ISO _11172 _end _codeにより構成される。そして、各パックは、例えば図3に示すようなフォーマットで構成されている。
すなわち、最初に、図8における場合と同様に、Pack_Start _Code,SCR ,MUX _RateよりなるPack_Header( ヘッダ) が配置され、次に、Video _Packet_Headerが、さらにその次に、Iピクチャを含まないビデオデータがパケット構造で配置されている。ビデオデータの次には、Entry _Packetが、その次には、Video _Packet_Headerが、さらにその次には、Iピクチャを含むビデオデータがパケット構造で配置されている。すなわち、Iピクチャ(エントリポイント)を含むビデオデータの直前(Video _Packet_Headerの直前)には、Entry _Packetが配置されるようになされている。そして、この実施例の場合、ビデオデータの次に、Audio_Packet_Headerが、その次に、パケット構造のオーディオデータが、順次配置されている。
Entry _Packet(エントリパケット)は、図4に示すフォーマットとされている。このフォーマットは、MPEGのパケットのうち、private _stream_2のパケットのフォーマットに対応するものである。先頭には、Packet_Start _Code_Prefixが配置され、その次には、16進で0xbfとされるstream_idが配置されている。その次には、その後のパケットの長さを表わすlengthが配置されている。以上の配置は、図8におけるpacketのヘッダにおける場合と同様である。
本実施例においては、次に、sony_idが配置されている。これは、このプライベートパケットが本出願人の独自のフォーマットであることを示している。その次には、sony_packet_typeが配置されており、これは、出願人独自のプライベートパケットフォーマット内の分類を示し、エントリパケットの場合は0xffとされる。さらにその次に順次配置されているcurrent _# _data_streams ,current _# _video _streams ,current _# _audio _streams は、このエントリパケットの直後から、次のエントリパケットの直前までに多重化されているデータパケット、ビデオパケット、オーディオパケットの数を、それぞれ表わしている。
さらにその次には、entry _packet_-3、entry _packet_-2、entry_packet_-1、entry _packet_+1、entry _packet_+2、entry _packet_+3が順次配置され、これらには、それぞれ3つ手前、2つ手前、1つ手前、1つ先、2つ先、3つ先のエントリパケットの位置と、それらのエントリパケットとの相対距離を駆動装置10で駆動するディスクのセクタ数で表したものが記録されている。
次に、図1の実施例の動作について説明する。制御装置8は、ビデオエンコーダ1またはビデオエントリポイント検出回路31からのエントリポイント発生信号を受け取り、ビデオエントリポイントの直前にエントリパケットを挿入させる(図3)。すなわち、エントリポイント発生信号の入力を受けたとき、エントリパケット発生回路32にエントリパケットを発生させるとともに、スイッチング回路6を入力端子E3側に切り換えさせ、ヘッダ付加回路7に供給させて、コードバッファ4,5からのビデオデータおよびオーディオデータと多重化させる。
図4に示したように、各エントリパケットには、そのエントリパケットから3つ手前、2つ手前、1つ手前、1つ先、2つ先、および3つ先のエントリパケットの位置が、entry _packet_-3、entry _packet_-2、entry _packet_-1、entry _packet_+1、entry _packet_+2、entry _packet_+3に、それぞれ記録される。手前(過去)のエントリパケットの位置(3つ手前、2つ手前および1つ手前の位置)はエントリポイント記憶装置33に記憶しておくことで、現在のエントリパケットを記録する時点でこれを知ることができる(従って必要に応じてこのタイミングにおいて、これを駆動装置10に供給し、ディスクに記録することができる)。
しかしながら、先の(将来の)エントリパケットの位置は現時点においてこれを知ることが出来ない。このため、制御装置8はエントリポイントの位置をエントリポイント記憶装置33にすべて記憶させておき、すべての多重化が終了した後に(ビデオデータとオーディオデータのビットストリームのディスクへの記録が完了した後に)、エントリポイント記憶装置33から、各エントリパケットの3つ手前、2つ手前、1つ手前、1つ先、2つ先、および3つ先のエントリパケットの位置を読み出し、これを駆動装置10に供給して、ディスク上の各エントリパケットに記録(追記)させる。
また、ビデオエンコーダ1とオーディオエンコーダ2は、それぞれ、ビデオ信号とオーディオ信号を、可変レートで符号化するが、制御装置8はヘッダ付加回路7を制御し、パックの間隔が2048バイトになるようにパックヘッダを付加させる。このため制御装置8は、例えば図5のようなアルゴリズムを使用してヘッダ付加、コード読み込み、エントリパケット挿入の処理を制御する。
ここで、図10の処理における場合と同様に、M4はコードバッファ4に蓄積されているデータ量、M5はコードバッファ5に蓄積されているデータ量とする。また、Dは1つのパック中に含まれるデータの総量を示す。ここでは簡単化するために、Dを定数、すなわちパックの大きさ(2048)から、パックヘッダの大きさ、ビデオパケットヘッダの大きさ及びオーディオパケットヘッダの大きさを減じたものとする。また、D2はエントリパケットを含むパック中のデータの総量を示す。つまりDからエントリパケットの大きさと、ビデオパケットヘッダの大きさを減じたものである。
最初に、制御装置8は、ヘッダ付加回路7に命令してパックヘッダを付加させる(ステップS11)。そしてM4 とM5 の和が、1つのパックに含まれるコードデータの量Dと等しくなるか、大きくなるまで待機する(ステップS12)。すなわち、1つのパックに収めるだけのデータが、コードバッファ4,5に蓄積されるまで待機する。
次に、そのパックに収めるビデオデータの量P1と、そのパックに収めるオーディオデータの量P2を、次式より計算する(ステップS13)。P1,P2は、パックに含まれるコードデータの総量Dを、各コードバッファ4,5のデータ量M4 ,M5 の比で配分したものとされている。
P1=D×M4 /(M4 +M5 )
P2=D−P1
次に、制御装置8は、M4 のデータの内、先頭のP1バイトまでのデータにビデオエントリポイントがあるかどうかを確認する(ステップS14)。パック内にビデオエントリポイントが含まれない場合、制御装置8はヘッダ付加回路7に指令し、ビデオパケットヘッダを出力させる(ステップS15)。次にP1バイトのビデオデータをコードバッファ4より読み出し、駆動装置10に出力させる(ステップS16)。同様にオーディオパケットヘッダを付加させ(ステップS17)、P2バイトのオーディオデータをコードバッファ5より読み出させ、駆動装置10に出力させる(ステップS18)。
パック内にビデオエントリポイントが含まれない場合、以上の処理が繰返される。この処理は、図10における場合の処理と同様である。
一方、パック内にビデオエントリポイントが含まれる場合、制御装置8はまず、エントリポイント記憶装置33に現在のパックの位置を記憶させる。そして、そのパックに収めるビデオデータの量P1とオーディオデータの量P2を、次式に従って計算する(ステップS19)。
P1=D2×M4 /(M4 +M5 )
P2=D2−P1
ステップS13における演算を行った後、ここで同様の演算をさらに行うのは、そのパックにエントリパケットを含めるため、データの容量が少なくなるからである。ここではP1,P2は、D2を各コードバッファ4,5のデータ量M4 ,M5 の比で配分したものとされている。
次に、ビデオパケットヘッダがヘッダ付加回路7から駆動装置10に出力され(ステップS20)、続いてビデオエントリポイント直前までのビデオデータが、ビデオエンコーダ1、ビデオエントリポイント検出回路31、コードバッファ4、スイッチング回路6の入力端子E1、出力端子F、ヘッダ付加回路7の経路で駆動装置10に出力され、ディスクに記録される(ステップS21)。次に、エントリパケット発生回路32によりエントリパケットが出力され、ディスクに記録される(ステップS22)。ただし、このときはまだ、エントリパケットの相対位置情報はディスクには書き込まれない。
その後、もう一度ビデオパケットヘッダが出力記録され(ステップS23)、残りのビデオデータが出力、記録される(ステップS24)。そしてステップS17,S18に進み、オーディオパケットヘッダが付加され、P2バイトのオーディオデータが記録される。
図5のアルゴリズムを繰り返し、ビデオエンコーダ1とオーディオエンコーダ2への入力がなくなった時点で、既にディスクに記録されているエントリパケットに位置データが書き込まれる。すなわち、制御装置8は、エントリポイント記憶装置33からエントリパケットを含むパックの位置を読み出し、駆動装置10のディスクの各エントリパケットに、前後3つずつのエントリパケットを含むパックの位置を書き込ませる。
次に、図2を参照して、図1の実施例において符号化されたデータを復号化する装置について説明する。分離装置21のヘッダ分離回路22は、駆動装置10から読み出されたデータから、パックヘッダ、パケットヘッダおよびエントリパケットを分離して制御装置24に供給するとともに、時分割多重されたデータをスイッチング回路23の入力端子Gに供給する。スイッチング回路23の出力端子H1,H2は、それぞれビデオデコーダ25、オーディオデコーダ26の入力端子に接続されている。
また制御装置24は、ヘッダ分離回路22より入力されたデータから、エントリポイントに関する情報(エントリパケットの情報)を読み出し、エントリポイント記憶装置41に供給し、記憶させる。制御装置24には駆動装置10から現在の読出位置の情報が供給されるので、制御装置24は、エントリポイントの位置とその内容を、対応付けて記憶させるようにすることが出来る。
分離装置21の制御装置24は、ヘッダ分離回路22から供給されたパケットヘッダのstream id に従い、スイッチング回路23の入力端子Gと出力端子H1,H2を順次接続状態にして、時分割多重されたデータを正しく分離させ、ビデオデータをビデオデコーダ25に、オーディオデータをオーディオデコーダ26に、それぞれ供給させる。
次に、図2の多重化データ復号化装置のサーチ動作が指令された場合の動作を説明する。サーチ動作が指令されたとき、図示せぬ主制御装置は、制御装置24、ビデオデコーダ25及びオーディオデコーダ26に対してサーチモードへの遷移を命令する。また、制御装置24は、駆動装置10の出力から現在の読出位置を読み取り、その位置の近傍のエントリポイントをエントリポイント記憶装置41より抽出する。このエントリポイント記憶装置41には、再生モード時に再生されたエントリパケットの情報が随時記憶されている。あるいはまた、装置の電源をオンしたとき、ディスクを装着したとき、再生を指令したときなど、所定のタイミングにおいて、駆動装置10に装着されているディスクに記録されているすべての、あるいは所定の範囲のエントリパケットの情報を、予め読み出させ、記憶させておくこともできる。
制御装置24はエントリポイントを求めたとき、駆動装置10にサーチ命令を送り、読出位置をそのエントリポイントに高速移動させる。移動が完了したとき、駆動装置10は、そのエントリポイントからデータを再生し、分離装置21に供給する。図3を参照して説明したように、エントリパケットはIピクチャが記録されているビデオデータの直前に配置されている。従って、ヘッダ分離回路22によりエントリパケットに続くビデオデータを分離し、ビデオデコーダ25に供給すると、このビデオデータの最初のピクチャはIピクチャになっている。ビデオデコーダ25は最初に出現したIピクチャをただちにデコードし、出力する。サーチモードにおいては、オーディオデコーダ26はミユート状態とされる。
エントリパケットには、前後それぞれ3つのエントリポイントの位置情報が記録されているので、制御装置24はその位置情報から次のエントリパケットをサーチさせ、再生させる動作を繰返させる。これにより、Iピクチャが迅速に、順次連続再生される。
制御装置24は、サーチの速度が速いときには、より遠くのエントリポイントにアクセスさせ、サーチの速度が遅いときには、より近くのエントリポイントにアクセスさせる。エントリポイントは、正方向と逆方向に、それぞれ3個づつ記録されているので、選択するエントリポイントの組合せによって、3段階以上のサーチ速度のバリエーションを持たせることができる。
前述のようにエントリパケットを最初に駆動装置10に最初に送るときは、先の位置にある(将来の)エントリパケットの位置を知ることはできないので、制御装置8はすべての多重化が終了した後に、エントリポイント記憶装置33に記録されている情報を用いて、エントリパケットの位置情報、entry _packet_+1、entry _packet_+2、entry _packet_+3を起動装置10の多重化ビットストリーム中にあるエントリパケットに追記する。
しかし、エントリポイント記憶装置33の容量が十分または全く無い場合、先の位置にあるエントリパケットの位置情報を十分または全く保持できないので、駆動装置10に記録された多重化ビットストリーム中のエントリパケットに追記することができない。またエントリパケット記憶装置33の容量が全く無い場合には、最初にエントリパケットを駆動装置33に送る時に前の位置にあるエントリパケットの位置情報、entry _packet_-3、entry _packet_-2、entry _packet_-1を書き込むことができない。このような場合、完成した多重化ビットストリーム中のエントリパケットの位置情報に入っている値は予測できないので、このような値に基づいてサーチを行った場合には予期せぬ動作が起きる可能性がある。
そこで、エントリパケットの位置情報の有効性を示すフラグを設ける。具体的には、エントリパケット発生回路32から発生させるエントリパケットの形式を図12または図13で示す形式にする。図12の形式は、そのエントリパケットに含まれるすべてのエントリポイントの位置情報の有効性をひとつの1bitフラグで表現する方法であり、図13の場合は、エントリポイントごとに有効性を表すフラグを付加する方法である。
図12の形式のエントリパケットを用いる場合、多重化を行って最初に多重化ビットストリームを駆動装置10に送る段階では、エントリパケットの位置情報を完全に書き込めないので、そのエントリパケットの位置情報の有効フラグ、Enable Flag に「無効」を意味する0をセツトし、駆動装置10に記録する。全ての多重化データを記録し終わった後、エントリポイント記録装置33に記録されているエントリパケットの位置情報を用いて、エントリパケットに追記を行う際、位置情報を全て書き込めたエントリパケットについては、制御装置8はそのエントリパケットにあるEnable Flag を「有効」を意味する1に更新する。
図13の形式のエントリパケットを用いる場合は、多重化を行って最初に多重化ビットストリームを駆動装置10に送る段階で、Enable Flag -3〜EnableFlag +3の有効フラグのうち、書き込むことのできた位置情報に対応する有効フラグには「有効」を示す1をセツトし、書き込むことのできなかった位置情報に対応する有効フラグには「無効」を示す0をセツトして駆動装置10に記録する。全ての多重化データを記録し終わった後、エントリポイント記録装置33に記録されているエントリパケットの位置情報を用いて、エントリパケットに追記を行う際、制御装置8は、追記できた位置情報に関しては、対応する有効フラグを「有効」を意味する1に更新する。
図13において、enable_flag_N と、entry _packet_N(-3≦N≦+3 )を連続したビット列と考え、このビット列で一つの数を表すと考えると、エントリパケットの位置情報有効フラグを設ける代わりに、エントリパケット位置情報そのもので、その値の有効性を表すことと等価になる。つまり有効な位置情報を書き込めない場合、特定の範囲の値、または位置情報として無効な値を書き込んでおくことで、位置情報有効フラグを付加するのと同等の機能を実現することができる。特定の値をエントリパケットの位置情報に書き込むことによって、それぞれのエントリポイントが無効であることを示す場合、無効を示す特定の値を複数種類設けることも可能である。たとえば、単にエントリポイントの位置情報の記録に失敗したために、そのエントリポイントの情報が無効な場合と、意図的にそのエントリポイントに読みだし位置を移動させるのを禁止する場合とを、異なる値でエントリパケットに書き込むことによって、多重化データ復号化装置に知らせることができる。
次に図12または図13で示したような、エントリパケット位置情報有効フラグを利用して、サーチ動作を行う多重化データ復号化装置を、図2を使用して説明する。制御装置24はヘッダ分離回路22より読みだされた、エントリパケットの情報を、エントリポイント記憶装置41に供給し、記憶させる。このとき、エントリパケットは図12または図13で示されるように、エントリパケット位置情報有効フラグが付加されている場合には、制御装置24はそのフラグを含めて、エントリポイント記憶装置41に供給し、エントリポイント記憶装置41はそれを記憶する。
サーチ動作が指令された時、図示せぬ主制御装置は、制御装置24、ビデオデコーダ25及びオーディオデコーダ26に対してサーチモードへの遷移を指令する。制御装置24は、駆動装置10の出力から読み出される、現在の読みだし位置情報と、エントリポイント記憶装置41から読み出されるエントリパケットの位置情報から、駆動装置10にサーチ動作を命令するための、読み出し位置を得る。このとき制御装置24は、エントリポイント記憶装置41からエントリパケットの位置情報の有効性を判断し、無効であるエントリポイントには駆動装置10にサーチ動作を命令しない。または他のエントリポイントの位置情報等から、当該エントリポイントの位置が、内挿、推定などで計算できる場合にはそのようにして求められたエントリポイントの位置に、駆動装置10をサーチさせることもできる。
図4に示すエントリパケットのentry _packet_-3、entry _packet_-2、entry _packet_-1、entry _packet_+1、entry _packet_+2、entry _packet_+3には、それぞれそのエントリパケットの3つ手前、2つ手前、1つ手前、1つ先、2つ先、3つ先のエントリポイントの相対位置を(セクタ番号で)記録するが、ここに書き込むエントリポイントの相対位置は、必ずしも当該エントリパケットに対して-3,-2,-1,+1,+2,+3 の位置のエントリポイントの位置である必要はなく、例えば-25,-8,-1,+1,+5,+20 というように、任意のエントリパケットの相対位置を記録することもできる。
これによって、記録メデイアの種別、多重化ビットストリームの信号形式、多重化するビデオまたはオーディオデータの性質などの諸特性に応じ、書き込むエントリポイントの相対位置を記録装置ごと、多重化データごと、エントリパケットごとに変更してサーチ速度を調整することができる。例えば、ISO11172(MPEG)で規定される多重化ビットストリームでは、Iピクチャから次のIピクチャまでのピクチャ枚数は可変である。そのような場合で、常にエントリパケットに-3,-2,-1,+1, +2,+3の位置のエントリポイントが書き込まれている場合、Iピクチャ間の枚数が異なるビットストリームでは、実時間再生に対するサーチ再生の速度は変化してしまうが、Iピクチャ間のピクチャ枚数に対応して、エントリポイントの相対位置を可変させてエントリパケットに記録することにより、サーチ速度を調整して、Iピクチャ間の枚数が異なるビットストリーム間で一定のサーチ再生の速度を実現することができる。
エントリパケットの位置情報に書き込むエントリポイントの相対位置は、必ずしも当該エントリパケットに対して-3,-2,-1,+1,+2,+3 の位置のエントリポイントの位置である必要はなく、例えば-25,-8,-1,+1,+5,+20 というように、任意のエントリパケットの相対位置を記録することもできるが、正・逆方向のスロー再生動作やコマ送り再生動作などの特殊再生を行う場合に、前後-1,+1 の位置のエントリポイントの位置が必要となる場合がある。
そこで、このような特殊再生が必要となるビットストリームに関しては、entry _packet_-1、entry _packet_+1に記録するエントリポイントの位置に制限を設け、それぞれ必ず前後-1,+1 の位置のエントリポイントの位置を書き込むようにすることもできる。先に説明したように、任意の個数分先または前にあるエントリポイントの位置情報をエントリパケットに記録する場合において、例えば -25,-8,-1,+1,+5,+20個先のエントリパケットの相対位置を記録するような場合において、図4のような形式のエントリパケットを使用すると、図2に示すような多重化データ復号化では、それらの自由に書き込まれたエントリポイントの位置情報がいくつ先または前のエントリポイントの位置情報に関するものかを判別することができない。したがって、それらの相対位置情報をサーチ動作に用いた場合、どの程度のサーチ速度が実現できるのかが予測できないという問題がある。
そこで、エントリパケットを図19に示すような形式とし、entry _packet_- 3 、entr y_packet_-2、en try_packet_-1、entry _packet_+1、entry_packet_+2、entry _packet_+3が、それぞれ何個分前または先のエントリポイントの位置を示すかを表す情報、Entry Point Position -3 、Entry Point Position -2 、Entry Point Position -1 、Entry Point Position +1 、Entry Point Positi on +2、Entry Point Position +3 をエントリパケットに記録することもできる。
例えば、entry _packet_-3、entry _packet_-2、entry _packet_-1、entry_packet_+1、entry _packet_+2、entry _packet_+3に、それぞれ、 -25,-8,-1,+1,+5,+20個先にあるエントリポイントの位置情報を記録する場合、Entry Point Position -3 、Entry Point Position -2 、Entry Point Position -1 、Entry Point Position +1 、Entry Point Position +2 、Entry Point Position+3にそれぞれ、-25,-8,-1,+1,+5,+20 と記録しておく。このEntry Point Position -3 〜+3までの情報を用いてサーチを行う場合の図2に示す多重化データ復号化装置の動作を説明する。
いま図示せぬ主制御装置は、制御装置24に対して、サーチ速度の目標値が与えてサーチ動作を指令する。ヘッダ分離回路22はDSM10から送られてきた多重化ビットストリームからエントリパケットを判別し、エントリパケットの内容を制御装置24に送る。制御装置24はエントリパケット中にある、Entry Point Position -3 、Entry Point Position -2 、Entry Point Position -1 、Entry Point Position +1 、Entry Point Position +2、Entry Point Position+3の中から、図示せぬ主制御装置から指示されたサーチ速度に最も近い速度を実現するものを選択し、対応するエントリポイントの位置情報を、entry _packet_-3、entry _packet_-2、entry _packet_-1、entry _packet_+1、entry _packet_+2、entry _packet_+3から得る。制御装置24はこのようにして選択したエントリポイントの位置情報を用いて、DSM10に次のエントリポイントへのサーチ動作を指令する。
このように、各エントリポイントの位置情報が何個先または前のエントリポイントの位置かを示す情報を用いて、あらゆる希望するサーチ速度に対してそれに最も近いサーチ速度を実現するエントリポイント位置情報を選択することができる。エントリパケットを図14に示すような形式とし、そのエントリポイントの直後に続くIピクチャのデータの大きさI-picture length、またはそのIピクチャのデータの終端が多重化されているパックの位置I-picture END sector-No.、またはその両方をエントリパケットに記録することもできる。
図15にI-picture length、I-picture END sector-No.をエントリパケットに記録するための多重化装置の構成を示す。Iピクチャ終了点検出回路51はビデオエンコーダ1から送られてくるビットストリームから、Iピクチャのデータの終端を探しだし、その位置を制御装置8に知らせる機能を持つ。エントリポイント記憶装置33は、エントリパケットの位置、そのエントリパケットに書き込まれるエントリポイントの値(entry _packet_-3, entry _packet_-2, ... ,entry _packet_+3)に加えて、そのエントリパケットの直後に続くIピクチャのデータの長さI-picture lengthと、そのIピクチャのデータの終端が多重化されているパックの位置情報I-picture END sector-No.を保持する機能を持つ。それ以外のブロックの機能は、図2と同様である。
制御装置8は、ビデオエンコーダ1、ビデオエントリポイント検出回路31、Iピクチャ終了点検出回路51から、エントリポイントの位置とそのエントリポイントの直後に続くIピクチャのデータの終了点の位置を検出する。エントリポイントの位置はIピクチャのデータの開始点の位置であるから、制御装置8は、Iピクチャのデータの終了点の位置とエントリポイントの位置の差分をとることによって、Iピクチャのデータの長さI-picture lengthを計算する。
Iピクチャのデータの長さは、コードバッファ4の記憶容量より大きい可能性があるため、エントリパケットを多重化して、駆動回路10に書き込むときには、そのエントリパケットに書き込むべきIピクチャのデータの長さI-picture lengthはまだ計算されていないことがある。そのような場合には、エントリパケットのI-picture lengthの部分には未計算を示す0または特定の値を書き込んで駆動装置10に記録しておく。制御装置8は、Iピクチャのデータの長さが計算された時点で、エントリポイント記憶装置33にIピクチャのデータの長さI-picture lengthを記録しておき、後でエントリパケットを追記する時に、駆動装置10にI-picture lengthの値を供給して記録する。
また、Iピクチャのデータが多重化されているパックの終端の位置I-pictureEND sector-No.は次のようにして求められる。制御装置8は、コードバッファ4とコードバッファ5に蓄積されているデータ量M4,M5によって、図5に示されるアルゴリズムでデータを多重化するが、ここで制御装置8は、図5で示されるアルゴリズムに記述されている処理とは別に、各パックごとにそのパックのビデオデータにIピクチャの終了点が含まれるかを判定する。そのパックにIピクチャのデータの終了点が含まれる場合、制御装置8は、そのパックの位置をエントリポイント記憶装置33に記録しておく。エントリポイント記憶装置33に記録する際は、そのIピクチャの直前に多重化されたエントリパケットに書き込まれるデータと対応がとれるようにして記憶する。
エントリポイント記憶装置33に記録された、Iピクチャのデータの終端位置の含まれるパックの位置I-picture END sector-No.は、Iピクチャのデータの長さI-piturelength と同様、エントリパケットの追記が行われる際に駆動装置10にその値が供給されて記録される。この際、I-picture END sector-No.は、そのIピクチャのデータの多重化が開始されたパックの位置、すなわちエントリパケットの多重化されているパックの位置からの相対距離で駆動装置10に書き込まれる。
次に、このようにしてエントリパケットに書き込まれた、I-picture END sector-No.を用いて、高速なサーチを行う多重化データ復号化装置の例を図2を用いて説明する。ISO11172(MPEG)に基づくビデオデコーダは、ピクチャごとにそのデータの量が異なるようなビットストリームに対してもデコード動作を保証するため、デコーダ内部にビデオコードバッファを持っている。ビデオデコーダ25に入ってきたビットストリームは、まず一旦このビデオコードバッファに蓄えられ、その後、必要なタイミングでデコードされる。
従来はIピクチャを連続再生するため、制御装置24は、ビデオデコーダ25によるIピクチャのデコードが終了したかを監視し、デコード終了が確認された後、次のIピクチャのサーチ指令を、駆動装置10に対して行うという動作を行っていた。この時ビデオデコーダ25がビデオコードバッファを持っている場合、ビデオデコーダ25のデコード部がIピクチャのデコードを終了した段階では、ビデオデコーダ25のビデオコードバッファには、Iピクチャに続いて多重化されているP,Bピクチャのデータが蓄えられており、それらのデータはデコードされないのにも関わらず、駆動装置10から読み込まれている状態にある。多くの場合、サーチの速度は、ビデオデコーダ25のデコードに要する時間よりも、駆動装置10からデータを読み出す時間に支配されるので、無駄なP,Bピクチャのロードによって、サーチの速度は低下する。
エントリパケットに書き込まれているI-picture END sector-No.情報を使用することにより、無駄なP,Bピクチャの読みだし量を最小限に抑え、次に表示すべきIピクチャのデータをビデオデコーダ25内のビデオコードバッファ内にあらかじめ読み込むことができるので、サーチ速度が駆動装置10からの読みだし速度に支配されるような多重化データ分離装置において、より高速なサーチ動作が実現できる。
サーチ動作中において制御装置24は、エントリポイント記憶装置41に記録されている情報をもとに、駆動装置10にサーチを指令する。駆動装置10は指定された位置から多重化ビットストリームをヘッダ分離回路22へ送る。ヘッダ分離回路は、送られてきた多重化ビットストリーム中にエントリパケットが検出されると、制御装置24に割り込みを発生させこれを知らせる。制御装置24は、この割り込みを受けて、駆動装置10から現在の読み出し位置情報を読みだし、エントリポイント記憶装置41に現在のエントリポイントの位置として記録する。
また、同時に制御装置24は、ヘッダ分離回路からエントリパケットに書かれているエントリポイントの位置情報を取り出し、エントリポイント記憶装置に記録する。このとき、エントリポイントの位置情報のうち、I-picture END sector-No.等のように現在のエントリポイントの先頭のパック位置からの相対位置でエントリパケット中に書き込まれている情報は、駆動装置10から読み出してエントリポイント記憶装置41に記録した現在のエントリポイントの位置情報に、その相対位置情報を加算することにより、相対位置情報を絶対位置情報に変換して、エントリポイント記憶装置41に記録する。
駆動装置10が多重化ビットストリームをヘッダ分離回路22に供給し続けるに従って、駆動装置10の読み出し位置情報は時間とともに増加していく。制御装置24は駆動装置10から読み出し位置情報を一定周期で読み出し、エントリポイント記憶装置41に記憶されている絶対位置情報に変換されたI-picture END sector-No.と比較する。このとき駆動装置10から得られた読み出し位置情報がI-picture END sector-No.を越えているときは、必要なIピクチャの読み出しは終了しており、Iピクチャに続くP,Bピクチャ等の不要なデータがロードされていると判断し、直ちに駆動装置10に次のIピクチャを読み込むためのサーチを命令する。
また、このようにしてエントリパケットに書き込まれた、Iピクチャのデータの大きさI-picture length、及びそのIピクチャデータの終端が多重化されているパックの位置I-picture END sector-No.を用いて、より一定なサーチ速度でサーチを行える多重化データ復号化装置の例を図2を用いて説明する。図2に示す、多重化データ復号化装置では、サーチ動作に入った場合、制御装置24は、エントリパケット記憶装置41に記憶されているエントリポイントの位置情報をもとに、Iピクチャのデータの先頭のあるパックを駆動装置10から読み込む。読み込まれたパックには必ずエントリパケットが多重化されているので、そこに書かれているI-picture length、I-picture END sector-No.からそのI-picture のデータの長さや読み込むべきパックの量を読み出すことができる。
制御装置24はエントリパケットに書かれたI-picture length、I-picture END sector-No.があるしきい値を越えるか、またしきい値を越えたIピクチャが何枚連続したかどうかを判定する。データ量がしきい値を越えたIピクチャが一定枚数以上続いた場合には、駆動装置10からのデータの読み出しや、ビデオデコーダ25によるデコード処理に時間がかかり、サーチ速度が遅くなったことが推定できるので、一時的にIピクチャのデコードの中止、もしくは-3〜+3までのエントリポイントのうち、選択するエントリポイントの変更を行って遅れを修正する。Iピクチャのデコードの中止は、ビデオデコーダ25及びオーディオデコーダ26にデータが供給されないうちに、駆動装置10に次のエントリポイントへのサーチを命令することによって実現する。選択するエントリポイントの位置の変更は、次のIピクチャをサーチする際にそれまで行っていたサーチよりも高速なサーチを行うエントリポイントに駆動装置10をサーチさせることによって実現する。例えばentry _packet_+2を用いたサーチを行っている場合であれば、一時的にentry _packet_+3を用いたサーチに変更する。
上記の手順によって、一時的にサーチ速度が低下した場合に、直後のサーチ動作を一時的に省略または高速化し、より一定速度に近いサーチを実現することができる。またエントリパケットの形式を図16に示されるようにし、当該エントリパケットに続くIピクチャに関するI-picture length、I-picture END sector-No.だけでなく、entry _packet_-3〜entry _packet_+3までに示されているエントリパケットに続くIピクチャに関する、I-picture length、I-picture END sector-No.をエントリパケットに記録することができる。すなわち、I-picture length_-3〜I-picture length_+3、I-picture END sector-No._-3〜I-picture END sector-No._+3をエントリパケットに書き込む。
これによって、新しいIピクチャを読み込む時、そのIピクチャの直前に多重化されているエントリパケットを読み込む前に、制御装置はそのIピクチャの長さや、駆動装置上の終端の位置を知ることができるので、さらに高速なサーチを実現することができる。エントリパケットを図16に示すような形式とし、ビデオストリーム番号、Video stream-No.を記録することができる。ISO11172(MPEG)に規定されている多重化ビットストリームには、最大16までのビデオデータが多重化されることが許されている。一つの多重化ビットストリームに複数のビデオストリームが多重化され、かつ多重化された2つ以上のビデオストリームについてサーチ動作をすることが考えられるときは、各ビデオストリームによってエントリポイントの位置が異なるので、それぞれのビットストリームに対するエントリポイント情報を記録する必要がある。
従来のエントリパケットの形式ではひとつのビデオストリームに対するエントリパケットしか多重化することができなかったが、Video stream-No.情報をエントリパケットに記録して、各ビデオストリームに対するエントリパケットを多重化することにより、復号化装置が、必要なビデオストリームに対するエントリパケットを選択することが可能になり、複数のビデオストリームが多重化されている多重化データにおいても、任意のビデオストリームに対してサーチ動作を実現できる。
図17に示される多重化装置においては、ビデオエンコーダ1、ビデオエントポイント検出回路31、Iピクチャ終了点検出回路51、コードバッファ4および5がそれぞれn個存在する。このような多重化装置の場合、制御装置8はそれぞれのコードバッファに蓄えられるビデオまたはオーディオビットストリームをスイッチング回路62で切り替えてヘッダ付加回路に供給してビデオパケットヘッダまたはオーディオパケットヘッダを付加し、パック単位で駆動装置10に記録する。
駆動装置10に記録しようとするパックにいずれかのビデオストリームのIピクチャが含まれていた場合には、そのIピクチャの直前にエントリパケットが多重化される。このときそのエントリパケットがどのビデオストリームに対するものかを、制御装置8はエントリポイント発生回路32に供給し、エントリパケットのVideo stream-No.に記録する。
図2で示される多重化データ復号化装置では、制御装置24はヘッダ分離回路22からエントリパケットのVideo stream-No.を読みだし、その値がサーチ動作を行いたいビデオストリーム番号と一致した時にはそのエントリパケットに記録されているエントリポイント情報等をエントリポイント記憶装置41に記憶する。また、一致しない時はそのエントリポイント情報等を破棄する。 このように多重化するビデオストリームごとにエントリパケットを設け、どのビデオストリームに対応するかの識別子をエントリパケットに含むことによって多重化されている全てのビデオストリームでサーチ動作を実現することができる。
エントリパケットを図16に示すような形式とし、コピーマネジメントフラグ、Copy Management Flagを記録することができる。Copy Management Flagは、CD(コンパクトディスク)、DAT(デジタルオーディオテープ)に採用されているSCMS(Serial Copy Management System )と同じ働きを実現するもので、多重化データの製作者の意図にそわないコピーを不可能にすることを指定するフラグである。
図1に示すデータ多重化装置において、制御装置8はコピーを禁止したいビットストリームに対しては、エントリパケット発生回路32に指令して、発生させるエントリパケットのCopy Management Flagにコピー禁止を示す値をセツトする。図2に示すデータ復号化装置においては、制御装置8はヘッダ分離回路22からエントリパケットのCopy Management Flagを読み込み、ここにコピー禁止を示す値がセツトされていたら、そのビデオストリームをコピー禁止として扱う。コピー禁止として扱われるビデオストリームに対して復号化装置は、復号化装置が外部出力端子を設けている場合にビットストリームデータを外部出力端子に出力しないようにしたり、または外部出力する際に送出するビットストリームのコピー禁止を示す領域にコピー禁止を示す値をセツトして送出先の機器にそのビットストリームがコピー禁止であることを知らせる。
また、Copy Management Flagは、コピー禁止であるか否かの情報だけでなく、コピーが許される回数情報を記録することができる。これにより、ビットストリームをコピーして複製物を作成することは可能であるが、その複製物をもとにした複製物、すなわち孫コピーによる複製を禁止することができる。 以上により、著作権が主張されている等の理由によりコピーを禁止したいビットストリームを復号化装置またはそこに接続される機器に対して明示することができる。
サーチ動作を行う場合、復号化装置は、エントリパケット情報を用いてIピクチャを連続表示するが、この場合、時間的に連続でないピクチャが表示されることになる。このように時間的に連続でない画像を一定時間以上眺めることにより、極度に目が疲労する可能性がある。そこで、図18に示す多重化データ復号化装置に示すように制御装置24がビデオデコーダ25に輝度コントロール信号を送ることができるようにし、サーチ中に表示画面の輝度を落して目の疲労の低減をはかることができる。 制御装置24は図示せぬ主制御装置より指令されてサーチ動作に入ると、ビデオデコーダ25に輝度を落すコントロール信号を送る。ビデオデコーダ25は輝度コントロール信号を受けとると表示画面の輝度を落し、表示画面を暗くする。またサーチ動作が終了すると、制御装置24は輝度を通常に戻すコントロール信号を送る。ビデオデコーダ25はその信号により、表示画面の輝度を通常の状態に戻す。
これにより、サーチ動作が行われ、時間的に不連続な画像が表示されている間は表示画像の輝度を落すことが可能になり、サーチ動作時の目の疲労を低減することができる。