新增pcm转711方法

This commit is contained in:
Daisy 2023-12-21 17:41:06 +08:00
parent 535d274c6e
commit 143ccd69bd

View File

@ -33,4 +33,37 @@ class G711Decoder {
return Uint8List.fromList(g711Data);
}
List<int> pcm16ToG711u(List<int> pcm16Data) {
List<int> g711uData = [];
for (int i = 0; i < pcm16Data.length; i += 2) {
int pcmSample = (pcm16Data[i + 1] << 8) | pcm16Data[i];
int g711Sample = pcmToG711u(pcmSample);
// G.711
g711uData.add(g711Sample & 0xFF);
g711uData.add((g711Sample >> 8) & 0xFF);
}
return g711uData;
}
int pcmToG711u(int pcmSample) {
const int MULAW_BIAS = 0x84;
const int CLIP = 32635;
// PCM
if (pcmSample > CLIP) {
pcmSample = CLIP;
} else if (pcmSample < -CLIP) {
pcmSample = -CLIP;
}
//
pcmSample += MULAW_BIAS;
pcmSample = ~pcmSample & 0xFF;
return pcmSample;
}
}