首先大家得知道G711是什么?若使用度娘搜索会很多页面出来的,我就简单的介绍下:
G.711是一种由国际电信联盟(ITU-T)订定音频编码方式,又称为ITU-T G.711。
G.711使用64Kbps的带宽,可将14bits转换成8bits。目前G.711有两个编码方式:一种是u-law又称mu-law,第一种称PCMU,第二种称PCMA,如果带宽足够并且需要更好的语音质量,就使用
PCMU和
PCMA。
在监控行业,G711是被广泛使用的,所以编解码而言会经常用到的,现在我分享下一个开源代码,欢迎大家给更好的效率代码,使用上有疑问可以多多交流。
g711.cpp
#define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */
#define QUANT_MASK (0xf) /* Quantization field mask. */
#define NSEGS (8) /* Number of A-law segments. */
#define SEG_SHIFT (4) /* Left shift for segment number. */
#define SEG_MASK (0x70) /* Segment field mask. */
#define BIAS (0x84) /* Bias for linear code. */
static short seg_end[8] = {0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF};
/* copy from CCITT G.711 specifications */
unsigned char _u2a[128] = { /* u- to A-law conversions */
1, 1, 2, 2, 3, 3, 4, 4,
5, 5, 6, 6, 7, 7, 8, 8,
9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24,
25, 27, 29, 31, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44,
46, 48, 49, 50, 5