有谁知道u律压缩中的偏移量0x84是做什么用的?

[复制链接]
2327|0
 楼主| youcanh 发表于 2007-10-12 10:18 | 显示全部楼层 |阅读模式
se, PCM, pc, AN, ge
网上关于A律压缩的资料很多,但u律的就很少了,最近遇到一个问题就是u律的段落码、电平码该怎么计算阿?每个段落的量化间隔又怎么计算?为什么在进行u律压缩时要价0x84偏移量&nbsp;比如下面这段程序<br />#define&nbsp;&nbsp;&nbsp;&nbsp;BIAS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0x84)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Bias&nbsp;for&nbsp;linear&nbsp;code.&nbsp;*/<br />unsigned&nbsp;char<br />linear2ulaw(<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pcm_val)&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;2's&nbsp;complement&nbsp;(16-bit&nbsp;range)&nbsp;*/<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mask;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seg;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;uval;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Get&nbsp;the&nbsp;sign&nbsp;and&nbsp;the&nbsp;magnitude&nbsp;of&nbsp;the&nbsp;value.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(pcm_val&nbsp;&lt&nbsp;0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pcm_val&nbsp;=&nbsp;BIAS&nbsp;-&nbsp;pcm_val;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mask&nbsp;=&nbsp;0x7F;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pcm_val&nbsp;+=&nbsp;BIAS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mask&nbsp;=&nbsp;0xFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Convert&nbsp;the&nbsp;scaled&nbsp;magnitude&nbsp;to&nbsp;segment&nbsp;number.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;seg&nbsp;=&nbsp;search(pcm_val,&nbsp;seg_end,&nbsp;8);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Combine&nbsp;the&nbsp;sign,&nbsp;segment,&nbsp;quantization&nbsp;bits;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;and&nbsp;complement&nbsp;the&nbsp;code&nbsp;word.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(seg&nbsp;&gt=&nbsp;8)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;out&nbsp;of&nbsp;range,&nbsp;return&nbsp;maximum&nbsp;value.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(0x7F&nbsp;^&nbsp;mask);<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uval&nbsp;=&nbsp;(seg&nbsp;&lt&lt&nbsp;4)&nbsp;|&nbsp;((pcm_val&nbsp;&gt&gt&nbsp;(seg&nbsp;+&nbsp;3))&nbsp;&&nbsp;0xF);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(uval&nbsp;^&nbsp;mask);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br />有知道的告诉一声啊&nbsp;谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

57

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部