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

📄 g726_8cpp-source.html

📁 Tixys source code, include G.711, G.726, IMA-ADPCM etc.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<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&amp; 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&amp; 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>&amp; SE,<span class="keywordtype">int</span>&amp; SEZ)01002     {01003     <span class="keywordtype">int</span> WBn[6];01004     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt;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>&amp; SR,<span class="keywordtype">int</span>&amp; 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&lt;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&gt;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&amp; 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&amp; 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>&amp;)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&amp; 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>&amp; 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>&amp; 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 &gt;&gt;= 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 + -