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&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>>9 : Bn>>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>& 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>>10)^(DQ>>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& TDP)00744 {00745 <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(A2P,16);00746 TDP = A2P<(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& 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&32767;00760 <a class="code" href="group__integers.html#ga6">uint</a> YLINT = YL>>15;00761 <a class="code" href="group__integers.html#ga6">uint</a> YLFRAC = (YL>>10) & 31;00762 <a class="code" href="group__integers.html#ga6">uint</a> THR1 = (32+YLFRAC)<<YLINT;00763 <a class="code" href="group__integers.html#ga6">uint</a> THR2;00764 <span class="keywordflow">if</span>(YLINT>9)00765 THR2 = 31<<10;00766 <span class="keywordflow">else</span>00767 THR2 = THR1;00768 <a class="code" href="group__integers.html#ga6">uint</a> DQTHR = (THR2+(THR2>>1)) >> 1;00769 TR = DQMAG>DQTHR && 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& 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 && x<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>=(1<<13))00793 x = (1<<13)-1;00794 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(x<-(1<<13))00795 x = -(1<<13);00796 00797 <span class="keywordflow">if</span>(LAW)00798 SP = <a class="code" href="classG711.html#e0">G711::ALawEncode</a>(x<<2);00799 <span class="keywordflow">else</span>00800 SP = <a class="code" href="classG711.html#e2">G711::ULawEncode</a>(x<<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& 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<<(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&0x80))00828 s = s^0x7f;00829 }00830 <span class="keywordflow">else</span>00831 {00832 s = SP;00833 <span class="keywordflow">if</span>(s&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<IM)00840 {00841 <span class="keywordflow">if</span>(s<0xff)00842 ++s;00843 }00844 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(ID>IM)00845 {00846 <span class="keywordflow">if</span>(s>0x00)00847 {00848 --s;00849 <span class="keywordflow">if</span>(s==0x7f && !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&0x80))00857 s = s^0x7f;00858 s = s^0x55;00859 }00860 <span class="keywordflow">else</span>00861 {00862 <span class="keywordflow">if</span>(s&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>& SO)00874 {00875 <a class="code" href="group__g726__section4m.html#ga2">CHECK_TC</a>(SR,16);00876 <span class="keywordflow">if</span>(SR>=(1<<13))00877 SO = (1<<13)-1;00878 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SR<-(1<<13))00879 SO = -(1<<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>& 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& 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& 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 + -
显示快捷键?