?? mpa_table.h
字號:
/*
* mpa_table.h
*
* MPEG/audio multichannel decoder.
* Copyright (C) 2003 Optical Player P/J, Samsung Electronics.
*
* Description:
* - Layer II bit allocation tables.
* - integer coefficients table, 2.22 format
*/
;.list off
.include "mpa.h"
FIXED_2_22 equ 22 ; signed 2.22 format
FIXED_1_23 equ 23 ; signed 1.23 format
FIXED_2_22u equ 23 ; unsigned signed 2.22 format
.defvar =FIXED_2_22u, scale_bits
.include "mpa_sepcode.h"
.include "mpa_synth.h"
.if( _DECODER_TYPE != MPEG_1_AUDIO )
.include "mpa_drc.h"
.include "mpa_lfe.h"
.endif
/* Defined in mpa.h */
/* secDecodeTables_mac section idata, word3, overlay, abs ymem_TABLES */
secDecodeTables_mac
allocation_tables::
dw3 27, 30, 8, 12 /* sblimit value */
dw3 allocation_table0
dw3 allocation_table1
dw3 allocation_table2
dw3 allocation_table3
allocation_table0::
allocation_table1::
mc_allocation_table::
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
dw3 -1, 0, 2, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16 /* sb 0 : index value */
dw3 -1, 0, 2, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16 /* sb 1 */
dw3 -1, 0, 2, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16 /* sb 2 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 3 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 4 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 5 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 6 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 7 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 8 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 9 */
dw3 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,16 /* sb 10 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 11 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 12 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 13 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 14 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 15 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 16 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 17 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 18 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 19 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 20 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 21 */
dw3 -1, 0, 1, 2, 3, 4, 5,16,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 22 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 23 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 24 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 25 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 26 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 27 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 28 */
dw3 -1, 0, 1,16,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 29 */
allocation_table2::
allocation_table3::
dw3 -1, 0, 1, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15 /* sb 0 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15 /* sb 1 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 2 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 3 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 4 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 5 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 6 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 7 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 8 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 9 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 10 */
dw3 -1, 0, 1, 3, 4, 5, 6, 7,-1,-1,-1,-1,-1,-1,-1,-1 /* sb 11 */
nbal_table::
dw3 4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2
steps_table::
dw3 3,5,7,9,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,-1
bits_table::
dw3 5,7,3,10,4,5,6,7,8,9,10,11,12,13,14,15,16,-1
sbgr_table::
dw3 0,1,2,3,4,5,6,7,8,8,9,9,10,10,10,10,11,11
dw3 11,11,11,11,11,11,11,11,11,11,11,11,11,11
/*
* Fixed-point format: ABCC CCCC CCCC CCCC CCCC CCCC binary 24-bit
* AB == whole part (sign + 1 bits)
* C == fractional part (22 bits)
*
* Values are signed two's complement, so the effective range is:
* 0x80000000 to 0x7fffffff
* -2.0 to +1.99999999
*
* The smallest representable value is:
* 0x000001 == 0.0000001
*/
/* for Layer I */
I_MSB_position::
dw3 24-( 0-1), 24-( 1-1), 24-( 2-1), 24-( 3-1)
dw3 24-( 4-1), 24-( 5-1), 24-( 6-1), 24-( 7-1)
dw3 24-( 8-1), 24-( 9-1), 24-(10-1), 24-(11-1)
dw3 24-(12-1), 24-(13-1), 24-(14-1), 24-(15-1)
// 1 / 2^(nb-1) table, nb = 2 ... 15
I_dequant_coeff_2::
dw3 -1, -1, 0x400000, 0x200000
dw3 0x100000, 0x080000, 0x040000, 0x020000
dw3 0x010000, 0x008000, 0x004000, 0x002000
dw3 0x001000, 0x000800, 0x000400, 0x000200
// 2^nb / (2^nb - 1) table, nb = 2 ... 15
I_dequant_coeff_1::
dw3 -1, -1, 0xaaaaaa, 0x924924
dw3 0x888888, 0x842108, 0x820820, 0x810204
dw3 0x808080, 0x804020, 0x802008, 0x801002
dw3 0x800800, 0x800400, 0x800200, 0x800100
/* for Layer II */
II_MSB_position::
dw3 24-( 2-1), 24-( 3-1), 24-( 3-1), 24-( 4-1)
dw3 24-( 4-1), 24-( 5-1), 24-( 6-1), 24-( 7-1)
dw3 24-( 8-1), 24-( 9-1), 24-(10-1), 24-(11-1)
dw3 24-(12-1), 24-(13-1), 24-(14-1), 24-(15-1)
dw3 24-(16-1)
II_dequant_coeff_D::
dw3 0x400000, 0x400000, 0x200000, 0x400000
dw3 0x100000, 0x080000, 0x040000, 0x020000
dw3 0x010000, 0x008000, 0x004000, 0x002000
dw3 0x001000, 0x000800, 0x000400, 0x000200
dw3 0x000100
II_dequant_coeff_C::
dw3 0xaaaaaa, 0xcccccc, 0x924924, 0xe38e38
dw3 0x888888, 0x842108, 0x820820, 0x810204
dw3 0x808080, 0x804020, 0x802008, 0x801002
dw3 0x800800, 0x800400, 0x800200, 0x800100
dw3 0x800080
scalefactor::
.if( 0 )
/* unsigned 2.22 integer format (0.0 ... 1.0) */
dw3 0xFFFFFF, 0xCB2FF5, 0xA14517, 0x800000, 0x6597FA, 0x50A28B, 0x400000, 0x32CBFD,
dw3 0x285146, 0x200000, 0x1965FE, 0x1428A2, 0x100000, 0x0CB2FF, 0x0A1451, 0x080000,
dw3 0x06597F, 0x050A28, 0x040000, 0x032CBF, 0x028514, 0x020000, 0x019660, 0x014289,
dw3 0x010000, 0x00CB30, 0x00A145, 0x008000, 0x006598, 0x0050A2, 0x003FFF, 0x0032CC,
dw3 0x002851, 0x002000, 0x001966, 0x001428, 0x001000, 0x000CB2, 0x000A14, 0x0007FF,
dw3 0x000659, 0x00050A, 0x000400, 0x00032C, 0x000285, 0x0001FF, 0x000196, 0x000142,
dw3 0x0000FF, 0x0000CB, 0x0000A1, 0x000080, 0x000065, 0x000050, 0x00003F, 0x000033,
dw3 0x000028, 0x00001F, 0x000019, 0x000014, 0x00000F, 0x00000C, 0x00000A, 0
.else
/* 1/2 down-scale signed 1.23 integer format (0.0 ... 1.0) */
dw3 0x7FFFFF, 0x6597FA, 0x50A28B, 0x400000, 0x32CBFD, 0x285146, 0x200000, 0x1965FE
dw3 0x1428A2, 0x100000, 0x0CB2FF, 0x0A1451, 0x080000, 0x06597F, 0x050A28, 0x040000
dw3 0x032CBF, 0x028514, 0x020000, 0x019660, 0x014289, 0x010000, 0x00CB30, 0x00A145
dw3 0x008000, 0x006598, 0x0050A2, 0x003FFF, 0x0032CC, 0x002851, 0x002000, 0x001966
dw3 0x001428, 0x001000, 0x000CB2, 0x000A14, 0x0007FF, 0x000659, 0x00050A, 0x000400
dw3 0x00032C, 0x000285, 0x0001FF, 0x000196, 0x000142, 0x0000FF, 0x0000CB, 0x0000A1
dw3 0x000080, 0x000065, 0x000050, 0x00003F, 0x000033, 0x000028, 0x00001F, 0x000019
dw3 0x000014, 0x00000F, 0x00000C, 0x00000A, 0x000008, 0x000006, 0x000005, 0
.endif
.if( _DECODER_TYPE != MPEG_1_AUDIO )
/*
* Transmission channel table for mc and aug part:
* MC part:
* 0: copied from T0
* 1: copied from T1
* 2: copied from T2
* 3: copied from T3
* 4: select T0 or T1
* 5: Tx transmitted
* 6: select T3/T2 or Tx transmitted
* => if center yes/no in second stereo mode
* -1: forbidden
* AUG part:
* 0,1: select T0 or T1
* 2: copied from T2
* 3: copied from T3
* 4: copied from T4
* 5: copied from T5
* 7: Tx transmitted
* -1: forbidden
*
* Table index is dyn_cross_mode[sbgr], dyn_second_stereo[sbgr]
* if second stereo mode.
*/
tc_table::
/* dyn_cross_bits = 4 */
dw3 5,5,5,4,5,4,4,4,5,5,5,5,5,4,5,-1 // T2
dw3 5,5,0,5,0,5,0,0,5,2,5,2,0,5,2,-1 // T3
dw3 5,1,5,5,1,1,5,1,3,5,2,1,2,3,2,-1 // T4
/* dyn_cross_bits = 3 */
dw3 5,5,4,4,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 // T2
dw3 5,4,5,4,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 // T3
/* dyn_cross_bits = 1 */
dw3 5,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 // T2
/* second stereo mode */
dw3 5,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 // if 2/0(1/0) + 2/0, T2 and T3
dw3 6,6,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 // if 3/0 + 2/0, T3 and T4
aug_tc_table::
dw3 7,7,7,7,7,0,0,0,0,0,2,2,2,2,3,3,3,3,3,-1 // T5
dw3 7,1,2,4,5,7,1,2,4,0,7,1,2,4,7,1,2,4,3,-1 // T6
denormalisation_factor::
// fix24 2.414213562, 3.414213562, 3.414213562,
// fix24 2.207106781, 3.121320344, 4.414213562,
// fix24 1.0
/* unsigned 4.20 (3.21 format conversion) integer format:
multiplied output must be scaled up 3-bit */
dw3 0x4d413c, 0x6d413c, 0x6d413c // dematrix procedure 0, 2 L/R, C/Ls/Rs
dw3 0x46a09e, 0x63e1db, 0x8d413c // dematrix procedure 1 L/R, C, Ls/Rs
dw3 0x200000 // dematrix procedure 3 L/R/C/Ls/Rs
aug_dematrix_factor::
// fix24 0.23570226039552, 4.2426406871193,
// fix24 0.33333333333333, 3.0000000000000
/* unsigned 4.20 format:
multiplied output must be scaled up 3-bit (+ psh1) */
dw3 0x078adf, 0x87c3b6 // dematrix procedure 0, 1, 2
dw3 0x0aaaaa, 0x600000 // dematrix procedure 3
aug_denormalisation_factor::
/* fix24 3.517766953, 3.517766953, 4.974873734, 4.974873734, 4.974873734, 4.690355937, 4.690355937
fix24 3.310660172, 3.310660172, 4.681980515, 6.621320344, 6.621320344, 4.414213562, 4.414213562
fix24 1.750000000, 1.750000000, 1.750000000, 1.750000000, 1.750000000, 2.333333333, 2.333333333
fix24 3.414213562, 3.414213562, 4.828427125, 4.828427125, 4.828427125, 3.414213562, 3.414213562
fix24 3.207106781, 3.207106781, 4.535533906, 6.414213562, 6.414213562, 3.207106781, 3.207106781
fix24 2.000000000, 2.000000000, 2.000000000, 2.000000000, 2.000000000, 2.000000000, 2.000000000
fix24 2.414213563, 2.414213563, 3.414213563, 3.414213563, 3.414213563, 2.414213563, 2.414213563
fix24 2.207106781, 2.207106781, 3.121320344, 4.414213562, 4.414213562, 2.207106781, 2.207106781
fix24 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000, 1.000000000 */
/* unsigned 4.20 format:
multiplied output must be scaled up 3-bit (+ psh1) */
// T0 T1 T2 T3 T4 T5 T6 // dematrix_procedure << 4 + aug_mtx_proc
dw3 0x70918C, 0x70918C, 0x9F322A, 0x9F322A, 0x9F322A, 0x961765, 0x961765 // case 0x00, 0x20
dw3 0x69F0ED, 0x69F0ED, 0x95D2C8, 0xD3E1DB, 0xD3E1DB, 0x8D413C, 0x8D413C // case 0x10
dw3 0x380000, 0x380000, 0x380000, 0x380000, 0x380000, 0x4AAAAA, 0x4AAAAA // case 0x30
dw3 0x6D413C, 0x6D413C, 0x9A8279, 0x9A8279, 0x9A8279, 0x6D413C, 0x6D413C // case 0x01, 0x21
dw3 0x66A09E, 0x66A09E, 0x912318, 0xCD413C, 0xCD413C, 0x66A09E, 0x66A09E // case 0x11
dw3 0x400000, 0x400000, 0x400000, 0x400000, 0x400000, 0x400000, 0x400000 // case 0x31
dw3 0x4D413C, 0x4D413C, 0x6D413C, 0x6D413C, 0x6D413C, 0x4D413C, 0x4D413C // case 0x03, 0x23
dw3 0x46A09E, 0x46A09E, 0x63E1DB, 0x8D413C, 0x8D413C, 0x46A09E, 0x46A09E // case 0x13
dw3 0x200000, 0x200000, 0x200000, 0x200000, 0x200000, 0x200000, 0x200000 // case 0x33
downmix_factor::
fix24 0.707106781, 0.500000000 // equations (1)(2), (3)(4) and (7)(8)
aug_downmix_factor::
fix24 0.75, 0.25, 0.707106781, 0.35355339 // 1/4 * sqrt(2)
.endif /* .if( _DECODER_TYPE != MPEG_1_AUDIO ) */
__table_size__::
.list on
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -