新增pcm转711方法
This commit is contained in:
parent
535d274c6e
commit
143ccd69bd
@ -33,4 +33,37 @@ class G711Decoder {
|
|||||||
|
|
||||||
return Uint8List.fromList(g711Data);
|
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