📄 sbrdec_filter_fp.c
字号:
/*////////////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2005 Intel Corporation. All Rights Reserved.//*//********************************************************************/#include<ipps.h>#include<ippac.h>#include<math.h>#include<string.h>#include "sbrdec.h"#include "sbrdec_api_fp.h"#include "aaccmn_chmap.h"/********************************************************************/Ipp32s sbrdecInitFilterOne( sSbrDecFilter* pDC, int* pSizeWorkBuf ){ Ipp8u* pInitBuf; Ipp32s SizeSpec, SizeInitBuf, SizeWorkBuf; Ipp32s vecSizeWorkBuf[6]; int ch; IppStatus status; //for (ch = 0; ch < 2; ch++) {/* -------------------------------- Analysis_SBR ---------------------------- */// HEAAC_LP_MODE// (1) GetSize status = ippsAnalysisFilterGetSize_SBR_RToR_32f(&SizeSpec, &SizeInitBuf, &SizeWorkBuf);// (2) ext allocate if (SizeSpec != 0) { pDC->pQmfMemSpec[0] = ippsMalloc_8u(SizeSpec); pDC->pQmfMemSpec[1] = ippsMalloc_8u(SizeSpec); } else { pDC->pQmfMemSpec[0] = NULL; pDC->pQmfMemSpec[1] = NULL; } if (SizeInitBuf != 0) { pInitBuf = ippsMalloc_8u(SizeInitBuf); } else { pInitBuf = NULL; } vecSizeWorkBuf[0] = SizeWorkBuf;// (3) init for(ch=0; ch<2; ch++){ status = ippsAnalysisFilterInit_SBR_RToR_32f( &(pDC->pAnalysisFilterSpec_LPmode[ch]), pDC->pQmfMemSpec[ch], pInitBuf); }// (4) free initbuf if (pInitBuf != NULL) { ippsFree(pInitBuf); }// HEAAC_HQ_MODE// (1) GetSize status = ippsAnalysisFilterGetSize_SBR_RToC_32f(&SizeSpec, &SizeInitBuf, &SizeWorkBuf);// (2) ext allocate if (SizeSpec != 0) { pDC->pQmfMemSpec[2] = ippsMalloc_8u(SizeSpec); pDC->pQmfMemSpec[3] = ippsMalloc_8u(SizeSpec); } else { pDC->pQmfMemSpec[2] = NULL; pDC->pQmfMemSpec[3] = NULL; } if (SizeInitBuf != 0) { pInitBuf = ippsMalloc_8u(SizeInitBuf); } else { pInitBuf = NULL; } vecSizeWorkBuf[1] = SizeWorkBuf;// (3) init for(ch=0; ch<2; ch++){ status = ippsAnalysisFilterInit_SBR_RToC_32f( &(pDC->pAnalysisFilterSpec_HQmode[ch]), pDC->pQmfMemSpec[2+ch], pInitBuf); }// (4) free initbuf if (pInitBuf != NULL) { ippsFree(pInitBuf); }/* -------------------------------- Synthesis_SBR ---------------------------- */// HEAAC_LP_MODE// (1) GetSize status = ippsSynthesisFilterGetSize_SBR_RToR_32f(&SizeSpec, &SizeInitBuf, &SizeWorkBuf);// (2) ext allocate if (SizeSpec != 0) { pDC->pQmfMemSpec[4] = ippsMalloc_8u(SizeSpec); pDC->pQmfMemSpec[5] = ippsMalloc_8u(SizeSpec); } else { pDC->pQmfMemSpec[4] = NULL; pDC->pQmfMemSpec[5] = NULL; } if (SizeInitBuf != 0) { pInitBuf = ippsMalloc_8u(SizeInitBuf); } else { pInitBuf = NULL; } vecSizeWorkBuf[2] = SizeWorkBuf;// (3) init for(ch=0; ch<2; ch++){ status = ippsSynthesisFilterInit_SBR_RToR_32f( &(pDC->pSynthesisFilterSpec_LPmode[ch]), pDC->pQmfMemSpec[4+ch], pInitBuf); }// (4) free initbuf if (pInitBuf != NULL) { ippsFree(pInitBuf); }// HEAAC_HQ_MODE// (1) GetSize status = ippsSynthesisFilterGetSize_SBR_CToR_32f(&SizeSpec, &SizeInitBuf, &SizeWorkBuf);// (2) ext allocate if (SizeSpec != 0) { pDC->pQmfMemSpec[6] = ippsMalloc_8u(SizeSpec); pDC->pQmfMemSpec[7] = ippsMalloc_8u(SizeSpec); } else { pDC->pQmfMemSpec[6] = NULL; pDC->pQmfMemSpec[7] = NULL; } if (SizeInitBuf != 0) { pInitBuf = ippsMalloc_8u(SizeInitBuf); } else { pInitBuf = NULL; } vecSizeWorkBuf[3] = SizeWorkBuf;// (3) init for(ch=0; ch<2; ch++){ status = ippsSynthesisFilterInit_SBR_CToR_32f( &(pDC->pSynthesisFilterSpec_HQmode[ch]), pDC->pQmfMemSpec[6+ch],pInitBuf); }// (4) free initbuf if (pInitBuf != NULL) { ippsFree(pInitBuf); }/* -------------------------------- Synthesis Down SBR ---------------------------- *///HEAAC_LP_MODE// (1) GetSize status = ippsSynthesisDownFilterGetSize_SBR_RToR_32f(&SizeSpec, &SizeInitBuf, &SizeWorkBuf);// (2) ext allocate if (SizeSpec != 0) { pDC->pQmfMemSpec[8] = ippsMalloc_8u(SizeSpec); pDC->pQmfMemSpec[9] = ippsMalloc_8u(SizeSpec); } else { pDC->pQmfMemSpec[8] = NULL; pDC->pQmfMemSpec[9] = NULL; } if (SizeInitBuf != 0) { pInitBuf = ippsMalloc_8u(SizeInitBuf); } else { pInitBuf = NULL; } vecSizeWorkBuf[4] = SizeWorkBuf;// (3) init for(ch=0; ch<2; ch++){ status = ippsSynthesisDownFilterInit_SBR_RToR_32f( &(pDC->pSynthesisDownFilterSpec_LPmode[ch]), pDC->pQmfMemSpec[8+ch], pInitBuf); }// (4) free initbuf if (pInitBuf != NULL) { ippsFree(pInitBuf); }// HEAAC_HQ_MODE// (1) GetSize status = ippsSynthesisDownFilterGetSize_SBR_CToR_32f(&SizeSpec, &SizeInitBuf, &SizeWorkBuf);// (2) ext allocate if (SizeSpec != 0) { pDC->pQmfMemSpec[10] = ippsMalloc_8u(SizeSpec); pDC->pQmfMemSpec[11] = ippsMalloc_8u(SizeSpec); } else { pDC->pQmfMemSpec[10] = NULL; pDC->pQmfMemSpec[11] = NULL; } if (SizeInitBuf != 0) { pInitBuf = ippsMalloc_8u(SizeInitBuf); } else { pInitBuf = NULL; } vecSizeWorkBuf[5] = SizeWorkBuf;// (3) init for(ch=0; ch<2; ch++){ status = ippsSynthesisDownFilterInit_SBR_CToR_32f( &(pDC->pSynthesisDownFilterSpec_HQmode[ch]), pDC->pQmfMemSpec[10+ch], pInitBuf); }// (4) free initbuf if (pInitBuf != NULL) { ippsFree(pInitBuf); } //} CH ippsMax_32s(vecSizeWorkBuf, 6, pSizeWorkBuf); return 0; //OK}/********************************************************************/Ipp32s sbrdecInitFilter( sSbrDecFilter* pDC[CH_MAX], int* pSizeWorkBuf ){ int i; for (i=0; i<CH_MAX; i++){ pDC[i] = (sSbrDecFilter*)ippsMalloc_8u( sizeof(sSbrDecFilter) ); if( pDC[i] ) sbrdecInitFilterOne( pDC[i], pSizeWorkBuf ); } return 0;//OK;}/********************************************************************/Ipp32s sbrdecFreeFilter( sSbrDecFilter* pDC[CH_MAX] ){ int ch; int i; if( pDC == 0 ) return 0; for(ch=0; ch<CH_MAX; ch++) { if( pDC[ch] == 0 ) continue; for(i=0; i<2; i++) { if( pDC[ch]->pQmfMemSpec[i] ) ippsFree( pDC[ch]->pQmfMemSpec[i] ); } } return 0;//OK;}/********************************************************************//* EOF */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -