SInt16バッファに保存されているモノラル16ビットPCMオーディオサンプルに署名しましたが、UInt8バッファに保存されている署名されていないモノラル8ビットPCMサンプルに変換しようとしています。私は次の基本的に機能するコードを書きました:
for (int i=0; i < numSamples; i++) {
SInt8 tempSigned8Bit = signed16BitBuffer[i]/127; // In 2 passes
unsigned8BitBuffer[i] = tempSigned8Bit + 127; // for clarity
}
ただし、結果として得られるオーディオの最大振幅でクリッピングが聞こえるか、少なくともそれが歪みが発生している場所の印象です。これは再量子化のアーティファクトですか、それとも同様の変換についてこの質問で説明されているように、符号変換なしで何らかのクランプを含める必要がありますか?
ビット単位の最適化は不要ですが、私は確かにそれらにノーとは言いません。