首页 > 编程知识 正文

g71代码详细讲解,g711

时间:2023-05-03 18:54:09 阅读:45450 作者:6

虽然进行了几天语音对话,但广播中语音干扰太大。 拖延有两个理由:

1 .设定每个采样的位数这一值的问题。 本来使用的是16位的采样,但是服务端说要使用8。 编解码时总是产生8位噪声。

1.G711编解码问题:使用了错误的编解码程序。 现在使用的编解码器代码对8总是有噪声

把编解码器的代码放在这里,16的收集效果很好

//intcg 711 decoder :3360 g 711 _ encode (统一char * pcodecbits,常数char * pbuffer,int nBufferSize ) short * buffer inBufferSize/2; I ) { pcodecbits [ I ]=encode (buffer [ I ]; }返回Nbuffersize/2; //intcg 711 decoder :3360 g 711 _ decode (char * prawda ta,const unsigned char* pBuffer,int nBufferSize ) short*ouffer ) inBufferSize; I ) {out_data[I]=decode(pbuffer[I]; }返回nbuffersize * 2; }#definemax(32635 ) unsignedcharcg 711解码器:3360 encode (short PCM ) ) int sign=(PCM0x 8000 ) 8; if(sign!=0) pcm=-pcm; if(PCMmax ) pcm=MAX; int exponent=7; int exp掩码; for (exp掩码=0x 4000; (PCM exp掩码)==0 exponent0; exponent--、expmask=1({}intmantissa=) PCM((exponent==0) )? 4:(exponent3) )0x0f; unsignedcharalaw=(unsignedchar ) ) sign; 返回(不一致通道) ) alaw^0xD5 ); } short CG 711 decoder :3360 decode (unsignedcharalaw ) { alaw ^=0xD5; int sign=alaw0x80; intexponent=(alaw0x70 ) 4; int data=alaw0x0f; data=4; data =8; if(exponent!=0) data =0x100; if(exponent1) data=) exponent-1 ); 返回(短) ) sign==0? data : -data; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。