📄 ac3dec_rematrix.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"typedef struct rematrix_band_s { Ipp32u start; Ipp32u end;} rematrix_band_t;static const rematrix_band_t rematrix_band[] = { {13, 24}, {25, 36}, {37, 60}, {61, 252}};#define min(a,b) (((a) < (b)) ? (a) : (b))int UMC::AC3Decoder::Rematrix(int nblk){ Ipp32s num_bands; Ipp32s start; Ipp32s end; Ipp32s minEndmant; Ipp32s i; if (!audblk[nblk]->cplinu) num_bands = 4; /* coupling is not in use, num_bands = 4 */ else { /* coupling is in use */ if (audblk[nblk]->cplbegf > 2) num_bands = 4; else if (audblk[nblk]->cplbegf > 0) num_bands = 3; else num_bands = 2; } minEndmant = min((int)audblk[nblk]->endmant[0], (int)audblk[nblk]->endmant[1]); for (i = 0; i < num_bands; i++) { int j; if (!audblk[nblk]->rematflg[i]) continue; start = rematrix_band[i].start; end = (audblk[nblk]-> cplinu ? min((int)rematrix_band[i].end, 12 * audblk[nblk]->cplbegf + 36) : rematrix_band[i].end); if (end > minEndmant - 1) end = minEndmant - 1; for (j = start; j <= end; j++) { float a = data_vectors.stream_coeffs.channel[0][j]; float b = data_vectors.stream_coeffs.channel[1][j]; data_vectors.stream_coeffs.channel[0][j] = (a + b); data_vectors.stream_coeffs.channel[1][j] = (a - b); } } return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -