g7231_basop.c

来自「G723.1语音压缩解压在tms320c54系列上的实现代码,本人已在CCS上仿」· C语言 代码 · 共 77 行

C
77
字号
#include "typedef.h"
#include "G7231_BASOP.H"
#include <intrindefs.h>
#include <stdlib.h>


Word32   G7231L_mls( Word32 Lv, Word16 v )
{
	Word32   Temp  ;
	#ifdef  C54X_MODE
	Temp =  c54_mpyus(Lv,(Word32)v );
	Temp =  c54_sshvr(Temp, 15);
	return c54_sadd(Temp, c54_smpylh(v,Lv));
	#else
	Temp = _mpyus(Lv, (Word32)v);
	Temp = _sshvr(Temp, 15);
	return _sadd(Temp, _smpylh(v, Lv));
	#endif
}

Word16 G7231div_l( Word32  L_num, Word16 den )
{
    Word16   var_out = (Word16)0;
    Word32   L_den;
    Word16   iteration;
    Word32   L_result;
		
    L_den = (Word32) den << 16;
	
    if ( L_num >= L_den )
    {
        return G7231MAX_16 ;
    }
    else 
    {
            #ifdef  C54X_MODE
            L_num = c54_sshvr((Word32)L_num, (Word32)1);
            L_den = c54_sshvr((Word32)L_den, (Word32)1);
            #else  
            L_num = _sshvr((Word32)L_num, (Word32)1);
            L_den = _sshvr((Word32)L_den, (Word32)1);
            #endif

        for(iteration=(Word16)0; iteration< (Word16)15;iteration++) 
        {
            #ifdef  C54X_MODE
	    L_result = c54_sshvl((Word32)var_out, (Word32)1);
	    var_out =  (Word16)c54_spack2(L_result,L_result);
            L_num   = c54_sshvl(L_num,(Word32)1);
            #else  
            L_result = _sshvl((Word32)var_out, (Word32)1);
	    var_out  = (Word16)_spack2(L_result, L_result);
            L_num   = _sshvl(L_num,(Word32)1);
            #endif

            if (L_num >= L_den)
            {
	        #ifdef C54X_MODE
	        L_num   = c54_ssub(L_num, L_den);
                var_out = (Word16)c54_sadd2((Word32) var_out,(Word32)1);
                #else
                L_num   = _ssub(L_num, L_den);
                var_out = (Word16)_sadd2((Word32) var_out,(Word32)1);
                #endif
            }
        }
		
        return var_out;
    }
}






⌨️ 快捷键说明

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