ref: 066f3cc7bac1d1a85f5274e0ec90165b3cfcbec6
dir: /interface.h/
/*
* Definitions of Bitstream elements
*
* Copyright (c) 1999 M. Bakker
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/**************************************************************************
Version Control Information Method: CVS
Identifiers:
$Revision: 1.2 $
$Date: 2000/10/05 08:39:02 $ (check in)
$Author: menno $
*************************************************************************/
#ifndef _interface_h_
#define _interface_h_
/*
* interface between the encoder and decoder
*/
#define C_LN10 2.30258509299404568402 /* ln(10) */
#define C_PI 3.14159265358979323846 /* pi */
#define C_SQRT2 1.41421356237309504880 /* sqrt(2) */
#define MINTHR .5
#define SF_C1 (13.33333/1.333333)
/* prediction */
#define PRED_ORDER 2
#define PRED_ALPHA 0.9
#define PRED_A 0.95
#define PRED_B 0.95
enum
{
/*
* block switching
*/
LN = 2048,
SN = 256,
LN2 = LN/2,
SN2 = SN/2,
LN4 = LN/4,
SN4 = SN/4,
NSHORT = LN/SN,
MAX_SBK = NSHORT,
NUM_WIN_SEQ,
WLONG = 0, /* ONLY_LONG_WINDOW, */
WSTART,
WSHORT,
WSTOP,
MAXBANDS = 16*NSHORT, /* max number of scale factor bands ((NSFB_SHORT+1)*MAX_SHORT_IN_LONG_BLOCK) */
MAXFAC = 121, /* maximum scale factor */
MIDFAC = (MAXFAC-1)/2,
SF_OFFSET = 100, /* global gain must be positive */
/*
* specify huffman tables as signed (1) or unsigned (0)
*/
HUF1SGN = 1,
HUF2SGN = 1,
HUF3SGN = 0,
HUF4SGN = 0,
HUF5SGN = 1,
HUF6SGN = 1,
HUF7SGN = 0,
HUF8SGN = 0,
HUF9SGN = 0,
HUF10SGN = 0,
HUF11SGN = 0,
BY4BOOKS = 4,
ESCBOOK = 11,
NSPECBOOKS = ESCBOOK + 1,
BOOKSCL = NSPECBOOKS,
NBOOKS = NSPECBOOKS+1,
INTENSITY_HCB = 15,
INTENSITY_HCB2 = 14,
LONG_SECT_BITS = 5,
SHORT_SECT_BITS = 3,
/*
* Program Configuration
*/
Main_Profile = 0,
LC_Profile = 1,
SRS_Profile = 2,
Fs_48 = 3,
Fs_44 = 4,
Fs_32 = 5,
/*
* Misc constants
*/
CC_DOM = 0, /* before TNS */
CC_IND = 1,
/*
* Raw bitstream constants
*/
LEN_SE_ID = 3,
LEN_TAG = 4,
LEN_GLOB_GAIN = 8,
LEN_COM_WIN = 1,
LEN_ICS_RESERV = 1,
LEN_WIN_SEQ = 2,
LEN_WIN_SH = 1,
LEN_MAX_SFBL = 6,
LEN_MAX_SFBS = 4,
LEN_CB = 4,
LEN_SCL_PCM = 8,
LEN_PRED_PRES = 1,
LEN_PRED_RST = 1,
LEN_PRED_RSTGRP = 5,
LEN_PRED_ENAB = 1,
LEN_MASK_PRES = 2,
LEN_MASK = 1,
LEN_PULSE_PRES = 1,
LEN_TNS_PRES = 1,
LEN_TNS_NFILTL = 2,
LEN_TNS_NFILTS = 1,
LEN_TNS_COEFF_RES = 1,
LEN_TNS_LENGTHL = 6,
LEN_TNS_LENGTHS = 4,
LEN_TNS_ORDERL = 5,
LEN_TNS_ORDERS = 3,
LEN_TNS_DIRECTION = 1,
LEN_TNS_COMPRESS = 1,
LEN_GAIN_PRES = 1,
LEN_NEC_NPULSE = 2,
LEN_NEC_ST_SFB = 6,
LEN_NEC_POFF = 5,
LEN_NEC_PAMP = 4,
NUM_NEC_LINES = 4,
NEC_OFFSET_AMP = 4,
LEN_NCC = 3,
LEN_IS_CPE = 1,
LEN_CC_LR = 1,
LEN_CC_DOM = 1,
LEN_CC_SGN = 1,
LEN_CCH_GES = 2,
LEN_CCH_CGP = 1,
LEN_D_CNT = 4,
LEN_D_ESC = 12,
LEN_F_CNT = 4,
LEN_F_ESC = 8,
LEN_BYTE = 8,
LEN_PAD_DATA = 8,
LEN_PC_COMM = 8,
/* sfb 40, coef 672, pred bw of 15.75 kHz */
MAX_PRED_SFB = 48, // Max = 48, was 40
ID_SCE = 0,
ID_CPE,
ID_CCE,
ID_LFE,
ID_DSE,
ID_PCE,
ID_FIL,
ID_END,
/* PLL's don't like idle channels! */
FILL_VALUE = 0x55,
/*
* program configuration element
*/
LEN_PROFILE = 2,
LEN_SAMP_IDX = 4,
LEN_NUM_ELE = 4,
LEN_NUM_LFE = 2,
LEN_NUM_DAT = 3,
LEN_NUM_CCE = 4,
LEN_MIX_PRES = 1,
LEN_ELE_IS_CPE = 1,
LEN_IND_SW_CCE = 1,
LEN_COMMENT_BYTES = 8,
/*
* audio data interchange format header
*/
LEN_ADIF_ID = (32/8),
LEN_COPYRT_PRES = 1,
LEN_COPYRT_ID = (72/8),
LEN_ORIG = 1,
LEN_HOME = 1,
LEN_BS_TYPE = 1,
LEN_BIT_RATE = 23,
LEN_NUM_PCE = 4,
LEN_ADIF_BF = 20,
XXX
};
#endif /* #ifndef _interface_h_ */