⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpa_table.h

📁 samsung 9908DVD源代码,
💻 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -