📄 g726_8cpp-source.html
字号:
<a name="l00944"></a><a class="code" href="group__g726__section4B.html#ga3">00944</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga3">G726::QuantizerScaleFactorAdaptation1</a>(uint AL,uint& Y)00945 {00946 <a class="code" href="group__g726__section4.html#ga12">MIX</a>(AL,YU,YL,Y);00947 }<a name="l00951"></a><a class="code" href="group__g726__section4B.html#ga4">00951</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga4">G726::QuantizerScaleFactorAdaptation2</a>(uint I,uint Y)00952 {00953 <span class="keywordtype">int</span> WI;00954 <a class="code" href="group__g726__section4.html#ga10">FUNCTW</a>(RATE,I,WI);00955 00956 <a class="code" href="group__integers.html#ga6">uint</a> YUT;00957 <a class="code" href="group__g726__section4.html#ga8">FILTD</a>(WI,Y,YUT);00958 00959 <a class="code" href="group__integers.html#ga6">uint</a> YUP;00960 <a class="code" href="group__g726__section4.html#ga11">LIMB</a>(YUT,YUP);00961 00962 <a class="code" href="group__integers.html#ga6">uint</a> YLP;00963 <a class="code" href="group__g726__section4.html#ga9">FILTE</a>(YUP,YL,YLP);00964 00965 YU = YUP; <span class="comment">// Delay</span>00966 YL = YLP; <span class="comment">// Delay</span>00967 }00968 00969 <a name="l00973"></a><a class="code" href="group__g726__section4B.html#ga5">00973</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga5">G726::AdaptationSpeedControl1</a>(uint& AL)00974 {00975 <a class="code" href="group__g726__section4.html#ga17">LIMA</a>(AP,AL);00976 }<a name="l00980"></a><a class="code" href="group__g726__section4B.html#ga6">00980</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga6">G726::AdaptationSpeedControl2</a>(uint I,uint Y,uint TDP,uint TR)00981 {00982 <a class="code" href="group__integers.html#ga6">uint</a> FI;00983 <a class="code" href="group__g726__section4.html#ga16">FUNCTF</a>(RATE,I,FI);00984 00985 <a class="code" href="group__g726__section4.html#ga13">FILTA</a>(FI,DMS,DMS); <span class="comment">// Result 'DMSP' straight to delay storage 'DMS'</span>00986 <a class="code" href="group__g726__section4.html#ga14">FILTB</a>(FI,DML,DML); <span class="comment">// Result 'DMSP' straight to delay storage 'DMS'</span>00987 00988 <a class="code" href="group__integers.html#ga6">uint</a> AX;00989 <a class="code" href="group__g726__section4.html#ga18">SUBTC</a>(DMS,DML,TDP,Y,AX); <span class="comment">// DMSP and DMLP are read from delay storage 'DMS' and 'DML'</span>00990 00991 <a class="code" href="group__integers.html#ga6">uint</a> APP;00992 <a class="code" href="group__g726__section4.html#ga15">FILTC</a>(AX,AP,APP);00993 00994 <a class="code" href="group__g726__section4.html#ga19">TRIGA</a>(TR,APP,AP); <span class="comment">// Result 'APR' straight to delay storage 'AP'</span>00995 }00996 00997 <a name="l01001"></a><a class="code" href="group__g726__section4B.html#ga7">01001</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga7">G726::AdaptativePredictorAndReconstructedSignalCalculator1</a>(<span class="keywordtype">int</span>& SE,<span class="keywordtype">int</span>& SEZ)01002 {01003 <span class="keywordtype">int</span> WBn[6];01004 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i<6; i++)01005 <a class="code" href="group__g726__section4.html#ga26">FMULT</a>(Bn[i],DQn[i],WBn[i]);01006 <span class="keywordtype">int</span> WAn[2];01007 <a class="code" href="group__g726__section4.html#ga26">FMULT</a>(A1,SR1,WAn[0]);01008 <a class="code" href="group__g726__section4.html#ga26">FMULT</a>(A2,SR2,WAn[1]);01009 <a class="code" href="group__g726__section4.html#ga20">ACCUM</a>(WAn,WBn,SE,SEZ);01010 }<a name="l01014"></a><a class="code" href="group__g726__section4B.html#ga8">01014</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga8">G726::AdaptativePredictorAndReconstructedSignalCalculator2</a>(uint DQ,uint TR,<span class="keywordtype">int</span> SE,<span class="keywordtype">int</span> SEZ,<span class="keywordtype">int</span>& SR,<span class="keywordtype">int</span>& A2P)01015 {01016 <span class="keywordtype">int</span> PK0;01017 <a class="code" href="group__integers.html#ga6">uint</a> SIGPK;01018 <a class="code" href="group__g726__section4.html#ga22">ADDC</a>(DQ,SEZ,PK0,SIGPK);01019 01020 <a class="code" href="group__g726__section4.html#ga21">ADDB</a>(DQ,SE,SR);01021 SR2 = SR1; <span class="comment">// Delay</span>01022 <a class="code" href="group__g726__section4.html#ga25">FLOATB</a>(SR,SR1); <span class="comment">// Result 'SR0' straight to delay storage 'SR1'</span>01023 01024 <a class="code" href="group__integers.html#ga6">uint</a> DQ0;01025 <a class="code" href="group__g726__section4.html#ga24">FLOATA</a>(DQ,DQ0);01026 01027 <span class="keywordtype">int</span> i;01028 <span class="keywordflow">for</span>(i=0; i<6; i++)01029 {01030 <span class="keywordtype">int</span> Un;01031 <a class="code" href="group__g726__section4.html#ga33">XOR</a>(DQn[i],DQ,Un);01032 <span class="keywordtype">int</span> BnP;01033 <a class="code" href="group__g726__section4.html#ga32">UPB</a>(RATE,Un,Bn[i],DQ,BnP);01034 <a class="code" href="group__g726__section4.html#ga29">TRIGB</a>(TR,BnP,Bn[i]); <span class="comment">// Result 'BnR' straight to delay storage 'Bn'</span>01035 }01036 01037 <span class="keywordtype">int</span> A2T;01038 <a class="code" href="group__g726__section4.html#ga31">UPA2</a>(PK0,PK1,PK2,A1,A2,SIGPK,A2T);01039 <a class="code" href="group__g726__section4.html#ga27">LIMC</a>(A2T,A2P);01040 <a class="code" href="group__g726__section4.html#ga29">TRIGB</a>(TR,A2P,A2); <span class="comment">// Result 'A2R' straight to delay storage 'A2'</span>01041 01042 <span class="keywordtype">int</span> A1T;01043 <a class="code" href="group__g726__section4.html#ga30">UPA1</a>(PK0,PK1,A1,SIGPK,A1T);01044 <span class="keywordtype">int</span> A1P;01045 <a class="code" href="group__g726__section4.html#ga28">LIMD</a>(A1T,A2P,A1P);01046 <a class="code" href="group__g726__section4.html#ga29">TRIGB</a>(TR,A1P,A1); <span class="comment">// Result 'A1R' straight to delay storage 'A1'</span>01047 01048 PK2 = PK1; <span class="comment">// Delay</span>01049 PK1 = PK0; <span class="comment">// Delay</span>01050 01051 <span class="keywordflow">for</span>(i=5; i>0; i--)01052 DQn[i] = DQn[i-1]; <span class="comment">// Delay</span>01053 DQn[0] = DQ0; <span class="comment">// Delay</span>01054 }01055 01056 <a name="l01060"></a><a class="code" href="group__g726__section4B.html#ga9">01060</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga9">G726::ToneAndTransitionDetector1</a>(uint DQ,uint& TR)01061 {01062 <a class="code" href="group__g726__section4.html#ga35">TRANS</a>(TD,YL,DQ,TR);01063 }<a name="l01067"></a><a class="code" href="group__g726__section4B.html#ga10">01067</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga10">G726::ToneAndTransitionDetector2</a>(<span class="keywordtype">int</span> A2P,uint TR,uint& TDP)01068 {01069 <a class="code" href="group__g726__section4.html#ga34">TONE</a>(A2P,TDP);01070 <a class="code" href="group__g726__section4.html#ga29">TRIGB</a>(TR,TDP,(<span class="keywordtype">int</span>&)TD); <span class="comment">// Result 'TDR' straight to delay storage 'TD'</span>01071 }01072 01073 <a name="l01077"></a><a class="code" href="group__g726__section4B.html#ga11">01077</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga11">G726::OutputPCMFormatConversionAndSynchronousCodingAdjustment</a>(<span class="keywordtype">int</span> SR,<span class="keywordtype">int</span> SE,uint Y,uint I,uint& SD)01078 {01079 <a class="code" href="group__integers.html#ga6">uint</a> SP;01080 <a class="code" href="group__g726__section4.html#ga36">COMPRESS</a>(SR,LAW,SP);01081 <span class="keywordtype">int</span> SLX;01082 <a class="code" href="group__g726__section4.html#ga0">EXPAND</a>(SP,LAW,SLX);01083 <span class="keywordtype">int</span> DX;01084 <a class="code" href="group__g726__section4.html#ga1">SUBTA</a>(SLX,SE,DX);01085 <a class="code" href="group__integers.html#ga6">uint</a> DLX;01086 <span class="keywordtype">int</span> DSX;01087 <a class="code" href="group__g726__section4.html#ga2">LOG</a>(DX,DLX,DSX);01088 <span class="keywordtype">int</span> DLNX;01089 <a class="code" href="group__g726__section4.html#ga4">SUBTB</a>(DLX,Y,DLNX);01090 <a class="code" href="group__g726__section4.html#ga37">SYNC</a>(RATE,I,SP,DLNX,DSX,LAW,SD);01091 }01092 01093 <a name="l01097"></a><a class="code" href="group__g726__section4B.html#ga12">01097</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga12">G726::DifferenceSignalComputation</a>(<span class="keywordtype">int</span> SL,<span class="keywordtype">int</span> SE,<span class="keywordtype">int</span>& D)01098 {01099 <a class="code" href="group__g726__section4.html#ga1">SUBTA</a>(SL,SE,D);01100 }01101 01102 <a name="l01106"></a><a class="code" href="group__g726__section4B.html#ga13">01106</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__g726__section4B.html#ga13">G726::OutputLimiting</a>(<span class="keywordtype">int</span> SR,<span class="keywordtype">int</span>& SO)01107 {01108 <a class="code" href="group__g726__section4.html#ga38">LIMO</a>(SR,SO);01109 }01110 01111 <span class="comment">// End of group</span>01113 01114 <a name="l01123"></a><a class="code" href="classG726.html#d14">01123</a> <a class="code" href="group__integers.html#ga6">uint</a> <a class="code" href="classG726.html#d14">G726::EncodeDecode</a>(uint input,<span class="keywordtype">bool</span> encode)01124 {01125 <a class="code" href="group__integers.html#ga6">uint</a> AL;01126 <a class="code" href="group__g726__section4B.html#ga5">AdaptationSpeedControl1</a>(AL);01127 <a class="code" href="group__integers.html#ga6">uint</a> Y;01128 <a class="code" href="group__g726__section4B.html#ga3">QuantizerScaleFactorAdaptation1</a>(AL,Y);01129 <span class="keywordtype">int</span> SE;01130 <span class="keywordtype">int</span> SEZ;01131 <a class="code" href="group__g726__section4B.html#ga7">AdaptativePredictorAndReconstructedSignalCalculator1</a>(SE,SEZ);01132 01133 <a class="code" href="group__integers.html#ga6">uint</a> I;01134 <span class="keywordflow">if</span>(encode)01135 {01136 <span class="keywordtype">int</span> D;01137 <span class="keywordflow">if</span>(LAW==<a class="code" href="classG726.html#w7w2">G726::PCM16</a>)01138 {01139 <span class="keywordtype">int</span> SL = (<a class="code" href="group__integers.html#ga4">int16</a>)input;01140 SL >>= 2; <span class="comment">// Convert input from 16bit to 14bit</span>01141 <a class="code" href="group__g726__section4B.html#ga12">DifferenceSignalComputation</a>(SL,SE,D);01142 }01143 <span class="keywordflow">else</span>01144 <a class="code" href="group__g726__section4B.html#ga0">InputPCMFormatConversionAndDifferenceSignalComputation</a>(input,SE,D);01145 <a class="code" href="group__g726__section4B.html#ga1">AdaptiveQuantizer</a>(D,Y,I);01146 }01147 <span class="keywordflow">else</span>01148 I = input;01149 01150 <a class="code" href="group__integers.html#ga6">uint</a> DQ;01151 <a class="code" href="group__g726__section4B.html#ga2">InverseAdaptiveQuantizer</a>(I,Y,DQ);01152 <a class="code" href="group__integers.html#ga6">uint</a> TR;01153 <a class="code" href="group__g726__section4B.html#ga9">ToneAndTransitionDetector1</a>(DQ,TR);01154 <span class="keywordtype">int</span> SR;01155 <span class="keywordtype">int</span> A2P;01156 <a class="code" href="group__g726__section4B.html#ga8">AdaptativePredictorAndReconstructedSignalCalculator2</a>(DQ,TR,SE,SEZ,SR,A2P);01157 <a class="code" href="group__integers.html#ga6">uint</a> TDP;01158 <a class="code" href="group__g726__section4B.html#ga10">ToneAndTransitionDetector2</a>(A2P,TR,TDP);01159 <a class="code" href="group__g726__section4B.html#ga6">AdaptationSpeedControl2</a>(I,Y,TDP,TR);01160 <a class="code" href="group__g726__section4B.html#ga4">QuantizerScaleFactorAdaptation2</a>(I,Y);01161 01162 <span class="keywordflow">if</span>(encode)01163 <span class="keywordflow">return</span> I;01164 01165 <span class="keywordflow">if</span>(LAW==<a class="code" href="classG726.html#w7w2">G726::PCM16</a>)01166 {011
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -