📄 omxacaac_longtermpredict_s32.c
字号:
/** * * File Name: omxACAAC_LongTermPredict_S32.c * OpenMAX DL: v1.0.2 * Revision: 10586 * Date: Wednesday, March 5, 2008 * * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. * * * * Description: * This file contains module for Long Term Prediction used in LTP loop of AAC decoder * */#include "omxtypes.h"#include "armOMX.h"#include "omxAC.h"#include "armCOMM.h"#include "armACAAC_Tables.h"/** * Function: omxACAAC_LongTermPredict_S32 (3.2.3.7.4) * * Description: * LTP analysis portion of the LTP loop. * * Reference: [ISO14496-3], sub-clause 4.6.7 * * Input Arguments: * * pSrcTimeSignal - pointer to the time-domain sequence to be predicted; * samples are represented using Q28.3 * pAACLtpInfo - pointer to the LTP configuration information * * Output Arguments: * * pDstEstTimeSignal - pointer to the LTP output sequence; samples are * represented using Q28.3 * * Return Value: * * OMX_Sts_NoErr - no error * OMX_Sts_BadArgErr - bad arguments: * - one or more of the following pointers is NULL: * - pSrcDstTime, * - pAACLtpInfo, or * - pDstEstTimeSignal * - the value of the parameter pAACLtpInfo->ltpCoef does not lie in * the range [9352, 22438] * */ OMXResult omxACAAC_LongTermPredict_S32( OMX_S32 *pSrcTimeSignal, OMX_S32 *pDstEstTimeSignal, OMXAACLtpInfo *pAACLtpInfo ){ OMX_F64 scale,coeff; OMX_INT Offset; OMX_INT numSamples,coeffNum; /* Argument Check */ armRetArgErrIf( pSrcTimeSignal == NULL, OMX_Sts_BadArgErr); armRetArgErrIf( pDstEstTimeSignal == NULL, OMX_Sts_BadArgErr); armRetArgErrIf( pAACLtpInfo == NULL, OMX_Sts_BadArgErr); armRetArgErrIf( pAACLtpInfo->ltpCoef > 22438 , OMX_Sts_BadArgErr) armRetArgErrIf( pAACLtpInfo->ltpCoef < 9352 , OMX_Sts_BadArgErr); armRetArgErrIf( pAACLtpInfo->ltpLag > 2047 , OMX_Sts_BadArgErr) armRetArgErrIf( pAACLtpInfo->ltpLag < 0 , OMX_Sts_BadArgErr); /* Processing */ scale = (OMX_F64) pAACLtpInfo->ltpCoef / (OMX_F64) (1L << 14); Offset = (ARM_AAC_WIN_LONG << 1) - pAACLtpInfo->ltpLag; if(pAACLtpInfo->ltpLag > ARM_AAC_WIN_LONG) { numSamples = (ARM_AAC_WIN_LONG << 1); } else { numSamples = ARM_AAC_WIN_LONG + pAACLtpInfo->ltpLag; } for (coeffNum = 0; coeffNum < numSamples ; coeffNum++) { coeff = scale * ( pSrcTimeSignal[Offset + coeffNum] / (OMX_F64)(1 << ARM_AAC_Q_FACTOR) ); pDstEstTimeSignal[coeffNum] = armSatRoundFloatToS32(coeff * (1 << ARM_AAC_Q_FACTOR)); } for(coeffNum = numSamples ; coeffNum < (ARM_AAC_WIN_LONG << 1) ; coeffNum++) { pDstEstTimeSignal[coeffNum] = 0; } return OMX_Sts_NoErr;}/*End of File*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -