You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1438 lines
50 KiB

/******************************************************************************
* audio_constants.h : defines the MPEG1 Layer I-II audio constants and tables
* (c)1999 VideoLAN
******************************************************************************/
/******************************************************************************
* 32 bits (4 bytes) audio frame header definitions
******************************************************************************/
/*
* syncword == `1111 1111 1111'
*/
#define ADEC_HEADER_SYNCWORD_MASK 0xFFF00000
#define ADEC_HEADER_SYNCWORD_SHIFT 20
/* ID :
*
* `0' == reserved
* `1' == ISO/CEI 11172-3
*/
#define ADEC_HEADER_ID_MASK 0x00080000
#define ADEC_HEADER_ID_SHIFT 19
/*
* Layer :
*
* - `00' == reserved
* - `01' == Layer III
* - `10' == Layer II
* - `11' == Layer I
*/
#define ADEC_HEADER_LAYER_MASK 0x00060000
#define ADEC_HEADER_LAYER_SHIFT 17
#define ADEC_HEADER_LAYER_1 0x00060000
#define ADEC_HEADER_LAYER_2 0x00040000
#define ADEC_HEADER_LAYER_3 0x00020000
/* protection_bit */
#define ADEC_HEADER_PROTECTION_BIT_MASK 0x00010000
#define ADEC_HEADER_PROTECTION_BIT_SHIFT 16
/* bitrate_index */
#define ADEC_HEADER_BITRATE_INDEX_MASK 0x0000F000
#define ADEC_HEADER_BITRATE_INDEX_SHIFT 12
/*
* sampling_frequency :
*
* - `00' == 44100 Hz
* - `01' == 48000 Hz
* - `10' == 32000 Hz
* - `11' == reserved
*/
#define ADEC_HEADER_SAMPLING_FREQUENCY_MASK 0x00000C00
#define ADEC_HEADER_SAMPLING_FREQUENCY_SHIFT 10
/* padding_bit */
#define ADEC_HEADER_PADDING_BIT_MASK 0x00000200
#define ADEC_HEADER_PADDING_BIT_SHIFT 9
/* private_bit */
#define ADEC_HEADER_PRIVATE_BIT_MASK 0x00000100
#define ADEC_HEADER_PRIVATE_BIT_SHIFT 8
/*
* mode :
*
* - `00' == stereo (stereo mode)
* - `01' == combined stereo (stereo mode)
* - `10' == two channels (stereo mode)
* - `11' == one channel (mono mode)
*/
#define ADEC_HEADER_MODE_MASK 0x000000C0
#define ADEC_HEADER_MODE_SHIFT 6
/* mode_extension */
#define ADEC_HEADER_MODE_EXTENSION_MASK 0x00000030
#define ADEC_HEADER_MODE_EXTENSION_SHIFT 4
/* copyright */
#define ADEC_HEADER_COPYRIGHT_MASK 0x00000008
#define ADEC_HEADER_COPYRIGHT_SHIFT 3
/* original/copy */
#define ADEC_HEADER_ORIGINAL_COPY_MASK 0x00000004
#define ADEC_HEADER_ORIGINAL_COPY_SHIFT 2
/* emphasis */
#define ADEC_HEADER_EMPHASIS_MASK 0x00000003
#define ADEC_HEADER_EMPHASIS_SHIFT 0
/******************************************************************************
* frame sizes = f( layer, padding_bit, sampling_frequency, bitrate_index )
******************************************************************************
* ISO/IEC 11172-3 2.4.3.1 explains how to find out the number of bytes between
* two consecutive syncwords. In order to work out the body size of the frame,
* we just have to substract 4 bytes for the header size.
*
* = Layer I : (slot_size == 4 bytes)
* - padding_bit == 0 :
* frame_size = ( floor( 12 * bitrate(layer, bitrate_index) / sampling_frequency ) * 4 ) - 4
* - padding_bit == 1 :
* frame_size = ( ceil( 12 * bitrate(layer, bitrate_index) / sampling_frequency ) * 4 ) - 4
*
* = Layer II : (slot_size == 1 byte)
* - padding_bit == 0 :
* frame_size = ( floor( 144 * bitrate(layer, bitrate_index) / sampling_frequency ) * 1 ) - 4
* - padding_bit == 1 :
* frame_size = ( ceil( 144 * bitrate(layer, bitrate_index) / sampling_frequency ) * 1 ) - 4
*
* The frame sizes are stored in the following array :
* frame_size = ADEC_FRAME_SIZE[ 128*layer + 64*padding_bit + 16*sampling_frequency + bitrate_index ]
******************************************************************************/
#define ADEC_FRAME_SIZE \
{ \
/* Layer == `00' (reserved) */ \
\
/* padding_bit == `0' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
/* padding_bit == `1' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
\
/* Layer == `01' (III) */ \
\
/* padding_bit == `0' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
/* padding_bit == `1' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
\
/* Layer == `10' (II) */ \
\
/* padding_bit == `0' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 100, 152, 178, 204, 257, 309, 361, 413, 518, 622, 727, 831, 1040, 1249, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 92, 140, 164, 188, 236, 284, 332, 380, 476, 572, 668, 764, 956, 1148, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 140, 212, 248, 284, 356, 428, 500, 572, 716, 860, 1004, 1148, 1436, 1724, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
/* padding_bit == `1' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 101, 153, 179, 205, 258, 310, 362, 414, 519, 623, 728, 832, 1041, 1250, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 92, 140, 164, 188, 236, 284, 332, 380, 476, 572, 668, 764, 956, 1148, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 140, 212, 248, 284, 356, 428, 500, 572, 716, 860, 1004, 1148, 1436, 1724, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
\
/* Layer == `11' (I) */ \
\
/* padding_bit == `0' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 28, 64, 100, 132, 168, 204, 236, 272, 308, 344, 376, 412, 448, 480, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 44, 92, 140, 188, 236, 284, 332, 380, 428, 476, 524, 572, 620, 668, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
\
/* padding_bit == `1' */ \
\
/* sampling_frequency == `00' (44100 Hz) */ \
0, 32, 68, 104, 136, 172, 208, 240, 276, 312, 348, 380, 416, 452, 484, 0, \
/* sampling_frequency == `01' (48000 Hz) */ \
0, 28, 60, 92, 124, 156, 188, 220, 252, 284, 316, 348, 380, 412, 444, 0, \
/* sampling_frequency == `10' (32000 Hz) */ \
0, 44, 92, 140, 188, 236, 284, 332, 380, 428, 476, 524, 572, 620, 668, 0, \
/* sampling_frequency == `11' (reserved) */ \
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \
}
/******************************************************************************
* scale factors = f( scalefactor ) (Layer I & II, see ISO/IEC 11172-3 2.4.1)
******************************************************************************
* Theses values are 2^(1 - index/3) (see ISO/IEC 11172-3 2.4.2.5)
******************************************************************************/
#define ADEC_SCALE_FACTOR \
{ \
/* 0*/ 2.00000000000000, /* 1*/ 1.58740105196820, /* 2*/ 1.25992104989487, \
/* 3*/ 1.00000000000000, /* 4*/ 0.79370052598410, /* 5*/ 0.62996052494744, \
/* 6*/ 0.50000000000000, /* 7*/ 0.39685026299205, /* 8*/ 0.31498026247372, \
/* 9*/ 0.25000000000000, /*10*/ 0.19842513149602, /*11*/ 0.15749013123686, \
/*12*/ 0.12500000000000, /*13*/ 0.09921256574801, /*14*/ 0.07874506561843, \
/*15*/ 0.06250000000000, /*16*/ 0.04960628287401, /*17*/ 0.03937253280921, \
/*18*/ 0.03125000000000, /*19*/ 0.02480314143700, /*20*/ 0.01968626640461, \
/*21*/ 0.01562500000000, /*22*/ 0.01240157071850, /*23*/ 0.00984313320230, \
/*24*/ 0.00781250000000, /*25*/ 0.00620078535925, /*26*/ 0.00492156660115, \
/*27*/ 0.00390625000000, /*28*/ 0.00310039267963, /*29*/ 0.00246078330058, \
/*30*/ 0.00195312500000, /*31*/ 0.00155019633981, /*32*/ 0.00123039165029, \
/*33*/ 0.00097656250000, /*34*/ 0.00077509816991, /*35*/ 0.00061519582514, \
/*36*/ 0.00048828125000, /*37*/ 0.00038754908495, /*38*/ 0.00030759791257, \
/*39*/ 0.00024414062500, /*40*/ 0.00019377454248, /*41*/ 0.00015379895629, \
/*42*/ 0.00012207031250, /*43*/ 0.00009688727124, /*44*/ 0.00007689947814, \
/*45*/ 0.00006103515625, /*46*/ 0.00004844363562, /*47*/ 0.00003844973907, \
/*48*/ 0.00003051757813, /*49*/ 0.00002422181781, /*50*/ 0.00001922486954, \
/*51*/ 0.00001525878906, /*52*/ 0.00001211090890, /*53*/ 0.00000961243477, \
/*54*/ 0.00000762939453, /*55*/ 0.00000605545445, /*56*/ 0.00000480621738, \
/*57*/ 0.00000381469727, /*58*/ 0.00000302772723, /*59*/ 0.00000240310869, \
/*60*/ 0.00000190734863, /*61*/ 0.00000151386361, /*62*/ 0.00000120155435, \
/*63*/ 0.0 /* ?? invalid scale factor ?? */ \
}
/******************************************************************************
* Layer I definitions
******************************************************************************/
/*
* slope table = f( allocation[ch][sb] (see ISO/IEC 11171-3 2.4.1) )
*/
#define ADEC_LAYER1_SLOPE \
{ \
/* 0*/ 0.0, /* no sample */ \
/* 1*/ 2.0/3, \
/* 2*/ 2.0/7, \
/* 3*/ 2.0/15, \
/* 4*/ 2.0/31, \
/* 5*/ 2.0/63, \
/* 6*/ 2.0/127, \
/* 7*/ 2.0/255, \
/* 8*/ 2.0/511, \
/* 9*/ 2.0/1023, \
/*10*/ 2.0/2047, \
/*11*/ 2.0/4095, \
/*12*/ 2.0/8191, \
/*13*/ 2.0/16383, \
/*14*/ 2.0/32767, \
/*15*/ 0.0 /* invalid bit allocation */ \
}
/*
* offset table = f( allocation[ch][sb] (see ISO/IEC 11172-3 2.4.1) )
*/
#define ADEC_LAYER1_OFFSET \
{ \
/* 0*/ 0.0, /* no sample */ \
/* 1*/ -2.0/3, \
/* 2*/ -6.0/7, \
/* 3*/ -14.0/15, \
/* 4*/ -30.0/31, \
/* 5*/ -62.0/63, \
/* 6*/ -126.0/127, \
/* 7*/ -254.0/255, \
/* 8*/ -510.0/511, \
/* 9*/ -1022.0/1023, \
/*10*/ -2046.0/2047, \
/*11*/ -4094.0/4095, \
/*12*/ -8190.0/8191, \
/*13*/ -16382.0/16383, \
/*14*/ -32766.0/32767, \
/*15*/ 0.0 /* invalid bit allocation */ \
}
/******************************************************************************
* Layer II definitions
******************************************************************************/
/*
* Bitrate PER CHANNEL index = f( mode, bitrate_index )
* (see ISO/IEC 11172-3 2.4.2.3)
*
* - This index is used in the ADEC_LAYER2_SBLIMIT and ADEC_LAYER2_NBAL tables.
*
* - 0 == forbidden mode/bitrate_index combination
* - 1 == 32 kbits/s per channel
* - 2 == 48 kbits/s per channel
* - 3 == 56 kbits/s per channel
* - 4 == 64 kbits/s per channel
* - 5 == 80 kbits/s per channel
* - 6 == 96 kbits/s per channel
* - 7 == 112 kbits/s per channel
* - 8 == 128 kbits/s per channel
* - 9 == 160 kbits/s per channel
* - 10 == 192 kbits/s per channel
*/
#define ADEC_LAYER2_BITRATE_PER_CHANNEL_INDEX \
{ \
/* mode == `00' (stereo) */ \
{ 0, 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, \
/* mode == `01' (combined stereo) */ \
{ 0, 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, \
/* mode == `10' (two channels) */ \
{ 0, 0, 0, 0, 1, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, \
/* mode == `11' (one channel) */ \
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0 } \
}
/*
* Number of subbands = f( sampling_frequency, bitrate_per_channel_index )
* (see ISO/IEC 11172-3 Annex B.2)
*/
#define ADEC_LAYER2_SBLIMIT \
{ \
/* sampling_frequency == `00' (44100 Hz) */ \
{ 0, 8, 8, 27, 27, 27, 30, 30, 30, 30, 30}, \
/* sampling_frequency == `01' (48000 Hz) */ \
{ 0, 8, 8, 27, 27, 27, 27, 27, 27, 27, 27}, \
/* sampling_frequency == `10' (32000 Hz) */ \
{ 0, 12, 12, 27, 27, 27, 30, 30, 30, 30, 30} \
}
/*
* Number of bits allocated = f( bitrate_per_channel_index, subband )
* (see ISO/IEC 11172-3 Annex B.2)
*/
#define ADEC_LAYER2_NBAL \
{ \
/* bitrate_per_channel_index <= 2 */ \
{ 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, \
/* bitrate_per_channel_index > 2 */ \
{ 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, 0, 0} \
}
/*
* = When 3 samples are grouped in one codeword, we have to ungroup them in
* order to dequantize the samples (see ISO/IEC 11172-3 2.4.3.3.4) :
* 1) Ungrouping
* for ( i = 0; i < 3; i++ )
* {
* s[i] = c % nlevels;
* c = c / nlevels;
* }
* 2) Requantization
*
* = We pre-calculated all this, and stored the results in the following
* ungroup`nlevels' tables. ISO/IEC 11172-3 Annex B.4 tells us that the
* samples are grouped only when nlevels == 3, 5, or 9.
*
* = ADEC_LAYER2_UNGROUPn = f(3 * n*n*n)
*/
#define ADEC_LAYER2_UNGROUP3 \
{ \
-2.0/3, -2.0/3, -2.0/3, \
.0 , -2.0/3, -2.0/3, \
2.0/3, -2.0/3, -2.0/3, \
-2.0/3, .0 , -2.0/3, \
.0 , .0 , -2.0/3, \
2.0/3, .0 , -2.0/3, \
-2.0/3, 2.0/3, -2.0/3, \
.0 , 2.0/3, -2.0/3, \
2.0/3, 2.0/3, -2.0/3, \
-2.0/3, -2.0/3, .0 , \
.0 , -2.0/3, .0 , \
2.0/3, -2.0/3, .0 , \
-2.0/3, .0 , .0 , \
.0 , .0 , .0 , \
2.0/3, .0 , .0 , \
-2.0/3, 2.0/3, .0 , \
.0 , 2.0/3, .0 , \
2.0/3, 2.0/3, .0 , \
-2.0/3, -2.0/3, 2.0/3, \
.0 , -2.0/3, 2.0/3, \
2.0/3, -2.0/3, 2.0/3, \
-2.0/3, .0 , 2.0/3, \
.0 , .0 , 2.0/3, \
2.0/3, .0 , 2.0/3, \
-2.0/3, 2.0/3, 2.0/3, \
.0 , 2.0/3, 2.0/3, \
2.0/3, 2.0/3, 2.0/3 \
}
#define ADEC_LAYER2_UNGROUP5 \
{ \
-.8, -.8, -.8, \
-.4, -.8, -.8, \
.0, -.8, -.8, \
.4, -.8, -.8, \
.8, -.8, -.8, \
-.8, -.4, -.8, \
-.4, -.4, -.8, \
.0, -.4, -.8, \
.4, -.4, -.8, \
.8, -.4, -.8, \
-.8, .0, -.8, \
-.4, .0, -.8, \
.0, .0, -.8, \
.4, .0, -.8, \
.8, .0, -.8, \
-.8, .4, -.8, \
-.4, .4, -.8, \
.0, .4, -.8, \
.4, .4, -.8, \
.8, .4, -.8, \
-.8, .8, -.8, \
-.4, .8, -.8, \
.0, .8, -.8, \
.4, .8, -.8, \
.8, .8, -.8, \
-.8, -.8, -.4, \
-.4, -.8, -.4, \
.0, -.8, -.4, \
.4, -.8, -.4, \
.8, -.8, -.4, \
-.8, -.4, -.4, \
-.4, -.4, -.4, \
.0, -.4, -.4, \
.4, -.4, -.4, \
.8, -.4, -.4, \
-.8, .0, -.4, \
-.4, .0, -.4, \
.0, .0, -.4, \
.4, .0, -.4, \
.8, .0, -.4, \
-.8, .4, -.4, \
-.4, .4, -.4, \
.0, .4, -.4, \
.4, .4, -.4, \
.8, .4, -.4, \
-.8, .8, -.4, \
-.4, .8, -.4, \
.0, .8, -.4, \
.4, .8, -.4, \
.8, .8, -.4, \
-.8, -.8, .0, \
-.4, -.8, .0, \
.0, -.8, .0, \
.4, -.8, .0, \
.8, -.8, .0, \
-.8, -.4, .0, \
-.4, -.4, .0, \
.0, -.4, .0, \
.4, -.4, .0, \
.8, -.4, .0, \
-.8, .0, .0, \
-.4, .0, .0, \
.0, .0, .0, \
.4, .0, .0, \
.8, .0, .0, \
-.8, .4, .0, \
-.4, .4, .0, \
.0, .4, .0, \
.4, .4, .0, \
.8, .4, .0, \
-.8, .8, .0, \
-.4, .8, .0, \
.0, .8, .0, \
.4, .8, .0, \
.8, .8, .0, \
-.8, -.8, .4, \
-.4, -.8, .4, \
.0, -.8, .4, \
.4, -.8, .4, \
.8, -.8, .4, \
-.8, -.4, .4, \
-.4, -.4, .4, \
.0, -.4, .4, \
.4, -.4, .4, \
.8, -.4, .4, \
-.8, .0, .4, \
-.4, .0, .4, \
.0, .0, .4, \
.4, .0, .4, \
.8, .0, .4, \
-.8, .4, .4, \
-.4, .4, .4, \
.0, .4, .4, \
.4, .4, .4, \
.8, .4, .4, \
-.8, .8, .4, \
-.4, .8, .4, \
.0, .8, .4, \
.4, .8, .4, \
.8, .8, .4, \
-.8, -.8, .8, \
-.4, -.8, .8, \
.0, -.8, .8, \
.4, -.8, .8, \
.8, -.8, .8, \
-.8, -.4, .8, \
-.4, -.4, .8, \
.0, -.4, .8, \
.4, -.4, .8, \
.8, -.4, .8, \
-.8, .0, .8, \
-.4, .0, .8, \
.0, .0, .8, \
.4, .0, .8, \
.8, .0, .8, \
-.8, .4, .8, \
-.4, .4, .8, \
.0, .4, .8, \
.4, .4, .8, \
.8, .4, .8, \
-.8, .8, .8, \
-.4, .8, .8, \
.0, .8, .8, \
.4, .8, .8, \
.8, .8, .8 \
}
#define ADEC_LAYER2_UNGROUP9 \
{ \
-8.0/9, -8.0/9, -8.0/9, \
-6.0/9, -8.0/9, -8.0/9, \
-4.0/9, -8.0/9, -8.0/9, \
-2.0/9, -8.0/9, -8.0/9, \
.0 , -8.0/9, -8.0/9, \
2.0/9, -8.0/9, -8.0/9, \
4.0/9, -8.0/9, -8.0/9, \
6.0/9, -8.0/9, -8.0/9, \
8.0/9, -8.0/9, -8.0/9, \
-8.0/9, -6.0/9, -8.0/9, \
-6.0/9, -6.0/9, -8.0/9, \
-4.0/9, -6.0/9, -8.0/9, \
-2.0/9, -6.0/9, -8.0/9, \
.0 , -6.0/9, -8.0/9, \
2.0/9, -6.0/9, -8.0/9, \
4.0/9, -6.0/9, -8.0/9, \
6.0/9, -6.0/9, -8.0/9, \
8.0/9, -6.0/9, -8.0/9, \
-8.0/9, -4.0/9, -8.0/9, \
-6.0/9, -4.0/9, -8.0/9, \
-4.0/9, -4.0/9, -8.0/9, \
-2.0/9, -4.0/9, -8.0/9, \
.0 , -4.0/9, -8.0/9, \
2.0/9, -4.0/9, -8.0/9, \
4.0/9, -4.0/9, -8.0/9, \
6.0/9, -4.0/9, -8.0/9, \
8.0/9, -4.0/9, -8.0/9, \
-8.0/9, -2.0/9, -8.0/9, \
-6.0/9, -2.0/9, -8.0/9, \
-4.0/9, -2.0/9, -8.0/9, \
-2.0/9, -2.0/9, -8.0/9, \
.0 , -2.0/9, -8.0/9, \
2.0/9, -2.0/9, -8.0/9, \
4.0/9, -2.0/9, -8.0/9, \
6.0/9, -2.0/9, -8.0/9, \
8.0/9, -2.0/9, -8.0/9, \
-8.0/9, .0 , -8.0/9, \
-6.0/9, .0 , -8.0/9, \
-4.0/9, .0 , -8.0/9, \
-2.0/9, .0 , -8.0/9, \
.0 , .0 , -8.0/9, \
2.0/9, .0 , -8.0/9, \
4.0/9, .0 , -8.0/9, \
6.0/9, .0 , -8.0/9, \
8.0/9, .0 , -8.0/9, \
-8.0/9, 2.0/9, -8.0/9, \
-6.0/9, 2.0/9, -8.0/9, \
-4.0/9, 2.0/9, -8.0/9, \
-2.0/9, 2.0/9, -8.0/9, \
.0 , 2.0/9, -8.0/9, \
2.0/9, 2.0/9, -8.0/9, \
4.0/9, 2.0/9, -8.0/9, \
6.0/9, 2.0/9, -8.0/9, \
8.0/9, 2.0/9, -8.0/9, \
-8.0/9, 4.0/9, -8.0/9, \
-6.0/9, 4.0/9, -8.0/9, \
-4.0/9, 4.0/9, -8.0/9, \
-2.0/9, 4.0/9, -8.0/9, \
.0 , 4.0/9, -8.0/9, \
2.0/9, 4.0/9, -8.0/9, \
4.0/9, 4.0/9, -8.0/9, \
6.0/9, 4.0/9, -8.0/9, \
8.0/9, 4.0/9, -8.0/9, \
-8.0/9, 6.0/9, -8.0/9, \
-6.0/9, 6.0/9, -8.0/9, \
-4.0/9, 6.0/9, -8.0/9, \
-2.0/9, 6.0/9, -8.0/9, \
.0 , 6.0/9, -8.0/9, \
2.0/9, 6.0/9, -8.0/9, \
4.0/9, 6.0/9, -8.0/9, \
6.0/9, 6.0/9, -8.0/9, \
8.0/9, 6.0/9, -8.0/9, \
-8.0/9, 8.0/9, -8.0/9, \
-6.0/9, 8.0/9, -8.0/9, \
-4.0/9, 8.0/9, -8.0/9, \
-2.0/9, 8.0/9, -8.0/9, \
.0 , 8.0/9, -8.0/9, \
2.0/9, 8.0/9, -8.0/9, \
4.0/9, 8.0/9, -8.0/9, \
6.0/9, 8.0/9, -8.0/9, \
8.0/9, 8.0/9, -8.0/9, \
-8.0/9, -8.0/9, -6.0/9, \
-6.0/9, -8.0/9, -6.0/9, \
-4.0/9, -8.0/9, -6.0/9, \
-2.0/9, -8.0/9, -6.0/9, \
.0 , -8.0/9, -6.0/9, \
2.0/9, -8.0/9, -6.0/9, \
4.0/9, -8.0/9, -6.0/9, \
6.0/9, -8.0/9, -6.0/9, \
8.0/9, -8.0/9, -6.0/9, \
-8.0/9, -6.0/9, -6.0/9, \
-6.0/9, -6.0/9, -6.0/9, \
-4.0/9, -6.0/9, -6.0/9, \
-2.0/9, -6.0/9, -6.0/9, \
.0 , -6.0/9, -6.0/9, \
2.0/9, -6.0/9, -6.0/9, \
4.0/9, -6.0/9, -6.0/9, \
6.0/9, -6.0/9, -6.0/9, \
8.0/9, -6.0/9, -6.0/9, \
-8.0/9, -4.0/9, -6.0/9, \
-6.0/9, -4.0/9, -6.0/9, \
-4.0/9, -4.0/9, -6.0/9, \
-2.0/9, -4.0/9, -6.0/9, \
.0 , -4.0/9, -6.0/9, \
2.0/9, -4.0/9, -6.0/9, \
4.0/9, -4.0/9, -6.0/9, \
6.0/9, -4.0/9, -6.0/9, \
8.0/9, -4.0/9, -6.0/9, \
-8.0/9, -2.0/9, -6.0/9, \
-6.0/9, -2.0/9, -6.0/9, \
-4.0/9, -2.0/9, -6.0/9, \
-2.0/9, -2.0/9, -6.0/9, \
.0 , -2.0/9, -6.0/9, \
2.0/9, -2.0/9, -6.0/9, \
4.0/9, -2.0/9, -6.0/9, \
6.0/9, -2.0/9, -6.0/9, \
8.0/9, -2.0/9, -6.0/9, \
-8.0/9, .0 , -6.0/9, \
-6.0/9, .0 , -6.0/9, \
-4.0/9, .0 , -6.0/9, \
-2.0/9, .0 , -6.0/9, \
.0 , .0 , -6.0/9, \
2.0/9, .0 , -6.0/9, \
4.0/9, .0 , -6.0/9, \
6.0/9, .0 , -6.0/9, \
8.0/9, .0 , -6.0/9, \
-8.0/9, 2.0/9, -6.0/9, \
-6.0/9, 2.0/9, -6.0/9, \
-4.0/9, 2.0/9, -6.0/9, \
-2.0/9, 2.0/9, -6.0/9, \
.0 , 2.0/9, -6.0/9, \
2.0/9, 2.0/9, -6.0/9, \
4.0/9, 2.0/9, -6.0/9, \
6.0/9, 2.0/9, -6.0/9, \
8.0/9, 2.0/9, -6.0/9, \
-8.0/9, 4.0/9, -6.0/9, \
-6.0/9, 4.0/9, -6.0/9, \
-4.0/9, 4.0/9, -6.0/9, \
-2.0/9, 4.0/9, -6.0/9, \
.0 , 4.0/9, -6.0/9, \
2.0/9, 4.0/9, -6.0/9, \
4.0/9, 4.0/9, -6.0/9, \
6.0/9, 4.0/9, -6.0/9, \
8.0/9, 4.0/9, -6.0/9, \
-8.0/9, 6.0/9, -6.0/9, \
-6.0/9, 6.0/9, -6.0/9, \
-4.0/9, 6.0/9, -6.0/9, \
-2.0/9, 6.0/9, -6.0/9, \
.0 , 6.0/9, -6.0/9, \
2.0/9, 6.0/9, -6.0/9, \
4.0/9, 6.0/9, -6.0/9, \
6.0/9, 6.0/9, -6.0/9, \
8.0/9, 6.0/9, -6.0/9, \
-8.0/9, 8.0/9, -6.0/9, \
-6.0/9, 8.0/9, -6.0/9, \
-4.0/9, 8.0/9, -6.0/9, \
-2.0/9, 8.0/9, -6.0/9, \
.0 , 8.0/9, -6.0/9, \
2.0/9, 8.0/9, -6.0/9, \
4.0/9, 8.0/9, -6.0/9, \
6.0/9, 8.0/9, -6.0/9, \
8.0/9, 8.0/9, -6.0/9, \
-8.0/9, -8.0/9, -4.0/9, \
-6.0/9, -8.0/9, -4.0/9, \
-4.0/9, -8.0/9, -4.0/9, \
-2.0/9, -8.0/9, -4.0/9, \
.0 , -8.0/9, -4.0/9, \
2.0/9, -8.0/9, -4.0/9, \
4.0/9, -8.0/9, -4.0/9, \
6.0/9, -8.0/9, -4.0/9, \
8.0/9, -8.0/9, -4.0/9, \
-8.0/9, -6.0/9, -4.0/9, \
-6.0/9, -6.0/9, -4.0/9, \
-4.0/9, -6.0/9, -4.0/9, \
-2.0/9, -6.0/9, -4.0/9, \
.0 , -6.0/9, -4.0/9, \
2.0/9, -6.0/9, -4.0/9, \
4.0/9, -6.0/9, -4.0/9, \
6.0/9, -6.0/9, -4.0/9, \
8.0/9, -6.0/9, -4.0/9, \
-8.0/9, -4.0/9, -4.0/9, \
-6.0/9, -4.0/9, -4.0/9, \
-4.0/9, -4.0/9, -4.0/9, \
-2.0/9, -4.0/9, -4.0/9, \
.0 , -4.0/9, -4.0/9, \
2.0/9, -4.0/9, -4.0/9, \
4.0/9, -4.0/9, -4.0/9, \
6.0/9, -4.0/9, -4.0/9, \
8.0/9, -4.0/9, -4.0/9, \
-8.0/9, -2.0/9, -4.0/9, \
-6.0/9, -2.0/9, -4.0/9, \
-4.0/9, -2.0/9, -4.0/9, \
-2.0/9, -2.0/9, -4.0/9, \
.0 , -2.0/9, -4.0/9, \
2.0/9, -2.0/9, -4.0/9, \
4.0/9, -2.0/9, -4.0/9, \
6.0/9, -2.0/9, -4.0/9, \
8.0/9, -2.0/9, -4.0/9, \
-8.0/9, .0 , -4.0/9, \
-6.0/9, .0 , -4.0/9, \
-4.0/9, .0 , -4.0/9, \
-2.0/9, .0 , -4.0/9, \
.0 , .0 , -4.0/9, \
2.0/9, .0 , -4.0/9, \
4.0/9, .0 , -4.0/9, \
6.0/9, .0 , -4.0/9, \
8.0/9, .0 , -4.0/9, \
-8.0/9, 2.0/9, -4.0/9, \
-6.0/9, 2.0/9, -4.0/9, \
-4.0/9, 2.0/9, -4.0/9, \
-2.0/9, 2.0/9, -4.0/9, \
.0 , 2.0/9, -4.0/9, \
2.0/9, 2.0/9, -4.0/9, \
4.0/9, 2.0/9, -4.0/9, \
6.0/9, 2.0/9, -4.0/9, \
8.0/9, 2.0/9, -4.0/9, \
-8.0/9, 4.0/9, -4.0/9, \
-6.0/9, 4.0/9, -4.0/9, \
-4.0/9, 4.0/9, -4.0/9, \
-2.0/9, 4.0/9, -4.0/9, \
.0 , 4.0/9, -4.0/9, \
2.0/9, 4.0/9, -4.0/9, \
4.0/9, 4.0/9, -4.0/9, \
6.0/9, 4.0/9, -4.0/9, \
8.0/9, 4.0/9, -4.0/9, \
-8.0/9, 6.0/9, -4.0/9, \
-6.0/9, 6.0/9, -4.0/9, \
-4.0/9, 6.0/9, -4.0/9, \
-2.0/9, 6.0/9, -4.0/9, \
.0 , 6.0/9, -4.0/9, \
2.0/9, 6.0/9, -4.0/9, \
4.0/9, 6.0/9, -4.0/9, \
6.0/9, 6.0/9, -4.0/9, \
8.0/9, 6.0/9, -4.0/9, \
-8.0/9, 8.0/9, -4.0/9, \
-6.0/9, 8.0/9, -4.0/9, \
-4.0/9, 8.0/9, -4.0/9, \
-2.0/9, 8.0/9, -4.0/9, \
.0 , 8.0/9, -4.0/9, \
2.0/9, 8.0/9, -4.0/9, \
4.0/9, 8.0/9, -4.0/9, \
6.0/9, 8.0/9, -4.0/9, \
8.0/9, 8.0/9, -4.0/9, \
-8.0/9, -8.0/9, -2.0/9, \
-6.0/9, -8.0/9, -2.0/9, \
-4.0/9, -8.0/9, -2.0/9, \
-2.0/9, -8.0/9, -2.0/9, \
.0 , -8.0/9, -2.0/9, \
2.0/9, -8.0/9, -2.0/9, \
4.0/9, -8.0/9, -2.0/9, \
6.0/9, -8.0/9, -2.0/9, \
8.0/9, -8.0/9, -2.0/9, \
-8.0/9, -6.0/9, -2.0/9, \
-6.0/9, -6.0/9, -2.0/9, \
-4.0/9, -6.0/9, -2.0/9, \
-2.0/9, -6.0/9, -2.0/9, \
.0 , -6.0/9, -2.0/9, \
2.0/9, -6.0/9, -2.0/9, \
4.0/9, -6.0/9, -2.0/9, \
6.0/9, -6.0/9, -2.0/9, \
8.0/9, -6.0/9, -2.0/9, \
-8.0/9, -4.0/9, -2.0/9, \
-6.0/9, -4.0/9, -2.0/9, \
-4.0/9, -4.0/9, -2.0/9, \
-2.0/9, -4.0/9, -2.0/9, \
.0 , -4.0/9, -2.0/9, \
2.0/9, -4.0/9, -2.0/9, \
4.0/9, -4.0/9, -2.0/9, \
6.0/9, -4.0/9, -2.0/9, \
8.0/9, -4.0/9, -2.0/9, \
-8.0/9, -2.0/9, -2.0/9, \
-6.0/9, -2.0/9, -2.0/9, \
-4.0/9, -2.0/9, -2.0/9, \
-2.0/9, -2.0/9, -2.0/9, \
.0 , -2.0/9, -2.0/9, \
2.0/9, -2.0/9, -2.0/9, \
4.0/9, -2.0/9, -2.0/9, \
6.0/9, -2.0/9, -2.0/9, \
8.0/9, -2.0/9, -2.0/9, \
-8.0/9, .0 , -2.0/9, \
-6.0/9, .0 , -2.0/9, \
-4.0/9, .0 , -2.0/9, \
-2.0/9, .0 , -2.0/9, \
.0 , .0 , -2.0/9, \
2.0/9, .0 , -2.0/9, \
4.0/9, .0 , -2.0/9, \
6.0/9, .0 , -2.0/9, \
8.0/9, .0 , -2.0/9, \
-8.0/9, 2.0/9, -2.0/9, \
-6.0/9, 2.0/9, -2.0/9, \
-4.0/9, 2.0/9, -2.0/9, \
-2.0/9, 2.0/9, -2.0/9, \
.0 , 2.0/9, -2.0/9, \
2.0/9, 2.0/9, -2.0/9, \
4.0/9, 2.0/9, -2.0/9, \
6.0/9, 2.0/9, -2.0/9, \
8.0/9, 2.0/9, -2.0/9, \
-8.0/9, 4.0/9, -2.0/9, \
-6.0/9, 4.0/9, -2.0/9, \
-4.0/9, 4.0/9, -2.0/9, \
-2.0/9, 4.0/9, -2.0/9, \
.0 , 4.0/9, -2.0/9, \
2.0/9, 4.0/9, -2.0/9, \
4.0/9, 4.0/9, -2.0/9, \
6.0/9, 4.0/9, -2.0/9, \
8.0/9, 4.0/9, -2.0/9, \
-8.0/9, 6.0/9, -2.0/9, \
-6.0/9, 6.0/9, -2.0/9, \
-4.0/9, 6.0/9, -2.0/9, \
-2.0/9, 6.0/9, -2.0/9, \
.0 , 6.0/9, -2.0/9, \
2.0/9, 6.0/9, -2.0/9, \
4.0/9, 6.0/9, -2.0/9, \
6.0/9, 6.0/9, -2.0/9, \
8.0/9, 6.0/9, -2.0/9, \
-8.0/9, 8.0/9, -2.0/9, \
-6.0/9, 8.0/9, -2.0/9, \
-4.0/9, 8.0/9, -2.0/9, \
-2.0/9, 8.0/9, -2.0/9, \
.0 , 8.0/9, -2.0/9, \
2.0/9, 8.0/9, -2.0/9, \
4.0/9, 8.0/9, -2.0/9, \
6.0/9, 8.0/9, -2.0/9, \
8.0/9, 8.0/9, -2.0/9, \
-8.0/9, -8.0/9, .0 , \
-6.0/9, -8.0/9, .0 , \
-4.0/9, -8.0/9, .0 , \
-2.0/9, -8.0/9, .0 , \
.0 , -8.0/9, .0 , \
2.0/9, -8.0/9, .0 , \
4.0/9, -8.0/9, .0 , \
6.0/9, -8.0/9, .0 , \
8.0/9, -8.0/9, .0 , \
-8.0/9, -6.0/9, .0 , \
-6.0/9, -6.0/9, .0 , \
-4.0/9, -6.0/9, .0 , \
-2.0/9, -6.0/9, .0 , \
.0 , -6.0/9, .0 , \
2.0/9, -6.0/9, .0 , \
4.0/9, -6.0/9, .0 , \
6.0/9, -6.0/9, .0 , \
8.0/9, -6.0/9, .0 , \
-8.0/9, -4.0/9, .0 , \
-6.0/9, -4.0/9, .0 , \
-4.0/9, -4.0/9, .0 , \
-2.0/9, -4.0/9, .0 , \
.0 , -4.0/9, .0 , \
2.0/9, -4.0/9, .0 , \
4.0/9, -4.0/9, .0 , \
6.0/9, -4.0/9, .0 , \
8.0/9, -4.0/9, .0 , \
-8.0/9, -2.0/9, .0 , \
-6.0/9, -2.0/9, .0 , \
-4.0/9, -2.0/9, .0 , \
-2.0/9, -2.0/9, .0 , \
.0 , -2.0/9, .0 , \
2.0/9, -2.0/9, .0 , \
4.0/9, -2.0/9, .0 , \
6.0/9, -2.0/9, .0 , \
8.0/9, -2.0/9, .0 , \
-8.0/9, .0 , .0 , \
-6.0/9, .0 , .0 , \
-4.0/9, .0 , .0 , \
-2.0/9, .0 , .0 , \
.0 , .0 , .0 , \
2.0/9, .0 , .0 , \
4.0/9, .0 , .0 , \
6.0/9, .0 , .0 , \
8.0/9, .0 , .0 , \
-8.0/9, 2.0/9, .0 , \
-6.0/9, 2.0/9, .0 , \
-4.0/9, 2.0/9, .0 , \
-2.0/9, 2.0/9, .0 , \
.0 , 2.0/9, .0 , \
2.0/9, 2.0/9, .0 , \
4.0/9, 2.0/9, .0 , \
6.0/9, 2.0/9, .0 , \
8.0/9, 2.0/9, .0 , \
-8.0/9, 4.0/9, .0 , \
-6.0/9, 4.0/9, .0 , \
-4.0/9, 4.0/9, .0 , \
-2.0/9, 4.0/9, .0 , \
.0 , 4.0/9, .0 , \
2.0/9, 4.0/9, .0 , \
4.0/9, 4.0/9, .0 , \
6.0/9, 4.0/9, .0 , \
8.0/9, 4.0/9, .0 , \
-8.0/9, 6.0/9, .0 , \
-6.0/9, 6.0/9, .0 , \
-4.0/9, 6.0/9, .0 , \
-2.0/9, 6.0/9, .0 , \
.0 , 6.0/9, .0 , \
2.0/9, 6.0/9, .0 , \
4.0/9, 6.0/9, .0 , \
6.0/9, 6.0/9, .0 , \
8.0/9, 6.0/9, .0 , \
-8.0/9, 8.0/9, .0 , \
-6.0/9, 8.0/9, .0 , \
-4.0/9, 8.0/9, .0 , \
-2.0/9, 8.0/9, .0 , \
.0 , 8.0/9, .0 , \
2.0/9, 8.0/9, .0 , \
4.0/9, 8.0/9, .0 , \
6.0/9, 8.0/9, .0 , \
8.0/9, 8.0/9, .0 , \
-8.0/9, -8.0/9, 2.0/9, \
-6.0/9, -8.0/9, 2.0/9, \
-4.0/9, -8.0/9, 2.0/9, \
-2.0/9, -8.0/9, 2.0/9, \
.0 , -8.0/9, 2.0/9, \
2.0/9, -8.0/9, 2.0/9, \
4.0/9, -8.0/9, 2.0/9, \
6.0/9, -8.0/9, 2.0/9, \
8.0/9, -8.0/9, 2.0/9, \
-8.0/9, -6.0/9, 2.0/9, \
-6.0/9, -6.0/9, 2.0/9, \
-4.0/9, -6.0/9, 2.0/9, \
-2.0/9, -6.0/9, 2.0/9, \
.0 , -6.0/9, 2.0/9, \
2.0/9, -6.0/9, 2.0/9, \
4.0/9, -6.0/9, 2.0/9, \
6.0/9, -6.0/9, 2.0/9, \
8.0/9, -6.0/9, 2.0/9, \
-8.0/9, -4.0/9, 2.0/9, \
-6.0/9, -4.0/9, 2.0/9, \
-4.0/9, -4.0/9, 2.0/9, \
-2.0/9, -4.0/9, 2.0/9, \
.0 , -4.0/9, 2.0/9, \
2.0/9, -4.0/9, 2.0/9, \
4.0/9, -4.0/9, 2.0/9, \
6.0/9, -4.0/9, 2.0/9, \
8.0/9, -4.0/9, 2.0/9, \
-8.0/9, -2.0/9, 2.0/9, \
-6.0/9, -2.0/9, 2.0/9, \
-4.0/9, -2.0/9, 2.0/9, \
-2.0/9, -2.0/9, 2.0/9, \
.0 , -2.0/9, 2.0/9, \
2.0/9, -2.0/9, 2.0/9, \
4.0/9, -2.0/9, 2.0/9, \
6.0/9, -2.0/9, 2.0/9, \
8.0/9, -2.0/9, 2.0/9, \
-8.0/9, .0 , 2.0/9, \
-6.0/9, .0 , 2.0/9, \
-4.0/9, .0 , 2.0/9, \
-2.0/9, .0 , 2.0/9, \
.0 , .0 , 2.0/9, \
2.0/9, .0 , 2.0/9, \
4.0/9, .0 , 2.0/9, \
6.0/9, .0 , 2.0/9, \
8.0/9, .0 , 2.0/9, \
-8.0/9, 2.0/9, 2.0/9, \
-6.0/9, 2.0/9, 2.0/9, \
-4.0/9, 2.0/9, 2.0/9, \
-2.0/9, 2.0/9, 2.0/9, \
.0 , 2.0/9, 2.0/9, \
2.0/9, 2.0/9, 2.0/9, \
4.0/9, 2.0/9, 2.0/9, \
6.0/9, 2.0/9, 2.0/9, \
8.0/9, 2.0/9, 2.0/9, \
-8.0/9, 4.0/9, 2.0/9, \
-6.0/9, 4.0/9, 2.0/9, \
-4.0/9, 4.0/9, 2.0/9, \
-2.0/9, 4.0/9, 2.0/9, \
.0 , 4.0/9, 2.0/9, \
2.0/9, 4.0/9, 2.0/9, \
4.0/9, 4.0/9, 2.0/9, \
6.0/9, 4.0/9, 2.0/9, \
8.0/9, 4.0/9, 2.0/9, \
-8.0/9, 6.0/9, 2.0/9, \
-6.0/9, 6.0/9, 2.0/9, \
-4.0/9, 6.0/9, 2.0/9, \
-2.0/9, 6.0/9, 2.0/9, \
.0 , 6.0/9, 2.0/9, \
2.0/9, 6.0/9, 2.0/9, \
4.0/9, 6.0/9, 2.0/9, \
6.0/9, 6.0/9, 2.0/9, \
8.0/9, 6.0/9, 2.0/9, \
-8.0/9, 8.0/9, 2.0/9, \
-6.0/9, 8.0/9, 2.0/9, \
-4.0/9, 8.0/9, 2.0/9, \
-2.0/9, 8.0/9, 2.0/9, \
.0 , 8.0/9, 2.0/9, \
2.0/9, 8.0/9, 2.0/9, \
4.0/9, 8.0/9, 2.0/9, \
6.0/9, 8.0/9, 2.0/9, \
8.0/9, 8.0/9, 2.0/9, \
-8.0/9, -8.0/9, 4.0/9, \
-6.0/9, -8.0/9, 4.0/9, \
-4.0/9, -8.0/9, 4.0/9, \
-2.0/9, -8.0/9, 4.0/9, \
.0 , -8.0/9, 4.0/9, \
2.0/9, -8.0/9, 4.0/9, \
4.0/9, -8.0/9, 4.0/9, \
6.0/9, -8.0/9, 4.0/9, \
8.0/9, -8.0/9, 4.0/9, \
-8.0/9, -6.0/9, 4.0/9, \
-6.0/9, -6.0/9, 4.0/9, \
-4.0/9, -6.0/9, 4.0/9, \
-2.0/9, -6.0/9, 4.0/9, \
.0 , -6.0/9, 4.0/9, \
2.0/9, -6.0/9, 4.0/9, \
4.0/9, -6.0/9, 4.0/9, \
6.0/9, -6.0/9, 4.0/9, \
8.0/9, -6.0/9, 4.0/9, \
-8.0/9, -4.0/9, 4.0/9, \
-6.0/9, -4.0/9, 4.0/9, \
-4.0/9, -4.0/9, 4.0/9, \
-2.0/9, -4.0/9, 4.0/9, \
.0 , -4.0/9, 4.0/9, \
2.0/9, -4.0/9, 4.0/9, \
4.0/9, -4.0/9, 4.0/9, \
6.0/9, -4.0/9, 4.0/9, \
8.0/9, -4.0/9, 4.0/9, \
-8.0/9, -2.0/9, 4.0/9, \
-6.0/9, -2.0/9, 4.0/9, \
-4.0/9, -2.0/9, 4.0/9, \
-2.0/9, -2.0/9, 4.0/9, \
.0 , -2.0/9, 4.0/9, \
2.0/9, -2.0/9, 4.0/9, \
4.0/9, -2.0/9, 4.0/9, \
6.0/9, -2.0/9, 4.0/9, \
8.0/9, -2.0/9, 4.0/9, \
-8.0/9, .0 , 4.0/9, \
-6.0/9, .0 , 4.0/9, \
-4.0/9, .0 , 4.0/9, \
-2.0/9, .0 , 4.0/9, \
.0 , .0 , 4.0/9, \
2.0/9, .0 , 4.0/9, \
4.0/9, .0 , 4.0/9, \
6.0/9, .0 , 4.0/9, \
8.0/9, .0 , 4.0/9, \
-8.0/9, 2.0/9, 4.0/9, \
-6.0/9, 2.0/9, 4.0/9, \
-4.0/9, 2.0/9, 4.0/9, \
-2.0/9, 2.0/9, 4.0/9, \
.0 , 2.0/9, 4.0/9, \
2.0/9, 2.0/9, 4.0/9, \
4.0/9, 2.0/9, 4.0/9, \
6.0/9, 2.0/9, 4.0/9, \
8.0/9, 2.0/9, 4.0/9, \
-8.0/9, 4.0/9, 4.0/9, \
-6.0/9, 4.0/9, 4.0/9, \
-4.0/9, 4.0/9, 4.0/9, \
-2.0/9, 4.0/9, 4.0/9, \
.0 , 4.0/9, 4.0/9, \
2.0/9, 4.0/9, 4.0/9, \
4.0/9, 4.0/9, 4.0/9, \
6.0/9, 4.0/9, 4.0/9, \
8.0/9, 4.0/9, 4.0/9, \
-8.0/9, 6.0/9, 4.0/9, \
-6.0/9, 6.0/9, 4.0/9, \
-4.0/9, 6.0/9, 4.0/9, \
-2.0/9, 6.0/9, 4.0/9, \
.0 , 6.0/9, 4.0/9, \
2.0/9, 6.0/9, 4.0/9, \
4.0/9, 6.0/9, 4.0/9, \
6.0/9, 6.0/9, 4.0/9, \
8.0/9, 6.0/9, 4.0/9, \
-8.0/9, 8.0/9, 4.0/9, \
-6.0/9, 8.0/9, 4.0/9, \
-4.0/9, 8.0/9, 4.0/9, \
-2.0/9, 8.0/9, 4.0/9, \
.0 , 8.0/9, 4.0/9, \
2.0/9, 8.0/9, 4.0/9, \
4.0/9, 8.0/9, 4.0/9, \
6.0/9, 8.0/9, 4.0/9, \
8.0/9, 8.0/9, 4.0/9, \
-8.0/9, -8.0/9, 6.0/9, \
-6.0/9, -8.0/9, 6.0/9, \
-4.0/9, -8.0/9, 6.0/9, \
-2.0/9, -8.0/9, 6.0/9, \
.0 , -8.0/9, 6.0/9, \
2.0/9, -8.0/9, 6.0/9, \
4.0/9, -8.0/9, 6.0/9, \
6.0/9, -8.0/9, 6.0/9, \
8.0/9, -8.0/9, 6.0/9, \
-8.0/9, -6.0/9, 6.0/9, \
-6.0/9, -6.0/9, 6.0/9, \
-4.0/9, -6.0/9, 6.0/9, \
-2.0/9, -6.0/9, 6.0/9, \
.0 , -6.0/9, 6.0/9, \
2.0/9, -6.0/9, 6.0/9, \
4.0/9, -6.0/9, 6.0/9, \
6.0/9, -6.0/9, 6.0/9, \
8.0/9, -6.0/9, 6.0/9, \
-8.0/9, -4.0/9, 6.0/9, \
-6.0/9, -4.0/9, 6.0/9, \
-4.0/9, -4.0/9, 6.0/9, \
-2.0/9, -4.0/9, 6.0/9, \
.0 , -4.0/9, 6.0/9, \
2.0/9, -4.0/9, 6.0/9, \
4.0/9, -4.0/9, 6.0/9, \
6.0/9, -4.0/9, 6.0/9, \
8.0/9, -4.0/9, 6.0/9, \
-8.0/9, -2.0/9, 6.0/9, \
-6.0/9, -2.0/9, 6.0/9, \
-4.0/9, -2.0/9, 6.0/9, \
-2.0/9, -2.0/9, 6.0/9, \
.0 , -2.0/9, 6.0/9, \
2.0/9, -2.0/9, 6.0/9, \
4.0/9, -2.0/9, 6.0/9, \
6.0/9, -2.0/9, 6.0/9, \
8.0/9, -2.0/9, 6.0/9, \
-8.0/9, .0 , 6.0/9, \
-6.0/9, .0 , 6.0/9, \
-4.0/9, .0 , 6.0/9, \
-2.0/9, .0 , 6.0/9, \
.0 , .0 , 6.0/9, \
2.0/9, .0 , 6.0/9, \
4.0/9, .0 , 6.0/9, \
6.0/9, .0 , 6.0/9, \
8.0/9, .0 , 6.0/9, \
-8.0/9, 2.0/9, 6.0/9, \
-6.0/9, 2.0/9, 6.0/9, \
-4.0/9, 2.0/9, 6.0/9, \
-2.0/9, 2.0/9, 6.0/9, \
.0 , 2.0/9, 6.0/9, \
2.0/9, 2.0/9, 6.0/9, \
4.0/9, 2.0/9, 6.0/9, \
6.0/9, 2.0/9, 6.0/9, \
8.0/9, 2.0/9, 6.0/9, \
-8.0/9, 4.0/9, 6.0/9, \
-6.0/9, 4.0/9, 6.0/9, \
-4.0/9, 4.0/9, 6.0/9, \
-2.0/9, 4.0/9, 6.0/9, \
.0 , 4.0/9, 6.0/9, \
2.0/9, 4.0/9, 6.0/9, \
4.0/9, 4.0/9, 6.0/9, \
6.0/9, 4.0/9, 6.0/9, \
8.0/9, 4.0/9, 6.0/9, \
-8.0/9, 6.0/9, 6.0/9, \
-6.0/9, 6.0/9, 6.0/9, \
-4.0/9, 6.0/9, 6.0/9, \
-2.0/9, 6.0/9, 6.0/9, \
.0 , 6.0/9, 6.0/9, \
2.0/9, 6.0/9, 6.0/9, \
4.0/9, 6.0/9, 6.0/9, \
6.0/9, 6.0/9, 6.0/9, \
8.0/9, 6.0/9, 6.0/9, \
-8.0/9, 8.0/9, 6.0/9, \
-6.0/9, 8.0/9, 6.0/9, \
-4.0/9, 8.0/9, 6.0/9, \
-2.0/9, 8.0/9, 6.0/9, \
.0 , 8.0/9, 6.0/9, \
2.0/9, 8.0/9, 6.0/9, \
4.0/9, 8.0/9, 6.0/9, \
6.0/9, 8.0/9, 6.0/9, \
8.0/9, 8.0/9, 6.0/9, \
-8.0/9, -8.0/9, 8.0/9, \
-6.0/9, -8.0/9, 8.0/9, \
-4.0/9, -8.0/9, 8.0/9, \
-2.0/9, -8.0/9, 8.0/9, \
.0 , -8.0/9, 8.0/9, \
2.0/9, -8.0/9, 8.0/9, \
4.0/9, -8.0/9, 8.0/9, \
6.0/9, -8.0/9, 8.0/9, \
8.0/9, -8.0/9, 8.0/9, \
-8.0/9, -6.0/9, 8.0/9, \
-6.0/9, -6.0/9, 8.0/9, \
-4.0/9, -6.0/9, 8.0/9, \
-2.0/9, -6.0/9, 8.0/9, \
.0 , -6.0/9, 8.0/9, \
2.0/9, -6.0/9, 8.0/9, \
4.0/9, -6.0/9, 8.0/9, \
6.0/9, -6.0/9, 8.0/9, \
8.0/9, -6.0/9, 8.0/9, \
-8.0/9, -4.0/9, 8.0/9, \
-6.0/9, -4.0/9, 8.0/9, \
-4.0/9, -4.0/9, 8.0/9, \
-2.0/9, -4.0/9, 8.0/9, \
.0 , -4.0/9, 8.0/9, \
2.0/9, -4.0/9, 8.0/9, \
4.0/9, -4.0/9, 8.0/9, \
6.0/9, -4.0/9, 8.0/9, \
8.0/9, -4.0/9, 8.0/9, \
-8.0/9, -2.0/9, 8.0/9, \
-6.0/9, -2.0/9, 8.0/9, \
-4.0/9, -2.0/9, 8.0/9, \
-2.0/9, -2.0/9, 8.0/9, \
.0 , -2.0/9, 8.0/9, \
2.0/9, -2.0/9, 8.0/9, \
4.0/9, -2.0/9, 8.0/9, \
6.0/9, -2.0/9, 8.0/9, \
8.0/9, -2.0/9, 8.0/9, \
-8.0/9, .0 , 8.0/9, \
-6.0/9, .0 , 8.0/9, \
-4.0/9, .0 , 8.0/9, \
-2.0/9, .0 , 8.0/9, \
.0 , .0 , 8.0/9, \
2.0/9, .0 , 8.0/9, \
4.0/9, .0 , 8.0/9, \
6.0/9, .0 , 8.0/9, \
8.0/9, .0 , 8.0/9, \
-8.0/9, 2.0/9, 8.0/9, \
-6.0/9, 2.0/9, 8.0/9, \
-4.0/9, 2.0/9, 8.0/9, \
-2.0/9, 2.0/9, 8.0/9, \
.0 , 2.0/9, 8.0/9, \
2.0/9, 2.0/9, 8.0/9, \
4.0/9, 2.0/9, 8.0/9, \
6.0/9, 2.0/9, 8.0/9, \
8.0/9, 2.0/9, 8.0/9, \
-8.0/9, 4.0/9, 8.0/9, \
-6.0/9, 4.0/9, 8.0/9, \
-4.0/9, 4.0/9, 8.0/9, \
-2.0/9, 4.0/9, 8.0/9, \
.0 , 4.0/9, 8.0/9, \
2.0/9, 4.0/9, 8.0/9, \
4.0/9, 4.0/9, 8.0/9, \
6.0/9, 4.0/9, 8.0/9, \
8.0/9, 4.0/9, 8.0/9, \
-8.0/9, 6.0/9, 8.0/9, \
-6.0/9, 6.0/9, 8.0/9, \
-4.0/9, 6.0/9, 8.0/9, \
-2.0/9, 6.0/9, 8.0/9, \
.0 , 6.0/9, 8.0/9, \
2.0/9, 6.0/9, 8.0/9, \
4.0/9, 6.0/9, 8.0/9, \
6.0/9, 6.0/9, 8.0/9, \
8.0/9, 6.0/9, 8.0/9, \
-8.0/9, 8.0/9, 8.0/9, \
-6.0/9, 8.0/9, 8.0/9, \
-4.0/9, 8.0/9, 8.0/9, \
-2.0/9, 8.0/9, 8.0/9, \
.0 , 8.0/9, 8.0/9, \
2.0/9, 8.0/9, 8.0/9, \
4.0/9, 8.0/9, 8.0/9, \
6.0/9, 8.0/9, 8.0/9, \
8.0/9, 8.0/9, 8.0/9 \
}
/*
* Requantization tables : see ISO/IEC 11172-3 Annex B.2 and B.4
*
* = We store the requantization information in the following structures :
* typedef struct requantization_s
* {
* byte_t i_bits_per_codeword;
* const float * pf_ungroup;
* float f_slope;
* float f_offset;
* } requantization_t;
*
* = Theses values depend on the bitrate per channel, on the subband number
* and on the allocation[ch][sb] (see ISO/IEC 11172-3 2.4.2.6 and Annex B.2).
*
* = But, in order to avoid data redundancy, we use the following properties :
*
* - When bitrate_per_channel == 32 or 48 kbits/s (ie when
* bitrate_per_channel_index == 1 or 2), the requantization values depend
* only on allocation[ch][sb] (see ISO/IEC 11172-3 Annex B.2c and B.2d).
* That's why ADEC_LAYER2_REQUANTIZATION_CD = f(allocation).
*
* - In the other cases (see ISO/IEC 11172-3 Annex B.2a and B.2b), we can
* divide the tables in 4 subtables :
* + ADEC_LAYER2_REQUANTIZATION_AB1 for sb in [0..2]
* + ADEC_LAYER2_REQUANTIZATION_AB2 for sb in [3..10]
* + ADEC_LAYER2_REQUANTIZATION_AB3 for sb in [11..22]
* + ADEC_LAYER2_REQUANTIZATION_AB4 for sb in [23..29]
* That's why ADEC_LAYER2_REQUANTIZATION_AB = f(sb, allocation)
*
* = When these tables are used, pf_ungroup3, pf_ungroup5, pf_ungroup9,
* requantization_ab1, requantization_ab2, requantization_ab3 and
* requantization_ab4 must already have been defined.
*/
#define ADEC_LAYER2_REQUANTIZATION_CD \
{ \
{ 0, NULL, .0 , .0 }, /* allocation == 0 */ \
{ 5, pf_ungroup3, .0 , .0 }, /* allocation == 1 */ \
{ 7, pf_ungroup5, .0 , .0 }, /* allocation == 2 */ \
{10, pf_ungroup9, .0 , .0 }, /* allocation == 3 */ \
{ 4, NULL, .133333333332 , -.933333333328}, /* allocation == 4 */ \
{ 5, NULL, .0645161290325 , -.967741935488}, /* allocation == 5 */ \
{ 6, NULL, .0317460317459 , -.984126984124}, /* allocation == 6 */ \
{ 7, NULL, .0157480314961 , -.992125984254}, /* allocation == 7 */ \
{ 8, NULL, .00784313725492 , -.996078431375}, /* allocation == 8 */ \
{ 9, NULL, .00391389432484 , -.998043052835}, /* allocation == 9 */ \
{10, NULL, .00195503421311 , -.999022482897}, /* allocation == 10 */ \
{11, NULL, .000977039570107 , -.99951148022 }, /* allocation == 11 */ \
{12, NULL, .000488400488398 , -.999755799752}, /* allocation == 12 */ \
{13, NULL, .000244170430962 , -.999877914789}, /* allocation == 13 */ \
{14, NULL, .000122077763535 , -.999938961117}, /* allocation == 14 */ \
{15, NULL, .000061037018952 , -.999969481491} /* allocation == 15 */ \
}
#define ADEC_LAYER2_REQUANTIZATION_AB1 \
{ \
{ 0, NULL, .0 , .0 }, /* allocation == 0 */ \
{ 5, pf_ungroup3, .0 , .0 }, /* allocation == 1 */ \
{ 3, NULL, .285714285715 , -.857142857145}, /* allocation == 2 */ \
{ 4, NULL, .133333333332 , -.933333333328}, /* allocation == 3 */ \
{ 5, NULL, .0645161290325 , -.967741935488}, /* allocation == 4 */ \
{ 6, NULL, .0317460317459 , -.984126984124}, /* allocation == 5 */ \
{ 7, NULL, .0157480314961 , -.992125984254}, /* allocation == 6 */ \
{ 8, NULL, .00784313725492 , -.996078431375}, /* allocation == 7 */ \
{ 9, NULL, .00391389432484 , -.998043052835}, /* allocation == 8 */ \
{10, NULL, .00195503421311 , -.999022482897}, /* allocation == 9 */ \
{11, NULL, .000977039570107 , -.99951148022 }, /* allocation == 10 */ \
{12, NULL, .000488400488398 , -.999755799752}, /* allocation == 11 */ \
{13, NULL, .000244170430962 , -.999877914789}, /* allocation == 12 */ \
{14, NULL, .000122077763535 , -.999938961117}, /* allocation == 13 */ \
{15, NULL, .000061037018952 , -.999969481491}, /* allocation == 14 */ \
{16, NULL, .0000305180437933, -.999984740976} /* allocation == 15 */ \
}
#define ADEC_LAYER2_REQUANTIZATION_AB2 \
{ \
{ 0, NULL, .0 , .0 }, /* allocation == 0 */ \
{ 5, pf_ungroup3, .0 , .0 }, /* allocation == 1 */ \
{ 7, pf_ungroup5, .0 , .0 }, /* allocation == 2 */ \
{ 3, NULL, .285714285715 , -.857142857145}, /* allocation == 3 */ \
{10, pf_ungroup9, .0 , .0 }, /* allocation == 4 */ \
{ 4, NULL, .133333333332 , -.933333333328}, /* allocation == 5 */ \
{ 5, NULL, .0645161290325 , -.967741935488}, /* allocation == 6 */ \
{ 6, NULL, .0317460317459 , -.984126984124}, /* allocation == 7 */ \
{ 7, NULL, .0157480314961 , -.992125984254}, /* allocation == 8 */ \
{ 8, NULL, .00784313725492 , -.996078431375}, /* allocation == 9 */ \
{ 9, NULL, .00391389432484 , -.998043052835}, /* allocation == 10 */ \
{10, NULL, .00195503421311 , -.999022482897}, /* allocation == 11 */ \
{11, NULL, .000977039570107 , -.99951148022 }, /* allocation == 12 */ \
{12, NULL, .000488400488398 , -.999755799752}, /* allocation == 13 */ \
{13, NULL, .000244170430962 , -.999877914789}, /* allocation == 14 */ \
{16, NULL, .0000305180437933, -.999984740976} /* allocation == 15 */ \
}
#define ADEC_LAYER2_REQUANTIZATION_AB3 \
{ \
{ 0, NULL, .0 , .0 }, /* allocation == 0 */ \
{ 5, pf_ungroup3, .0 , .0 }, /* allocation == 1 */ \
{ 7, pf_ungroup5, .0 , .0 }, /* allocation == 2 */ \
{ 3, NULL, .285714285715 , -.857142857145}, /* allocation == 3 */ \
{10, pf_ungroup9, .0 , .0 }, /* allocation == 4 */ \
{ 4, NULL, .133333333332 , -.933333333328}, /* allocation == 5 */ \
{ 5, NULL, .0645161290325 , -.967741935488}, /* allocation == 6 */ \
{16, NULL, .0000305180437933, -.999984740976}, /* allocation == 7 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 8 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 9 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 10 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 11 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 12 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 13 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 14 */ \
{ 0, NULL, .0 , .0 } /* allocation == 15 */ \
}
#define ADEC_LAYER2_REQUANTIZATION_AB4 \
{ \
{ 0, NULL, .0 , .0 }, /* allocation == 0 */ \
{ 5, pf_ungroup3, .0 , .0 }, /* allocation == 1 */ \
{ 7, pf_ungroup5, .0 , .0 }, /* allocation == 2 */ \
{16, NULL, .0000305180437933, -.999984740976}, /* allocation == 3 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 4 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 5 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 6 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 7 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 8 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 9 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 10 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 11 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 12 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 13 */ \
{ 0, NULL, .0 , .0 }, /* allocation == 14 */ \
{ 0, NULL, .0 , .0 } /* allocation == 15 */ \
}
#define ADEC_LAYER2_REQUANTIZATION_AB \
{ \
p_requantization_ab1, /* subband == 0 */ \
p_requantization_ab1, /* subband == 1 */ \
p_requantization_ab1, /* subband == 2 */ \
p_requantization_ab2, /* subband == 3 */ \
p_requantization_ab2, /* subband == 4 */ \
p_requantization_ab2, /* subband == 5 */ \
p_requantization_ab2, /* subband == 6 */ \
p_requantization_ab2, /* subband == 7 */ \
p_requantization_ab2, /* subband == 8 */ \
p_requantization_ab2, /* subband == 9 */ \
p_requantization_ab2, /* subband == 10 */ \
p_requantization_ab3, /* subband == 11 */ \
p_requantization_ab3, /* subband == 12 */ \
p_requantization_ab3, /* subband == 13 */ \
p_requantization_ab3, /* subband == 14 */ \
p_requantization_ab3, /* subband == 15 */ \
p_requantization_ab3, /* subband == 16 */ \
p_requantization_ab3, /* subband == 17 */ \
p_requantization_ab3, /* subband == 18 */ \
p_requantization_ab3, /* subband == 19 */ \
p_requantization_ab3, /* subband == 20 */ \
p_requantization_ab3, /* subband == 21 */ \
p_requantization_ab3, /* subband == 22 */ \
p_requantization_ab4, /* subband == 23 */ \
p_requantization_ab4, /* subband == 24 */ \
p_requantization_ab4, /* subband == 25 */ \
p_requantization_ab4, /* subband == 26 */ \
p_requantization_ab4, /* subband == 27 */ \
p_requantization_ab4, /* subband == 28 */ \
p_requantization_ab4 /* subband == 29 */ \
}