近年、衛星や地上波及びケーブルによるデジタル放送が開始され、普及し始めている。例えば、デジタル放送を受信する装置では、放送局からトランスポートストリーム(TS)を受信し、TSに含まれるオーディオエレメンタリストリーム(AES)をデコードすることで音声を出力するとともに、TSに含まれるビデオエレメンタリストリーム(VES)をデコードすることで映像の表示等を行う。このような装置は、一般的に、複数の外部端子を有し、受信したAES等を異なる形式で出力する。例えば、AES等をデコードしたPCMのデータを音声出力として外部の音声出力装置等へ出力するとともに、AES等をIEC61937等のフォーマットに変換したデータを光出力として外部のAV機器(例えば、5.1chサラウンド装置)等へ出力する。この場合、PCMの音声出力を経由して出力される音と、IEC61937の光出力を経由して出力される音とは、同時に同じユーザが聞くことがあるため、同期して出力される必要がある。一般に、人間の聴覚上で問題がない範囲として、AESのフレームで、1フレーム程度のずれが許容されると言われている。尚、オーディオストリームをIEC61937フォーマットで転送する装置として、特許文献1のものが知られている。
図10は、IEC61937フォーマットのフレーム(以下、IECフレームという)の構成を示している。IECフレームとして、図10(a)に示すオーディオデータバーストフレーム(以下、オーディオデータフレームという)や、図10(b)に示すポーズデータバーストフレーム(以下、ポーズデータフレームという)が規定されている。オーディオデータフレームは、AES等の実データを含むフレームであり、ポーズデータフレームは、実データを含まないフレームである。尚、実際には、オーディオデータフレームやポーズデータフレームは、多数のダミーデータ(2バイト)が挿入されてバースト的なデータとなる。
図10(a)に示されるように、オーディオデータフレームは、プリアンブル(Preamble)部、ペイロード(Payload)部、スタッフィング(Stuffing)部から構成されている。プリアンブル部は、ヘッダであり、2バイトのヘッダPa(Sync−word1)、2バイトのヘッダPb(Sync−word2)、2バイトのヘッダPc(Burst−info)、2バイトのヘッダPd(Length−code)を含んでいる。ペイロード部には、1フレームのAESが格納される。スタッフィング部には、スタッフィングデータ(例えば、0x00)が格納される。ここで、スタッフィングデータとは、各IECフレームのフレーム長を一定にするために、付加されるデータである。
図10(b)に示されるように、ポーズデータフレームは、プリアンブル部とスタッフィング部から構成されている。プリアンブル部とスタッフィング部は、オーディオデータフレームと同様である。
図11のブロック図は、従来のオーディオデータ処理装置の構成を示している。この従来のオーディオデータ処理装置900は、入力されるAESをデコードしたPCMサンプルデータ(PCMデータ)を出力するとともに、AESを変換したIECフレームを出力する。尚、PCMデータは、複数のPCMサンプルから構成されている。このPCMサンプルは、データがPCMでデジタル化される際のサンプリング単位のデータであり、PCMデータの最小単位である。
図11に示されるように、従来のオーディオデータ処理装置900は、AESが入力される入力部910、入力部910から転送されたAESフレームをデコードしPCMデータを出力するデコーダ920、入力部910から転送されたAESフレームをIECフレームに変換し出力するパケッタイザ930を備えている。
入力部910は、入力されたAESフレームを順次格納するデコード用ESリングバッファ911及びパケッタイザ用ESリングバッファ912を有し、各リングバッファに格納されたAESフレームを、それぞれデコーダ920とパケッタイザ930へ転送する。
デコーダ920は、転送されたAESフレームをデコードし、デコードしたPCMデータをデコーダ920内部のPCMバッファ921に格納しながら出力する。パケッタイザ930は、プリアンブル部と、転送されたAESフレームとを出力し、さらにスタッフィング部を出力することで、IECフレームを出力する。
図12は、従来のオーディオデータ処理装置900の処理の時間的な流れを示している。入力部910は、AESが入力されると、デコード用ESリングバッファ911とパケッタイザ用ESリングバッファ912に、AESフレームが入力順に格納される。ここで、デコード用ESリングバッファ911とパケッタイザ用ESリングバッファ912は、それぞれ2フレームのAESフレームが格納可能であるとし、リングバッファの前半を領域(バッファ領域)1、後半を領域(バッファ領域)2と呼ぶこととすれば、、例えば、各リングバッファの領域1にフレーム(n−1)が格納され、各リングバッファの領域2にフレーム(n−1)の次に入力されたフレーム(n)が格納される。
デコーダ920は、デコード用ESリングバッファ911に格納されたAESフレームが順に転送されると、AESフレームをPCMデータにデコードしながら、PCMデータをPCMバッファ921に格納した後、PCMバッファ921のPCMデータを出力する。例えば、デコーダ920にデコード用ESリングバッファ911の領域1からAESフレーム(n−1)の転送が完了した時点(図12中(a))で、デコード用ESリングバッファの領域1にあるAESフレーム(n−1)は不要になり、当該バッファは再利用可能となる。
パケッタイザ930は、パケッタイザ用ESリングバッファ912に格納されたAESフレームが順に転送されると、プリアンブル部を出力し、転送されるAESフレームをそのまま出力した後、スタッフィング部を出力することで、IECフレームのオーディオデータフレームを出力している。例えば、パケッタイザ930にパケッタイザ用ESリングバッファ912のバッファからAESフレーム(n−1)が転送され、AESフレーム(n−1)を外部へ出力完了した時点(図12中(b))で、パケッタイザ用ESリングバッファの領域1にあるAESフレーム(n−1)は不要になり、当該バッファは再利用可能となる。
なお、デコード用ESリングバッファ911、パケッタイザ用ESリングバッファ912のそれぞれの領域1が再利用可能となったとき(図12中(c))、AESフレーム(n+1)のすべてのデータが領域1に格納可能となる。
一方、従来のオーディオデータ処理装置900において出力されるPCMデータは、他の装置によりVESをデコードされたビデオ信号やSTC(System Time Clock)と同期を取る必要がある。一般に、ビデオ信号等との同期が外れた場合に音の遅延/先行を調整するために、PCMやPCMのデコード元のデータをスキップやリピートさせる手法が用いられる。
例えば、デコーダ920へ転送する前に入力部910では、AESのフレーム単位で転送するデータをスキップ/リピートさせる。また、デコーダ920ではフレームよりも小さい単位、例えば、PCMサンプル単位でもスキップ/リピートが可能である。
フレームスキップ/リピートは、例えば、20ms〜30ms単位で行われ、サンプルスキップ/リピートは、例えば、0.2ms単位で行われる。フレームスキップ/リピートを行うと、聴覚上目立つため、サンプルスキップ/リピートで調整を行うことが望ましい。
図13は、サンプルスキップが多発し、あるフレームにおけるPCMデータの出力がパケッタイザの出力よりも先行した場合の、従来のオーディオデータ処理装置900におけるフレームスキップ時の処理の流れを示している。
例えば、デコード用ESリングバッファ911とパケッタイザ用ESリングバッファ912のそれぞれで、領域1にAESフレーム(n−1)、領域2にAESフレーム(n)が格納されていたとし、AESフレーム(n−1)がデコーダ920に転送後、フレーム(n)のスキップが確定したとする。デコーダ920は、フレーム(n)のデータは必要なくなるため、領域1から次のデコード対象フレームであるAESフレーム(n+1)を読み出してデコードを行う。
一方、このときパケッタイザ930は、AESフレーム(n−1)を出力中である。この出力が完了するまで、入力部910において、デコード用ESリングバッファの領域1にAESフレーム(n+1)のすべてのデータの入力が完了しないため、AESフレーム(n−1)に対応したPCMデータが出力し終わるまでに、AESフレーム(n+1)のデコードが完了できず、PCM出力が滞る場合がありうる。したがって、この例では、パケッタイザ用ESリングバッファ912には、領域1、2とは別の領域3、つまりAESが3フレーム格納される分のバッファサイズを用意し、フレームスキップ時にAESフレームの入力が滞りなく行われるようにする必要があることがわかる。
特開2002−77128号公報
発明の実施の形態1.
まず、図1乃至図7を用いて、本発明の実施の形態1にかかるオーディオデータ処理装置について説明する。本実施形態にかかるオーディオデータ処理装置は、PCMデータのデコーダとIECフレームのパケッタイザとに入力するためのバッファを共用し、さらに、PCMデータの出力に基づいてIECフレームの出力を制御し、PCMデータの出力とIECフレームの出力とを同期させることを特徴としている。
図1のブロック図は、本実施形態にかかるオーディオデータ処理装置の構成を示している。このオーディオデータ処理装置100は、入力されるAESをデコードしたPCMデータを出力するとともに、AESを変換したIECフレームを出力する。図1に示されるように、オーディオデータ処理装置100は、入力部110、デコーダ120、パケッタイザ130を備えている。
入力部110は、外部からAESが入力されるとともに、入力されたAESをデコーダ120及びパケッタイザ130へ転送する。入力部110は、図1に示されるように、バッファ格納部111、ライトポインタ保持部112、共用ESリングバッファ113、デコーダ転送部114、デコーダ用リードポインタ保持部115、パケッタイザ転送部116、パケッタイザ用リードポインタ保持部117を有している。
ライトポインタ保持部112は、入力されたAESフレームを共用ESリングバッファ113に格納するための書き込みアドレスを示すライトポインタを保持する保持部である。ライトポインタの示すアドレスは、共用ESリングバッファ113の相対的もしくは絶対的な位置である。例えば、ライトポインタは、AESフレームの書き込み処理が完了した次のアドレスを示しており、次に書き込みが開始されるアドレスを示している。バッファ格納部111は、外部から入力されるAESの各フレームのそれぞれを順に共用ESリングバッファ113に書き込む。バッファ格納部111は、ライトポインタ保持部112のライトポインタを書き込み処理が完了した次のアドレスとし、このアドレスを更新しながら、AESフレームの書き込みを行う。
共用ESリングバッファ113は、入力されたAESの各フレームを格納する格納部である。例えば、共用ESリングバッファ113は、AESを約2フレーム格納できるサイズである。
デコーダ用リードポインタ保持部115は、デコーダ120へAESフレームを転送するための共用ESリングバッファ113の読み出しアドレスを示すデコーダ用リードポインタを保持する保持部である。デコーダ用リードポインタの示すアドレスは、共用ESリングバッファ113の相対的もしくは絶対的な位置である。例えば、デコーダ用リードポインタは、AESフレームの読み出し処理が完了した次のアドレスを示しており、次に読み出しが開始されるアドレスを示している。デコーダ転送部114は、共用ESリングバッファ113に格納されたAESフレームをデコーダ120へ転送する。デコーダ転送部114は、デコーダ用リードポインタ保持部115のデコーダ用リードポインタを読み出し処理が完了した次のアドレスとし、このアドレスを更新しながら、AESフレームを読み出して、デコーダ120へ出力する。
また、デコーダ転送部114は、PCMデータの出力と他の装置がデコードしたビデオ信号やSTC等との同期制御を行う。デコーダ転送部114は、PCMデータとビデオ信号等との同期外れを検出した場合には、デコーダ120へ転送するデータのAESフレーム単位でのスキップ/リピートを行う。音の遅延を検出した場合には、デコーダ用リードポインタを所定のアドレスへ進めて転送するデータをスキップさせる。音の先行を検出した場合には、デコーダ用リードポインタを所定のアドレスへ戻して転送するデータをリピートさせる。
パケッタイザ用リードポインタ保持部117は、パケッタイザ130へAESフレームを転送するための共用ESリングバッファ113の読み出しアドレスを示すパケッタイザ用リードポインタを保持する保持部である。パケッタイザ用リードポインタの示すアドレスは、共用ESリングバッファ113の相対的もしくは絶対的な位置である。例えば、パケッタイザ用リードポインタは、AESフレームの読み出し処理が完了した次のアドレスを示しており、次に読み出しが開始されるアドレスを示している。パケッタイザ転送部116は、共用ESリングバッファ113に格納されたAESフレームをパケッタイザ130へ転送する。パケッタイザ転送部116は、パケッタイザ用リードポインタ保持部117のパケッタイザ用リードポインタを読み出し処理が完了した次のアドレスとし、このアドレスを更新しながら、AESフレームを読み出して、パケッタイザ130へ出力する。
デコーダ120は、共用ESリングバッファ113に格納されたAESフレームをそれぞれPCMデータにデコードし出力する。デコーダ120は、図1に示されるように、復号部121、PCMバッファ122、デコーダ出力部123、PCMリードポインタ保持部124を有している。
PCMバッファ122は、デコードしたPCMデータを格納する格納部である。PCMリードポインタ保持部124は、PCMデータを外部へ出力するためのPCMバッファ122の読み出しアドレスを示すPCMリードポインタを保持する保持部である。ここで、PCMリードポインタの示すアドレスは、PCMバッファ122に格納されたPCMデータの相対的もしくは絶対的な位置である。例えば、このアドレスは、AESを1フレームデコードしたPCMデータのうちの相対的なPCMサンプルの位置(先頭からのPCMサンプル数)である。例えば、PCMリードポインタは、PCMデータの読み出し処理が完了した次のアドレスを示しており、次に読み出しが開始されるアドレスを示している。
復号部121は、共用ESリングバッファ113に格納されたAESフレームを受け取り、それぞれのフレームをデコードする。さらに、復号部121は、AESフレームをデコードして得られた、PCMデータをPCMバッファ122に格納する。
デコーダ出力部123は、PCMバッファ122に格納されたPCMデータを読み出し、外部へ出力する。デコーダ出力部123は、PCMリードポインタ保持部124のPCMリードポインタを読み出し処理が完了した次のアドレスとし、このアドレスを更新しながら、PCMデータを読み出して、外部へ出力する。
また、デコーダ出力部では、PCMサンプル単位でスキップ/リピートを行う。音の遅延を検出した場合には、PCM用リードポインタを所定のアドレスへ進めて、出力するPCMデータをスキップさせる。音の先行を検出した場合には、PCM用リードポインタを所定のアドレスへ戻して、出力するPCMデータをリピートさせる。
パケッタイザ130は、共用ESリングバッファ113に格納されたAESフレームをそれぞれIECフレームに変換し出力する。パケッタイザ130は、図1に示されるように、オーディオデータ出力部131、ポーズデータ出力部132、同期制御部133を有している。
オーディオデータ出力部131は、共用ESリングバッファ113に格納されたAESフレームを受け取り、それぞれのフレームをIECフレームに変換して、外部へ出力する。オーディオデータ出力部131は、プリアンブル部と、AESフレームとを出力し、さらにスタッフィング部を出力することで、IECフレームに変換し出力する。すなわち、オーディオデータ出力部131は、AESフレームを図10(a)に示したオーディオデータフレームに変換し出力する。
ポーズデータ出力部132は、プリアンブル部とスタッフィング部とを出力し、図10(b)に示したポーズデータフレームを出力する。
同期制御部133は、デコーダ120が出力するPCMデータとパケッタイザ130が出力するIECフレームとの同期を制御する。同期制御部133は、PCMデータとIECフレームとの同期状態(同期/同期ずれ)に基づいて、パケッタイザ130の出力を制御する。同期制御部133は、オーディオデータフレームもしくはポーズデータフレームの出力完了時、PCMリードポインタ保持部124のPCMリードポインタを参照し、PCMデータの出力に対して、IECフレームの出力タイミングが、後述の同期許容値Sの範囲内かどうか判定し、オーディオデータ出力部131からオーディオデータフレーム、もしくは、ポーズデータ出力部132からポーズデータフレームを出力する。
このオーディオデータ処理装置100では、デコーダ120とパケッタイザ130に入力するバッファを共用することで、メモリサイズの削減を図っている。しかしながら、単純にバッファを共用すると、フレームやサンプルのスキップ/リピート時に、IECフレームの出力中であっても、共用ESリングバッファが上書きされてしまい、正常にIECフレームを出力できない場合がある。また、フレームやサンプルのスキップ/リピートを行わないようにしてしまうと、音の遅延/先行が生じ好ましくない。そこで、本実施形態では、同期制御部133によって、PCMデータの出力とIECフレームの出力との同期をとることで、フレームやサンプルのスキップ/リピートが生じても、正常にPCMデータの出力かつIECフレームの出力を可能としている。
次に、同期制御部133で同期の判定に用いる同期許容値Sについて説明する。ここでは、説明を簡単にするために、まず、デコーダ120のみが共用ESリングバッファ113を使用する場合について考える。
また、図2に示すように、共用ESリングバッファ113は、AESを2フレーム格納可能なサイズであるとし、バッファの前半を領域(バッファ領域)1、後半を領域(バッファ領域)2とする。領域1と領域2には、バッファ格納部111により順にAESのフレームがそれぞれ格納され、デコーダ転送部114により順にフレームが転送される。図2は、フレームスキップ発生前後のリングバッファの状態を示している。
図2(a)は、フレームスキップが発生する前の共用ESリングバッファ113の状態の一例を示している。この例は、バッファ格納部111が、共用ESリングバッファ113の領域1,2にフレーム(n),フレーム(n+1)を格納し、デコーダ転送部114がフレーム(n)を読み出した状態を示している。このとき、図2(a)に示すように、ライトポインタ保持部112のライトポインタは、領域2の最終アドレスを指しており、デコーダ用リードポインタ保持部115のデコーダ用リードポインタは、領域1の最終アドレスを指している。
図2(b)は、図2(a)の状態でフレーム(n+1)がフレームスキップした直後のリングバッファの状態を示している。領域2に格納されたフレーム(n+1)がフレームスキップすると、図2(b)に示すように、領域2のデータは不要になるため、ライトポインタが領域1の先頭アドレスへ更新されて、領域1へフレーム(n+2)の上書きが開始される。また、フレームスキップ時、デコーダ用リードポインタは、フレーム(n+2)を転送するために領域1の先頭アドレスとなる。
図3は、図2のようにフレームスキップが発生した場合の、時間的な処理の流れを示している。図に示されるように、共用ESリングバッファ113には、領域1にフレーム(n)が書き込まれ、領域2にフレーム(n+1)が書き込まれた後、フレームスキップが発生し、領域1にフレーム(n+2)が書き込まれている。デコーダ120の復号部121は、デコーダ転送部114により転送されたフレーム(n)をデコードした後、フレームスキップし転送されたフレーム(n+2)をデコードしている。デコーダ120のPCMバッファ122には、復号部121によりフレーム(n)のPCMデータが書き込まれ、デコーダ出力部123により出力された後、復号部121によりフレーム(n+2)のPCMデータが書き込まれ、デコーダ出力部123により出力される。
このように、フレーム(n+1)がフレームスキップした場合に、フレーム(n)のPCMデータ出力後に、フレーム(n+2)のPCMデータ出力が正常に行われるためには、フレーム(n)のPCMデータの出力完了(図3中(a))までに、スキップ後の次のフレームであるフレーム(n+2)のデコードが完了していなければならない。もし、図3中(a)までにフレーム(n+2)のデコードが完了しなければ、図3中(a)の時点でデコーダ120から出力すべきPCMデータが存在しないことになるため、出力される音が途切れてしまい、聴覚上、問題となってしまうからである。この条件は、次の(式1)で表される。
フレームスキップ後PCM出力完了時間Q > 1フレームのデコード処理時間P (式1)
ここで、1フレームのデコード処理時間Pは、次の(式2)で表される。
1フレームのデコード処理時間P = (AESフレームサイズ/AES入力レート)+α+β (式2)
この(式2)において、AES入力レートは、AESが入力部110に入力され、共用ESリングバッファ113にAESフレームが書き込まれるレートである。αは、デコーダ転送部114が共用ESリングバッファ113からデコーダ120へAESを1フレーム転送する時間、βは、復号部121におけるAESを1フレームデコードする時間である。式2を式1に代入すると、次の(式3)となる。
フレームスキップ後PCM出力完了時間Q > (AESフレームサイズ/AES入力レート)+α+β (式3)
ここで、本実施形態のように共用ESリングバッファ113をデコーダ120とパケッタイザ130とで共用する場合について考える。この場合、パケッタイザ130は、転送されるAESフレームをプリアンブル部とともにそのままIECフレームとして出力するため、AES入力レートをIECフレームの出力レート(通常、AES入力レート>IECフレーム出力レート)として考えることができる。そうすると、(式3)は、次の(式4)となる。
フレームスキップ後PCM出力完了時間Q > (AESフレームサイズ/IECフレーム出力レート)+α+β (式4)
この(式4)において、IECフレーム出力レートは、パケッタイザ130からIECフレームが外部へ出力されるレートである。したがって、PCMデータの出力とIECフレームの出力が上記(式4)の関係を満たしていれば、フレームスキップが発生しても問題なくPCMデータとIECフレームとを出力することができることになる。この(式4)の関係を満たしている状態を、PCMデータの出力とIECフレームの出力との「同期」が取れているという。尚、本実施形態では、フレームスキップによるPCMデータとIECフレームの出力のずれは1フレーム程度である。1フレーム程度のずれであれば、PCMデータとIECフレームが音として出力された場合に、聴覚上の問題が生じないからである。例えば、PCMデータとIECフレームの出力が1フレーム程度ずれると、後述のように、同期をとるように動作し、2フレーム以上のずれを防止している。
上記(式4)を時間単位からPCMサンプル単位に変換し、これを同期許容値Sとすると、次の(式5)となる。
同期許容値S = [1−{(AESフレームサイズ/IECフレーム出力レート)+α+β}/AES1フレームのPCMサンプル時間]×AES1フレームのPCMサンプル数 (式5)
この(式5)において、PCMサンプル時間は、AES1フレームをデコードして得られるPCMサンプルが音として出力される時間である。PCMサンプル数は、AES1フレームをデコードして得られるPCMサンプル数である。同期許容値Sは、PCMデータの出力に対して、IECフレームの出力のタイミングのずれが許容される範囲を示す値である。例えば、PCMリードポインタは、PCMデータのうちのPCMサンプルの位置を示しているため、IECフレームの出力時に、PCMリードポインタが同期許容値Sの範囲内かどうかで、PCMデータとIECフレームの出力の同期を確認することができる。
以下、本実施形態にかかるオーディオデータ処理装置の動作について説明する。図4は、パケッタイザ130の動作を示すフローチャートであり、パケッタイザ130がPCMデータの出力と同期をとりながらIECフレームを出力する処理を示している。
まず、パケッタイザ130は、AESフレームを受け取る(S701)。例えば、パケッタイザ130のオーディオデータ出力部131は、パケッタイザ転送部116から共用ESリングバッファ113に格納されたAESフレームを1フレーム受け取る。
次いで、パケッタイザ130は、オーディオデータフレームを出力する(S702)。例えば、オーディオデータ出力部131は、受け取ったAESフレームをオーディオデータフレームに変換し外部へ出力する。
次いで、パケッタイザ130は、次のAESフレームが存在するかどうか判定する(S703)。例えば、オーディオデータ出力部131は、オーディオデータフレームの出力が完了すると、パケッタイザ転送部116からAESフレームを受け取るかいなかにより、次に変換し送信すべきAESフレームの有無を判定する。
S703において、パケッタイザ130は、次のAESフレームが存在しないと判定した場合、ポーズデータを出力する(S704)。例えば、オーディオデータ出力部131が、次に送信すべきAESフレームが無いと判定すると、ポーズデータ出力部132は、ポーズデータフレームを生成し外部へ出力する。さらに、ポーズデータフレームの出力を繰り返し、次のAESフレームがパケッタイザ転送部116から転送されると、S701以降の処理を行う。
S703において、パケッタイザ130は、次のAESフレームが存在すると判定した場合、PCMデータの出力とIECフレームの出力の同期がとれているかどうか判定する(S705)。オーディオデータ出力部131が、次に送信すべきAESフレームが有ると判定すると、同期制御部133は、PCMリードポインタ保持部124のPCMリードポインタを参照し、PCMデータの出力と、次に送信しようとするオーディオデータフレームの出力の同期がとれているかどうか判定する。
例えば、図5に示すように、デコーダ120では、デコードされたPCMデータがPCMバッファ122に格納されており、デコーダ出力部123は、PCMリードポインタ保持部124のPCMリードポインタを更新しながら、PCMデータを読み出して出力している。そして、同期制御部133は、オーディオデータフレームが1フレーム出力完了したとき(図5中(a))、すなわち、1フレームのスタッフィング部の出力が完了したとき、PCMリードポインタを参照し、PCMリードポインタのアドレスが同期許容値Sの範囲内か否か判定する。
このとき、PCMリードポインタが、同期許容値Sの範囲内(例えば、0〜同期許容値Sまでの値)であれば、同期が取れていると判定される。また、PCMリードポインタが、同期許容値Sの範囲外(例えば、同期許容値Sを超えた値)であれば、同期が外れていると判定される。
S705において、パケッタイザ130は、同期がとれていると判定した場合、次のAESフレームを受け取り、S701以降の処理を行う。例えば、PCMリードポインタが、同期許容値Sの範囲内の場合には、フレームスキップ等が発生しても、オーディオデータフレームを正常に出力できるため、そのまま、次のフレームの出力を行う。
S705において、パケッタイザ130は、同期がとれていないと判定した場合、ポーズデータフレームを出力する(S706)。例えば、フレームやサンプルのスキップ/リピート等によりPCMリードポインタが、同期許容値Sの範囲外となった場合、ポーズデータ出力部132は、ポーズデータフレームを生成し外部へ出力する。
次いで、パケッタイザ130は、PCMデータの出力とIECフレームの出力の同期がとれているかどうか判定する(S707)。例えば、同期制御部133は、ポーズデータフレームの出力完了毎に、S705と同様にして、PCMデータの出力と、次に送信しようとするオーディオデータフレームの出力の同期がとれているかどうか判定する。
S707において、パケッタイザ130は、同期がとれていないと判定した場合、さらに、ポーズデータフレームを出力し(S706)、同期がとれるまで出力を繰り返す。そして、S707において、パケッタイザ130は、同期がとれていると判定した場合、次のAESフレームを受け取り、S701以降の処理を行う。
こうして、パケッタイザ130は、出力するオーディオデータフレームとオーディオデータフレームとの間で同期制御を行い、同期が崩れた場合には、ポーズデータフレームを出力し、PCMデータの出力とオーディオデータフレームの出力タイミングを再調整することで、PCMデータの出力とIECフレームの出力の同期をとっている。
図6は、オーディオデータ処理装置100の処理の時間的な流れを示しており、PCMデータの出力がフレームスキップ等することなく安定し、PCMデータ出力とIECフレーム出力とが同期している場合の動作を示している。図は、共用ESリングバッファ113にAESフレーム(1〜5)が順に格納され、AESフレーム(1,2)をデコードしたPCMデータが出力され、AESフレーム(1〜3)を変換したIECフレームが出力される例である。
まず、入力部110にAESが入力されると、バッファ格納部111が、共用ESリングバッファ113の領域1にフレーム(1)(AESフレーム)の書き込みを開始する(T1)。バッファ格納部111が、共用ESリングバッファ113の領域1にフレーム(1)の書き込みを完了すると(T2)、デコーダ転送部114は、復号部121へフレーム(1)の転送を開始する(T3)。
また、T2よりも前に、デコーダ出力部123は、フレーム(0)のPCMデータ(ダミーデータ(0データ))の出力を開始する。そして、T2の時点で、例えば、出力するPCMサンプルが、[AESの1フレーム分のPCMデータ−同期許容値S/2]となるようにダミーデータを出力する(T4)。さらに、T2と同時に、パケッタイザ130のオーディオデータ出力部131は、フレーム(1)を変換したオーディオデータフレームの出力を開始する(T5)。
すなわち、オーディオデータフレームの出力開始の時点を、PCMダミーデータのほぼ同期許容値S/2として、同期をとり、同期ずれの発生をできるだけ抑止している。同期ずれには、遅延のずれや先行のずれがあり、いずれも同様の確率で生じるため、どのずれも等しく許容できるように同期許容値S/2としている。尚、T4におけるPCMサンプルの位置は、同期許容値S/2に限らず、その他、同期許容値の範囲内であってもよい。
尚、この例では、PCMダミーデータの出力するタイミングで、フレーム(1)のオーディオデータフレームを出力し、PCMデータの出力よりもIECフレームの出力を先行させている。例えば、IECフレームの出力先に接続される装置では、デコード処理等が必要であるため、IECフレームをより早く出力することが好ましいが、フレーム(1)のPCMデータを出力するタイミングで、フレーム(1)のオーディオデータフレームを出力してもよい。
T2では、さらに、バッファ格納部111が、共用ESリングバッファ113の領域2にフレーム(2)の書き込みを行う。そして、オーディオデータ出力部131から、フレーム(1)のオーディオデータフレームの出力が順次開始されると、出力されたデータが不要となり、順次フレーム(3)のデータが領域1に書き込まれる(T6)。
T3で開始されたフレーム(1)の転送が完了すると(α)、復号部121によりデコードされ(β)、デコードされたPCMデータがPCMバッファ122に格納されて、出力が開始される(T7)。
T5で開始されたオーディオデータフレームの出力が完了すると、上述のように、同期制御部133は、PCMリードポインタ保持部124のPCMリードポインタを参照し、次のフレームの送信タイミングが、同期許容値Sの範囲内かどうか判定する。この例では、T8や次の送信タイミングのT9において、同期許容値Sの範囲内であり、同期が取れているため、そのままオーディオデータフレームの出力を行っている。
図7は、図6と同様に、オーディオデータ処理装置100の処理の時間的な流れを示しており、PCMデータの出力でサンプルスキップ等が発生し、PCMデータの出力とIECフレームの出力との同期が外れた場合の動作を示している。図は、共用ESリングバッファ113にAESフレーム(n〜n+3)が順に格納され、AESフレーム(n−2〜n+1)をデコードしたPCMデータが出力され、AESフレーム(n−1,n+1)を変換したIECフレームが出力される例である。
図7では、図6と同様に、同期制御部133によって、PCMリードポインタ保持部124のPCMリードポインタが参照され、次のフレームの送信タイミングが、同期許容値Sの範囲内かどうか判定される。この例では、T10において、同期許容値Sの範囲外であり、同期が外れているため、このときに送信すべきフレーム(n)の代わりに、ポーズデータ出力部132から、ポーズデータフレームを出力する(図7中(a))。そして、ポーズデータフレームの出力完了毎に、PCMリードポインタを参照し、次のフレームの送信タイミングが、同期許容値Sの範囲内となり同期がとれるまで繰り返す。例えば、ポーズデータの出力完了時にPCMリードポインタがほぼ同期許容値S/2となると、フレーム(n+1)のオーディオデータフレームを出力する(T11)。尚、上記のPCMダミーデータと同様に、同期許容値S/2であることが好ましいが、その他、同期許容値の範囲内であってもよい。
以上のように、本実施形態では、PCMデータのデコーダとIECフレームのパケッタイザとに入力するためのバッファを共用することで、必要なメモリサイズを削減することができる。例えば、図11の従来例では、AESを5フレーム分格納するメモリサイズが必要であったが、本実施形態では、2フレーム分のメモリサイズとなる。また、PCMデータの出力に基づいてIECフレームの出力タイミングを制御し、PCMデータの出力とIECフレームの出力とを同期させることにより、フレームやサンプルのスキップ/リピートが発生した場合でも、PCMデータの出力が滞ることなく正常に、またIECフレームの出力に致命的な障害を与えずに出力することができる。
例えば、メモリサイズの削減量を算出すると、次のようになる。共用ESリングバッファ113のメモリサイズをフレームサイズ2倍確保し、AES1フレームのPCMサンプル数=1536(sample/frame)、AES1フレームのPCMサンプル時間=0.032(s/frame)、サンプリング周波数=48kHz、IECフレーム出力レート=1.536Mbpsとする。また、デコーダ転送部114からデコーダ120への転送レート=6Mbpsとし、1フレームの転送時間α=0.0023(s)(DVDmax=896(word/frame))とする。さらに、復号部121における1フレームのデコード時間=0.018(s/frame)とする。そうすると、上記(式5)より、同期許容値S=115となる。したがって、55サンプル程度のスキップ/リピートが許容できることになる。この結果、図11の従来例と本実施形態とのメモリサイズ比=896×2/896×5=1792(byte)/4480(byte)=2/5となり、2688(byte)のメモリ削減が可能となる。
本実施形態では、わかりやすく説明するため、共有ESリングバッファをAESフレーム×2の大きさとしてきたが、図8のように、一般的には共有ESリングバッファの大きさをAESフレーム×2+a(a:マージン)とすると、上述の(式3)(式4)(式5)は、次の(式6)(式7)(式8)となる。
フレームスキップ後PCM出力完了時間Q > ((AESフレームサイズ−a)/AES入力レート)+α+β (式6)
フレームスキップ後PCM出力完了時間Q > ((AESフレームサイズ−a)/IECフレーム出力レート)+α+β (式7)
同期許容値S = (1−[{(AESフレームサイズ−a)/IECフレーム出力レート}+α+β]/AES1フレームのPCMサンプル時間)×AES1フレームのPCMサンプル数 (式8)
尚、デコーダ120やパケッタイザ130の処理を行うCPUの処理速度が高速の場合には、マージンaをマイナス、すなわち、共用ESリングバッファ113のサイズを、AESの2フレーム分よりもマージンaだけ少ないメモリサイズとすることもできる。
発明の実施の形態2.
次に、本発明の実施の形態2にかかるオーディオデータ処理装置について説明する。
本実施形態のオーディオデータ処理装置は、図1のオーディオデータ処理装置100と同様の構成であり、共用ESリングバッファ113のサイズのみが異なる。ここでは、共用ESリングバッファ113は、AESの3フレーム分のサイズであるとする。これは、例えば、デコーダ120の後段にPCMデータを音場処理する装置を設けた場合に、音場処理に時間を要するため、IECフレームの出力よりもPCMデータの出力を先行させることがある場合を想定している。
本実施形態では、上記条件の場合の、(式8)を用いない、ストリームの特徴を生かした同期制御方法について説明する。
次に、図9を用いて、本実施形態にかかるオーディオデータ処理装置の動作について説明する。本実施形態では、例えば、AESとしてAC3(Audio Code number3)ストリームが入力される。この場合、AC3ストリームを構成する各AC3フレームが、デコーダ120でデコードされるとともに、パケッタイザ130でIECフレームに変換される。また、このAC3フレームは、6つのオーディオブロックと、CRC1、CRC2から構成されている。例えば、1つのオーディオブロックをデコードすると256のPCMサンプルとなる。
AC3のデコード方式は、規格化されており、CRC1とCRC2のCRCチェックを行いながら、所定のオーディオブロックのデコードを行う。例えば、デコーダ120の復号部121は、AC3フレームのCRC1についてCRCチェックを行い、チェックの結果がOKの場合、フレームの5/8まで、つまり、先頭から2つのオーディオブロックまでデコードする。さらに、復号部121は、AC3フレームのCRC2についてCRCチェックを行い、チェック結果がOKの場合、フレームの全て、つまり、最後のオーディオブロックまでデコードする。
図9に示される通り、共用ESリングバッファ113は、3つのAC3フレームを格納するサイズであり、領域(バッファ領域)1,2,3にAC3フレームが1フレームずつ格納される。例えば、領域1には、オーディオブロック00〜05が格納され、領域2には、オーディオブロック10〜15が格納され、領域3には、オーディオブロック20〜25が格納される。
入力部110では、バッファ格納部111が、ライトポインタ保持部112のライトポインタを更新しながら、入力されるAC3フレームを順に共用ESリングバッファ113に格納する。デコーダ転送部114は、デコーダ用リードポインタ保持部115のデコーダ用リードポインタを更新しながら、格納されたAC3フレームのオーディオブロックを順にデコーダ120へ転送する。復号部121は、CRCチェックを行うとともに、デコードを行い、外部へPCMデータを出力する。
例えば、CRC2のチェックがOKとなり領域1のフレームのデコードが完了したとき、デコーダ用リードポインタは、図9中(a)の位置となる。上記のように、PCMデータの出力よりもIECフレームの出力を1フレーム遅延させるとすると、デコーダ用リードポインタが図9中(a)のとき、パケッタイザ用リードポインタは図9中(b)の位置となる。
フレーム1のデコード完了直後に、領域2のフレームのスキップが発生すると、デコーダ用リードポインタは、図9中(c)から図9中(d)へ移動する。このとき、復号部121でデコードが続けて行われるためには、次フレーム(領域3)のCRC1のCRCチェックが可能なデータ量、つまりAC3のフレームサイズの5/8のデータ量が、バッファ格納部111によって共用ESリングバッファ113に格納されている必要がある。このとき、ライトポインタは図9中(e)の位置となる。
そうすると、復号部121では、領域3のフレームのCRC1のCRCチェックを行いオーディオブロック20,21のデコードを行う。この間、領域1のパケッタイザ130への転送が進み、復号部121でオーディオブロック20,21のデコード処理(1フレームの1/3の処理)が完了する間に、例えば、パケッタイザ用リードポインタは、AC3の1フレームの4/6(2×1/3)以上進み、図9中(f)の位置となる。
このとき、領域3の残りは、フレームサイズの3/8となり、フレームサイズ×3/8<フレームサイズ×4/6なので、AC3の1フレームの残りのデータを、バッファ格納部111から補充することができる。
以上のように、本実施形態では、実施の形態1の共用ESリングバッファ113を2フレーム分よりも多く、例えば、3フレーム分のメモリサイズとすることで、後段の処理等を考慮して、IECフレームの出力を遅延させた場合でも、メモリサイズを削減できるとともに、PCMデータとIECフレームを正常に出力することができる。すなわち、実施の形態1と同様に、PCMデータの出力とIECフレームの出力との同期をとり、フレームやサンプルのスキップ/リピートに影響されることなく正常にIECフレームを出力することができる。例えば、AC3の3フレーム分のメモリサイズを確保することで、サンプルスキップ/リピートに対し256サンプル程度許容できる。
尚、上述の例では、AESをPCMデータとIECフレームに変換し出力するオーディオデータ処理装置として説明したが、これに限らず、その他のデータストリームのフレームを所定の形式に変換し出力する装置にも適用することができる。
このほか、本発明の要旨を逸脱しない範囲で種々の変形、実施が可能である。