fix_8cpp-source.html
来自「这个是关于G.726算法的源程序」· HTML 代码 · 共 709 行 · 第 1/5 页
HTML
709 行
<a name="l00157"></a>00157 intBits += 8, q >>= 8;<a name="l00158"></a>00158 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)b<=((uint32)q>>4))<a name="l00159"></a>00159 intBits += 4, q >>= 4;<a name="l00160"></a>00160 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)b<=((uint32)q>>2))<a name="l00161"></a>00161 intBits += 2, q >>= 2;<a name="l00162"></a>00162 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)b<=((uint32)q>>1))<a name="l00163"></a>00163 intBits += 1, q >>= 1;<a name="l00164"></a>00164 <a name="l00165"></a>00165 <span class="preprocessor">#if 0 // set true to use loops rather than inline code</span><a name="l00166"></a>00166 <span class="preprocessor"></span><a name="l00167"></a>00167 <span class="keywordflow">if</span>(intBits>14)<a name="l00168"></a>00168 <span class="keywordflow">return</span> (r<0) ? 0x80000000 : 0x7fffffff; <span class="comment">// saturated result</span><a name="l00169"></a>00169 <a name="l00170"></a>00170 <span class="comment">// calculate the integer part of result (bits 31 to 16)</span><a name="l00171"></a>00171 b <<= intBits;<a name="l00172"></a>00172 <a class="code" href="group__integers.html#ga5">int32</a> bit = 0x10000<<intBits;<a name="l00173"></a>00173 <span class="keywordflow">while</span>(bit>0x10000)<a name="l00174"></a>00174 {<a name="l00175"></a>00175 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00176"></a>00176 {<a name="l00177"></a>00177 a -= b;<a name="l00178"></a>00178 r += bit;<a name="l00179"></a>00179 }<a name="l00180"></a>00180 b >>= 1;<a name="l00181"></a>00181 bit >>= 1;<a name="l00182"></a>00182 }<a name="l00183"></a>00183 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00184"></a>00184 {<a name="l00185"></a>00185 a -= b;<a name="l00186"></a>00186 r += bit;<a name="l00187"></a>00187 }<a name="l00188"></a>00188 bit >>= 1;<a name="l00189"></a>00189 <a name="l00190"></a>00190 <span class="comment">// calculate the fractional part of result (bits 15 to 0)</span><a name="l00191"></a>00191 <span class="keywordflow">do</span><a name="l00192"></a>00192 {<a name="l00193"></a>00193 a <<= 1;<a name="l00194"></a>00194 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00195"></a>00195 {<a name="l00196"></a>00196 a -= b;<a name="l00197"></a>00197 r += bit;<a name="l00198"></a>00198 }<a name="l00199"></a>00199 bit >>= 1;<a name="l00200"></a>00200 }<a name="l00201"></a>00201 <span class="keywordflow">while</span>(bit);<a name="l00202"></a>00202 <a name="l00203"></a>00203 <span class="preprocessor">#else</span><a name="l00204"></a>00204 <span class="preprocessor"></span><a name="l00205"></a>00205 <span class="comment">// calculate the integer part of result (bits 31 to 16)</span><a name="l00206"></a>00206 <span class="keywordflow">switch</span>(intBits)<a name="l00207"></a>00207 {<a name="l00208"></a>00208 <span class="keywordflow">case</span> 14:<a name="l00209"></a>00209 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<14))<a name="l00210"></a>00210 a -= (b<<14), r += 1<<(14+16);<a name="l00211"></a>00211 <span class="keywordflow">case</span> 13:<a name="l00212"></a>00212 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<13))<a name="l00213"></a>00213 a -= (b<<13), r += 1<<(13+16);<a name="l00214"></a>00214 <span class="keywordflow">case</span> 12:<a name="l00215"></a>00215 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<12))<a name="l00216"></a>00216 a -= (b<<12), r += 1<<(12+16);<a name="l00217"></a>00217 <span class="keywordflow">case</span> 11:<a name="l00218"></a>00218 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<11))<a name="l00219"></a>00219 a -= (b<<11), r += 1<<(11+16);<a name="l00220"></a>00220 <span class="keywordflow">case</span> 10:<a name="l00221"></a>00221 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<10))<a name="l00222"></a>00222 a -= (b<<10), r += 1<<(10+16);<a name="l00223"></a>00223 <span class="keywordflow">case</span> 9:<a name="l00224"></a>00224 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<9))<a name="l00225"></a>00225 a -= (b<<9), r += 1<<(9+16);<a name="l00226"></a>00226 <span class="keywordflow">case</span> 8:<a name="l00227"></a>00227 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<8))<a name="l00228"></a>00228 a -= (b<<8), r += 1<<(8+16);<a name="l00229"></a>00229 <span class="keywordflow">case</span> 7:<a name="l00230"></a>00230 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<7))<a name="l00231"></a>00231 a -= (b<<7), r += 1<<(7+16);<a name="l00232"></a>00232 <span class="keywordflow">case</span> 6:<a name="l00233"></a>00233 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<6))<a name="l00234"></a>00234 a -= (b<<6), r += 1<<(6+16);<a name="l00235"></a>00235 <span class="keywordflow">case</span> 5:<a name="l00236"></a>00236 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<5))<a name="l00237"></a>00237 a -= (b<<5), r += 1<<(5+16);<a name="l00238"></a>00238 <span class="keywordflow">case</span> 4:<a name="l00239"></a>00239 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<4))<a name="l00240"></a>00240 a -= (b<<4), r += 1<<(4+16);<a name="l00241"></a>00241 <span class="keywordflow">case</span> 3:<a name="l00242"></a>00242 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<3))<a name="l00243"></a>00243 a -= (b<<3), r += 1<<(3+16);<a name="l00244"></a>00244 <span class="keywordflow">case</span> 2:<a name="l00245"></a>00245 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<2))<a name="l00246"></a>00246 a -= (b<<2), r += 1<<(2+16);<a name="l00247"></a>00247 <span class="keywordflow">case</span> 1:<a name="l00248"></a>00248 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<1))<a name="l00249"></a>00249 a -= (b<<1), r += 1<<(1+16);<a name="l00250"></a>00250 <span class="keywordflow">case</span> 0:<a name="l00251"></a>00251 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=((<a class="code" href="group__integers.html#ga2">uint32</a>)b<<0))<a name="l00252"></a>00252 a -= (b<<0), r += 1<<(0+16);<a name="l00253"></a>00253 <span class="keywordflow">break</span>;<a name="l00254"></a>00254 <span class="keywordflow">default</span>:<a name="l00255"></a>00255 <span class="comment">// produce saturated result</span><a name="l00256"></a>00256 <span class="keywordflow">return</span> (r<0) ? 0x80000000 : 0x7fffffff; <span class="comment">// saturated result</span><a name="l00257"></a>00257 }<a name="l00258"></a>00258 <a name="l00259"></a>00259 <span class="comment">// calculate the fractional part of result (bits 15 to 0)</span><a name="l00260"></a>00260 a <<= 1;<a name="l00261"></a>00261 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00262"></a>00262 a -= b, r += 1<<15;<a name="l00263"></a>00263 a <<= 1;<a name="l00264"></a>00264 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00265"></a>00265 a -= b, r += 1<<14;<a name="l00266"></a>00266 a <<= 1;<a name="l00267"></a>00267 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00268"></a>00268 a -= b, r += 1<<13;<a name="l00269"></a>00269 a <<= 1;<a name="l00270"></a>00270 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00271"></a>00271 a -= b, r += 1<<12;<a name="l00272"></a>00272 a <<= 1;<a name="l00273"></a>00273 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00274"></a>00274 a -= b, r += 1<<11;<a name="l00275"></a>00275 a <<= 1;<a name="l00276"></a>00276 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00277"></a>00277 a -= b, r += 1<<10;<a name="l00278"></a>00278 a <<= 1;<a name="l00279"></a>00279 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00280"></a>00280 a -= b, r += 1<<9;<a name="l00281"></a>00281 a <<= 1;<a name="l00282"></a>00282 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00283"></a>00283 a -= b, r += 1<<8;<a name="l00284"></a>00284 a <<= 1;<a name="l00285"></a>00285 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00286"></a>00286 a -= b, r += 1<<7;<a name="l00287"></a>00287 a <<= 1;<a name="l00288"></a>00288 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00289"></a>00289 a -= b, r += 1<<6;<a name="l00290"></a>00290 a <<= 1;<a name="l00291"></a>00291 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00292"></a>00292 a -= b, r += 1<<5;<a name="l00293"></a>00293 a <<= 1;<a name="l00294"></a>00294 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00295"></a>00295 a -= b, r += 1<<4;<a name="l00296"></a>00296 a <<= 1;<a name="l00297"></a>00297 <span class="keywordflow">if</span>((<a class="code" href="group__integers.html#ga2">uint32</a>)a>=(<a class="code" href="group__integers.html#ga2">uint32</a>)b)<a name="l00298"></a>00298 a -= b, r += 1<<3;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?