新增pcm转711方法
This commit is contained in:
parent
535d274c6e
commit
143ccd69bd
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user