12c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 22c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2004-2010 NXP Software 32c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2010 The Android Open Source Project 42c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 52c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 62c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * you may not use this file except in compliance with the License. 72c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * You may obtain a copy of the License at 82c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 92c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * http://www.apache.org/licenses/LICENSE-2.0 102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Unless required by applicable law or agreed to in writing, software 122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * See the License for the specific language governing permissions and 152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * limitations under the License. 162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef _COMP_LIM_H 192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define _COMP_LIM_H 202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" { 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Includes */ 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h" 332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Structures */ 382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct /* Compressor state */ 422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Normaliser */ 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Norm_Attack; /* Attack time constant of the Normaliser integrator */ 452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Norm_Decay; /* Decay time constant of the Normaliser integrator */ 462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 NormInt; /* Normaliser integrator current value */ 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Shift; /* Shift gain */ 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Threshold; /* Target threshold */ 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Compressor */ 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Comp_Atten; /* Attenuation applied before soft knee compressor */ 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Comp_Attack_S; /* Attack time constant of the slow integrator */ 532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Comp_Decay_S; /* Decay time constant of slow the integrator */ 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Comp_Attack_F; /* Attack time constant of fast the integrator */ 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 Comp_Decay_F; /* Decay time constant of fast the integrator */ 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 SoftClipGain; /* Soft clip gain control */ 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 CompIntSlow; /* Compressor slow integrator current value */ 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 CompIntFast; /* Compressor fast integrator current value */ 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} CompLim_Instance_t; 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Function Prototypes */ 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid NonLinComp_D16(LVM_INT16 Gain, 712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pSterBfIn, 722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 *pSterBfOut, 732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 BlockLength); 742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* #ifndef _COMP_LIM_H */ 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 84