📄 ac3_dec_mantissa.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) 2002-2007 Intel Corporation. All Rights Reserved.
//
*/
#include "ac3_dec.h"
#include "ac3_dec_own_fp.h"
/********************************************************************/
#define DITHMULT 47989
#define DITHER_GEN(x) \
{ \
Ipp32s tmp0, tmp1; \
tmp0 = (((Ipp32s)(DITHMULT * state->mants_tabls.dithtemp)) << 16) >> 16; \
state->mants_tabls.dithtemp = (Ipp16s)tmp0; \
tmp1 = (((Ipp32s)(DITHMULT * state->mants_tabls.dithtemp)) << 16) >> 16; \
state->mants_tabls.dithtemp = (Ipp16s)tmp1; \
x = (0.707106781f * 0.5f * (tmp0 + tmp1)); \
}
/********************************************************************/
void uncoupleChannel(AC3Dec *state,
Ipp32s ch);
static Ipp32f q_1[32][3] = /* bap=1 (3-Level) Quantization */
{
{-65536.0f/3.0f, -65536.0f/3.0f, -65536.0f/3.0f},
{-65536.0f/3.0f, -65536.0f/3.0f, 0},
{-65536.0f/3.0f, -65536.0f/3.0f, 65536.0f/3.0f},
{-65536.0f/3.0f, 0, -65536.0f/3.0f},
{-65536.0f/3.0f, 0, 0},
{-65536.0f/3.0f, 0, 65536.0f/3.0f},
{-65536.0f/3.0f, 65536.0f/3.0f, -65536.0f/3.0f},
{-65536.0f/3.0f, 65536.0f/3.0f, 0},
{-65536.0f/3.0f, 65536.0f/3.0f, 65536.0f/3.0f},
{ 0, -65536.0f/3.0f, -65536.0f/3.0f},
{ 0, -65536.0f/3.0f, 0},
{ 0, -65536.0f/3.0f, 65536.0f/3.0f},
{ 0, 0, -65536.0f/3.0f},
{ 0, 0, 0},
{ 0, 0, 65536.0f/3.0f},
{ 0, 65536.0f/3.0f, -65536.0f/3.0f},
{ 0, 65536.0f/3.0f, 0},
{ 0, 65536.0f/3.0f, 65536.0f/3.0f},
{ 65536.0f/3.0f, -65536.0f/3.0f, -65536.0f/3.0f},
{ 65536.0f/3.0f, -65536.0f/3.0f, 0},
{ 65536.0f/3.0f, -65536.0f/3.0f, 65536.0f/3.0f},
{ 65536.0f/3.0f, 0, -65536.0f/3.0f},
{ 65536.0f/3.0f, 0, 0},
{ 65536.0f/3.0f, 0, 65536.0f/3.0f},
{ 65536.0f/3.0f, 65536.0f/3.0f, -65536.0f/3.0f},
{ 65536.0f/3.0f, 65536.0f/3.0f, 0},
{ 65536.0f/3.0f, 65536.0f/3.0f, 65536.0f/3.0f},
{ 0, 0, 0},
{ 0, 0, 0},
{ 0, 0, 0},
{ 0, 0, 0}
};
static Ipp32f q_2[128][3] = /* bap=2 (5-Level) Quantization */
{
{-131072.0f / 5, -131072.0f / 5, -131072.0f / 5},
{-131072.0f / 5, -131072.0f / 5, -65536.0f / 5},
{-131072.0f / 5, -131072.0f / 5, 0},
{-131072.0f / 5, -131072.0f / 5, 65536.0f / 5},
{-131072.0f / 5, -131072.0f / 5, 131072.0f / 5},
{-131072.0f / 5, -65536.0f / 5, -131072.0f / 5},
{-131072.0f / 5, -65536.0f / 5, -65536.0f / 5},
{-131072.0f / 5, -65536.0f / 5, 0},
{-131072.0f / 5, -65536.0f / 5, 65536.0f / 5},
{-131072.0f / 5, -65536.0f / 5, 131072.0f / 5},
{-131072.0f / 5, 0, -131072.0f / 5},
{-131072.0f / 5, 0, -65536.0f / 5},
{-131072.0f / 5, 0, 0},
{-131072.0f / 5, 0, 65536.0f / 5},
{-131072.0f / 5, 0, 131072.0f / 5},
{-131072.0f / 5, 65536.0f / 5, -131072.0f / 5},
{-131072.0f / 5, 65536.0f / 5, -65536.0f / 5},
{-131072.0f / 5, 65536.0f / 5, 0},
{-131072.0f / 5, 65536.0f / 5, 65536.0f / 5},
{-131072.0f / 5, 65536.0f / 5, 131072.0f / 5},
{-131072.0f / 5, 131072.0f / 5, -131072.0f / 5},
{-131072.0f / 5, 131072.0f / 5, -65536.0f / 5},
{-131072.0f / 5, 131072.0f / 5, 0},
{-131072.0f / 5, 131072.0f / 5, 65536.0f / 5},
{-131072.0f / 5, 131072.0f / 5, 131072.0f / 5},
{ -65536.0f / 5, -131072.0f / 5, -131072.0f / 5},
{ -65536.0f / 5, -131072.0f / 5, -65536.0f / 5},
{ -65536.0f / 5, -131072.0f / 5, 0},
{ -65536.0f / 5, -131072.0f / 5, 65536.0f / 5},
{ -65536.0f / 5, -131072.0f / 5, 131072.0f / 5},
{ -65536.0f / 5, -65536.0f / 5, -131072.0f / 5},
{ -65536.0f / 5, -65536.0f / 5, -65536.0f / 5},
{ -65536.0f / 5, -65536.0f / 5, 0},
{ -65536.0f / 5, -65536.0f / 5, 65536.0f / 5},
{ -65536.0f / 5, -65536.0f / 5, 131072.0f / 5},
{ -65536.0f / 5, 0, -131072.0f / 5},
{ -65536.0f / 5, 0, -65536.0f / 5},
{ -65536.0f / 5, 0, 0},
{ -65536.0f / 5, 0, 65536.0f / 5},
{ -65536.0f / 5, 0, 131072.0f / 5},
{ -65536.0f / 5, 65536.0f / 5, -131072.0f / 5},
{ -65536.0f / 5, 65536.0f / 5, -65536.0f / 5},
{ -65536.0f / 5, 65536.0f / 5, 0},
{ -65536.0f / 5, 65536.0f / 5, 65536.0f / 5},
{ -65536.0f / 5, 65536.0f / 5, 131072.0f / 5},
{ -65536.0f / 5, 131072.0f / 5, -131072.0f / 5},
{ -65536.0f / 5, 131072.0f / 5, -65536.0f / 5},
{ -65536.0f / 5, 131072.0f / 5, 0},
{ -65536.0f / 5, 131072.0f / 5, 65536.0f / 5},
{ -65536.0f / 5, 131072.0f / 5, 131072.0f / 5},
{ 0, -131072.0f / 5, -131072.0f / 5},
{ 0, -131072.0f / 5, -65536.0f / 5},
{ 0, -131072.0f / 5, 0},
{ 0, -131072.0f / 5, 65536.0f / 5},
{ 0, -131072.0f / 5, 131072.0f / 5},
{ 0, -65536.0f / 5, -131072.0f / 5},
{ 0, -65536.0f / 5, -65536.0f / 5},
{ 0, -65536.0f / 5, 0},
{ 0, -65536.0f / 5, 65536.0f / 5},
{ 0, -65536.0f / 5, 131072.0f / 5},
{ 0, 0, -131072.0f / 5},
{ 0, 0, -65536.0f / 5},
{ 0, 0, 0},
{ 0, 0, 65536.0f / 5},
{ 0, 0, 131072.0f / 5},
{ 0, 65536.0f / 5, -131072.0f / 5},
{ 0, 65536.0f / 5, -65536.0f / 5},
{ 0, 65536.0f / 5, 0},
{ 0, 65536.0f / 5, 65536.0f / 5},
{ 0, 65536.0f / 5, 131072.0f / 5},
{ 0, 131072.0f / 5, -131072.0f / 5},
{ 0, 131072.0f / 5, -65536.0f / 5},
{ 0, 131072.0f / 5, 0},
{ 0, 131072.0f / 5, 65536.0f / 5},
{ 0, 131072.0f / 5, 131072.0f / 5},
{ 65536.0f / 5, -131072.0f / 5, -131072.0f / 5},
{ 65536.0f / 5, -131072.0f / 5, -65536.0f / 5},
{ 65536.0f / 5, -131072.0f / 5, 0},
{ 65536.0f / 5, -131072.0f / 5, 65536.0f / 5},
{ 65536.0f / 5, -131072.0f / 5, 131072.0f / 5},
{ 65536.0f / 5, -65536.0f / 5, -131072.0f / 5},
{ 65536.0f / 5, -65536.0f / 5, -65536.0f / 5},
{ 65536.0f / 5, -65536.0f / 5, 0},
{ 65536.0f / 5, -65536.0f / 5, 65536.0f / 5},
{ 65536.0f / 5, -65536.0f / 5, 131072.0f / 5},
{ 65536.0f / 5, 0, -131072.0f / 5},
{ 65536.0f / 5, 0, -65536.0f / 5},
{ 65536.0f / 5, 0, 0},
{ 65536.0f / 5, 0, 65536.0f / 5},
{ 65536.0f / 5, 0, 131072.0f / 5},
{ 65536.0f / 5, 65536.0f / 5, -131072.0f / 5},
{ 65536.0f / 5, 65536.0f / 5, -65536.0f / 5},
{ 65536.0f / 5, 65536.0f / 5, 0},
{ 65536.0f / 5, 65536.0f / 5, 65536.0f / 5},
{ 65536.0f / 5, 65536.0f / 5, 131072.0f / 5},
{ 65536.0f / 5, 131072.0f / 5, -131072.0f / 5},
{ 65536.0f / 5, 131072.0f / 5, -65536.0f / 5},
{ 65536.0f / 5, 131072.0f / 5, 0},
{ 65536.0f / 5, 131072.0f / 5, 65536.0f / 5},
{ 65536.0f / 5, 131072.0f / 5, 131072.0f / 5},
{ 131072.0f / 5, -131072.0f / 5, -131072.0f / 5},
{ 131072.0f / 5, -131072.0f / 5, -65536.0f / 5},
{ 131072.0f / 5, -131072.0f / 5, 0},
{ 131072.0f / 5, -131072.0f / 5, 65536.0f / 5},
{ 131072.0f / 5, -131072.0f / 5, 131072.0f / 5},
{ 131072.0f / 5, -65536.0f / 5, -131072.0f / 5},
{ 131072.0f / 5, -65536.0f / 5, -65536.0f / 5},
{ 131072.0f / 5, -65536.0f / 5, 0},
{ 131072.0f / 5, -65536.0f / 5, 65536.0f / 5},
{ 131072.0f / 5, -65536.0f / 5, 131072.0f / 5},
{ 131072.0f / 5, 0, -131072.0f / 5},
{ 131072.0f / 5, 0, -65536.0f / 5},
{ 131072.0f / 5, 0, 0},
{ 131072.0f / 5, 0, 65536.0f / 5},
{ 131072.0f / 5, 0, 131072.0f / 5},
{ 131072.0f / 5, 65536.0f / 5, -131072.0f / 5},
{ 131072.0f / 5, 65536.0f / 5, -65536.0f / 5},
{ 131072.0f / 5, 65536.0f / 5, 0},
{ 131072.0f / 5, 65536.0f / 5, 65536.0f / 5},
{ 131072.0f / 5, 65536.0f / 5, 131072.0f / 5},
{ 131072.0f / 5, 131072.0f / 5, -131072.0f / 5},
{ 131072.0f / 5, 131072.0f / 5, -65536.0f / 5},
{ 131072.0f / 5, 131072.0f / 5, 0},
{ 131072.0f / 5, 131072.0f / 5, 65536.0f / 5},
{ 131072.0f / 5, 131072.0f / 5, 131072.0f / 5},
{ 0, 0, 0},
{ 0, 0, 0},
{ 0, 0, 0}
};
static Ipp32f q_3[8] = /* bap=3 (7-Level) Quantization */
{
-196608.0f / 7, -131072.0f / 7, -65536.0f / 7, 0,
65536.0f / 7, 131072.0f / 7, 196608.0f / 7, 0
};
static Ipp32f q_4[128][2] = /* bap=4 (11-Level) Quantization */
{
{-327680.0f / 11, -327680.0f / 11},
{-327680.0f / 11, -262144.0f / 11},
{-327680.0f / 11, -196608.0f / 11},
{-327680.0f / 11, -131072.0f / 11},
{-327680.0f / 11, -65536.0f / 11},
{-327680.0f / 11, 0},
{-327680.0f / 11, 65536.0f / 11},
{-327680.0f / 11, 131072.0f / 11},
{-327680.0f / 11, 196608.0f / 11},
{-327680.0f / 11, 262144.0f / 11},
{-327680.0f / 11, 327680.0f / 11},
{-262144.0f / 11, -327680.0f / 11},
{-262144.0f / 11, -262144.0f / 11},
{-262144.0f / 11, -196608.0f / 11},
{-262144.0f / 11, -131072.0f / 11},
{-262144.0f / 11, -65536.0f / 11},
{-262144.0f / 11, 0},
{-262144.0f / 11, 65536.0f / 11},
{-262144.0f / 11, 131072.0f / 11},
{-262144.0f / 11, 196608.0f / 11},
{-262144.0f / 11, 262144.0f / 11},
{-262144.0f / 11, 327680.0f / 11},
{-196608.0f / 11, -327680.0f / 11},
{-196608.0f / 11, -262144.0f / 11},
{-196608.0f / 11, -196608.0f / 11},
{-196608.0f / 11, -131072.0f / 11},
{-196608.0f / 11, -65536.0f / 11},
{-196608.0f / 11, 0},
{-196608.0f / 11, 65536.0f / 11},
{-196608.0f / 11, 131072.0f / 11},
{-196608.0f / 11, 196608.0f / 11},
{-196608.0f / 11, 262144.0f / 11},
{-196608.0f / 11, 327680.0f / 11},
{-131072.0f / 11, -327680.0f / 11},
{-131072.0f / 11, -262144.0f / 11},
{-131072.0f / 11, -196608.0f / 11},
{-131072.0f / 11, -131072.0f / 11},
{-131072.0f / 11, -65536.0f / 11},
{-131072.0f / 11, 0},
{-131072.0f / 11, 65536.0f / 11},
{-131072.0f / 11, 131072.0f / 11},
{-131072.0f / 11, 196608.0f / 11},
{-131072.0f / 11, 262144.0f / 11},
{-131072.0f / 11, 327680.0f / 11},
{ -65536.0f / 11, -327680.0f / 11},
{ -65536.0f / 11, -262144.0f / 11},
{ -65536.0f / 11, -196608.0f / 11},
{ -65536.0f / 11, -131072.0f / 11},
{ -65536.0f / 11, -65536.0f / 11},
{ -65536.0f / 11, 0},
{ -65536.0f / 11, 65536.0f / 11},
{ -65536.0f / 11, 131072.0f / 11},
{ -65536.0f / 11, 196608.0f / 11},
{ -65536.0f / 11, 262144.0f / 11},
{ -65536.0f / 11, 327680.0f / 11},
{ 0, -327680.0f / 11},
{ 0, -262144.0f / 11},
{ 0, -196608.0f / 11},
{ 0, -131072.0f / 11},
{ 0, -65536.0f / 11},
{ 0, 0},
{ 0, 65536.0f / 11},
{ 0, 131072.0f / 11},
{ 0, 196608.0f / 11},
{ 0, 262144.0f / 11},
{ 0, 327680.0f / 11},
{ 65536.0f / 11, -327680.0f / 11},
{ 65536.0f / 11, -262144.0f / 11},
{ 65536.0f / 11, -196608.0f / 11},
{ 65536.0f / 11, -131072.0f / 11},
{ 65536.0f / 11, -65536.0f / 11},
{ 65536.0f / 11, 0},
{ 65536.0f / 11, 65536.0f / 11},
{ 65536.0f / 11, 131072.0f / 11},
{ 65536.0f / 11, 196608.0f / 11},
{ 65536.0f / 11, 262144.0f / 11},
{ 65536.0f / 11, 327680.0f / 11},
{ 131072.0f / 11, -327680.0f / 11},
{ 131072.0f / 11, -262144.0f / 11},
{ 131072.0f / 11, -196608.0f / 11},
{ 131072.0f / 11, -131072.0f / 11},
{ 131072.0f / 11, -65536.0f / 11},
{ 131072.0f / 11, 0},
{ 131072.0f / 11, 65536.0f / 11},
{ 131072.0f / 11, 131072.0f / 11},
{ 131072.0f / 11, 196608.0f / 11},
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -