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

📄 ac3dec_imdct.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
字号:
/*//////////////////////////////////////////////////////////////////////////////////                  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) 2002-2005 Intel Corporation. All Rights Reserved.//*/#include "umc_ac3_decoder.h"#include "ipps.h"#include "ippac.h"const float WindowTable[] = {  0.00014f, 0.00024f, 0.00037f, 0.00051f, 0.00067f, 0.00086f, 0.00107f, 0.00130f,  0.00157f, 0.00187f, 0.00220f, 0.00256f, 0.00297f, 0.00341f, 0.00390f, 0.00443f,  0.00501f, 0.00564f, 0.00632f, 0.00706f, 0.00785f, 0.00871f, 0.00962f, 0.01061f,  0.01166f, 0.01279f, 0.01399f, 0.01526f, 0.01662f, 0.01806f, 0.01959f, 0.02121f,  0.02292f, 0.02472f, 0.02662f, 0.02863f, 0.03073f, 0.03294f, 0.03527f, 0.03770f,  0.04025f, 0.04292f, 0.04571f, 0.04862f, 0.05165f, 0.05481f, 0.05810f, 0.06153f,  0.06508f, 0.06878f, 0.07261f, 0.07658f, 0.08069f, 0.08495f, 0.08935f, 0.09389f,  0.09859f, 0.10343f, 0.10842f, 0.11356f, 0.11885f, 0.12429f, 0.12988f, 0.13563f,  0.14152f, 0.14757f, 0.15376f, 0.16011f, 0.16661f, 0.17325f, 0.18005f, 0.18699f,  0.19407f, 0.20130f, 0.20867f, 0.21618f, 0.22382f, 0.23161f, 0.23952f, 0.24757f,  0.25574f, 0.26404f, 0.27246f, 0.28100f, 0.28965f, 0.29841f, 0.30729f, 0.31626f,  0.32533f, 0.33450f, 0.34376f, 0.35311f, 0.36253f, 0.37204f, 0.38161f, 0.39126f,  0.40096f, 0.41072f, 0.42054f, 0.43040f, 0.44030f, 0.45023f, 0.46020f, 0.47019f,  0.48020f, 0.49022f, 0.50025f, 0.51028f, 0.52031f, 0.53033f, 0.54033f, 0.55031f,  0.56026f, 0.57019f, 0.58007f, 0.58991f, 0.59970f, 0.60944f, 0.61912f, 0.62873f,  0.63827f, 0.64774f, 0.65713f, 0.66643f, 0.67564f, 0.68476f, 0.69377f, 0.70269f,  0.71150f, 0.72019f, 0.72877f, 0.73723f, 0.74557f, 0.75378f, 0.76186f, 0.76981f,  0.77762f, 0.78530f, 0.79283f, 0.80022f, 0.80747f, 0.81457f, 0.82151f, 0.82831f,  0.83496f, 0.84145f, 0.84779f, 0.85398f, 0.86001f, 0.86588f, 0.87160f, 0.87716f,  0.88257f, 0.88782f, 0.89291f, 0.89785f, 0.90264f, 0.90728f, 0.91176f, 0.91610f,  0.92028f, 0.92432f, 0.92822f, 0.93197f, 0.93558f, 0.93906f, 0.94240f, 0.94560f,  0.94867f, 0.95162f, 0.95444f, 0.95713f, 0.95971f, 0.96217f, 0.96451f, 0.96674f,  0.96887f, 0.97089f, 0.97281f, 0.97463f, 0.97635f, 0.97799f, 0.97953f, 0.98099f,  0.98236f, 0.98366f, 0.98488f, 0.98602f, 0.98710f, 0.98811f, 0.98905f, 0.98994f,  0.99076f, 0.99153f, 0.99225f, 0.99291f, 0.99353f, 0.99411f, 0.99464f, 0.99513f,  0.99558f, 0.99600f, 0.99639f, 0.99674f, 0.99706f, 0.99736f, 0.99763f, 0.99788f,  0.99811f, 0.99831f, 0.99850f, 0.99867f, 0.99882f, 0.99895f, 0.99908f, 0.99919f,  0.99929f, 0.99938f, 0.99946f, 0.99953f, 0.99959f, 0.99965f, 0.99969f, 0.99974f,  0.99978f, 0.99981f, 0.99984f, 0.99986f, 0.99988f, 0.99990f, 0.99992f, 0.99993f,  0.99994f, 0.99995f, 0.99996f, 0.99997f, 0.99998f, 0.99998f, 0.99998f, 0.99999f,  0.99999f, 0.99999f, 0.99999f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f,  1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f,  1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f,  1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 0.99999f, 0.99999f, 0.99999f,  0.99999f, 0.99998f, 0.99998f, 0.99998f, 0.99997f, 0.99996f, 0.99995f, 0.99994f,  0.99993f, 0.99992f, 0.99990f, 0.99988f, 0.99986f, 0.99984f, 0.99981f, 0.99978f,  0.99974f, 0.99969f, 0.99965f, 0.99959f, 0.99953f, 0.99946f, 0.99938f, 0.99929f,  0.99919f, 0.99908f, 0.99895f, 0.99882f, 0.99867f, 0.99850f, 0.99831f, 0.99811f,  0.99788f, 0.99763f, 0.99736f, 0.99706f, 0.99674f, 0.99639f, 0.99600f, 0.99558f,  0.99513f, 0.99464f, 0.99411f, 0.99353f, 0.99291f, 0.99225f, 0.99153f, 0.99076f,  0.98994f, 0.98905f, 0.98811f, 0.98710f, 0.98602f, 0.98488f, 0.98366f, 0.98236f,  0.98099f, 0.97953f, 0.97799f, 0.97635f, 0.97463f, 0.97281f, 0.97089f, 0.96887f,  0.96674f, 0.96451f, 0.96217f, 0.95971f, 0.95713f, 0.95444f, 0.95162f, 0.94867f,  0.94560f, 0.94240f, 0.93906f, 0.93558f, 0.93197f, 0.92822f, 0.92432f, 0.92028f,  0.91610f, 0.91176f, 0.90728f, 0.90264f, 0.89785f, 0.89291f, 0.88782f, 0.88257f,  0.87716f, 0.87160f, 0.86588f, 0.86001f, 0.85398f, 0.84779f, 0.84145f, 0.83496f,  0.82831f, 0.82151f, 0.81457f, 0.80747f, 0.80022f, 0.79283f, 0.78530f, 0.77762f,  0.76981f, 0.76186f, 0.75378f, 0.74557f, 0.73723f, 0.72877f, 0.72019f, 0.71150f,  0.70269f, 0.69377f, 0.68476f, 0.67564f, 0.66643f, 0.65713f, 0.64774f, 0.63827f,  0.62873f, 0.61912f, 0.60944f, 0.59970f, 0.58991f, 0.58007f, 0.57019f, 0.56026f,  0.55031f, 0.54033f, 0.53033f, 0.52031f, 0.51028f, 0.50025f, 0.49022f, 0.48020f,  0.47019f, 0.46020f, 0.45023f, 0.44030f, 0.43040f, 0.42054f, 0.41072f, 0.40096f,  0.39126f, 0.38161f, 0.37204f, 0.36253f, 0.35311f, 0.34376f, 0.33450f, 0.32533f,  0.31626f, 0.30729f, 0.29841f, 0.28965f, 0.28100f, 0.27246f, 0.26404f, 0.25574f,  0.24757f, 0.23952f, 0.23161f, 0.22382f, 0.21618f, 0.20867f, 0.20130f, 0.19407f,  0.18699f, 0.18005f, 0.17325f, 0.16661f, 0.16011f, 0.15376f, 0.14757f, 0.14152f,  0.13563f, 0.12988f, 0.12429f, 0.11885f, 0.11356f, 0.10842f, 0.10343f, 0.09859f,  0.09389f, 0.08935f, 0.08495f, 0.08069f, 0.07658f, 0.07261f, 0.06878f, 0.06508f,  0.06153f, 0.05810f, 0.05481f, 0.05165f, 0.04862f, 0.04571f, 0.04292f, 0.04025f,  0.03770f, 0.03527f, 0.03294f, 0.03073f, 0.02863f, 0.02662f, 0.02472f, 0.02292f,  0.02121f, 0.01959f, 0.01806f, 0.01662f, 0.01526f, 0.01399f, 0.01279f, 0.01166f,  0.01061f, 0.00962f, 0.00871f, 0.00785f, 0.00706f, 0.00632f, 0.00564f, 0.00501f,  0.00443f, 0.00390f, 0.00341f, 0.00297f, 0.00256f, 0.00220f, 0.00187f, 0.00157f,  0.00130f, 0.00107f, 0.00086f, 0.00067f, 0.00051f, 0.00037f, 0.00024f, 0.00014f};const float WindowTable_short[] = {  0.00014f, 0.00037f, 0.00067f, 0.00107f, 0.00157f, 0.00220f, 0.00297f, 0.00390f,  0.00501f, 0.00632f, 0.00785f, 0.00962f, 0.01166f, 0.01399f, 0.01662f, 0.01959f,  0.02292f, 0.02662f, 0.03073f, 0.03527f, 0.04025f, 0.04571f, 0.05165f, 0.05810f,  0.06508f, 0.07261f, 0.08069f, 0.08935f, 0.09859f, 0.10842f, 0.11885f, 0.12988f,  0.14152f, 0.15376f, 0.16661f, 0.18005f, 0.19407f, 0.20867f, 0.22382f, 0.23952f,  0.25574f, 0.27246f, 0.28965f, 0.30729f, 0.32533f, 0.34376f, 0.36253f, 0.38161f,  0.40096f, 0.42054f, 0.44030f, 0.46020f, 0.48020f, 0.50025f, 0.52031f, 0.54033f,  0.56026f, 0.58007f, 0.59970f, 0.61912f, 0.63827f, 0.65713f, 0.67564f, 0.69377f,  0.71150f, 0.72877f, 0.74557f, 0.76186f, 0.77762f, 0.79283f, 0.80747f, 0.82151f,  0.83496f, 0.84779f, 0.86001f, 0.87160f, 0.88257f, 0.89291f, 0.90264f, 0.91176f,  0.92028f, 0.92822f, 0.93558f, 0.94240f, 0.94867f, 0.95444f, 0.95971f, 0.96451f,  0.96887f, 0.97281f, 0.97635f, 0.97953f, 0.98236f, 0.98488f, 0.98710f, 0.98905f,  0.99076f, 0.99225f, 0.99353f, 0.99464f, 0.99558f, 0.99639f, 0.99706f, 0.99763f,  0.99811f, 0.99850f, 0.99882f, 0.99908f, 0.99929f, 0.99946f, 0.99959f, 0.99969f,  0.99978f, 0.99984f, 0.99988f, 0.99992f, 0.99994f, 0.99996f, 0.99998f, 0.99998f,  0.99999f, 0.99999f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f,  1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 1.00000f, 0.99999f,  0.99999f, 0.99998f, 0.99997f, 0.99995f, 0.99993f, 0.99990f, 0.99986f, 0.99981f,  0.99974f, 0.99965f, 0.99953f, 0.99938f, 0.99919f, 0.99895f, 0.99867f, 0.99831f,  0.99788f, 0.99736f, 0.99674f, 0.99600f, 0.99513f, 0.99411f, 0.99291f, 0.99153f,  0.98994f, 0.98811f, 0.98602f, 0.98366f, 0.98099f, 0.97799f, 0.97463f, 0.97089f,  0.96674f, 0.96217f, 0.95713f, 0.95162f, 0.94560f, 0.93906f, 0.93197f, 0.92432f,  0.91610f, 0.90728f, 0.89785f, 0.88782f, 0.87716f, 0.86588f, 0.85398f, 0.84145f,  0.82831f, 0.81457f, 0.80022f, 0.78530f, 0.76981f, 0.75378f, 0.73723f, 0.72019f,  0.70269f, 0.68476f, 0.66643f, 0.64774f, 0.62873f, 0.60944f, 0.58991f, 0.57019f,  0.55031f, 0.53033f, 0.51028f, 0.49022f, 0.47019f, 0.45023f, 0.43040f, 0.41072f,  0.39126f, 0.37204f, 0.35311f, 0.33450f, 0.31626f, 0.29841f, 0.28100f, 0.26404f,  0.24757f, 0.23161f, 0.21618f, 0.20130f, 0.18699f, 0.17325f, 0.16011f, 0.14757f,  0.13563f, 0.12429f, 0.11356f, 0.10343f, 0.09389f, 0.08495f, 0.07658f, 0.06878f,  0.06153f, 0.05481f, 0.04862f, 0.04292f, 0.03770f, 0.03294f, 0.02863f, 0.02472f,  0.02121f, 0.01806f, 0.01526f, 0.01279f, 0.01061f, 0.00871f, 0.00706f, 0.00564f,  0.00443f, 0.00341f, 0.00256f, 0.00187f, 0.00130f, 0.00086f, 0.00051f, 0.00024f};int UMC::AC3Decoder::InverseTransform(int nblk){  int ch = 0;  for (ch = 0; ch < bsi.nfchans; ch++) {    if (audblk[nblk]->blksw[ch]) {      float tmp_buf[64];      int i;      ippsDeinterleave_32f(data_vectors.stream_coeffs.channel[ch], 2, 128,                           data_vectors.stream_coeffs.ShortBuff);      ippsMDCTInv_32f(data_vectors.stream_coeffs.ShortBuff[0],                      data_vectors.stream_samples.channel[ch],                      allocation_imdct.pMDCTSpecShort,                      allocation_imdct.pBufferShort);      ippsMDCTInv_32f(data_vectors.stream_coeffs.ShortBuff[1],                      &(data_vectors.stream_samples.channel[ch][256]),                      allocation_imdct.pMDCTSpecShort,                      allocation_imdct.pBufferShort);      ippsMulC_32f_I(-128, data_vectors.stream_samples.channel[ch], 512);      for (i = 192; i < 256; i++) {        tmp_buf[i - 192] =          -data_vectors.stream_samples.channel[ch][i];      }      for (i = 191; i >= 0; i--) {        data_vectors.stream_samples.channel[ch][i + 64] =          data_vectors.stream_samples.channel[ch][i];      }      for (i = 0; i < 64; i++) {        data_vectors.stream_samples.channel[ch][i] =        tmp_buf[i];      }      for (i = 256; i < 256 + 64; i++) {        tmp_buf[i - 256] =          -data_vectors.stream_samples.channel[ch][i];      }      for (i = 256; i < 448; i++) {        data_vectors.stream_samples.channel[ch][i] =          data_vectors.stream_samples.channel[ch][i + 64];      }      for (i = 0; i < 64; i++) {        data_vectors.stream_samples.channel[ch][448 + i] =        tmp_buf[i];      }    } else {      ippsMDCTInv_32f(data_vectors.stream_coeffs.channel[ch],                      data_vectors.stream_samples.channel[ch],                      allocation_imdct.pMDCTSpecLong,                      allocation_imdct.pBufferLong);      ippsMulC_32f_I(-256, data_vectors.stream_samples.channel[ch], 512);    }  }  if (bsi.lfeon) {    ippsMDCTInv_32f(data_vectors.stream_coeffs.channel[5],                    data_vectors.stream_samples.channel[5],                    allocation_imdct.pMDCTSpecLong,                    allocation_imdct.pBufferLong);    ippsMulC_32f_I(-256, data_vectors.stream_samples.channel[5], 512);  }  return 1;}int UMC::AC3Decoder::WindowingOverlap(short* pOut){  int i = 0;  Ipp32f dataTemp[6][256];  Ipp32f *pDataTemp[6];  for (i = 0; i < nChannelOut; i++) {    ippsMul_32f_I(WindowTable, data_vectors.temp[i], 512);    ippsAdd_32f(data_vectors.temp[i],                data_vectors.stream_samples.delay[i],                dataTemp[i], 256);    ippsMulC_32f_I(GAINSCALE, dataTemp[i], 256);    ippsCopy_32f(&(data_vectors.temp[i][256]),                 data_vectors.stream_samples.delay[i], 256);    pDataTemp[i] = dataTemp[i];  }  ippsJoin_32f16s_D2L((const Ipp32f **)pDataTemp, nChannelOut, 256, (Ipp16s*)pOut);  return 1;}

⌨️ 快捷键说明

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