8

CoreAudioのパケット損失を隠す基本的なアルゴリズムを作成しようとしています。欠落しているデータを無音に置き換えたいだけです。コアオーディオを学習する本では、著者は、ロスレスPCMでは、ゼロは無音を意味すると述べています。VBR(つまり圧縮データ)を再生しているのかどうか疑問に思っていましたが、沈黙にはゼロを入れるだけで十分でしょうか?

私の既存のコードでは、オーディオキューにゼロを接続すると、突然ジャムが発生し(つまり、オーディオキューのコールバックで消費されたデータが解放されなくなります)、なぜだろうと思います。

4

1 に答える 1

3

PCMは生のエンコードされたサンプルです。すべて0(サンプルに署名付きデータを使用する場合)は確かに無音です。(実際、すべての値は無音ですが、そのようなDCオフセットは、フィルターで除去されていない場合、アンプやスピーカーに損傷を与える可能性があります。)

非可逆コーデックで圧縮する場合、無音を追加するだけでは簡単ではないデジタル形式になります。ZIPファイルにデータを追加して、ファイルの最後にnullバイトを追加することを考えてください。それらをZIPファイルに任意に挿入するほど簡単ではありません。

圧縮ファイルに無音を追加する場合は、適切なコーデックを使用して追加する必要があります。次に、それをビットストリームに適合させる必要がありますが、これも簡単ではありません。通常、ストリームはフレームごとに分割されますが、一部の形式ではそれらのフレームに分割することもできません。MP3とAACはビットリザーバーを使用しており、前のフレームの未使用データを使用して、後でより複雑なフレームをエンコードできるため、ファイルの分割が非常に困難になります。

于 2012-11-26T15:01:15.733 に答える