JP4608831B2 - データ多重化装置およびデータ多重化方法 - Google Patents
データ多重化装置およびデータ多重化方法 Download PDFInfo
- Publication number
- JP4608831B2 JP4608831B2 JP2001261816A JP2001261816A JP4608831B2 JP 4608831 B2 JP4608831 B2 JP 4608831B2 JP 2001261816 A JP2001261816 A JP 2001261816A JP 2001261816 A JP2001261816 A JP 2001261816A JP 4608831 B2 JP4608831 B2 JP 4608831B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- packet
- header
- buffer
- video
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Television Signal Processing For Recording (AREA)
- Television Systems (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Time-Division Multiplex Systems (AREA)
Description
【発明の属する技術分野】
本発明は、複数の符号化ストリームを多重化するデータ多重化装置およびデータ多重化方法に関する。
【0002】
【従来の技術】
ビデオデータおよびオーディオデータの符号化、およびこれらのデータの多重化に関する国際規格として、MPEG(Moving Picture Expert Group)規格が広く知られている。このうち、MPEG−1(ISO11172、ISO:International Organization for Standardization)規格は、データ転送レート1.5MbpsまでのCD−ROM等の蓄積メディアを使用した保存および再生を主な目的としており、例えばVideo−CDのデータ規格に採用されている。
【0003】
また、近年、短時間のビデオデータを例えばスティック型等の小型で取り外しが可能な半導体メモリ等に記録する機会が増えている。例えば、磁気テープの記録再生装置を具備するビデオカメラ装置(以下、カムコーダと呼称する)では、撮影した短時間のビデオデータを上記のような可搬型半導体メモリに記録させるという付加的な機能が設けられたものがある。このように短時間のビデオデータを記録する場合には、ビデオデータのエンコードおよび可搬型半導体メモリに対する記録処理のための専用の安価なCPUを使用することが多い。
【0004】
ここで、図15に、MPEG−1規格を用いたデータの符号化・多重化処理および分離・復号化処理を行う従来の多重分離システムの構成例を示す。
図15に示す多重分離システム100は、ビデオデータおよびオーディオデータの符号化および多重化処理を行うデータ多重化装置110と、データ多重化装置110から出力された多重化ストリームが蓄積されるDSM(Digital Storage Media)120と、DSM120から読み出した多重化ストリームに対する分離および復号化処理を行うデータ分離装置130によって構成される。
【0005】
データ多重化装置110は、ビデオ信号の入力を受けて、符号化データの再生時における再生出力タイミングを示すPTS(Presentation Time Stamp)の値を生成するPTS生成部111と、MPEG−1規格に従ってビデオデータを符号化するビデオエンコーダ112と、オーディオ信号の入力を受けてPTSを出力するPTS生成部113と、MPEG−1規格に従ってオーディオ信号を符号化するオーディオエンコーダ114と、符号化されたビデオ信号とオーディオ信号とを多重化する多重化処理部115と、多重化の際の基準同期信号となるSTC(System Time Clock)を発生させるシステムエンコーダ116によって構成される。
【0006】
また、データ分離装置130は、入力された多重化ストリームの分離処理を行う分離処理部131と、分離されたビデオデータが一時記憶されるビデオSTD(System Target Decoder)バッファ132と、ビデオデータを復号化するビデオデコーダ133と、PTSとSTCとの値を比較して出力タイミングを制御するPTS比較部134と、分離されたオーディオデータが一時記憶されるオーディオSTDバッファ135と、オーディオデータを復号化するオーディオデコーダ136と、PTSとSTCとの値を比較して出力タイミングを制御するPTS比較部137と、STCを発生させるシステムデコーダ138によって構成される。
【0007】
データ多重化装置110において、ビデオデータ用のPTS生成部111は、システムエンコーダ116からのSTCを参照して、入力されたビデオ信号の各フレームに対する復号時のPTSを生成し、各フレームのデータとともにビデオエンコーダ112に出力する。ビデオエンコーダ112は、PTS生成部111からのビデオデータに対する圧縮・符号化処理を行い、生成した符号化ストリームを多重化処理部115に出力する。一方、オーディオデータ用のPTS生成部113は、入力されたオーディオ信号の各オーディオフレームに対するPTSをシステムエンコーダ116からのSTCを基準にして生成する。オーディオエンコーダ114は、PTS生成部113からのオーディオデータに対する圧縮・符号化処理を行い、生成した符号化ストリームを多重化処理部115に出力する。
【0008】
多重化処理部115は、ビデオエンコーダ112およびオーディオエンコーダ114からのビデオデータおよびオーディオデータによる各符号化ストリームを、システムエンコーダ116からのSTCを基準にして多重化し、DSM120に対して出力する。この多重化処理では、複数のパケットで構成されるパック単位でブロック化された、ISO11172−1の規定による多重化ストリームが生成され、パックおよびパケットの先頭部には所定のヘッダ情報が付与される。また、ビデオデータを含むパケットのヘッダには、復号化の際の復号タイミングを示すDTS(Decoding Time Stamp)が必要に応じて記述される。システムエンコーダ116は、これらのPTS、DTSの時刻基準として周波数90kHzのSTCを発生させる。
【0009】
DSM120は、例えばハードディスク、光ディスク、半導体メモリ等のデジタルデータに対する蓄積媒体であり、データ多重化装置110より出力された多重化ストリームを順次記憶し、また、データ分離装置130の要求に応じて、記憶した多重化ストリームをデータ分離装置130に対して順次出力する。
【0010】
また、データ分離装置130において、分離処理部131は、システムデコーダ138からのSTCに基づいて、DSM120から出力された多重化ストリームをビデオおよびオーディオの各符号化ストリームに分離し、それぞれビデオSTDバッファ132およびオーディオSTDバッファ135に対して出力する。ビデオSTDバッファ132は、分離されたビデオデータの符号化ストリームを一時記憶し、ビデオデコーダ133に対して順次出力する。ビデオデコーダ133は、入力された符号化ストリームに対する復号化および伸張処理を行い、元のビデオデータを復元する。PTS比較部134は、ビデオデータの各ピクチャに付されたPTSとシステムデコーダ138からのSTCとを比較し、PTSとSTCが一致したときに、対応するピクチャのデータを図示しないビデオDAC(Digital-Analog Converter)に出力する。
【0011】
一方、オーディオSTDバッファ135は、分離処理部131により分離されたオーディオデータの符号化ストリームを一時記憶し、オーディオデコーダ136に対して順次出力する。オーディオデコーダ136は、入力された符号化ストリームに対する復号化および伸張処理を行い、元のオーディオデータを復元する。PTS比較部137は、復元されたオーディオデータの各オーディオフレームに付されたPTSと、システムデコーダ138からのSTCとが一致したときに、このオーディオフレームのデータを図示しないオーディオDACに出力する。システムデコーダ138は、PTSおよびDTSの基準時刻情報として、90kHzのSTCを発生させる。
【0012】
この分離多重システム100では、データ多重化装置110内で生成されるSTCに基づいてPTSを多重化ストリームに付与し、データ分離装置130内で分離・復号化されたデータをPTSの値に基づいて再生出力することにより、元のビデオおよびオーディオデータの同期を保ったまま正確に再生出力することが可能となっている。
【0013】
ところで、上記のデータ多重化装置110において、ビデオおよびオーディオの多重化ストリームを生成する際には、データ分離装置130側のビデオSTDバッファ132およびオーディオSTDバッファ135がそれぞれオーバフローやアンダフローを起こさないように、各ストリームを多重化しなければならない。
【0014】
ここで、図16に、ISO11172−1規格の多重化ストリーム構成と各STDバッファの蓄積状態の例について示す。
図16(A)に示すように、ISO11172−1において規定されたMPEG−1の多重化ストリーム(システムストリーム)は、パック単位でブロック化されて、終端には終了コードが付される。また、パックの先頭部にはパックヘッダが設けられ、このパックヘッダには、パック開始コードを先頭に、データ分離装置130側のSTCをデータ多重化装置110側の意図した値にセット・構成するための情報であるSCR(System Time Clock)や多重化レート(Mux_Rate)等が記述され、この後にさらにシステムヘッダが設けられることもある。
【0015】
このパックヘッダまたはシステムヘッダの後には、図16(B)に示すように、ビデオデータやオーディオデータ等が格納されたパケットが通常、複数配置される。各パケットの先頭部にはパケットヘッダが設けられ、このパケットヘッダには、パケット開始コードを先頭に、パケットに含まれるデータの種類を示すストリームIDや、パケット長、タイムスタンプ情報(PTS、DTS)等が記述される。そして、図16(C)に示すように、この後に符号化されたビデオデータおよびオーディオデータ、パディングデータのいずれかを含むパケットデータが格納される。
【0016】
また、図16(D)および(E)は、このような多重化ストリームをデータ分離装置130において分離・復号化する場合の、ビデオSTDバッファ132およびオーディオSTDバッファ135におけるデータ蓄積状態の例を示している。パケットデータとして格納されていたビデオおよびオーディオの符号化データは、分離処理部131により分離されると、それぞれビデオSTDバッファ132およびオーディオSTDバッファ135に一時記憶される。各STDバッファでは、通常、スタートアップ・ディレイと呼ばれる期間において、分離されたデータの蓄積のみが行われた後、ビデオデコーダ133およびオーディオデコーダ136における復号化の開始とともに、データの蓄積を順次行いながら各デコーダに対するデータの読み出しが行われる。
【0017】
【発明が解決しようとする課題】
ところで、このような各STDバッファにおけるデータ蓄積状態は、データ多重化装置110におけるビデオおよびオーディオの各符号化データのパケットへの割り当てやそのデータ量等の多重化処理時の状況によって決定されるが、この多重化処理時の状況によっては、図16(D)に示すように、ビデオSTDバッファ132の容量に対してデータがオーバフローしてしまったり、あるいは図16(E)に示すように、オーディオSTDバッファ135においてデータがアンダフローを起こすことにより、正確な復号化ができない場合がある。
【0018】
このため、従来では、データ多重化装置110における多重化処理の際に、データ分離装置130側の各STDバッファの蓄積状態を仮想的に逐次チェックしながら、オーバフローおよびアンダフローを起こさないように、パケット長を変化させたり、不必要なパディングデータを挿入するバッファ制御を行う必要があった。
【0019】
このようなバッファ制御を行う従来のデータ多重化装置の例が、特開平8−98160公報に開示されている。この公報によれば、多重化処理時において、仮想的な復号化バッファの占有量をシミュレートし、その占有量の大小に応じて各符号化ストリームを多重化することにより、復号化バッファの変動量が少なくなり、パディングデータを挿入することなく、オーバフローおよびアンダフローを防ぐことが可能としている。
【0020】
しかし、このように多重化処理時において復号器側のバッファの蓄積状態を仮想的にチェックするバッファ制御は複雑な処理となるため、バッファ制御を伴う多重化処理を行うにはある程度の処理能力が必要となり、低速で安価なCPU等の制御装置を使用して処理することは困難であった。例えば、上述したカムコーダの例のように、可搬型半導体メモリ等への短時間のビデオデータの記録が行われる場合では、ビデオデータのMPEG−1データへの符号化や記録処理を行うために専用のCPUが使用される場合があるが、このCPUはコスト削減のために安価で低速なものを使用することが多く、符号化・多重化処理の際の上記のバッファ制御を行うには、処理能力が足りない。
【0021】
本発明はこのような課題に鑑みてなされたものであり、復号器側のバッファの蓄積容量に対する仮想的な制御を必要とせずに、簡易な処理によって複数の符号化ストリームを多重化することが可能なデータ多重化装置を提供することを目的とする。
【0022】
また、本発明の他の目的は、復号器側のバッファの蓄積容量に対する仮想的な制御を必要とせずに、簡易な処理によって複数の符号化ストリームを多重化することが可能なデータ多重化方法を提供することである。
【0023】
【課題を解決するための手段】
本発明では上記課題を解決するために、複数の符号化ストリームを多重化するデータ多重化装置において、ビデオデータを含む複数の入力データをそれぞれ固定のビットレートで符号化して前記複数の符号化ストリームを生成する符号化手段と、生成された前記複数の符号化ストリームのそれぞれから、すべて同一データ長のパケットデータを生成するパケットデータ生成手段と、前記各パケットデータに対応する固定長のヘッダデータを生成するヘッダデータ生成手段と、前記各符号化ストリームから生成された前記各パケットデータが現れる割合が前記各符号化ストリームの前記ビットレートの比と同じになるように、前記ヘッダデータ生成手段によって生成された前記ヘッダデータと、これに対応する、前記パケットデータ生成手段によって生成された前記パケットデータとを交互に多重化して、多重化ストリームを生成する多重化手段と、を有し、前記各符号化ストリームの前記ビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされ、前記ヘッダデータ生成手段は、復号化器におけるバッファへの前記各符号化ストリームの蓄積開始から復号化開始までのデータ蓄積時間をあらかじめ設定し、前記ヘッダデータのうち、アクセスユニットの先頭データが存在する前記パケットデータに対応する前記ヘッダデータに対して、前記データ蓄積時間と前記参照時刻情報とに基づいて当該アクセスユニットの再生時刻情報を記録するとともに、前記バッファの必要容量情報を記録し、前記各符号化ストリームの前記ビットレートの比が整数にならない場合には、前記ビットレートの比が整数になる場合と比較して、前記バッファに前記パケットデータが1つ以上多く蓄積されるように前記データ蓄積時間を長く設定するとともに、前記バッファの必要容量情報の設定値を前記パケットデータのデータ長以上の大きさだけ大きくする、ことを特徴とするデータ多重化装置が提供される。
【0024】
このようなデータ多重化装置では、パケットデータ生成手段が複数の符号化ストリームから固定長のパケットデータを生成し、ヘッダデータ生成手段が固定長のヘッダデータを生成して、多重化手段がこのヘッダデータと対応するパケットデータとを交互に多重化する。この多重化の際には、各符号化ストリームのパケットデータが現れる割合が各符号化ストリームのビットレートの比と同じになるようになされる。また、各符号化ストリームのビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされる。さらに、ヘッダデータ生成手段は、復号化器におけるバッファへの各符号化ストリームの蓄積開始から復号化開始までのデータ蓄積時間をあらかじめ設定する。そして、ヘッダデータのうち、アクセスユニットの先頭データが存在するパケットデータに対応するヘッダデータに対して、データ蓄積時間と参照時刻情報とに基づいて当該アクセスユニットの再生時刻情報を記録するとともに、バッファの必要容量情報を記録する。また、各符号化ストリームのビットレートの比が整数にならない場合には、ビットレートの比が整数になる場合と比較して、バッファにパケットデータが1つ以上多く蓄積されるようにデータ蓄積時間を長く設定するとともに、バッファの必要容量情報の設定値をパケットデータのデータ長以上の大きさだけ大きくする。
【0025】
また、本発明では、複数の符号化ストリームを多重化するデータ多重化方法において、ビデオデータを含む複数の入力データをそれぞれ固定のビットレートで符号化して前記複数の符号化ストリームを生成するステップと、生成された前記複数の符号化ストリームのそれぞれから、すべて同一データ長のパケットデータを生成するステップと、前記各パケットデータに対応する固定長のヘッダデータを生成するステップと、前記各符号化ストリームから生成された前記各パケットデータが現れる割合が前記各符号化ストリームの前記ビットレートの比と同じになるように、生成された前記ヘッダデータとこれに対応する前記パケットデータとを交互に多重化して、多重化ストリームを生成するステップと、を含み、前記各符号化ストリームの前記ビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされ、前記ヘッダデータを生成するステップでは、復号化器におけるバッファへの前記各符号化ストリームの蓄積開始から復号化開始までのデータ蓄積時間をあらかじめ設定し、前記ヘッダデータのうち、アクセスユニットの先頭データが存在する前記パケットデータに対応する前記ヘッダデータに対して、前記データ蓄積時間と前記参照時刻情報とに基づいて当該アクセスユニットの再生時刻情報を記録するとともに、前記バッファの必要容量情報を記録し、前記各符号化ストリームの前記ビットレートの比が整数にならない場合には、前記ビットレートの比が整数になる場合と比較して、前記バッファに前記パケットデータが1つ以上多く蓄積されるように前記データ蓄積時間を長く設定するとともに、前記バッファの必要容量情報の設定値を前記パケットデータのデータ長以上の大きさだけ大きくする、ことを特徴とするデータ多重化方法が提供される。
【0026】
このようなデータ多重化方法では、複数の符号化ストリームから固定長のパケットデータが生成され、またこれらに対応する固定長のヘッダデータが生成されて、ヘッダデータとパケットデータとが交互に多重化される。この多重化の際には、各符号化ストリームのパケットデータが現れる割合が各符号化ストリームのビットレートの比と同じになるようになされる。また、各符号化ストリームのビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされる。さらに、ヘッダデータを生成する際には、復号化器におけるバッファへの各符号化ストリームの蓄積開始から復号化開始までのデータ蓄積時間をあらかじめ設定する。そして、ヘッダデータのうち、アクセスユニットの先頭データが存在するパケットデータに対応するヘッダデータに対して、データ蓄積時間と参照時刻情報とに基づいて当該アクセスユニットの再生時刻情報を記録するとともに、バッファの必要容量情報を記録する。また、各符号化ストリームのビットレートの比が整数にならない場合には、ビットレートの比が整数になる場合と比較して、バッファにパケットデータが1つ以上多く蓄積されるようにデータ蓄積時間を長く設定するとともに、バッファの必要容量情報の設定値をパケットデータのデータ長以上の大きさだけ大きくする。
【0027】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図1に、本発明のデータ多重化装置の構成例を示す。
【0028】
図1に示すデータ多重化装置1は、MPEG−1規格に従って、ビデオデータおよびオーディオデータを符号化し、これらの符号化ストリーム(以下、それぞれビデオストリーム、オーディオストリームと呼称する)を多重化して、可搬型半導体メモリ2に対して多重化ストリームとして記録するための装置である。このデータ多重化装置1は、例えばカムコーダ等に設けられて、この付加機能として、数十秒といった短時間のビデオデータを可搬型半導体メモリ2にMPEG−1データとして記憶させる機能を実現する。
【0029】
このデータ多重化装置1は、入力されたビデオデータを符号化するビデオエンコーダ11と、ビデオエンコーダ11から出力されたビデオストリームを一時記憶するビデオ入力バッファ12と、入力されたオーディオデータを符号化するオーディオエンコーダ13と、オーディオエンコーダ13から出力されたオーディオストリームを一時記憶するオーディオ入力バッファ14と、各符号化ストリームが多重化されて一時記憶される出力バッファ15と、各部の制御をつかさどるCPU16によって構成される。また、CPU16と、ビデオ入力バッファ12、オーディオ入力バッファ14、出力バッファ15および可搬型半導体メモリ2とは、CPUバス17によって接続されて、データの送受信が行われる。
【0030】
このデータ多重化装置1において、ビデオエンコーダ11は、CPU16からの制御信号に応じて、入力されたビデオデータに対して固定ビットレートにより圧縮・符号化処理を行い、生成したビデオストリームをビデオ入力バッファ12に対して順次出力する。ビデオ入力バッファ12は、例えば半導体によって構成され、記憶したビデオストリームを、CPU16からの要求に応じて出力バッファ15に出力する。
【0031】
また、同様に、オーディオエンコーダ13は、CPU16からの制御信号に応じて、入力されたオーディオデータに対して固定ビットレートにより圧縮・符号化処理を行い、生成したオーディオストリームをオーディオ入力バッファ14に対して順次出力する。オーディオ入力バッファ14は、例えば半導体によって構成され、記憶したオーディオストリームを、CPU16からの要求に応じて出力バッファ15に出力する。
【0032】
出力バッファ15は、例えば半導体によって構成され、CPU16の制御に基づいて、ビデオ入力バッファ12およびオーディオ入力バッファ14から出力されたデータや、CPU16により生成されたヘッダ情報等を、指定されたアドレスに記憶し、また、これにより生成された多重化ストリームを可搬型半導体メモリ2に出力する。
【0033】
CPU16は、例えばカムコーダのコントローラ等の外部からの信号記録開始・終了の要求を受けて、ビデオエンコーダ11およびオーディオエンコーダ13に対して制御信号を出力し、各エンコーダにおける符号化処理の開始・停止タイミングを制御する。また、CPUバス17を通じて、ビデオ入力バッファ12およびオーディオ入力バッファ14に記憶された各符号化ストリームのデータを読み出すとともに、ヘッダ情報を生成して、これらを出力バッファ15の指定アドレスに対して記憶させることにより多重化ストリームを生成する。さらに、CPU16は、出力バッファ15の蓄積量が満杯になると、この多重化ストリームを読み出して可搬型半導体メモリ2に順次記憶させる。
【0034】
可搬型半導体メモリ2は、例えばスティック型等の小型の外部記録媒体であり、図示しない読み出し・書き込みスロットに挿入されて、出力バッファ15上に生成された多重化ストリームを記憶する。また、再生時には、この読み出し・書き込みスロットに挿入されたまま、あるいは、この読み出し・書き込みスロットから引き抜かれて、図示しないデータ分離装置に対して記憶データを順次出力する。
【0035】
このデータ多重化装置1では、ビデオエンコーダ11およびオーディオエンコーダ13によって圧縮・符号化されたビデオおよびオーディオストリームを、それぞれビデオ入力バッファ12およびオーディオ入力バッファ14に一時記憶した後、これらのデータを読み出して、ヘッダ情報とともに出力バッファ15の指定領域に記録していくことで多重化処理が行われる。この多重化処理の際には、復号器側に設けられるSTDバッファがオーバフローおよびアンダフローを起こさないように、ビデオおよびオーディオストリームのデータのパケットに対する割り当てを行う必要がある。
【0036】
また、データ多重化装置1は、上述したように短時間のビデオデータを可搬型半導体メモリ2に記憶させる機能を実現する装置であることから、CPU16は、ビデオデータおよびオーディオデータの符号化処理と半導体メモリ18への書き込み処理とを行うための専用に設けられており、コスト削減のために低速で安価なものとなっている。
【0037】
このため、本発明のデータ多重化装置1では、多重化ストリームを構成するパックやパケットのヘッダ伝送レートを一定にし、また、パックが復号器側に到着する間隔(SCR)を一定にすることにより、復号器側のSTDバッファの蓄積量に対するシミュレーションを行うことなく、簡単な処理によって多重化を行い、多重化処理におけるCPU16の負荷を軽減する。
【0038】
ここで、図2に、ビデオおよびオーディオの各パケットの割り当て方法を概念的に示し、本発明で行われる多重化処理方法の概略を説明する。
まず、復号器側のSTDバッファがオーバフローおよびアンダフローを起こさないように簡単に多重化するためには、ビデオおよびオーディオの各符号化ストリームのビットレートの比で、各符号化ストリームのデータを多重化ストリーム中に割り当てればよい。
【0039】
例えば、ビデオストリームのビットレート(以下、ビデオレートと略称する)が128kbps、オーディオストリームのビットレート(以下、オーディオレートと略称する)が32kbpsの場合、ビデオレートとオーディオレートの比は4:1となる。このとき、図2(A)に示すように、各符号化ストリームを一定のデータ量のパケットデータとして区切り、ビデオパケット4つとオーディオパケット1つを交互に多重化する。この多重化されたストリーム全体の転送レートRmux1は、各符号化ストリームのビットレートの和で表され、Rmux1=128+32=160(kbps)となる。従って、パックやパケットに対するヘッダが付与されなければ、この多重化ストリームはビデオとオーディオのデータが一定の割合で割り当てられることになり、長期的には復号器側のSTDバッファの蓄積量は増加も減少もしない。
【0040】
また、パックおよびパケットのヘッダ領域の転送レートも一定とし、このヘッダ領域を独立した第3のストリームのように扱って、図2(B)に示すように、ビデオ、オーディオおよびヘッダの3つのストリームを多重化するイメージでとらえると、このときの多重化ストリーム全体の転送レートRmux2は、3つのストリームの各転送レートの和で表すことができる。従って、図2(A)の場合と同様に、生成された多重化ストリームは各データが一定の割合で割り当てられることになる。また、このときヘッダ領域およびパケットデータによってなるパックの長さが一定であるため、パックヘッダに記録されるSCRの値は一定となる。
【0041】
以上のようなパケットの割り当て処理では、生成された多重化ストリーム内にビデオおよびオーディオの各データが常に一定割合で含まれることから、復号器側のSTDバッファには単位時間内に一定以上の量のデータが入力することがなく、オーバフローは発生しない。しかし、実際にはビデオおよびオーディオのアクセスユニットごとのデータ量は一定でないため、STDバッファに対する入力データ量は常に一定とはならず、アンダフローを防ぐことはできない。
【0042】
従って、STDバッファのアンダフローを防ぐためには、図2(C)に示すように、復号器側において、入力されたデータをあらかじめSTDバッファにある程度蓄積したあと、順次読み出して復号化を開始するようにする。このように、復号化の開始以前にあらかじめデータを蓄積するために要する時間はスタートアップ・ディレイと呼ばれる。このスタートアップ・ディレイ(Start−up_Delay)の値は、以下の式(1)〜(4)によって求められる。
【0043】
【数1】
【0044】
ただし、スタートアップ・ディレイの範囲に配置されるビデオパケットの数をV_Packet_Cnt、ビデオレートをVideo_Rate(単位:bps)、ビデオストリームにおける1番目のアクセスユニット(ピクチャ)のSTDバッファに対する仮想蓄積時間をFirst_VBV_Delay(単位:s)(VBV:Video Buffering Verifier)、1パケットにおけるパケットデータのサイズをPacket−data_Size(単位:bit)、スタートアップ・ディレイの範囲に配置されるパケット総数をPacket_Cnt、この範囲に配置されるオーディオパケットの数をA_Packet_Cnt、この範囲のビデオパケット、オーディオパケットおよびヘッダデータを含む全体のデータ長をData_Length(単位:bit)、1パックの長さをPack_Length(単位:bit)、多重化ストリームの転送レート(多重化レート)をMux_Rate(単位:bps)としている。
【0045】
ここで、First_VBV_Delayの値は、ビデオレートごとに実験値としてあらかじめ設定することができる。従って、上記のデータ多重化装置1では、スタートアップ・ディレイの値を多重化処理に先立ってあらかじめ設定することによって、多重化処理中にSTDバッファの蓄積量をシミュレーションすることなく、STDバッファにおけるオーバフローおよびアンダフローを防止することが可能となる。
【0046】
なお、ビデオストリームおよびオーディオストリームのパケットデータのうち、上記のように設定されたスタートアップ・ディレイの期間中にSTDバッファに蓄積されるデータを含むパケットデータについては、これらに対応するヘッダデータを含む多重化ストリームの転送時間がスタートアップ・ディレイの値以下となる必要があることから、多重化されるビデオパケットとオーディオパケットの比がこれらのビットレートの比と一致しない場合があり得る。
【0047】
次に、上記のデータ多重化装置1において、多重化ストリーム内に生成されるパックおよびパケットの構成について説明する。図3は、ビデオおよびオーディオの各符号化ストリームの先頭のデータを含むパックの構成例を示し、図4は、各符号化ストリームの2つ目以降のパックおよびパディングパックの構成例を示す。
【0048】
上述したように、データ多重化装置1では、出力バッファ15内に生成される多重化ストリーム中のパックの長さを固定し、パック中のパックヘッダ、システムヘッダおよびパケットヘッダが記録されるヘッダ領域のデータ長、およびビデオ、オーディオストリームの各データが格納されるパケットデータの長さもすべて一定値とする。図3および図4では、例として、パックの長さを2048バイト、ヘッダ領域の長さを48バイト、パケットデータの長さを2000バイトとしている。
【0049】
まず、パックヘッダの長さは、ISO11172−1の規定により、すべてのパックにおいて先頭からの12バイトが割り当てられる。パックヘッダには、パック開始コードやSCR、多重化レートが記録される。
【0050】
次に、パケットデータ内にビデオストリームの先頭が含まれる場合は、図3(A)に示すように、システムヘッダの領域となる。このシステムヘッダは18バイトの固定長とされ、この中にはビデオストリームのビットレートや、基本ストリーム情報としてビデオストリームヘッダおよびオーディオストリームヘッダ等が記録される。さらに次は、18バイトの固定長のパケットヘッダの領域となり、ストリームIDやパケット長、復号器側のSTDバッファに対する情報、およびタイムスタンプとしてPTS、DTSの双方が記録される。そして、続く領域にはパケットデータとして、ビデオストリームの先頭からのデータが2000バイト分だけ格納される。
【0051】
次に、パケットデータ内にオーディオストリームの先頭が含まれる場合は、図3(B)に示すように、12バイトのパックヘッダの後、システムヘッダが記録されないため、この分の18バイトのパディングデータ(16進数でFF)が格納される。そして、この後が18バイトのパケットヘッダの領域となり、ストリームIDや復号器側のSTDバッファに対する情報等とともに、タイムスタンプとしてPTSのみが記録される。なお、パケットヘッダ内において、DTSの記憶領域にはスタッフィングバイトが挿入される。続く領域には、パケットデータとしてオーディオストリームの先頭からのデータが2000バイト分だけ格納される。
【0052】
次に、図4(A)、(B)および(C)には、ビデオおよびオーディオストリームの先頭のデータを含まない、各符号化ストリームについて多重化ストリーム内に現れる2つ目以降のパックが示されている。これらのパックにはシステムヘッダが含まれないので、先頭から12バイトのパックヘッダの後、18バイト分のパディングデータ(16進数でFF)が格納される。
【0053】
また、続く18バイトがパケットヘッダの領域で、さらに2000バイトのパケットデータの領域となるが、パケットデータ内にビデオストリームのPピクチャまたはIピクチャの先頭データが存在する場合は、図4(A)に示すように、PTSおよびDTSの双方がパケットヘッダ内に記録される。また、パケットデータ内のデータがビデオストリームのBピクチャの先頭データ、またはオーディオストリームのオーディオフレームの先頭データである場合は、図4(B)に示すように、パケットヘッダ内にはタイムスタンプとしてPTSのみが記録される。さらに、パケットデータにビデオおよびオーディオのアクセスユニットの先頭データが含まれない場合は、図4(C)に示すようにタイムスタンプは記録されない。
【0054】
また、図4(D)に示すパディングパックは、12バイトのパックヘッダの後、システムヘッダ、パケットヘッダおよびパケットデータが記録されず、代わりにパディングデータのみが記録されている。このパディングパックは、各符号化ストリームの多重化ストリームにおける終端位置付近に挿入される場合がある。
【0055】
ここで、図5にこのようなパディングパックの多重化ストリームへの挿入例を示す。
図5(A)および(B)では、多重化ストリームの終端部におけるパック配置例を示している。上述したように、ビデオパケットを含むパック(以下、ビデオパックと呼称する)とオーディオパケットを含むパック(以下、オーディオパックと呼称する)は一定の比で多重化されるが、例えば多重化処理中に出力バッファ15が満杯となったときや、あるいは外部より多重化処理の停止命令がCPU16に対して与えられたときには、本来ビデオパックまたはオーディオパックが挿入される位置に、符号化ストリームの符号化状況によって必要なパックが供給されない場合があり得る。
【0056】
図5(A)の例では、ビデオパックの間に1つ分のオーディオパックが挿入されるはずのスペース500aができており、また図5(B)の例では、最後のオーディオパックの挿入位置までの間にビデオパックの供給が止まってビデオパック3つ分のスペース500bができている。これらのスペース500aおよび500bのように必要なパックが生成されない場合に、図4(D)に示すパディングデータが挿入されることにより、必要な多重化レートを保ったまま多重化ストリームの生成を終了することができる。
【0057】
以上のようなパック構成をとることにより、多重化ストリーム内のパックおよびパケットに対するヘッダの伝送レートが一定となり、SCRが一定の値をとることになる。このため、上記のデータ多重化装置1では、SCRの値が整数となるように、ビデオストリームおよびオーディオストリームのビットレートを設定する必要がある。
【0058】
ここで、図6は、SCRの値が整数となる場合のビデオストリームのビットレートの例を示すグラフである。オーディオストリームのビットレートを32kbpsとしたとき、SCRの値が整数となるビデオストリームのビットレートと、このときのビデオとオーディオのビットストリームの比(以下、V/A比と呼称する)との関係は図6のようになる。このV/A比が整数となる場合には、ビデオパックとオーディオパックが多重化ストリームに格納される割合を、常に一定に保つことができる。表1に、このようにV/A比が整数となる場合のビットレートおよびSCRの値の例を示す。
【0059】
【表1】
【0060】
この表1では、例として図3および図4に示したパック構造と同様に、ヘッダのデータ長(Header_Length)を48bytes、パケットのデータ長を2000bytesとしており、従って1パックのデータ長は2048bytesとなる。また、オーディオレートを32kbpsとしている。SCRの値は、1パックのデータ長を多重化レートで割った値を90kHzのクロック数で表すことにより求められる。
【0061】
次に、パック(パケットデータおよびヘッダデータ)の生成処理および多重化処理についてフローチャートを用いて詳述する。まず、図7に、出力バッファ15に対するビデオパックの生成処理および多重化処理のフローチャートを示す。
【0062】
図7では、ビデオエンコーダ11によって符号化され、ビデオ入力バッファ12に一時的に記憶されたビデオストリームを、CPU16の制御により、ビデオ入力バッファ12から順次読み出すとともに、ヘッダデータを生成して、これらを出力バッファ15に記憶しながら多重化する処理について示している。ステップS701において、ビデオ入力バッファ12に記録されたビデオストリームをパケットデータ化するサブルーチンが実行される。このサブルーチンでは、ビデオ入力バッファ12の記録データを1バイトずつ読み出して出力バッファ15に書き込み、2000バイトのパケットデータを生成する。なお、このサブルーチンの内容は図8において詳述する。
【0063】
ステップS702において、パックおよびパケットのヘッダデータを生成して、出力バッファ15に書き込むサブルーチンが実行される。このサブルーチンでは、ステップS701の処理で生成されたパケットデータにピクチャの先頭データが含まれていた場合に、このピクチャに対するPTSの値と、必要に応じてDTSの値とを計算し、ヘッダデータ中に記録する。なお、このサブルーチンについては、図12において詳述する。
【0064】
ステップS703において、次のパケットデータを記憶させるための出力バッファ15におけるアドレスを計算する。具体的には、次のパックにはビデオデータおよびオーディオデータのいずれが格納されるかを判断し、この判断に応じてヘッダの記憶領域、あるいは1パック分の記憶領域とヘッダの記憶領域の分だけ、記憶するアドレスに対するポインタを進める。
【0065】
なお、このステップS703では、ビデオパックとオーディオパックの挿入比率がビデオレートとオーディオレートの比となるように、出力バッファ15の記憶アドレスが設定されるが、上述したように、設定されたスタートアップ・ディレイの期間中にSTDバッファに蓄積されるデータを含むビデオパックについては、挿入比率をビットレートに関係なく調整する必要があることから、このステップS703におけるアドレス計算によってこのような挿入比率の調整が行われる。
【0066】
次に、図8に、図7のステップS701において示した、ビデオストリームをパケットデータ化する処理のフローチャートを示す。
ステップS801において、パケットデータに記憶させたビデオデータのバイト数を示すNの値に0を代入する。ステップS802において、例えば、出力バッファ15が満杯になる、あるいは、CPU16が外部からの終了要求を受けて符号化および多重化処理を中止する等により、多重化ストリームの記録が終了されたか否かが判断され、終了しない場合はステップS803に進み、終了する場合はステップS806に進む。
【0067】
ステップS803において、ビデオ入力バッファ12から1バイト分のデータを取得して出力バッファに書き込むサブルーチンが実行される。このサブルーチンでは、ビデオストリームを1バイトずつ出力バッファ15に書き込むとともに、ビデオストリーム中のアクセスユニットすなわちピクチャの先頭部を検出してこのピクチャタイプを取得する。なお、このサブルーチンについては図9において詳述する。
【0068】
ステップS804において、ビデオデータのバイト数Nに、取得したデータのバイト数n(ここでは常に1)を加算する。ステップS805において、ビデオデータのバイト数Nが2000に達したか否かを判断し、達していない場合はステップS802に戻り、達した場合は図7のステップS702に進む。
【0069】
また、ステップS802において記録終了と判断されると、ステップS806において、生成された多重化ストリームに対する終了処理が行われる。この終了処理では、図4(D)で示したパディングパックの挿入処理や、多重化ストリームの終了コードの挿入を行い、生成された多重化ストリームを可搬型半導体メモリ2に対して記憶させる。
【0070】
次に、図9に、図8のステップS803で示した1バイト分のデータの取得および書き込み処理のフローチャートを示す。
ビデオ入力バッファ12から読み出された1バイト分のデータは、一旦出力バッファ15の具備する8バイトのシフトレジスタに順次記憶され、このシフトレジスタから溢れた1バイト分のデータが出力バッファ15に書き込まれる。また、このシフトレジスタの記憶データより、ピクチャについてのデータを取得する。
【0071】
ステップS901において、取得したデータのバイト数nに0を代入する。ステップS902において、ビデオ入力バッファ12からのデータの取得が終了されたか否かが判断され、終了していない場合はステップS903に進み、終了した場合はステップS908に進む。ステップS903において、ビデオ入力バッファ12にデータがあるか否かが判断され、ある場合はステップS904に進み、ない場合は図8のステップS804に進む。
【0072】
ステップS904において、シフトレジスタの先頭の4バイト分のデータを参照し、ピクチャ開始コード(Picture_Start_Code)のデータ(16進数で00000100)が存在するか否かが判断されて、存在する場合はステップS905に進み、存在しない場合はステップS906に進む。
【0073】
ステップS905において、このときシフトレジスタのピクチャ開始コードから10ビット分後に存在する3ビットのピクチャタイプ(Picture_Coding_Type)の値を取得する。このピクチャタイプでは、2進数で「001」の場合はIピクチャ、010の場合はPピクチャ、011の場合はBピクチャと判断される。なお、ここで取得されたピクチャタイプは、後述する図12のPTS、DTSの計算処理、およびヘッダデータの書き込み処理において使用される。
【0074】
ステップS906において、ビデオ入力バッファ12から1バイト分のデータを読み出す。ステップS907において、読み出した1バイト分のデータをシフトレジスタに書き込み、溢れた1バイト分のデータを出力バッファ15の所定アドレスに書き込む。またこのとき、取得したデータのバイト数nに1を代入する。
【0075】
次に、図7のステップS702におけるヘッダデータの書き込み処理について説明する。まず、ヘッダデータに記録されるPTSおよびDTSの計算方法について説明する。
【0076】
図7のステップS701において生成されたパケットデータに、ピクチャの先頭データすなわちピクチャ開始コードの先頭データが存在する場合は、このパケットデータに対応するヘッダデータに、先頭データから開始されるピクチャについてのタイムスタンプを記録する必要がある。ここで、このピクチャがBピクチャの場合は、PTSとDTSは同一となるためPTSのみ記録されるが、IピクチャまたはPピクチャの場合は、PTSはDTSから、IピクチャまたはPピクチャが現れる周期の分だけ遅くなる。また、上述したように、多重化ストリームの復号化時では、スタートアップ・ディレイの期間だけSTDバッファにデータを蓄積させた後、復号化を開始するため、復号化の開始時刻は多重化ストリームの先頭データがSTDバッファに転送されてからスタートアップ・ディレイ分だけ遅延された時刻となる。
【0077】
以上のことから、ビデオストリームの先頭からm番目のアクセスユニット(ピクチャ)の先頭データがパケットデータ内に存在するとき、このピクチャがIピクチャまたはPピクチャである場合のPTS(IP)mおよびDTS(IP)mはそれぞれ次の式(5)および(6)のように表される。また、このピクチャがBピクチャである場合のPTS(B)mは式(7)のように表される。
【0078】
【数2】
【0079】
ただし、SCPR(System Clock Frequency Per Picture Rate)は、ビデオストリームのフレーム周期を90kHz基準のSTCで計数した値であり、フレーム周期が29.97HzであるNTSC(National Television Standards Committee)規格の場合はSCPR=3003、25HzであるPAL(Phase Alternation by Line)規格の場合はSCPR=3600となる。また、Mはビデオストリーム中に現れるIピクチャまたはPピクチャの周期(ピクチャ数)を表している。さらに、式(5)〜(7)において、Start−up_Delayの値は90kHzのクロック数で表される。
【0080】
ここで、図10に記録するタイムスタンプが異なる場合のパケットデータの構成例を示す。
図10(A)は、パケットデータ内に、ビデオストリームの先頭からm番目のIピクチャまたはPピクチャのピクチャ開始コードの先頭部が1つだけ存在する場合の構成例を示しており、この場合はパックヘッダには、式(5)および(6)に示すPTS(IP)mおよびDTS(IP)mの双方の値が記録される。
【0081】
また、図10(B)は、パケットデータ内に先頭からm番目のピクチャの中間部のデータのみが存在し、ピクチャ開始コードの先頭部が存在しない場合の構成例を示しており、この場合はパックヘッダにPTSおよびDTSの双方とも記録されない。
【0082】
さらに、図10(C)は、パケットデータ内に先頭からm番目のBピクチャのピクチャ開始コードの先頭部が1つだけ存在する場合の構成例を示しており、この場合は式(7)に示すPTS(B)mの値のみがパックヘッダに記録される。
【0083】
次に、図11に、タイムスタンプの付与方法に注意が必要な場合のパケットデータの構成例を示す。
図11(A)は、パケットデータ内にピクチャの先頭部が複数存在する場合の構成例を示しており、先頭からm番目および(m+1)番目の2つのピクチャのピクチャ開始コードの先頭部が1つのパケットデータ内に存在している。この場合は、パケットデータ内において先頭部が最初に存在する方のピクチャについてのタイムスタンプをパックヘッダに記録する。
【0084】
また、図11(B)は、ピクチャ開始コードのデータ領域が(m−1)番目からm番目の2つのパケットデータにまたがる場合の構成例を示しており、この場合は、m番目のピクチャのタイムスタンプを、ピクチャ開始コードの先頭部が存在する方のパックヘッダに記録する。
【0085】
図7のステップS702の処理では、以上の法則に従って、ステップS701において生成されたパケットデータに応じたタイムスタンプの値が計算、対応するヘッダデータの領域に記録される。ここで、図12に、このステップS702で示した、パックおよびパケットのヘッダデータを生成して出力バッファ15に書き込む処理のフローチャートを示す。
【0086】
ステップS1201において、図7のステップS701の処理により生成されたパケットデータに、ピクチャ開始コードの先頭部が存在するか否かを判断し、存在する場合はステップS1202に進み、存在しない場合はステップS1207に進む。ステップS1202において、生成されたパケットデータが多重化ストリーム内の最初のパックであるか否かを判断し、そうである場合はステップS1203に進み、そうでない場合はステップS1204に進む。
【0087】
ステップS1203において、多重化ストリーム内で最初に現れるビデオパックであると判断されたことから、このときのパケットデータ中にはIピクチャの先頭部が最初に現れるので、パケットデータは図10(A)と同様の構成となる。従って、ステップS1203では、式(5)および(6)を用いて、パケットデータに含まれる先頭ピクチャのPTSおよびDTSを計算する。
【0088】
また、ステップS1204において、図9のステップS905の処理によって取得された、パケットデータ中に先頭部(ピクチャ開始コードの先頭データ)が最初に現れるピクチャのピクチャタイプを参照し、このピクチャがIピクチャまたはPピクチャの場合はステップS1205に進み、Bピクチャの場合はステップS1206に進む。
【0089】
ステップS1205において、多重化ストリーム内に現れる2番目以降のビデオパックで、かつパケットデータ中に先頭部が最初に現れるピクチャがIピクチャまたはPピクチャであると判断されたことから、パケットデータは図10(A)と同様の構成となり、式(5)および(6)を用いてこのピクチャのPTSおよびDTSを計算する。また、ステップS1206において、多重化ストリーム内の2番目以降のビデオパックで、かつ先頭部が最初に現れるのがBピクチャであると判断されたことから、パケットデータは図10(C)と同様の構成となり、式(7)を用いてこのピクチャのPTSおよびDTSを計算する。
【0090】
一方、ステップS1207において、パケットデータ内にピクチャの先頭部が含まれないと判断されたことから、パケットデータは図10(B)と同様の構成となり、タイムスタンプの計算を行わない。
【0091】
ステップS1208において、算出されたタイムスタンプを含むヘッダデータを、出力バッファ15中の所定のアドレスに書き込む。具体的には、出力バッファ15に記憶された対応するパケットデータに対して、その直前の48バイトの領域に、生成したヘッダデータを書き込む。これにより、ヘッダデータとパケットデータによりなるビデオパックが出力バッファ15中に構成される。
【0092】
次に、図13に、出力バッファ15に対するオーディオパックの生成処理および多重化処理のフローチャートを示す。
オーディオパックの場合でも、上記のビデオパックの場合と同様に、オーディオ入力バッファ14に記憶されたビデオストリームのデータを1バイトずつ読み出してパケットデータを生成するとともに、ヘッダデータを生成して、パケットデータとヘッダデータを出力バッファ15の所定記録位置に書き込むことにより、多重化する。
【0093】
ステップS1301において、図8のステップS802と同様に、例えば、出力バッファ15が満杯になる、あるいは、CPU16が外部からの終了要求を受けて符号化および多重化処理を中止する等により、多重化ストリームの記録が終了されたか否かが判断され、終了しない場合はステップS1302に進み、終了する場合はステップS1306に進む。
【0094】
ステップS1302において、ヘッダデータに記録するタイムスタンプ(PTS)を計算する。オーディオストリームの場合、1つのアクセスユニットのデータ長は固定されているため、このデータ長とパケットデータのデータ長が設定されると、パケットデータの先頭からの番号を参照することにより対応するヘッダデータに記録するPTSを一意に計算することが可能となる。なお、この計算方法については、図14において詳述する。
【0095】
ステップS1303において、オーディオ入力バッファ14に記録されたオーディオストリームのデータを、1バイトずつ読み出して出力バッファ15の所定アドレスに書き込み、2000バイトのパケットデータを生成する。ステップS1304において、計算されたPTSを含むヘッダデータを生成し、出力バッファ15における、対応するパケットデータの直前の48バイト分の領域に書き込む。これにより、ヘッダデータおよびパケットデータによってなるオーディオパックが出力バッファ15上に生成される。
【0096】
ステップS1305において、次に生成するオーディオパケットに対する出力バッファ15上の記録アドレスを計算する。具体的には、次のパックにはビデオデータおよびオーディオデータのいずれが格納されるかを判断し、この判断に応じてヘッダの記憶領域、あるいは1パック分の記憶領域とヘッダの記憶領域の分だけ、記憶するアドレスに対するポインタを進める。なお、この処理では、前述したビデオパックの場合と同様に、設定されたスタートアップ・ディレイの期間中に相当するオーディオパックについては、挿入比率をV/A比に関係なく必要に応じて調整する。
【0097】
また、ステップS1301において記録終了と判断された場合には、ステップS1306において、生成された多重化ストリームに対する終了処理が行われる。この終了処理では、パディングパックの挿入処理や、多重化ストリームの終了コードの挿入を行い、生成された多重化ストリームを可搬型半導体メモリ2に対して記憶させる。
【0098】
次に、図14は、オーディオパケット内のアクセスユニットの配置例を示し、この図14を用いて、オーディオパックに対するPTSの計算方法を説明する。
図14の例では、オーディオパケットのデータ長を2000バイト、1つのオーディオアクセスユニット(以下、オーディオAUと略称する)のデータ長を144バイトとする。この場合、パケットデータ中のオーディオAUの配置パターンは、図14(A)に示すように、パケットデータの先頭部にオーディオAUの先頭データが配置される場合と、図14(B)に示すように、パケットデータの先頭部および終端部の双方にオーディオAUの中間データが配置される場合と、図14(C)に示すように、パケットデータの終端部にオーディオAUの終端データが配置される場合とに大別される。
【0099】
このうち、図14(B)および(C)のような場合には、オーディオパケット中に先頭データが最初に現れるオーディオAUについてのPTSを計算し、ヘッダデータに記録する。例えば、このようなオーディオAUに対するオーディオストリームの先頭からの通し番号をp(ただし、p:0、1、2・・・)とすると、図14(B)のオーディオパケットでは、p=14のオーディオAUに対するPTSを計算し、また図14(C)のオーディオパケットでは、p=111のオーディオAUに対するPTSを計算する。
【0100】
また、各オーディオAUに対するPTSは、復号開始までのSTDバッファへのデータ蓄積時間であるスタートアップ・ディレイに、ビデオストリームの最初のBピクチャに同期させるためにSCPRを加算した値に、1オーディオフレームの再生時間を順次加算することにより求められる。ここで、プレゼンテーションユニット(復号されたオーディオフレーム)のデータ長を1152ビット、オーディオのサンプリングレートを32kbpsとすると、1オーディオフレームの再生時間は、1152/32000=36(ms)となる。
【0101】
従って、図14の例において、オーディオパックに記録されるPTSの値は、次の式(8)で表される。なお、この式(8)において、Start−up_Delayの値は90kHzのクロック数で表されている。
【0102】
【数3】
【0103】
以上の処理によって、データ多重化装置1では、多重化ストリームの生成の際に、同一データ長であるビデオパケットとオーディオパケットが現れる割合がV/A比となるように多重化して、パックやヘッダデータの伝送レートを一定にするとともに、ビデオパケットおよびオーディオパケットを復号開始時刻までにSTDバッファに蓄積するスタートアップ・ディレイの時間をあらかじめ設定して、多重化時においてヘッダデータに記録するタイムスタンプの値に反映させることにより、STDバッファのオーバフローおよびアンダフローが生じないように多重化することが可能となる。従って、生成された多重化ストリームの復号化時におけるSTDバッファの占有量をシミュレートしながら多重化処理を行う必要がなくなり、CPU16の負担が軽減されるので、低速で安価なCPU16を使用して、精度の高い多重化ストリームを生成することが可能となる。
【0104】
なお、上記の実施の形態例では、1パック中に1つのパケットデータのみを割り当てていたが、ビデオパケットおよびオーディオパケットの現れる割合がV/A比となる範囲内では、1パックに複数のパケットを格納するようにしてもよい。この場合、すべてのパック長が一定で、1パック中に格納されるパケットデータはビデオまたはオーディオのいずれか1種類のみとし、この条件でSCRの値が整数となるビデオレートおよびオーディオレートを選択する。
【0105】
また、スタートアップ・ディレイの値は上述した式(1)〜(4)により算出するが、実際にはこのように算出されたスタートアップ・ディレイ値を使用した場合には、復号時に必要とされるSTDバッファの容量を大きくする必要が生じることがある。
【0106】
例えば、ビデオレートを160kbps、オーディオレートを32kbps、パケット長を2000バイト、事前の実験により設定したFirst_VBV_Delayの値を0.506秒とすると、式(1)より、スタートアップ・ディレイの範囲に配置されるビデオパケットの数(V_Packet_Cnt)は「5.06」となる。これにより、スタートアップ・ディレイの範囲で最低限必要なビデオパケット数は「6」となるが、「5.06」を「6」に切り上げたことにより、計算上求められるSTDバッファの容量ではオーバフローが生じてしまうので、この場合には、STDバッファの容量を増加させる。具体的には、図12におけるヘッダデータ生成処理の際に、システムヘッダ領域およびパケットヘッダ領域に記録するSTDバッファの必要容量の値を変更する。
【0107】
また、上記の実施の形態例では、V/A比が整数となる場合について説明したが、このV/A比が整数にならない場合でも、SCRが整数となれば本発明を適用することができる。ここで、表2に、V/A比が整数とならない場合のビデオレートおよびオーディオレートの適用例を示す。また、表3に、このような場合に事前の実験に基づいて設定されるFirst_VBV_Delayの値の例を示す。なお、ここではパケットデータを2000バイト、ヘッダデータを48バイトとしている。
【0108】
【表2】
【0109】
【表3】
【0110】
例えば、ビデオレートを1168kbps、オーディオレートを32kbpsとした場合では、V/A比は73:2となり、多重化の際にパケットデータを、ビデオ37個、オーディオ1個、ビデオ36個、オーディオ1個・・・という配列を行うことにより、多重化ストリーム内のビデオデータ、オーディオデータの割合を一定に保つことが可能となる。
【0111】
従ってこの場合、表3よりFirst_VBV_Delayを0.2012とすると、式(1)よりV_Packet_Cntは「14.7」となり、スタートアップ・ディレイの範囲で最低限必要なビデオパケット数は「15」となる。この数値の切り上げ分は、上述したV/A比が整数の場合と同様に、STDバッファの容量を増加させることにより対応する。また、式(2)〜(4)により、スタートアップ・ディレイの値は0.213秒となる。
【0112】
しかし、このようにV/A比が整数でない場合、STDバッファにはビデオデータが常に一定の割合で蓄積されないため、STDバッファがアンダフローする可能性がある。このアンダフローを防止するためには、スタートアップ・ディレイの量を増加させて、復号化前にSTDバッファにあらかじめ蓄積させるデータ量を増加させる。例えば、スタートアップ・ディレイの範囲のビデオパケット数を「15」から「16」に増やすことにより、スタートアップ・ディレイの値は0.226秒となる。表3に示した「1st_V」の値は、このようにスタートアップ・ディレイの範囲に含まれるビデオパケット数を増やした場合について示している。また、スタートアップ・ディレイ内のビデオパケット数の増加に伴い、ヘッダデータに記憶させるSTDバッファの必要量の値もさらに増加させる。これによって、V/A比が整数でない場合でも、CPU16の負荷を大きく高めることなく、STDバッファのオーバフローおよびアンダフローを防止することが可能となる。
【0113】
【発明の効果】
以上説明したように、本発明のデータ多重化装置では、固定長のパケットデータと固定長のヘッダデータとが、多重化手段により交互に多重化され、この多重化の際に、各符号化ストリームのパケットデータが現れる割合が各符号化ストリームのビットレートの比と同じになるようになされるので、パックやヘッダデータの伝送レートが一定で、かつ単位時間内に伝送される各符号化ストリームのデータ量が一定になり、生成された多重化ストリームの復号化時におけるバッファのオーバフローが防止される。また、各符号化ストリームのビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされる。そして、ヘッダデータ生成手段は、各符号化ストリームのビットレートの比が整数にならない場合には、ビットレートの比が整数になる場合と比較して、バッファにパケットデータが1つ以上多く蓄積されるようにデータ蓄積時間を長く設定するとともに、バッファの必要容量情報の設定値をパケットデータのデータ長以上の大きさだけ大きくする。これにより、バッファがアンダフローする可能性が抑制される。
【0114】
また、本発明のデータ多重化方法では、固定長のパケットデータと固定長のヘッダデータとが交互に多重化され、この多重化の際に、各符号化ストリームのパケットデータが現れる割合が各符号化ストリームのビットレートの比と同じになるようになされるので、パックやヘッダデータの伝送レートが一定で、かつ単位時間内に伝送される各符号化ストリームのデータ量が一定になり、生成された多重化ストリームの復号化時におけるバッファのオーバフローが防止される。また、各符号化ストリームのビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされる。そして、ヘッダデータを生成する際に、各符号化ストリームのビットレートの比が整数にならない場合には、ビットレートの比が整数になる場合と比較して、バッファにパケットデータが1つ以上多く蓄積されるようにデータ蓄積時間を長く設定するとともに、バッファの必要容量情報の設定値をパケットデータのデータ長以上の大きさだけ大きくする。これにより、バッファがアンダフローする可能性が抑制される。
【図面の簡単な説明】
【図1】本発明のデータ多重化装置の構成例を示す図である。
【図2】ビデオおよびオーディオの各パケットの割り当て方法を概念的に示す図である。
【図3】ビデオおよびオーディオの各符号化ストリームの先頭のデータを含むパックの構成例を示す図である。
【図4】ビデオおよびオーディオの各符号化ストリームの2つ目以降のパックおよびパディングパックの構成例を示す図である。
【図5】パディングパックの多重化ストリームへの挿入例を示す図である。
【図6】SCRの値が整数となる場合のビデオストリームのビットレートの例を示すグラフである。
【図7】出力バッファに対するビデオデータのパック生成処理および多重化処理を示すフローチャートである。
【図8】ビデオストリームをパケットデータ化する処理を示すフローチャートである。
【図9】1バイト分のデータの取得および出力バッファへの書き込み処理を示すフローチャートである。
【図10】記録するタイムスタンプが異なる場合のパケットデータの構成例を示す図である。
【図11】タイムスタンプの付与方法に注意が必要な場合のパケットデータの構成例を示す図である。
【図12】パックおよびパケットのヘッダデータを生成して出力バッファに書き込む処理を示すフローチャートである。
【図13】出力バッファに対するオーディオパックの生成処理および多重化処理を示すフローチャートである。
【図14】オーディオパケット内のアクセスユニットの配置例を示す図である。
【図15】MPEG−1規格を用いた従来の多重分離システムの構成例を示す図である。
【図16】ISO11172−1規格のストリーム構成と各STDバッファの蓄積状態の例について示す図である。
【符号の説明】
1……データ多重化装置、2……可搬型半導体メモリ、11……ビデオエンコーダ、12……ビデオ入力バッファ、13……オーディオエンコーダ、14……オーディオ入力バッファ、15……出力バッファ、16……CPU、17……CPUバス
Claims (5)
- 複数の符号化ストリームを多重化するデータ多重化装置において、
ビデオデータを含む複数の入力データをそれぞれ固定のビットレートで符号化して前記複数の符号化ストリームを生成する符号化手段と、
生成された前記複数の符号化ストリームのそれぞれから、すべて同一データ長のパケットデータを生成するパケットデータ生成手段と、
前記各パケットデータに対応する固定長のヘッダデータを生成するヘッダデータ生成手段と、
前記各符号化ストリームから生成された前記各パケットデータが現れる割合が前記各符号化ストリームの前記ビットレートの比と同じになるように、前記ヘッダデータ生成手段によって生成された前記ヘッダデータと、これに対応する、前記パケットデータ生成手段によって生成された前記パケットデータとを交互に多重化して、多重化ストリームを生成する多重化手段と、
を有し、
前記各符号化ストリームの前記ビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされ、
前記ヘッダデータ生成手段は、
復号化器におけるバッファへの前記各符号化ストリームの蓄積開始から復号化開始までのデータ蓄積時間をあらかじめ設定し、前記ヘッダデータのうち、アクセスユニットの先頭データが存在する前記パケットデータに対応する前記ヘッダデータに対して、前記データ蓄積時間と前記参照時刻情報とに基づいて当該アクセスユニットの再生時刻情報を記録するとともに、前記バッファの必要容量情報を記録し、
前記各符号化ストリームの前記ビットレートの比が整数にならない場合には、前記ビットレートの比が整数になる場合と比較して、前記バッファに前記パケットデータが1つ以上多く蓄積されるように前記データ蓄積時間を長く設定するとともに、前記バッファの必要容量情報の設定値を前記パケットデータのデータ長以上の大きさだけ大きくする、
ことを特徴とするデータ多重化装置。 - 前記符号化ストリームとしてビデオストリームとオーディオストリームとが多重化される場合に、前記ヘッダデータ生成手段は、
前記各符号化ストリームの前記ビットレートの比が整数であるとき、nを0として次の式(1)〜(4)に従って求められた前記データ蓄積時間を設定し、
前記各符号化ストリームの前記ビットレートの比が整数にならないとき、nを1以上の整数として次の式(1)〜(4)に従って求められた前記データ蓄積時間を設定するとともに、前記バッファの必要容量情報の設定値をn個の前記パケットデータのデータ長だけ大きくすることを特徴とする請求項1記載のデータ多重化装置。
Start−up_Delay=Data_Length/Mux_Rate……(1)
Data_Length=Packet_Cnt×Pack_Length……(2)
Packet_Cnt=V_Packet_Cnt+A_Packet_Cnt
……(3)
V_Packet_Cnt=n+Video_Rate×First_VBV_Delay/Packet−data_Size ……(4)
(ただし、
Start−up_Delay:前記データ蓄積時間、
Data_Length:前記データ蓄積時間において前記バッファに格納される前記パケットデータおよび前記ヘッダデータの全体のデータ長、
Mux_Rate:前記多重化ストリームの転送レート、
Packet_Cnt:前記データ蓄積時間において前記バッファに格納される前記パケットデータの総数、
Pack_Length:前記パケットデータおよび前記ヘッダデータの総データ長、
V_Packet_Cnt:前記データ蓄積時間において前記バッファに格納される、ビデオデータを含む前記パケットデータの総数、
A_Packet_Cnt:前記データ蓄積時間において前記バッファに格納される、オーディオデータを含む前記パケットデータの総数、
Video_Rate:前記ビデオストリームの転送レート、
First_VBV_Delay:前記ビデオストリームにおける1番目のアクセスユニットの前記バッファに対する仮想蓄積時間、
Packet−data_Size:前記パケットデータのサイズ。) - 前記多重化ストリームはMPEG−1規格に準拠し、前記ヘッダデータは、パックヘッダおよびパケットヘッダを含み、また必要に応じてシステムヘッダを含むことを特徴とする請求項1または2記載のデータ多重化装置。
- 複数の符号化ストリームを多重化するデータ多重化方法において、
ビデオデータを含む複数の入力データをそれぞれ固定のビットレートで符号化して前記複数の符号化ストリームを生成するステップと、
生成された前記複数の符号化ストリームのそれぞれから、すべて同一データ長のパケットデータを生成するステップと、
前記各パケットデータに対応する固定長のヘッダデータを生成するステップと、
前記各符号化ストリームから生成された前記各パケットデータが現れる割合が前記各符号化ストリームの前記ビットレートの比と同じになるように、生成された前記ヘッダデータとこれに対応する前記パケットデータとを交互に多重化して、多重化ストリームを生成するステップと、
を含み、
前記各符号化ストリームの前記ビットレートは、復号化されたデータの再生時刻の基準となる時刻基準値を復元するために復号化器によって参照される参照時刻情報が、整数となるような値とされ、
前記ヘッダデータを生成するステップでは、
復号化器におけるバッファへの前記各符号化ストリームの蓄積開始から復号化開始までのデータ蓄積時間をあらかじめ設定し、前記ヘッダデータのうち、アクセスユニットの先頭データが存在する前記パケットデータに対応する前記ヘッダデータに対して、前記データ蓄積時間と前記参照時刻情報とに基づいて当該アクセスユニットの再生時刻情報を記録するとともに、前記バッファの必要容量情報を記録し、
前記各符号化ストリームの前記ビットレートの比が整数にならない場合には、前記ビットレートの比が整数になる場合と比較して、前記バッファに前記パケットデータが1つ以上多く蓄積されるように前記データ蓄積時間を長く設定するとともに、前記バッファの必要容量情報の設定値を前記パケットデータのデータ長以上の大きさだけ大きくする、
ことを特徴とするデータ多重化方法。 - 前記符号化ストリームとしてビデオストリームとオーディオストリームとが多重化される場合に、前記ヘッダデータを生成するステップでは、
前記各符号化ストリームの前記ビットレートの比が整数であるとき、nを0として次の式(5)〜(8)に従って求められた前記データ蓄積時間を設定し、
前記各符号化ストリームの前記ビットレートの比が整数にならないとき、nを1以上の整数として次の式(5)〜(8)に従って求められた前記データ蓄積時間を設定するとともに、前記バッファの必要容量情報の設定値をn個の前記パケットデータのデータ長だけ大きくすることを特徴とする請求項4記載のデータ多重化方法。
Start−up_Delay=Data_Length/Mux_Rate……(5)
Data_Length=Packet_Cnt×Pack_Length……(6)
Packet_Cnt=V_Packet_Cnt+A_Packet_Cnt
……(7)
V_Packet_Cnt=n+Video_Rate×First_VBV_Delay/Packet−data_Size ……(8)
(ただし、
Start−up_Delay:前記データ蓄積時間、
Data_Length:前記データ蓄積時間において前記バッファに格納される前記パケットデータおよび前記ヘッダデータの全体のデータ長、
Mux_Rate:前記多重化ストリームの転送レート、
Packet_Cnt:前記データ蓄積時間において前記バッファに格納される前記パケットデータの総数、
Pack_Length:前記パケットデータおよび前記ヘッダデータの総データ長、
V_Packet_Cnt:前記データ蓄積時間において前記バッファに格納される、ビデオデータを含む前記パケットデータの総数、
A_Packet_Cnt:前記データ蓄積時間において前記バッファに格納される、オーディオデータを含む前記パケットデータの総数、
Video_Rate:前記ビデオストリームの転送レート、
First_VBV_Delay:前記ビデオストリームにおける1番目のアクセスユニットの前記バッファに対する仮想蓄積時間、
Packet−data_Size:前記パケットデータのサイズ。)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001261816A JP4608831B2 (ja) | 2001-08-30 | 2001-08-30 | データ多重化装置およびデータ多重化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001261816A JP4608831B2 (ja) | 2001-08-30 | 2001-08-30 | データ多重化装置およびデータ多重化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003078873A JP2003078873A (ja) | 2003-03-14 |
JP4608831B2 true JP4608831B2 (ja) | 2011-01-12 |
Family
ID=19088799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001261816A Expired - Fee Related JP4608831B2 (ja) | 2001-08-30 | 2001-08-30 | データ多重化装置およびデータ多重化方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4608831B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2051421A4 (en) | 2006-10-31 | 2011-10-26 | Panasonic Corp | MULTIPLEXING DEVICE, INTEGRATED CIRCUIT, MULTIPLEXING METHOD, MULTIPLEXING PROGRAM, COMPUTER READABLE RECORDING MEDIUM WITH A MULTIPLEXING PROGRAM RECORDED THEREIN AND COMPUTER READABLE RECORDING MEDIUM WITH MULTIPLEXING CURRENTLY RECORDED THEREOF |
JP2012169767A (ja) * | 2011-02-10 | 2012-09-06 | Jvc Kenwood Corp | 記録装置、再生装置、記録方法、および再生方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2875232B2 (ja) * | 1997-03-19 | 1999-03-31 | 株式会社東芝 | 記録媒体 |
JPH11262001A (ja) * | 1998-03-16 | 1999-09-24 | Hitachi Denshi Ltd | 符号化伝送方式におけるタイムスタンプ値演算方法 |
JPH11298864A (ja) * | 1998-04-09 | 1999-10-29 | Sony Corp | 映像信号及び音声信号の圧縮エンコード及び合成方法 |
-
2001
- 2001-08-30 JP JP2001261816A patent/JP4608831B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2875232B2 (ja) * | 1997-03-19 | 1999-03-31 | 株式会社東芝 | 記録媒体 |
JPH11262001A (ja) * | 1998-03-16 | 1999-09-24 | Hitachi Denshi Ltd | 符号化伝送方式におけるタイムスタンプ値演算方法 |
JPH11298864A (ja) * | 1998-04-09 | 1999-10-29 | Sony Corp | 映像信号及び音声信号の圧縮エンコード及び合成方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2003078873A (ja) | 2003-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100239837B1 (ko) | 오디오 및/또는 비디오 신호 전송방법 및 장치 | |
EP0634867B1 (en) | Compressed and coded data recording method | |
JP3197766B2 (ja) | Mpegオーディオデコーダ、mpegビデオデコーダおよびmpegシステムデコーダ | |
US5537409A (en) | Synchronizing system for time-divided video and audio signals | |
KR100290331B1 (ko) | 오디오-비디오 신호의 동기 재생 장치 | |
US6754276B1 (en) | System stream creating apparatus which adjusts system clock reference based on total number of pictures to be stored and decoded during certain time period | |
US7881584B2 (en) | Reproducing apparatus and method, and recording medium | |
US20090028514A1 (en) | After-recording apparatus | |
JPH10164508A (ja) | オーディオ・ビデオ同期再生装置 | |
KR20030012761A (ko) | 데이터 다중화 방법, 데이터 기록 매체, 데이터 기록 장치및 데이터 기록 프로그램 | |
JP4294660B2 (ja) | 再生装置、再生方法及びその記録媒体 | |
JPH0730886A (ja) | 画像および音声信号処理方法とその装置 | |
JP3133630B2 (ja) | Mpegシステムデコーダ | |
JPH09509036A (ja) | エンコーダシステムのレベルバッファ管理 | |
JP3651699B2 (ja) | 復号化装置及び符号化復号化装置 | |
JPH09135424A (ja) | デジタルvtrの伝送ビットストリーム記録/再生装置及びその制御方法 | |
JP4608831B2 (ja) | データ多重化装置およびデータ多重化方法 | |
JP4288549B2 (ja) | 記録装置および方法、並びに再生装置および方法 | |
JPH0898160A (ja) | データ多重化装置 | |
JP2008176918A (ja) | 再生装置、再生方法及びその記録媒体 | |
JP4254007B2 (ja) | 再生装置および方法、並びに記録媒体 | |
JP4284574B2 (ja) | 記録装置および方法、並びに記録媒体 | |
WO2003105472A1 (ja) | ビデオテープレコーダ及び記録方法 | |
JP2004015384A5 (ja) | ||
JPH10199140A (ja) | 符号記録装置、及び符号多重方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080707 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100222 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100309 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100428 |
|
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: 20100914 |
|
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: 20100927 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131022 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131022 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |