/*
(c) Copyright 1998-2000 - Tord Jansson
======================================
This file is part of the BladeEnc MP3 Encoder, based on
ISO's reference code for MPEG Layer 3 compression, and might
contain smaller or larger sections that are directly taken
from ISO's reference code.
All changes to the ISO reference code herein are either
copyrighted by Tord Jansson ([email protected])
or sublicensed to Tord Jansson by a third party.
BladeEnc is free software; you can redistribute this file
and/or modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
------------ Changes ------------
2000-12-06 Andre Piotrowski
- reformatted
*/
#ifndef __TABLES__
#define __TABLES__
#define NEW_L3PARM_TABLES 1
#define CALC_NORM 0
#define CBANDS 63
#define CBANDS_s 42
#if NEW_L3PARM_TABLES
typedef struct
{
int cbmax_l; /* number of valid entries */
int numlines_l[CBANDS];
double minval [CBANDS];
double qthr_l [CBANDS];
#if !CALC_NORM /* do we compute more exact values? */
double norm_l [CBANDS];
#endif
double bval_l [CBANDS];
} l3_long_data;
typedef struct
{
int cbmax_s; /* number of valid entries */
int numlines_s[CBANDS_s];
double qthr_s [CBANDS_s];
#if !CALC_NORM /* do we compute more exact values? */
double norm_s [CBANDS_s];
#endif
double SNR_s [CBANDS_s];
double bval_s [CBANDS_s];
} l3_short_data;
typedef struct
{
int cbw_l [CBANDS];
int bu_l [CBANDS];
int bo_l [CBANDS];
double w1_l [CBANDS];
double w2_l [CBANDS];
} l3_long_thres;
typedef struct
{
int cbw_s [CBANDS_s];
int bu_s [CBANDS_s];
int bo_s [CBANDS_s];
double w1_s [CBANDS_s];
double w2_s [CBANDS_s];
} l3_short_thres;
typedef struct
{
l3_long_data long_data;
l3_short_data short_data;
l3_long_thres long_thres;
l3_short_thres short_thres;
} l3_parm_block;
extern l3_parm_block l3_parm[3];
#else /* NEW_L3PARM_TABLES */
typedef struct
{
/* int no; */
int lines;
double minVal;
double qthr;
double norm;
double bVal;
} psyDataElem;
typedef struct
{
/* int no; */
int lines;
double qthr;
double norm;
double snr;
double bVal;
} psyDataElem2;
typedef struct
{
int cbw;
int bu;
int bo;
float w1;
float w2;
} psyDataElem3;
extern psyDataElem psy_longBlock_48000_61[62];
extern psyDataElem psy_longBlock_44100_62[63];
extern psyDataElem psy_longBlock_32000_58[59];
extern psyDataElem2 psy_shortBlock_48000_37[38];
extern psyDataElem2 psy_shortBlock_44100_38[39];
extern psyDataElem2 psy_shortBlock_32000_41[42];
extern psyDataElem3 psy_data3_48000_20[21];
extern psyDataElem3 psy_data3_44100_20[21];
extern psyDataElem3 psy_data3_32000_20[21];
extern psyDataElem3 psy_data4_48000_11[12];
extern psyDataElem3 psy_data4_44100_11[12];
extern psyDataElem3 psy_data4_32000_11[12];
#endif /* NEW_L3PARM_TABLES */
extern double enwindow[512];
extern char aHuffcode[1498][36];
#endif /* __TABLES__ */
|