g726_8cpp-source.html

来自「Tixys source code, include G.711, G.726,」· HTML 代码 · 共 937 行 · 第 1/5 页

HTML
937
字号
00716     <a class="code" href="group__g726__section4m.html#ga0">CHECK_SM</a>(DQ,16);00717     <span class="keywordtype">int</span> UGBn;00718     <span class="keywordflow">if</span>(DQ&amp;32767)00719         UGBn = Un ? -128 : 128;00720     <span class="keywordflow">else</span>00721         UGBn = 0;00722     <span class="keywordtype">int</span> ULBn = (RATE==5) ? Bn&gt;&gt;9 : Bn&gt;&gt;8;00723     BnP = (<a class="code" href="group__integers.html#ga4">int16</a>)(Bn+UGBn-ULBn);00724     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(BnP,16);00725     }00726 00727 <a name="l00731"></a><a class="code" href="group__g726__section4.html#ga33">00731</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4.html#ga33">XOR</a>(uint DQn,uint DQ,<span class="keywordtype">int</span>&amp; Un)00732     {00733     <a class="code" href="group__g726__section4m.html#ga3">CHECK_FL</a>(DQn,11);00734     <a class="code" href="group__g726__section4m.html#ga0">CHECK_SM</a>(DQ,16);00735     Un = -(int)((DQn&gt;&gt;10)^(DQ&gt;&gt;15));00736     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(Un,1);00737     }00738 00739 <a name="l00743"></a><a class="code" href="group__g726__section4.html#ga34">00743</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4.html#ga34">TONE</a>(<span class="keywordtype">int</span> A2P,uint&amp; TDP)00744     {00745     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(A2P,16);00746     TDP = A2P&lt;(53760-65536);00747     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(TDP,1);00748     }00749 00750 <a name="l00754"></a><a class="code" href="group__g726__section4.html#ga35">00754</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4.html#ga35">TRANS</a>(uint TD,uint YL,uint DQ,uint&amp; TR)00755     {00756     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(TD,1);00757     <a class="code" href="group__g726__section4m.html#ga1">CHECK_UM</a>(YL,19);00758     <a class="code" href="group__g726__section4m.html#ga0">CHECK_SM</a>(DQ,16);00759     <a class="code" href="group__integers.html#ga6">uint</a> DQMAG = DQ&amp;32767;00760     <a class="code" href="group__integers.html#ga6">uint</a> YLINT = YL&gt;&gt;15;00761     <a class="code" href="group__integers.html#ga6">uint</a> YLFRAC = (YL&gt;&gt;10) &amp; 31;00762     <a class="code" href="group__integers.html#ga6">uint</a> THR1 = (32+YLFRAC)&lt;&lt;YLINT;00763     <a class="code" href="group__integers.html#ga6">uint</a> THR2;00764     <span class="keywordflow">if</span>(YLINT&gt;9)00765         THR2 = 31&lt;&lt;10;00766     <span class="keywordflow">else</span>00767         THR2 = THR1;00768     <a class="code" href="group__integers.html#ga6">uint</a> DQTHR = (THR2+(THR2&gt;&gt;1)) &gt;&gt; 1;00769     TR = DQMAG&gt;DQTHR &amp;&amp; TD;00770     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(TR,1);00771     }00772 00773 <a name="l00777"></a><a class="code" href="group__g726__section4.html#ga36">00777</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4.html#ga36">COMPRESS</a>(<span class="keywordtype">int</span> SR,uint LAW,uint&amp; SP)00778     {00779     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(SR,16);00780     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(LAW,1);00781     <span class="keywordtype">int</span> x = SR;00782 00783 <span class="preprocessor">#ifdef IMPLEMENT_G191_BUGS</span>00784 <span class="preprocessor"></span>    <span class="comment">// reproduce bugs in G191 reference implementation...</span>00785     <span class="keywordflow">if</span>(x==-0x8000)00786         x=-1; 00787     <span class="keywordflow">else</span>00788         <span class="keywordflow">if</span>(!LAW &amp;&amp; x&lt;0) x--;00789 <span class="preprocessor">#endif</span>00790 <span class="preprocessor"></span>00791     <span class="comment">// Clamp to 14 bits...</span>00792     <span class="keywordflow">if</span>(x&gt;=(1&lt;&lt;13))00793         x = (1&lt;&lt;13)-1;00794     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(x&lt;-(1&lt;&lt;13))00795         x = -(1&lt;&lt;13);00796 00797     <span class="keywordflow">if</span>(LAW)00798         SP = <a class="code" href="classG711.html#e0">G711::ALawEncode</a>(x&lt;&lt;2);00799     <span class="keywordflow">else</span>00800         SP = <a class="code" href="classG711.html#e2">G711::ULawEncode</a>(x&lt;&lt;2);00801 00802     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(SP,8);00803     }00804 00805 <a name="l00809"></a><a class="code" href="group__g726__section4.html#ga37">00809</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4.html#ga37">SYNC</a>(uint RATE,uint I,uint SP,<span class="keywordtype">int</span> DLNX,<span class="keywordtype">int</span> DSX,uint LAW,uint&amp; SD)00810     {00811     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(SP,8);00812     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(DLNX,12);00813     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(DSX,1);00814     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(LAW,1);00815 00816     <a class="code" href="group__integers.html#ga6">uint</a> ID;00817     <a class="code" href="group__integers.html#ga6">uint</a> IM;00818     <a class="code" href="group__g726__section4.html#ga3">QUAN</a>(RATE,DLNX,DSX,ID);00819     <a class="code" href="group__integers.html#ga6">uint</a> signMask = 1&lt;&lt;(RATE-1);00820     ID = ID^signMask;00821     IM = I^signMask;00822 00823     <a class="code" href="group__integers.html#ga6">uint</a> s;00824     <span class="keywordflow">if</span>(LAW)00825         {00826         s = SP^0x55;00827         <span class="keywordflow">if</span>(!(s&amp;0x80))00828             s = s^0x7f;00829         }00830     <span class="keywordflow">else</span>00831         {00832         s = SP;00833         <span class="keywordflow">if</span>(s&amp;0x80)00834             s = s^0x7f;00835         }00836     <span class="comment">// s = ALAW/uLAW code converted to range 0x00..0xff</span>00837     <span class="comment">// where 0x00 is most-negative and 0xff is most-positive</span>00838 00839     <span class="keywordflow">if</span>(ID&lt;IM)00840         {00841         <span class="keywordflow">if</span>(s&lt;0xff)00842             ++s;00843         }00844     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ID&gt;IM)00845         {00846         <span class="keywordflow">if</span>(s&gt;0x00)00847             {00848             --s;00849             <span class="keywordflow">if</span>(s==0x7f &amp;&amp; !LAW) --s; <span class="comment">// TABLE 20/G.726 says uLaw 0xFF decrements to 0x7e and not 0x7f (!?)</span>00850             }00851         }00852 00853     <span class="comment">// convert s back to ALAW/uLAW code</span>00854     <span class="keywordflow">if</span>(LAW)00855         {00856         <span class="keywordflow">if</span>(!(s&amp;0x80))00857             s = s^0x7f;00858         s = s^0x55;00859         }00860     <span class="keywordflow">else</span>00861         {00862         <span class="keywordflow">if</span>(s&amp;0x80)00863             s = s^0x7f;00864         }00865     SD = s;00866     <a class="code" href="group__g726__section4m.html#ga4">CHECK_UNSIGNED</a>(SD,8);00867     }00868 00869 <a name="l00873"></a><a class="code" href="group__g726__section4.html#ga38">00873</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4.html#ga38">LIMO</a>(<span class="keywordtype">int</span> SR,<span class="keywordtype">int</span>&amp; SO)00874     {00875     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(SR,16);00876     <span class="keywordflow">if</span>(SR&gt;=(1&lt;&lt;13))00877         SO = (1&lt;&lt;13)-1;00878     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SR&lt;-(1&lt;&lt;13))00879         SO = -(1&lt;&lt;13);00880     <span class="keywordflow">else</span>00881         SO = SR;00882     <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(SO,14);00883     }00884 00885  <span class="comment">// End of group</span>00887 00888 <a name="l00901"></a><a class="code" href="group__g726__section4B.html#ga0">00901</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga0">G726::InputPCMFormatConversionAndDifferenceSignalComputation</a>(uint S,<span class="keywordtype">int</span> SE,<span class="keywordtype">int</span>&amp; D)00902     {00903     <span class="keywordtype">int</span> SL;00904     <a class="code" href="group__g726__section4.html#ga0">EXPAND</a>(S,LAW,SL);00905     <a class="code" href="group__g726__section4.html#ga1">SUBTA</a>(SL,SE,D);00906     }00907 00908 <a name="l00912"></a><a class="code" href="group__g726__section4B.html#ga1">00912</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga1">G726::AdaptiveQuantizer</a>(<span class="keywordtype">int</span> D,uint Y,uint&amp; I)00913     {00914     <a class="code" href="group__integers.html#ga6">uint</a> DL;00915     <span class="keywordtype">int</span> DS;00916     <a class="code" href="group__g726__section4.html#ga2">LOG</a>(D,DL,DS);00917 00918     <span class="keywordtype">int</span> DLN;00919     <a class="code" href="group__g726__section4.html#ga4">SUBTB</a>(DL,Y,DLN);00920 00921     <a class="code" href="group__g726__section4.html#ga3">QUAN</a>(RATE,DLN,DS,I);00922     }00923 00924 <a name="l00928"></a><a class="code" href="group__g726__section4B.html#ga2">00928</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga2">G726::InverseAdaptiveQuantizer</a>(uint I,uint Y,uint&amp; DQ)00929     {00930     <span class="keywordtype">int</span> DQLN;00931     <span class="keywordtype">int</span> DQS;00932     <a class="code" href="group__g726__section4.html#ga7">RECONST</a>(RATE,I,DQLN,DQS);00933 00934     <span class="keywordtype">int</span> DQL;00935     <a class="code" href="group__g726__section4.html#ga5">ADDA</a>(DQLN,Y,DQL);00936 00937     <a class="code" href="group__g726__section4.html#ga6">ANTILOG</a>(DQL,DQS,DQ);00938     }00939 00940 

⌨️ 快捷键说明

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