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

📄 omxacaac_longtermpredict_s32.c

📁 The OpenMAX DL (Development Layer) APIs contain a comprehensive set of audio, video, signal processi
💻 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 + -