【実施例】
【0025】
[アーカイブモード]
図1に示すアーカイブモード・ビットストリームは、ファイルの始めに、1つのファイルヘッダを有する。その後に、フレームに分割された信号データが続く。ここで、各々のフレームは、L個のエンコードされた信号サンプル又は係数のセグメントを表すコードを示す。
【0026】
アーカイブモード・ビットストリームのデコーディングは、最初のフレームのみから開始することができる。なぜなら、その場合にのみ、デコーダの状態が既知であるからである(これらは、それぞれのデコーディング標準で定められる)。例えば、後述するMP3のMain_Data_Begin_Pointerは、最初のフレームに対してゼロに設定される。連続的に以降のフレームをデコードすることによって、デコーダ状態は初期化され、かつ、サンプルの正しいデコーディング結果が取得される。示されているフォーマットの主要な特徴は、全てではなく、k(0<k<=K)個の先行するデコードされたフレームだけで、正確な結果が得られることである。ここで、Kは、デコードされたフレームの最大の数であり、かつ、Kは、エンコーダ及びデコーダにおいて既知の定数値である。しかしながら、他のフレームについての情報なしに先行フレームからの必要な情報によってデコーディングが可能であるということが必要となる。
【0027】
hd3コーデックは、独立にデコーディング可能なMP3フレームによって、このような特徴を提供する。しかしながら、欧州特許出願明細書EP08102308.7に説明されているように、ビット毎に忠実な複製の復元(すなわちロスレス復元)は、マッピング処理ステータスのため、3つの先行するデコードされたMP3フレームからの情報を必要とする。
【0028】
さらにまた、MPEG1オーディオ・レイヤIII標準ISO/IEC11172−3は、上述のビットリザーバ技術を含み、先行フレームのメインデータの記憶を可能とする。先行フレームに位置するメインデータの開始を指し示すメインデータ開始ポインタが利用される。したがって、一つのMP3フレームのデコーディングは、同様に先行フレームからの情報を必要とする。
【0029】
これらの問題は、先行フレームからの必要な情報が、ストリーミングモード・ファイル又はカットされたファイルの始めに存在しないため、上述のビットストリーム・フォーマットをカットすること、あるいは、ストリーミングすることを難しくしている。
図4は、デコーディング側でのカット、又はエンコード側での(又は、伝送された、記録された、又はオリジナルの)アーカイブのフォーマットのストリーミングに影響を及ぼす、関連する問題を示している。Frame
n_5からのデータのないビットストリームのヘッダでデコーディングを始めた場合、Frame
n_4は、デコードすることができない。なぜなら、Main_Data_Begin_Pointerの指すFramen_5データが利用できないからである。同様に、フレームn−3からn−1も、正確にデコードすることができない。なぜなら、先行するフレームからのデータが無いため、それらのデコーダの状態が正確にイニシャライズされていないからである。しかしながら、フレームn−3からn−1までのフレームはデコードされないが、3つの先行するフレームからのデータ(例えばスペクトル値(spectral values))が利用可能となれば、デコーダ状態イニシャライズステップ/ステージDSIにおいて、EP08102308.7.に記載されているマッピング処理を実行することにより、その後続のフレームのデコーダ状態は再構築することができる。正しく初期化されたデコーダ状態となる最初のフレームは、Frame
nである。
【0030】
これらの課題を解決するために、本発明によれば、以下のテーブルに示されるビットストリーム・ヘッダに、一部の追加(extra)情報アイテムが付加される。これらの追加情報アイテムに基づいて、デコーダは、処理が既知のデフォルト・デコーダ状態によって開始されるか、未知のデコーダ状態によって開始されるかどうかを決めることができる。
【0031】
【表1】
ビットストリーム・ヘッダのこの‘MuteIfFirstSuperFrame’のフィールドは、その後続のフレームのデコーディングが、デコーダ状態の付加的な初期化を必要とするか否かを示す。これが真であれば、(すなわち、フラグがセットされている場合)、更なる情報アイテムがビットストリーム・ヘッダに挿入されることを示す。これについては、カット及びストリーミングの以下の実施例によって説明する。
【0032】
アーカイブモードのビットストリーム・ヘッダは、「OFL」、「FileMode」及び「MutelfFirstSuperFrame」データフィールドだけを使用する。ここで、「FileMode」、及び「MuteIfFirstSuperFrame」の値は、ゼロにセットされる(又は、対応するフラグがクリアされる)。これは、カットされていないアーカイブファイルを示す。
【0033】
[アーカイブモード・ビットストリームのカット]
カットは、デコーディング側で利用される。受信された、あるいは、リプレイされたアーカイブモードの整合性の取れた完全なビットストリームから、短いサブセクションを切り離すために利用される。カットされたファイルのビットストリーム・モードは、アーカイブモード・フォーマットのそれに等しい。
図2は、
図1に示されたアーカイブモード・ファイルフォーマットから生成されたカットされたファイルを表す。例えば、カットは、完全なファイルから短いプレビューを得るために使用することができる。所望のセクションをデコードして、かつ新しくエンコードする代わりに、必要なフレームは単に入力ファイルから切り取られ、かつ、新しいヘッダがこれらのカットされたデータフレームの前に挿入される。
【0034】
カットに関する課題は、プレビュー又はカットされたセクションが、それぞれ、完全なビットストリームの初めから始まらない場合、カットされたデータフレームの最初のフレームでデコーディングするために、必要な先行フレームからのデータが無くなっているということである。したがって、カットされたファイルは、最初のフレームの処理が単にデコーダ状態を初期化するだけであり、かつ、これらのフレームのデコードされたサンプルがミュートされることになっていることを示す、ビットストリーム・ヘッダの「MuteIfFirstSuperFrame」データフィールドを評価する。ミュートされるフレームの数は、ビットストリーム・ヘッダの「muteFrames」フィールドに示される。そして、ミュートされるサンプルの数「muteSamples」が、ヘッダに示される。これによって、フレームに忠実なカットではなく、サンプルに忠実なカットが可能となる。
【0035】
以下の例を用いて、更に詳細にどのようにアーカイブファイルからカットされたファイルを作成するかについて示す。
****
与えられる値
L:フレーム毎のデコードされたサンプル数
OFL
orig:チャネル毎のサンプル内の入力ファイルの全長
X
start:カットされたファイルをデコードするための、アーカイブファイルの最初のサンプルの番号
X
end:カットされたファイルをデコードするための、アーカイブファイルの最後のサンプルの番号
決定されるべき値
OFL
cut:チャネル毎のサンプル単位のカットされたファイルの全長
Frame
vaild:既知のデコーダ状態によって、最初のデコーディング可能なフレーム
Frame
start:カットされたファイルのデコードされた最初のフレーム
Frame
end:カットされたファイルのデコードされた最後のフレーム
k
mapping:マッピング状態の初期化のために必要なフレームの数、すなわち、Frame
vaildのデコーダ状態の回復(recover)に必要なフレーム数
k
mp3:無効なmp3フレームの数
必要とする先行するフレームの数
Frame
vaild=floor(X
start/L)
k
mappingを取得する(これは、フレーム番号Frame
vaildをデコードするための先行するフレームの数、この数は、既知であるが、フレーム毎に異なり得る)、そして、(mp3−)フレーム番号Frame
vaildのMain_Data_Begin_Pointerを読み出す。k
mp3を、有効なMain_Data_Begin_Pointerを取得するために、加えるべきフレーム数に等しく設定する。例えば、Main_Data_Begin_Pointerが、Frame
vaildの前のフレームをポイントしている場合、k
mp3を「1」に設定する。
ヘッダの値の計算
muteFrames=k
mp3+k
mapping
OFL
cut=X
end−X
start+1+L*muteFrames
Frame
start=max(0,Frame
vaild−muteFrames)
Frame
end=min(ceil(OFL
orig/L)、ceil(X
end/L))−1
MuteSamples=X
start−L*Frame
start
ここで、
「floor」は、10進数を負の方向に探索したときの最大の整数に丸めることを意味し、ceilは、ceil関数の引数と等しいか大きい最小の整数値を示す値を返す。
以下のように、対応するヘッダを生成する。
【0036】
【表2】
カットされたファイルの生成
ヘッダをコピーし、その後にFrame
startからFrame
endまでを付加する。
****
カットされたアーカイブモード・ファイルの識別のために、「FileMode」は「0」にセットされる。そして、「MutelfFirstSuperFrame」は「1」にセットされる。これらの特性(properties)は、デコーダ状態が「muteFrame」の示す数の複数フレームの最初のパラメータを使用して初期化されることをデコーダに示す。したがって、これらのフレームのデコードされたサンプルは無効であることをデコーダに知らせる。
【0037】
いくつかのフレームに従属する値は、アーカイブ・ビットストリーム・モードのファイルのカットを実行するために見つけ出す必要がある。しかしながら、最初のステップは、カットされたファイルの最初のサンプルが記憶されるフレーム「Frame
vaild」を捜し出すことである。その最初のフレームの計算のために、コア−コーデック(core−codec)処理の対応する遅れが導入されてもよい。より容易な理解のため、実施例においては考慮しない。次に、デコーダ状態を回復するために必要な先行フレームの数が取得されることである。したがって、カットされたファイルは、「Frame
vaild」のデコーダ状態の回復に関連する最初のフレームから開始される。取得された先行フレームの数は、ビットストリーム・ヘッダの「muteFrame」のフィールドに書きこまれる。これによって、デコーダは、これらのフレームは、デコーダ状態の初期化にのみ使用され、サンプルのデコーディングには用いられないことを認識する。
【0038】
サンプルに忠実なカットを可能にするために、付加的な数として、「ミュートするチャネル毎のサンプル(sample per channel to mute)」(「muteSamples」)も、ヘッダに示すことができる。これらのサンプルは、デコーダによって正しくデコードされるが、ユーザに示されない。したがって、デコードされ、示される信号は、ファイルの最初のフレームからではなくて、ファイル途中のいずれかの部分からのものである。
【0039】
いずれの場合においても、「OFL」は、既知のデコーダ状態によってデコードすることができるチャネル毎のサンプル数である。これは、以下のストリーミング・ビットストリーム・モードの項において更に詳細に説明する。したがって、初期化フレームのサンプルは、カットされたファイルの実際のサンプル数に加えられることになる。デコーダは、これらの追加サンプルをデコーダ処理の「OFL」値から、自動的に減算する。更なる詳細は、デコーディング処理の項で述べる。
【0040】
[ストリーミングモード]
表1に示したビットストリーム・ヘッダの情報アイテムを使用して、アーカイブ・ビットストリーム・モードは、デコーディング側でストリーミングビットストリームモードに変換され得る。「ストリーミングモード」とは、アーカイブのビットストリームのフレームが連続したパッケージに分けられることを意味する。それによって、これらのそれぞれのパッケージは、「スーパーフレーム」(SF)と呼ばれ、そしてアーカイブのビットストリームと同じ構造を持つ。スーパーフレームは、対応するビットストリーム・セクションヘッダ(すなわちスーパーフレーム・ヘッダ)から開始される。その後、フレームのデータが続く。すなわち、アーカイブモードと比較すると、ストリーミングモードで、スーパーフレームは各々1つずつヘッダを有し、ビット列に繰り返し配置される。この種のストリーミングモード・ビットストリームの実施例は、
図3に示されている。
【0041】
各々のスーパーフレームのビットストリーム・ヘッダの「FileMode」データフィールドは、ストリーミングモードを示す値「1」となっている。この場合、デコーダは、エンコードされたファイルの全てのサンプルを再構築するために、いくつかの連続したスーパーフレームをデコードしなければならない。最初のスーパーフレームのストリーミングモードのストリームは、基本的にアーカイブモード・ファイルの始まりと同一であるが、ビットストリーム・ヘッダにおいて、「FileMode」及び「OFL」のデータフィールドは、アーカイブモード・ヘッダと異なる値を持つ。デコーダが最初のスーパーフレームのデコーディングを始めると、デフォルト・デコーダ状態が使用され、かつ最初のフレームはいかなる追加的な情報アイテムも必要とせずに直接デコードすることができる。しかしながら、ストリーミングモード・ビットストリームは、それぞれのスーパーフレームの始まりからリプレイ又はデコードすることができる。しかし、その場合、デコーダ状態を初期化するための先行フレームからの必要なデータは、無くなっている。したがって、最初のスーパーフレーム以外のストリームの全てのスーパーフレームは、「MutelfFirstSuperFrame」のデータフィールドの、最初の「muteFrames」にデコーダ状態回復の用途にだけに使用されるフレーム数を示さなければならない。
【0042】
ストリーミングモードにおいては、デコーディングフェーズからはデコーディング状態が既知ではない場合と、デコーディング状態が前にデコードされたスーパーフレームから既知である場合とで、デコーディング初期化フェーズを区別しなければならない。対応するタイプのフェーズは、スーパーフレームのヘッダ情報を使用して、各々のスーパーフレームの始めに取得される。両フェーズのためのヘッダ特性は、以下のように示される。
【0043】
[デコーディング初期化フェーズ]
FileMode=1
MuteIfFirstSuperFrame=0
かつ、デコーディングは、ストリーミングモードの新規な整合性(consistency)のあるビットストリームの最初から始まる。
デフォルトのデコーダ状態が使用され、かつサンプルのデコーディングは、スーパーフレームの最初のフレームで直接始めることができる。
FileMode=1
MuteIfFirstSuperFrame=1
かつ、これは、デコーダの初期化又はリセットに続いてデコードする最初のスーパーフレームである。
かつ、これは、現在のスーパーフレームの最初の「muteFrame」の数のフレームが、デコーダ状態を初期化することに使用される。そして、サンプルのデコーディングは、(「muteFrames」+1)のフレーム番号から始めることができる。
FileMode=1
MuteIfFirstSuperFrame=1
かつ、これは、デコードされた最初のスーパーフレームではなく、かつ、先行するスーパーフレームおよび現在のスーパーフレームの整合性のチェックが失敗に終わった。
整合性のチェックのために、ヘッダの「StreamingCheckSum」データフィールドが使用される。その値は、前のスーパーフレームのデータから取得され、かつ、その後続のスーパーフレーム「StreamingCheckSum」のデータフィールドに書き込まれる。これによって、連続したスーパーフレームを特定することができる。例えば、フレームの巡回冗長検査(CRC)又はハッシュ値、例えば、最後のフレームで、その前のスーパーフレームが利用され得る。デコーダは、前のスーパーフレームのCRCを計算して、かつ、それを現在のスーパーフレームのヘッダに記憶される値と比較する。この比較が失敗した場合、現在のデコーダ状態は次のスーパーフレームのデコーディングにあてはまらない。したがって、デコーダ状態は、次のスーパーフレームの最初の「muteFrames」の数のフレームを使用して再初期化されることになる。サンプルのデコーディングは、フレーム番号(「muteFrames」+1)から始まる。「StreamingCheckSum」データフィールドは、整合性のあるストリーミングモード・ビットストリームの最初のスーパーフレームにおいて使用されない。なぜなら、先行フレームが必要なく、したがって、整合性チェックは余分であるからである。
[デコーディングフェーズ]
FileMode=1
MuteIfFirstSuperFrame=1
かつ、スーパーフレームは以前にデコードされており、かつ、整合性チェックも有効である。
したがって、先行して検出されたスーパーフレームのデコーダ状態が、次のスーパーフレームのフレームのデコードのために利用することができる。
典型的なストリーミング処理は、初期化フェーズから始まり、いくつかのデコーディングフェーズが続く。デコーディングフェーズにおいて「muteFrame」情報は使用されない。なぜなら、先行するスーパーフレームから対応するデータによってデコーダ状態が正しく初期化され、「Main_Data_Begin_Pointer」が指し示すデータは、前のスーパーフレームから利用できるからである。新規な整合性のあるビットストリームが始まる場合(MutelfFirstSuperFrame=0)、又は、「StreamingCheckSum」が誤っている場合、デコーダは初期化フェーズに戻るだけである。いずれの場合においても、デコーダ状態は、無効になり、かつ、再びイニシャライズされることになる。
【0044】
以下の例は、すでに既存のアーカイブモード・ビットストリームからストリーミングモード・ビットストリームを作成する方法を示す。
****
与えられる値
L:フレーム毎のデコードされたサンプルの数
OFL
orig:チャネル毎の入力ファイルのサンプルの全長
M:M<=ceil(OFL
orig/L)を満たすスーパーフレームの数
決定されるべき値
NumFrames:フレームの合計数
M
mean:スーパーフレーム毎のフレームの平均数
Frame
start:スーパーフレームの最初のフレーム
Frame
end:スーパーフレームの最後のフレーム
muteFrames
SF:スーパーフレームのデコーダ状態の初期化のためのフレームの数
StreamingCheckSum
SF:スーパーフレームの整合性チェックのための値
m:現在書かれているスーパーフレームの数、0<=m<M
フレームの合計数の計算
NumFrames=ceil(OFL
orig/L)、ここで、ceilは、ceil関数の引数と等しいか大きい最小の整数値を示す値を返す。
スーパーフレーム毎のフレーム数の計算
M
mean=ceil(OFL
orig/(M*L))
最初のスーパーフレームの生成(m=0)
以下のように、対応するヘッダを生成する。
【0045】
【表3】
フレーム数(number)「0」を「M
mean*L」にコピーする。
以下のスーパーフレームを生成する(1<=m<M)
「StreamingCheckSum」の計算:定義された部分の先行するスーパーフレームのCRCを計算し、その結果をStreamingCheckSum
SFのフィールドに記憶する。
「muteFrames」の取得:無効なMain_Data_Begin_Pointer(現在のスーパーフレームに存在しないデータを指し示しているもの)を有する全てのフレームを探す。デコーダ状態を回復するため、そのフレーム数を加算する。その結果の合計を「muteFrames
SF」にセットする。
以下のように、対応するヘッダを生成する。
【0046】
【表4】
フレーム数を(m*M
mean)からmin(((m+1)*M
mean)−1,NumFrames−1)、にコピーする。ここでmin関数は、最後のスーパーフレームで必要とされる。なぜなら、最後のスーパーフレームは、異なる数のフレーム数及びサンプル数を持ち得るからである。
****
[ファイル又はビットストリームのためのデコーディング処理]
図5のデコーディング処理のフローチャートは、アーカイブモード・ファイルのための、及びストリーミングモード・ビットストリームのためのデコーディング方法を示している。デコーディング処理の始めに、デコーダ状態は、それらのデフォルト値に(例えば、マッピング・バッファはゼロに、そして、前にデコードされた値はゼロに)セットされる。ステップ/ステージ1において、入力ファイル又はビットストリームは、必要なデータを読み込むために利用できる。ステップ/ステージ2において、ファイル又はビットストリームの最初のヘッダを探し、読み込む。すなわち、表1のヘッダ情報アイテムがセットされ、記憶され、又は、ロードされる。ステップ/ステージ3では、変数「SamplesToMute」をそのデフォルト値0にセットする。
【0047】
ステップ/ステージ4において、ファイル又はビットストリーム・ヘッダの「MuteIfFirstSuperFrame」データフィールドが、チェックされる。このチェックによって、デコーダ状態が既知か(MutelfFirstSuperFrame=0)、又は、デコーダ状態が、再度初期化され、多くのサンプルが無視されるか、が検知される。ステップ/ステージ5において、無視された(ミュートされた)サンプルの数が、SamplesToMute=muteFrames*L+muteSamples、として計算される。これは、ファイル又はビットストリームのヘッダからの、「muteFrames」におけるミュートされるフレームの数、及び、「muteSamples」におけるミュートされるサンプルの数から計算される。「L」は1つのフレームからデコードされるサンプル数である。これは既知のデコーダ定数である。ステップ/ステージ6は、全ての受信されたフレームをデコードする。これは、最初の、「muteFrames」の数の複数のフレームを含む。それゆえに、「OFL」で示される数のデコードされた複数のサンプルは、次のステップ/ステージを通過する。最初の「SamplesToMute」の数のサンプルは無効であるが、それらはデコーダ状態を初期化するために使用される。それゆえに、フェーズ/フェーズ7は、無効な「SamplesToMute」の数のサンプルを取り除いて、残りのサンプルだけにして、ステップ/ステージ8に戻る。残りのサンプルの数は、値「SamplesToMute」と、デコードされたサンプルの合計数であるOFLとの差である。「SamplesToMute」がOFLより大きい場合には、サンプル数ゼロがステップ/ステージ8に返される。これは、スーパーフレーム毎のフレームの数がミュートするフレームの数より少ない場合に、ストリーミングモードで起こり得る。
【0048】
したがって、残りの遅延は、次のスーパーフレームに伝送される。対応する変数MuteNextSF=SamplesToMute−OFLが、次のスーパーフレームでミュートするサンプル数を記憶するために、ステップ/ステージ9において算出される。
【0049】
ステップ/ステージ10で、アーカイブモード・ファイル又はビットストリーム又はカットされたファイル・ビットストリームのデコーディング処理は、11で終了する。なぜなら、ファイルの全てのOFLサンプルがデコードされたからである。したがって、ステップ/ステージ10は、「FileMode」をチェックし、かつ、アーカイブモードデコーディング処理を停止するため、終了ステップ11へ進む。それ以外は、ストリーミングモード・ビットストリームのデコーディングが継続される。
【0050】
したがって、「StreamingCheckSum」(例えばCRC)が、ステップ/ステージ12で、現在デコードされたフレームのフレームデータから計算される。「StreamingCheckSum」計算のために使用される処理、及びデータは、同一の結果をエンコーダ、及びデコーダで生成しなければならない。さらに、「StreamingCheckSum」は、現在のフレームの明確な識別を示さなければならない。なぜなら、これは、次のスーパーフレームのデコーダ状態の整合性を検査するために使用されるからである。したがって、使用されるデータは、スーパーフレーム毎に多様であり、かつ、スーパーフレームのエンコードされたデータを示さなければならない。
【0051】
次のスーパーフレームに切り替わると、ステップ/ステージ13で、次のスーパーフレームのヘッダを検索し、読み込む。このステップ/ステージで、全てのストリーム・ヘッダ変数を再度イニシャライズするため、以前のヘッダ情報は失われる。ファイルの終わりに達した場合、あるいは、有効なビットストリーム・ヘッダが見つからなかった場合、デコーダはステップ11へ進み、かつデコーディングを停止する。
【0052】
それ以外は、次のスーパーフレームをデコードするために、現在のデコーダ状態は有効かどうかがチェックされる。ストリーミングモード・ビットストリーム・ファイルは、2つ以上の連続した整合性のあるビットストリームを含む。したがって、次のスーパーフレームが、新規な整合性のあるビットストリームの最初のスーパーフレームであるかチェックされる。なぜなら、このような場合、現在のデコーダ状態は、異なるビットストリームに属しており、デフォルト値にリセットされる必要があるからである。整合性のあるビットストリームの最初のスーパーフレームでは、「MuteIfFirstSuperFrame」はゼロの値を有する。したがって、「MuteIfFirstSuperFrame」値は、ステップ/ステージ14において反転され、かつ、変数「FirstSuperFrame」に割り当てられる(すなわちFirstSuperFrame=NOT(MutelfFirstSuperFrame))。
【0053】
ステップ/ステージ15において、新規な整合性のあるビットストリームが始まっているかどうか、変数「FirstSuperFrame」をチェックする。真であるならば、ステップ/ステージ17で、デコーダ状態をリセットして、かつステップ/ステージ3で次のスーパーフレームのデコーディングを始める。これは、新規なファイルのデコーディングを始めることと同一で、かつ、この説明のストリーミングモードのアイテムのデコーダ初期化フェーズ1と同一である。それ以外は、次のスーパーフレームは同じ整合性のあるビットストリームに帰属し、かつ、処理はステップ/ステージ16で続けられる。
【0054】
この場合に、現在のスーパーフレーム・ビットストリームヘッダの「StreamingCheckSum」値と、ステップ/ステージ12で前のスーパーフレーム・データから計算した「StreamingCheckSum」の値とが比較される。すなわち、CRC==ストリーミングCRCであるかがチェックされる。上記の点は、必要である。なぜなら、整合性のあるビットストリームのスーパーフレームが消失している場合があり、あるいは、新規な整合性のあるビットストリームが開始されているが、最初のスーパーフレームでない場合があり得るからである。ステップ/ステージ16の整合性チェックが失敗した場合には、ステップ/ステージ17が使用されデコーダ状態がリセットされ、ステップ/ステージ3で、次のスーパーフレームのデコーディングが開始される。したがって、処理はこの説明のストリーミングモードのアイテムのデコーダ初期化フェーズ3となる。そして、デコーディングはデフォルト・デコーダ状態で始められる。これは結果としてステップ/ステージ4のデコーダ初期化フェーズ2に続く。
【0055】
それ以外は、現在のデコーダ状態は、現在のスーパーフレームのデコーディングのために有効である。そして、現在の処理は、この説明のストリーミングモード・セクションのデコーディングフェーズ1となる。その結果として、現在のビットストリーム・ヘッダの「muteFrames」値は、評価しなくてよい。このことは、ステップ/ステージ18で「MuteIfFirstSuperFrame」変数をゼロに設定することによって、確実になされる。したがって、ステップ/ステージ4は、結果としてステップ/ステージ8に到達せず、かつ、現在のスーパーフレームの「muteFrames」値は使用されない。
【0056】
ステップ/ステージ19の決定は、前のスーパーフレームの残りの遅延を、現在のスーパーフレームに、伝送(transfer)するために行われる。「MuteNextSF」>0である場合、前のスーパーフレームでミュートするサンプル数が、前のスーパーフレームの「OFL」値より大きいことになる。その結果として、現在のスーパーフレームでミュートするサンプルの数「SamplesToMute」は、前のスーパーフレームの中でミュートするサンプルの残りの数「MuteNextSF」に等しい。したがって、ステップ/ステージ20は、SamplesToMute=MuteNextSFとする。
【0057】
したがって、現在のスーパーフレームのデコーディングは、ステップ/ステージ3の「SamplesToMute」の再初期化を省略するために、ステップ/ステージ4から始まらなければならない。
【0058】
ステップ/ステージ19において、パラメータMuteNextSF<=0である場合、ミュートする残りのサンプルが無く、かつ、デコーダ状態は正しく、かつ、現在のスーパーフレームのデコーディングは、最初のフレームで直接始めることができる。ミュートするサンプルの数は、ステップ/ステージ3でゼロにセットされる。
【0059】
ストリーミングモードにおいて、ステップ/ステージ13がビットストリーム・ヘッダをこれ以上見つけなくなるまで、連続したスーパーフレームのデコーディングは繰り返される。そして、デコーディング処理はステップ11で停止する。
【0060】
したがって、本発明は、アーカイブモード・ビットストリーム又はストリーミングモード・ビットストリームのフレームベースのビットストリーム・フォーマットの処理を容易にし、かつ、一つのフレームのデコーディングが、先行フレームからの情報を必要とする場合であっても、アーカイブモード・ビットストリームのサンプルの忠実なカットを可能にする。
【0061】
上述したように、発明のデコーディング処理は、hd3デコーダ・インプリメンテーションにおいて使用され、かつテストは成功している。
【0062】
HD3の単純なファイルフォーマットは、
図6に示すように、3つの必要不可欠なデータセクションを持っている。そして、最大4つの任意のデータセクションを持っている。必要不可欠なhd3IDデータセクションは、ファイルモード、長さ、及びCRC情報を提供する。このhd3IDセクションは、MP3フレームの補助データセクション(サイレンスPCM)にカプセル化される。MP3フレームのこの種の補助データセクションは、また、hd3ID情報の前にXing−又はVBRi−準拠の可変ビットレート・ヘッダを含んでもよい。必要不可欠なmp3−dataセクションは、MP3データストリーム又はその部分をカプセル化する。MP3ストリームのシンクロナイゼーションワードは、スクランブルされてもよい。
【0063】
必要不可欠なcd−dataセクションは、1又は2個のオーディオチャンネルを有するオリジナル曲の数学的にロスレス・コピーを再構築するため、MP3データにロスレス・エクステンションを提供する。このオーディオチャネルは、32kHz、44.1kHz又は48kHzに対応する時間軸分解度を有し、かつ16ビット/サンプルの振幅解像度を有する。MP3同期ヘッダの発生を回避する非同期化方式を使用することができる。
【0064】
任意のhd−dataセクション(不図示)は、最高24ビット/サンプル及び192kHzのサンプリングレートを有する高解像度スタジオ・フォーマットのロスレス復元を可能にする。
【0065】
任意のID3/ID3v2データセクションは、埋め込み(embedded)MP3エンコードされかつロスレス復元エンコードされた音楽に関するメタデータを記憶する。任意のID3v1タグが、また、HD3ファイルの終わりに置かれてもよい(不図示)。
【0066】
本発明はまた、AACのような他のコーデック又はビットストリームのために、及び付加的なデータ(例えばヘッダ)がMP3補助データフィールドに配置されるMP3において使用することができる。そして、対応するMP3デコーダが、これらを評価することができる。