网上关于A律压缩的资料很多,但u律的就很少了,最近遇到一个问题就是u律的段落码、电平码该怎么计算阿?每个段落的量化间隔又怎么计算?为什么在进行u律压缩时要价0x84偏移量 比如下面这段程序<br />#define BIAS (0x84) /* Bias for linear code. */<br />unsigned char<br />linear2ulaw(<br /> int pcm_val) /* 2's complement (16-bit range) */<br />{<br /> int mask;<br /> int seg;<br /> unsigned char uval;<br /><br /> /* Get the sign and the magnitude of the value. */<br /> if (pcm_val < 0) {<br /> pcm_val = BIAS - pcm_val;<br /> mask = 0x7F;<br /> } else {<br /> pcm_val += BIAS;<br /> mask = 0xFF;<br /> }<br /><br /> /* Convert the scaled magnitude to segment number. */<br /> seg = search(pcm_val, seg_end, 8);<br /><br /> /*<br /> * Combine the sign, segment, quantization bits;<br /> * and complement the code word.<br /> */<br /> if (seg >= 8) /* out of range, return maximum value. */<br /> return (0x7F ^ mask);<br /> else {<br /> uval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0xF);<br /> return (uval ^ mask);<br /> }<br /><br />}<br />有知道的告诉一声啊 谢谢了 |
|