⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 g711_8cpp-source.html

📁 这个是关于G.726算法的源程序
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<a name="l00151"></a>00151     }<a name="l00152"></a>00152 <a name="l00153"></a>00153 <a name="l00154"></a><a class="code" href="classG711.html#e3">00154</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <span class="keywordtype">int</span> <a class="code" href="classG711.html#e3">G711::ULawDecode</a>(<a class="code" href="group__integers.html#ga0">uint8</a> ulaw)<a name="l00155"></a>00155     {<a name="l00156"></a>00156     ulaw ^= 0xff;  <span class="comment">// u-law has all bits inverted for transmission</span><a name="l00157"></a>00157 <a name="l00158"></a>00158     <span class="keywordtype">int</span> linear = ulaw&amp;0x0f;<a name="l00159"></a>00159     linear &lt;&lt;= 3;<a name="l00160"></a>00160     linear |= 0x84;  <span class="comment">// Set MSB (0x80) and a 'half' bit (0x04) to place PCM value in middle of range</span><a name="l00161"></a>00161 <a name="l00162"></a>00162     <a class="code" href="group__integers.html#ga6">uint</a> shift = ulaw&gt;&gt;4;<a name="l00163"></a>00163     shift &amp;= 7;<a name="l00164"></a>00164     linear &lt;&lt;= shift;<a name="l00165"></a>00165 <a name="l00166"></a>00166     linear -= 0x84; <span class="comment">// Subract uLaw bias</span><a name="l00167"></a>00167     <a name="l00168"></a>00168     <span class="keywordflow">if</span>(ulaw&amp;0x80)<a name="l00169"></a>00169         <span class="keywordflow">return</span> -linear;<a name="l00170"></a>00170     <span class="keywordflow">else</span><a name="l00171"></a>00171         <span class="keywordflow">return</span> linear;<a name="l00172"></a>00172     }<a name="l00173"></a>00173 <a name="l00174"></a>00174 <a name="l00175"></a><a class="code" href="classG711.html#e4">00175</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga0">uint8</a> <a class="code" href="classG711.html#e4">G711::ALawToULaw</a>(<a class="code" href="group__integers.html#ga0">uint8</a> alaw)<a name="l00176"></a>00176     {<a name="l00177"></a>00177     <a class="code" href="group__integers.html#ga0">uint8</a> sign=alaw&amp;0x80;<a name="l00178"></a>00178     alaw ^= sign;<a name="l00179"></a>00179     alaw ^= 0x55;<a name="l00180"></a>00180     <a class="code" href="group__integers.html#ga6">uint</a> ulaw;<a name="l00181"></a>00181     <span class="keywordflow">if</span>(alaw&lt;45)<a name="l00182"></a>00182         {<a name="l00183"></a>00183         <span class="keywordflow">if</span>(alaw&lt;24)<a name="l00184"></a>00184             ulaw = (alaw&lt;8) ? (alaw&lt;&lt;1)+1 : alaw+8;<a name="l00185"></a>00185         <span class="keywordflow">else</span><a name="l00186"></a>00186             ulaw = (alaw&lt;32) ? (alaw&gt;&gt;1)+20 : alaw+4;<a name="l00187"></a>00187         }<a name="l00188"></a>00188     <span class="keywordflow">else</span><a name="l00189"></a>00189         {<a name="l00190"></a>00190         <span class="keywordflow">if</span>(alaw&lt;63)<a name="l00191"></a>00191             ulaw = (alaw&lt;47) ? alaw+3 : alaw+2;<a name="l00192"></a>00192         <span class="keywordflow">else</span><a name="l00193"></a>00193             ulaw = (alaw&lt;79) ? alaw+1 : alaw;<a name="l00194"></a>00194         }<a name="l00195"></a>00195     ulaw ^= sign;<a name="l00196"></a>00196     <span class="keywordflow">return</span> ulaw^0x7f;<a name="l00197"></a>00197     }<a name="l00198"></a>00198 <a name="l00199"></a>00199 <a name="l00200"></a><a class="code" href="classG711.html#e5">00200</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga0">uint8</a> <a class="code" href="classG711.html#e5">G711::ULawToALaw</a>(<a class="code" href="group__integers.html#ga0">uint8</a> ulaw)<a name="l00201"></a>00201     {<a name="l00202"></a>00202     <a class="code" href="group__integers.html#ga0">uint8</a> sign=ulaw&amp;0x80;<a name="l00203"></a>00203     ulaw ^= sign;<a name="l00204"></a>00204     ulaw ^= 0x7f;<a name="l00205"></a>00205     <a class="code" href="group__integers.html#ga6">uint</a> alaw;<a name="l00206"></a>00206     <span class="keywordflow">if</span>(ulaw&lt;48)<a name="l00207"></a>00207         {<a name="l00208"></a>00208         <span class="keywordflow">if</span>(ulaw&lt;=32)<a name="l00209"></a>00209             alaw = (ulaw&lt;=15) ? ulaw&gt;&gt;1 : ulaw-8;<a name="l00210"></a>00210         <span class="keywordflow">else</span><a name="l00211"></a>00211             alaw = (ulaw&lt;=35) ? (ulaw&lt;&lt;1)-40 : ulaw-4;<a name="l00212"></a>00212         }<a name="l00213"></a>00213     <span class="keywordflow">else</span><a name="l00214"></a>00214         {<a name="l00215"></a>00215         <span class="keywordflow">if</span>(ulaw&lt;=63)<a name="l00216"></a>00216             alaw = (ulaw==48) ? ulaw-3 : ulaw-2;<a name="l00217"></a>00217         <span class="keywordflow">else</span><a name="l00218"></a>00218             alaw = (ulaw&lt;=79) ? ulaw-1 : ulaw;<a name="l00219"></a>00219         }<a name="l00220"></a>00220     alaw ^= sign;<a name="l00221"></a>00221     <span class="keywordflow">return</span> alaw^0x55;<a name="l00222"></a>00222     }<a name="l00223"></a>00223 <a name="l00224"></a>00224 <a name="l00225"></a><a class="code" href="classG711.html#e6">00225</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG711.html#e0">G711::ALawEncode</a>(<a class="code" href="group__integers.html#ga0">uint8</a>* dst, <a class="code" href="group__integers.html#ga4">int16</a>* src, <a class="code" href="group__integers.html#ga6">uint</a> srcSize)<a name="l00226"></a>00226     {<a name="l00227"></a>00227     srcSize &gt;&gt;= 1;<a name="l00228"></a>00228     <a class="code" href="group__integers.html#ga0">uint8</a>* end = dst+srcSize;<a name="l00229"></a>00229     <span class="keywordflow">while</span>(dst&lt;end)<a name="l00230"></a>00230         *dst++ = <a class="code" href="classG711.html#e0">ALawEncode</a>(*src++);<a name="l00231"></a>00231     <span class="keywordflow">return</span> srcSize;<a name="l00232"></a>00232     }<a name="l00233"></a>00233 <a name="l00234"></a>00234 <a name="l00235"></a><a class="code" href="classG711.html#e7">00235</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG711.html#e1">G711::ALawDecode</a>(<a class="code" href="group__integers.html#ga4">int16</a>* dst, <span class="keyword">const</span> <a class="code" href="group__integers.html#ga0">uint8</a>* src, <a class="code" href="group__integers.html#ga6">uint</a> srcSize)<a name="l00236"></a>00236     {<a name="l00237"></a>00237     <a class="code" href="group__integers.html#ga4">int16</a>* end = dst+srcSize;<a name="l00238"></a>00238     <span class="keywordflow">while</span>(dst&lt;end)<a name="l00239"></a>00239         *dst++ = <a class="code" href="classG711.html#e1">ALawDecode</a>(*src++);<a name="l00240"></a>00240     <span class="keywordflow">return</span> srcSize&lt;&lt;1;<a name="l00241"></a>00241     }<a name="l00242"></a>00242 <a name="l00243"></a>00243 <a name="l00244"></a><a class="code" href="classG711.html#e8">00244</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG711.html#e2">G711::ULawEncode</a>(<a class="code" href="group__integers.html#ga0">uint8</a>* dst, <a class="code" href="group__integers.html#ga4">int16</a>* src, <a class="code" href="group__integers.html#ga6">uint</a> srcSize)<a name="l00245"></a>00245     {<a name="l00246"></a>00246     srcSize &gt;&gt;= 1;<a name="l00247"></a>00247     <a class="code" href="group__integers.html#ga0">uint8</a>* end = dst+srcSize;<a name="l00248"></a>00248     <span class="keywordflow">while</span>(dst&lt;end)<a name="l00249"></a>00249         *dst++ = <a class="code" href="classG711.html#e2">ULawEncode</a>(*src++);<a name="l00250"></a>00250     <span class="keywordflow">return</span> srcSize;<a name="l00251"></a>00251     }<a name="l00252"></a>00252 <a name="l00253"></a>00253 <a name="l00254"></a><a class="code" href="classG711.html#e9">00254</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG711.html#e3">G711::ULawDecode</a>(<a class="code" href="group__integers.html#ga4">int16</a>* dst, <span class="keyword">const</span> <a class="code" href="group__integers.html#ga0">uint8</a>* src, <a class="code" href="group__integers.html#ga6">uint</a> srcSize)<a name="l00255"></a>00255     {<a name="l00256"></a>00256     <a class="code" href="group__integers.html#ga4">int16</a>* end = dst+srcSize;<a name="l00257"></a>00257     <span class="keywordflow">while</span>(dst&lt;end)<a name="l00258"></a>00258         *dst++ = <a class="code" href="classG711.html#e3">ULawDecode</a>(*src++);<a name="l00259"></a>00259     <span class="keywordflow">return</span> srcSize&lt;&lt;1;<a name="l00260"></a>00260     }<a name="l00261"></a>00261 <a name="l00262"></a>00262 <a name="l00263"></a><a class="code" href="classG711.html#e10">00263</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG711.html#e4">G711::ALawToULaw</a>(<a class="code" href="group__integers.html#ga0">uint8</a>* dst, <span class="keyword">const</span> <a class="code" href="group__integers.html#ga0">uint8</a>* src, <a class="code" href="group__integers.html#ga6">uint</a> srcSize)<a name="l00264"></a>00264     {<a name="l00265"></a>00265     <a class="code" href="group__integers.html#ga0">uint8</a>* end = dst+srcSize;<a name="l00266"></a>00266     <span class="keywordflow">while</span>(dst&lt;end)<a name="l00267"></a>00267         *dst++ = <a class="code" href="classG711.html#e4">ALawToULaw</a>(*src++);<a name="l00268"></a>00268     <span class="keywordflow">return</span> srcSize;<a name="l00269"></a>00269     }<a name="l00270"></a>00270 <a name="l00271"></a>00271 <a name="l00272"></a><a class="code" href="classG711.html#e11">00272</a> <a class="code" href="common_8h.html#a2">EXPORT</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG711.html#e5">G711::ULawToALaw</a>(<a class="code" href="group__integers.html#ga0">uint8</a>* dst, <span class="keyword">const</span> <a class="code" href="group__integers.html#ga0">uint8</a>* src, <a class="code" href="group__integers.html#ga6">uint</a> srcSize)<a name="l00273"></a>00273     {<a name="l00274"></a>00274     <a class="code" href="group__integers.html#ga0">uint8</a>* end = dst+srcSize;<a name="l00275"></a>00275     <span class="keywordflow">while</span>(dst&lt;end)<a name="l00276"></a>00276         *dst++ = <a class="code" href="classG711.html#e5">ULawToALaw</a>(*src++);<a name="l00277"></a>00277     <span class="keywordflow">return</span> srcSize;<a name="l00278"></a>00278     }</pre></div><HR><ADDRESS STYLE="align: right;"><SMALL>Generated by&nbsp; <A HREF="http://www.doxygen.org/index.html"><IMG SRC="doxygen.png" ALT="doxygen" ALIGN="middle" BORDER="0"></A> 1.4.4</SMALL></ADDRESS></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -