//######################################################################### //# Huffman code table for ISO/MPEG Layer 3 Coding # //# Syntax: table head: # //# .table number xlen ylen linbits # //# .referenz referenz table number (if no table data) # //# # //# Translated to C header file by jmiles 4/98 # //# # //# table data: # //######################################################################### #ifdef MPDEC const HTABLE tab1[] = { { 0, 0, 1, "1" }, { 0, 1, 3, "001" }, { 1, 0, 2, "01" }, { 1, 1, 3, "000" }, { 100,100,100,"" } }; const HTABLE tab2[] = { { 0, 0, 1, "1" }, { 0, 1, 3, "010" }, { 0, 2, 6, "000001" }, { 1, 0, 3, "011" }, { 1, 1, 3, "001" }, { 1, 2, 5, "00001" }, { 2, 0, 5, "00011" }, { 2, 1, 5, "00010" }, { 2, 2, 6, "000000" }, { 100,100,100,"" } }; const HTABLE tab3[] = { { 0, 0, 2, "11" }, { 0, 1, 2, "10" }, { 0, 2, 6, "000001" }, { 1, 0, 3, "001" }, { 1, 1, 2, "01" }, { 1, 2, 5, "00001" }, { 2, 0, 5, "00011" }, { 2, 1, 5, "00010" }, { 2, 2, 6, "000000" }, { 100,100,100,"" } }; const HTABLE tab5[] = { { 0, 0, 1, "1" }, { 0, 1, 3, "010" }, { 0, 2, 6, "000110" }, { 0, 3, 7, "0000101" }, { 1, 0, 3, "011" }, { 1, 1, 3, "001" }, { 1, 2, 6, "000100" }, { 1, 3, 7, "0000100" }, { 2, 0, 6, "000111" }, { 2, 1, 6, "000101" }, { 2, 2, 7, "0000111" }, { 2, 3, 8, "00000001" }, { 3, 0, 7, "0000110" }, { 3, 1, 6, "000001" }, { 3, 2, 7, "0000001" }, { 3, 3, 8, "00000000" }, { 100,100,100,"" } }; const HTABLE tab6[] = { { 0, 0, 3, "111" }, { 0, 1, 3, "011" }, { 0, 2, 5, "00101" }, { 0, 3, 7, "0000001" }, { 1, 0, 3, "110" }, { 1, 1, 2, "10" }, { 1, 2, 4, "0011" }, { 1, 3, 5, "00010" }, { 2, 0, 4, "0101" }, { 2, 1, 4, "0100" }, { 2, 2, 5, "00100" }, { 2, 3, 6, "000001" }, { 3, 0, 6, "000011" }, { 3, 1, 5, "00011" }, { 3, 2, 6, "000010" }, { 3, 3, 7, "0000000" }, { 100,100,100,"" } }; const HTABLE tab7[] = { { 0, 0, 1, "1" }, { 0, 1, 3, "010" }, { 0, 2, 6, "001010" }, { 0, 3, 8, "00010011" }, { 0, 4, 8, "00010000" }, { 0, 5, 9, "000001010" }, { 1, 0, 3, "011" }, { 1, 1, 4, "0011" }, { 1, 2, 6, "000111" }, { 1, 3, 7, "0001010" }, { 1, 4, 7, "0000101" }, { 1, 5, 8, "00000011" }, { 2, 0, 6, "001011" }, { 2, 1, 5, "00100" }, { 2, 2, 7, "0001101" }, { 2, 3, 8, "00010001" }, { 2, 4, 8, "00001000" }, { 2, 5, 9, "000000100" }, { 3, 0, 7, "0001100" }, { 3, 1, 7, "0001011" }, { 3, 2, 8, "00010010" }, { 3, 3, 9, "000001111" }, { 3, 4, 9, "000001011" }, { 3, 5, 9, "000000010" }, { 4, 0, 7, "0000111" }, { 4, 1, 7, "0000110" }, { 4, 2, 8, "00001001" }, { 4, 3, 9, "000001110" }, { 4, 4, 9, "000000011" }, { 4, 5, 10, "0000000001" }, { 5, 0, 8, "00000110" }, { 5, 1, 8, "00000100" }, { 5, 2, 9, "000000101" }, { 5, 3, 10, "0000000011" }, { 5, 4, 10, "0000000010" }, { 5, 5, 10, "0000000000" }, { 100,100,100,"" } }; const HTABLE tab8[] = { { 0, 0, 2, "11" }, { 0, 1, 3, "100" }, { 0, 2, 6, "000110" }, { 0, 3, 8, "00010010" }, { 0, 4, 8, "00001100" }, { 0, 5, 9, "000000101" }, { 1, 0, 3, "101" }, { 1, 1, 2, "01" }, { 1, 2, 4, "0010" }, { 1, 3, 8, "00010000" }, { 1, 4, 8, "00001001" }, { 1, 5, 8, "00000011" }, { 2, 0, 6, "000111" }, { 2, 1, 4, "0011" }, { 2, 2, 6, "000101" }, { 2, 3, 8, "00001110" }, { 2, 4, 8, "00000111" }, { 2, 5, 9, "000000011" }, { 3, 0, 8, "00010011" }, { 3, 1, 8, "00010001" }, { 3, 2, 8, "00001111" }, { 3, 3, 9, "000001101" }, { 3, 4, 9, "000001010" }, { 3, 5, 10, "0000000100" }, { 4, 0, 8, "00001101" }, { 4, 1, 7, "0000101" }, { 4, 2, 8, "00001000" }, { 4, 3, 9, "000001011" }, { 4, 4, 10, "0000000101" }, { 4, 5, 10, "0000000001" }, { 5, 0, 9, "000001100" }, { 5, 1, 8, "00000100" }, { 5, 2, 9, "000000100" }, { 5, 3, 9, "000000001" }, { 5, 4, 11, "00000000001" }, { 5, 5, 11, "00000000000" }, { 100,100,100,"" } }; const HTABLE tab9[] = { { 0, 0, 3, "111" }, { 0, 1, 3, "101" }, { 0, 2, 5, "01001" }, { 0, 3, 6, "001110" }, { 0, 4, 8, "00001111" }, { 0, 5, 9, "000000111" }, { 1, 0, 3, "110" }, { 1, 1, 3, "100" }, { 1, 2, 4, "0101" }, { 1, 3, 5, "00101" }, { 1, 4, 6, "000110" }, { 1, 5, 8, "00000111" }, { 2, 0, 4, "0111" }, { 2, 1, 4, "0110" }, { 2, 2, 5, "01000" }, { 2, 3, 6, "001000" }, { 2, 4, 7, "0001000" }, { 2, 5, 8, "00000101" }, { 3, 0, 6, "001111" }, { 3, 1, 5, "00110" }, { 3, 2, 6, "001001" }, { 3, 3, 7, "0001010" }, { 3, 4, 7, "0000101" }, { 3, 5, 8, "00000001" }, { 4, 0, 7, "0001011" }, { 4, 1, 6, "000111" }, { 4, 2, 7, "0001001" }, { 4, 3, 7, "0000110" }, { 4, 4, 8, "00000100" }, { 4, 5, 9, "000000001" }, { 5, 0, 8, "00001110" }, { 5, 1, 7, "0000100" }, { 5, 2, 8, "00000110" }, { 5, 3, 8, "00000010" }, { 5, 4, 9, "000000110" }, { 5, 5, 9, "000000000" }, { 100,100,100,"" } }; const HTABLE tab10[] = { { 0, 0, 1, "1" }, { 0, 1, 3, "010" }, { 0, 2, 6, "001010" }, { 0, 3, 8, "00010111" }, { 0, 4, 9, "000100011" }, { 0, 5, 9, "000011110" }, { 0, 6, 9, "000001100" }, { 0, 7, 10, "0000010001" }, { 1, 0, 3, "011" }, { 1, 1, 4, "0011" }, { 1, 2, 6, "001000" }, { 1, 3, 7, "0001100" }, { 1, 4, 8, "00010010" }, { 1, 5, 9, "000010101" }, { 1, 6, 8, "00001100" }, { 1, 7, 8, "00000111" }, { 2, 0, 6, "001011" }, { 2, 1, 6, "001001" }, { 2, 2, 7, "0001111" }, { 2, 3, 8, "00010101" }, { 2, 4, 9, "000100000" }, { 2, 5, 10, "0000101000" }, { 2, 6, 9, "000010011" }, { 2, 7, 9, "000000110" }, { 3, 0, 7, "0001110" }, { 3, 1, 7, "0001101" }, { 3, 2, 8, "00010110" }, { 3, 3, 9, "000100010" }, { 3, 4, 10, "0000101110" }, { 3, 5, 10, "0000010111" }, { 3, 6, 9, "000010010" }, { 3, 7, 10, "0000000111" }, { 4, 0, 8, "00010100" }, { 4, 1, 8, "00010011" }, { 4, 2, 9, "000100001" }, { 4, 3, 10, "0000101111" }, { 4, 4, 10, "0000011011" }, { 4, 5, 10, "0000010110" }, { 4, 6, 10, "0000001001" }, { 4, 7, 10, "0000000011" }, { 5, 0, 9, "000011111" }, { 5, 1, 9, "000010110" }, { 5, 2, 10, "0000101001" }, { 5, 3, 10, "0000011010" }, { 5, 4, 11, "00000010101" }, { 5, 5, 11, "00000010100" }, { 5, 6, 10, "0000000101" }, { 5, 7, 11, "00000000011" }, { 6, 0, 8, "00001110" }, { 6, 1, 8, "00001101" }, { 6, 2, 9, "000001010" }, { 6, 3, 10, "0000001011" }, { 6, 4, 10, "0000010000" }, { 6, 5, 10, "0000000110" }, { 6, 6, 11, "00000000101" }, { 6, 7, 11, "00000000001" }, { 7, 0, 9, "000001001" }, { 7, 1, 8, "00001000" }, { 7, 2, 9, "000000111" }, { 7, 3, 10, "0000001000" }, { 7, 4, 10, "0000000100" }, { 7, 5, 11, "00000000100" }, { 7, 6, 11, "00000000010" }, { 7, 7, 11, "00000000000" }, { 100,100,100,"" } }; const HTABLE tab11[] = { { 0, 0, 2, "11" }, { 0, 1, 3, "100" }, { 0, 2, 5, "01010" }, { 0, 3, 7, "0011000" }, { 0, 4, 8, "00100010" }, { 0, 5, 9, "000100001" }, { 0, 6, 8, "00010101" }, { 0, 7, 9, "000001111" }, { 1, 0, 3, "101" }, { 1, 1, 3, "011" }, { 1, 2, 4, "0100" }, { 1, 3, 6, "001010" }, { 1, 4, 8, "00100000" }, { 1, 5, 8, "00010001" }, { 1, 6, 7, "0001011" }, { 1, 7, 8, "00001010" }, { 2, 0, 5, "01011" }, { 2, 1, 5, "00111" }, { 2, 2, 6, "001101" }, { 2, 3, 7, "0010010" }, { 2, 4, 8, "00011110" }, { 2, 5, 9, "000011111" }, { 2, 6, 8, "00010100" }, { 2, 7, 8, "00000101" }, { 3, 0, 7, "0011001" }, { 3, 1, 6, "001011" }, { 3, 2, 7, "0010011" }, { 3, 3, 9, "000111011" }, { 3, 4, 8, "00011011" }, { 3, 5, 10, "0000010010" }, { 3, 6, 8, "00001100" }, { 3, 7, 9, "000000101" }, { 4, 0, 8, "00100011" }, { 4, 1, 8, "00100001" }, { 4, 2, 8, "00011111" }, { 4, 3, 9, "000111010" }, { 4, 4, 9, "000011110" }, { 4, 5, 10, "0000010000" }, { 4, 6, 9, "000000111" }, { 4, 7, 10, "0000000101" }, { 5, 0, 8, "00011100" }, { 5, 1, 8, "00011010" }, { 5, 2, 9, "000100000" }, { 5, 3, 10, "0000010011" }, { 5, 4, 10, "0000010001" }, { 5, 5, 11, "00000001111" }, { 5, 6, 10, "0000001000" }, { 5, 7, 11, "00000001110" }, { 6, 0, 8, "00001110" }, { 6, 1, 7, "0001100" }, { 6, 2, 7, "0001001" }, { 6, 3, 8, "00001101" }, { 6, 4, 9, "000001110" }, { 6, 5, 10, "0000001001" }, { 6, 6, 10, "0000000100" }, { 6, 7, 10, "0000000001" }, { 7, 0, 8, "00001011" }, { 7, 1, 7, "0000100" }, { 7, 2, 8, "00000110" }, { 7, 3, 9, "000000110" }, { 7, 4, 10, "0000000110" }, { 7, 5, 10, "0000000011" }, { 7, 6, 10, "0000000010" }, { 7, 7, 10, "0000000000" }, { 100,100,100,"" } }; const HTABLE tab12[] = { { 0, 0, 4, "1001" }, { 0, 1, 3, "110" }, { 0, 2, 5, "10000" }, { 0, 3, 7, "0100001" }, { 0, 4, 8, "00101001" }, { 0, 5, 9, "000100111" }, { 0, 6, 9, "000100110" }, { 0, 7, 9, "000011010" }, { 1, 0, 3, "111" }, { 1, 1, 3, "101" }, { 1, 2, 4, "0110" }, { 1, 3, 5, "01001" }, { 1, 4, 7, "0010111" }, { 1, 5, 7, "0010000" }, { 1, 6, 8, "00011010" }, { 1, 7, 8, "00001011" }, { 2, 0, 5, "10001" }, { 2, 1, 4, "0111" }, { 2, 2, 5, "01011" }, { 2, 3, 6, "001110" }, { 2, 4, 7, "0010101" }, { 2, 5, 8, "00011110" }, { 2, 6, 7, "0001010" }, { 2, 7, 8, "00000111" }, { 3, 0, 6, "010001" }, { 3, 1, 5, "01010" }, { 3, 2, 6, "001111" }, { 3, 3, 6, "001100" }, { 3, 4, 7, "0010010" }, { 3, 5, 8, "00011100" }, { 3, 6, 8, "00001110" }, { 3, 7, 8, "00000101" }, { 4, 0, 7, "0100000" }, { 4, 1, 6, "001101" }, { 4, 2, 7, "0010110" }, { 4, 3, 7, "0010011" }, { 4, 4, 8, "00010010" }, { 4, 5, 8, "00010000" }, { 4, 6, 8, "00001001" }, { 4, 7, 9, "000000101" }, { 5, 0, 8, "00101000" }, { 5, 1, 7, "0010001" }, { 5, 2, 8, "00011111" }, { 5, 3, 8, "00011101" }, { 5, 4, 8, "00010001" }, { 5, 5, 9, "000001101" }, { 5, 6, 8, "00000100" }, { 5, 7, 9, "000000010" }, { 6, 0, 8, "00011011" }, { 6, 1, 7, "0001100" }, { 6, 2, 7, "0001011" }, { 6, 3, 8, "00001111" }, { 6, 4, 8, "00001010" }, { 6, 5, 9, "000000111" }, { 6, 6, 9, "000000100" }, { 6, 7, 10, "0000000001" }, { 7, 0, 9, "000011011" }, { 7, 1, 8, "00001100" }, { 7, 2, 8, "00001000" }, { 7, 3, 9, "000001100" }, { 7, 4, 9, "000000110" }, { 7, 5, 9, "000000011" }, { 7, 6, 9, "000000001" }, { 7, 7, 10, "0000000000" }, { 100,100,100,"" } }; const HTABLE tab13[] = { { 0, 0, 1, "1" }, { 0, 1, 4, "0101" }, { 0, 2, 6, "001110" }, { 0, 3, 7, "0010101" }, { 0, 4, 8, "00100010" }, { 0, 5, 9, "000110011" }, { 0, 6, 9, "000101110" }, { 0, 7, 10, "0001000111" }, { 0, 8, 9, "000101010" }, { 0, 9, 10, "0000110100" }, { 0, 10, 11, "00001000100" }, { 0, 11, 11, "00000110100" }, { 0, 12, 12, "000001000011" }, { 0, 13, 12, "000000101100" }, { 0, 14, 13, "0000000101011" }, { 0, 15, 13, "0000000010011" }, { 1, 0, 3, "011" }, { 1, 1, 4, "0100" }, { 1, 2, 6, "001100" }, { 1, 3, 7, "0010011" }, { 1, 4, 8, "00011111" }, { 1, 5, 8, "00011010" }, { 1, 6, 9, "000101100" }, { 1, 7, 9, "000100001" }, { 1, 8, 9, "000011111" }, { 1, 9, 9, "000011000" }, { 1, 10, 10, "0000100000" }, { 1, 11, 10, "0000011000" }, { 1, 12, 11, "00000011111" }, { 1, 13, 12, "000000100011" }, { 1, 14, 12, "000000010110" }, { 1, 15, 12, "000000001110" }, { 2, 0, 6, "001111" }, { 2, 1, 6, "001101" }, { 2, 2, 7, "0010111" }, { 2, 3, 8, "00100100" }, { 2, 4, 9, "000111011" }, { 2, 5, 9, "000110001" }, { 2, 6, 10, "0001001101" }, { 2, 7, 10, "0001000001" }, { 2, 8, 9, "000011101" }, { 2, 9, 10, "0000101000" }, { 2, 10, 10, "0000011110" }, { 2, 11, 11, "00000101000" }, { 2, 12, 11, "00000011011" }, { 2, 13, 12, "000000100001" }, { 2, 14, 13, "0000000101010" }, { 2, 15, 13, "0000000010000" }, { 3, 0, 7, "0010110" }, { 3, 1, 7, "0010100" }, { 3, 2, 8, "00100101" }, { 3, 3, 9, "000111101" }, { 3, 4, 9, "000111000" }, { 3, 5, 10, "0001001111" }, { 3, 6, 10, "0001001001" }, { 3, 7, 10, "0001000000" }, { 3, 8, 10, "0000101011" }, { 3, 9, 11, "00001001100" }, { 3, 10, 11, "00000111000" }, { 3, 11, 11, "00000100101" }, { 3, 12, 11, "00000011010" }, { 3, 13, 12, "000000011111" }, { 3, 14, 13, "0000000011001" }, { 3, 15, 13, "0000000001110" }, { 4, 0, 8, "00100011" }, { 4, 1, 7, "0010000" }, { 4, 2, 9, "000111100" }, { 4, 3, 9, "000111001" }, { 4, 4, 10, "0001100001" }, { 4, 5, 10, "0001001011" }, { 4, 6, 11, "00001110010" }, { 4, 7, 11, "00001011011" }, { 4, 8, 10, "0000110110" }, { 4, 9, 11, "00001001001" }, { 4, 10, 11, "00000110111" }, { 4, 11, 12, "000000101001" }, { 4, 12, 12, "000000110000" }, { 4, 13, 13, "0000000110101" }, { 4, 14, 13, "0000000010111" }, { 4, 15, 14, "00000000011000" }, { 5, 0, 9, "000111010" }, { 5, 1, 8, "00011011" }, { 5, 2, 9, "000110010" }, { 5, 3, 10, "0001100000" }, { 5, 4, 10, "0001001100" }, { 5, 5, 10, "0001000110" }, { 5, 6, 11, "00001011101" }, { 5, 7, 11, "00001010100" }, { 5, 8, 11, "00001001101" }, { 5, 9, 11, "00000111010" }, { 5, 10, 12, "000001001111" }, { 5, 11, 11, "00000011101" }, { 5, 12, 13, "0000001001010" }, { 5, 13, 13, "0000000110001" }, { 5, 14, 14, "00000000101001" }, { 5, 15, 14, "00000000010001" }, { 6, 0, 9, "000101111" }, { 6, 1, 9, "000101101" }, { 6, 2, 10, "0001001110" }, { 6, 3, 10, "0001001010" }, { 6, 4, 11, "00001110011" }, { 6, 5, 11, "00001011110" }, { 6, 6, 11, "00001011010" }, { 6, 7, 11, "00001001111" }, { 6, 8, 11, "00001000101" }, { 6, 9, 12, "000001010011" }, { 6, 10, 12, "000001000111" }, { 6, 11, 12, "000000110010" }, { 6, 12, 13, "0000000111011" }, { 6, 13, 13, "0000000100110" }, { 6, 14, 14, "00000000100100" }, { 6, 15, 14, "00000000001111" }, { 7, 0, 10, "0001001000" }, { 7, 1, 9, "000100010" }, { 7, 2, 10, "0000111000" }, { 7, 3, 11, "00001011111" }, { 7, 4, 11, "00001011100" }, { 7, 5, 11, "00001010101" }, { 7, 6, 12, "000001011011" }, { 7, 7, 12, "000001011010" }, { 7, 8, 12, "000001010110" }, { 7, 9, 12, "000001001001" }, { 7, 10, 13, "0000001001101" }, { 7, 11, 13, "0000001000001" }, { 7, 12, 13, "0000000110011" }, { 7, 13, 14, "00000000101100" }, { 7, 14, 16, "0000000000101011" }, { 7, 15, 16, "0000000000101010" }, { 8, 0, 9, "000101011" }, { 8, 1, 8, "00010100" }, { 8, 2, 9, "000011110" }, { 8, 3, 10, "0000101100" }, { 8, 4, 10, "0000110111" }, { 8, 5, 11, "00001001110" }, { 8, 6, 11, "00001001000" }, { 8, 7, 12, "000001010111" }, { 8, 8, 12, "000001001110" }, { 8, 9, 12, "000000111101" }, { 8, 10, 12, "000000101110" }, { 8, 11, 13, "0000000110110" }, { 8, 12, 13, "0000000100101" }, { 8, 13, 14, "00000000011110" }, { 8, 14, 15, "000000000010100" }, { 8, 15, 15, "000000000010000" }, { 9, 0, 10, "0000110101" }, { 9, 1, 9, "000011001" }, { 9, 2, 10, "0000101001" }, { 9, 3, 10, "0000100101" }, { 9, 4, 11, "00000101100" }, { 9, 5, 11, "00000111011" }, { 9, 6, 11, "00000110110" }, { 9, 7, 13, "0000001010001" }, { 9, 8, 12, "000001000010" }, { 9, 9, 13, "0000001001100" }, { 9, 10, 13, "0000000111001" }, { 9, 11, 14, "00000000110110" }, { 9, 12, 14, "00000000100101" }, { 9, 13, 14, "00000000010010" }, { 9, 14, 16, "0000000000100111" }, { 9, 15, 15, "000000000001011" }, { 10, 0, 10, "0000100011" }, { 10, 1, 10, "0000100001" }, { 10, 2, 10, "0000011111" }, { 10, 3, 11, "00000111001" }, { 10, 4, 11, "00000101010" }, { 10, 5, 12, "000001010010" }, { 10, 6, 12, "000001001000" }, { 10, 7, 13, "0000001010000" }, { 10, 8, 12, "000000101111" }, { 10, 9, 13, "0000000111010" }, { 10, 10, 14, "00000000110111" }, { 10, 11, 13, "0000000010101" }, { 10, 12, 14, "00000000010110" }, { 10, 13, 15, "000000000011010" }, { 10, 14, 16, "0000000000100110" }, { 10, 15, 17, "00000000000010110" }, { 11, 0, 11, "00000110101" }, { 11, 1, 10, "0000011001" }, { 11, 2, 10, "0000010111" }, { 11, 3, 11, "00000100110" }, { 11, 4, 12, "000001000110" }, { 11, 5, 12, "000000111100" }, { 11, 6, 12, "000000110011" }, { 11, 7, 12, "000000100100" }, { 11, 8, 13, "0000000110111" }, { 11, 9, 13, "0000000011010" }, { 11, 10, 13, "0000000100010" }, { 11, 11, 14, "00000000010111" }, { 11, 12, 15, "000000000011011" }, { 11, 13, 15, "000000000001110" }, { 11, 14, 15, "000000000001001" }, { 11, 15, 16, "0000000000000111" }, { 12, 0, 11, "00000100010" }, { 12, 1, 11, "00000100000" }, { 12, 2, 11, "00000011100" }, { 12, 3, 12, "000000100111" }, { 12, 4, 12, "000000110001" }, { 12, 5, 13, "0000001001011" }, { 12, 6, 12, "000000011110" }, { 12, 7, 13, "0000000110100" }, { 12, 8, 14, "00000000110000" }, { 12, 9, 14, "00000000101000" }, { 12, 10, 15, "000000000110100" }, { 12, 11, 15, "000000000011100" }, { 12, 12, 15, "000000000010010" }, { 12, 13, 16, "0000000000010001" }, { 12, 14, 16, "0000000000001001" }, { 12, 15, 16, "0000000000000101" }, { 13, 0, 12, "000000101101" }, { 13, 1, 11, "00000010101" }, { 13, 2, 12, "000000100010" }, { 13, 3, 13, "0000001000000" }, { 13, 4, 13, "0000000111000" }, { 13, 5, 13, "0000000110010" }, { 13, 6, 14, "00000000110001" }, { 13, 7, 14, "00000000101101" }, { 13, 8, 14, "00000000011111" }, { 13, 9, 14, "00000000010011" }, { 13, 10, 14, "00000000001100" }, { 13, 11, 15, "000000000001111" }, { 13, 12, 16, "0000000000001010" }, { 13, 13, 15, "000000000000111" }, { 13, 14, 16, "0000000000000110" }, { 13, 15, 16, "0000000000000011" }, { 14, 0, 13, "0000000110000" }, { 14, 1, 12, "000000010111" }, { 14, 2, 12, "000000010100" }, { 14, 3, 13, "0000000100111" }, { 14, 4, 13, "0000000100100" }, { 14, 5, 13, "0000000100011" }, { 14, 6, 15, "000000000110101" }, { 14, 7, 14, "00000000010101" }, { 14, 8, 14, "00000000010000" }, { 14, 9, 17, "00000000000010111" }, { 14, 10, 15, "000000000001101" }, { 14, 11, 15, "000000000001010" }, { 14, 12, 15, "000000000000110" }, { 14, 13, 17, "00000000000000001" }, { 14, 14, 16, "0000000000000100" }, { 14, 15, 16, "0000000000000010" }, { 15, 0, 12, "000000010000" }, { 15, 1, 12, "000000001111" }, { 15, 2, 13, "0000000010001" }, { 15, 3, 14, "00000000011011" }, { 15, 4, 14, "00000000011001" }, { 15, 5, 14, "00000000010100" }, { 15, 6, 15, "000000000011101" }, { 15, 7, 14, "00000000001011" }, { 15, 8, 15, "000000000010001" }, { 15, 9, 15, "000000000001100" }, { 15, 10, 16, "0000000000010000" }, { 15, 11, 16, "0000000000001000" }, { 15, 12, 19, "0000000000000000001" }, { 15, 13, 18, "000000000000000001" }, { 15, 14, 19, "0000000000000000000" }, { 15, 15, 16, "0000000000000001" }, { 100,100,100,"" } }; const HTABLE tab15[] = { { 0, 0, 3, "111" }, { 0, 1, 4, "1100" }, { 0, 2, 5, "10010" }, { 0, 3, 7, "0110101" }, { 0, 4, 7, "0101111" }, { 0, 5, 8, "01001100" }, { 0, 6, 9, "001111100" }, { 0, 7, 9, "001101100" }, { 0, 8, 9, "001011001" }, { 0, 9, 10, "0001111011" }, { 0, 10, 10, "0001101100" }, { 0, 11, 11, "00001110111" }, { 0, 12, 11, "00001101011" }, { 0, 13, 11, "00001010001" }, { 0, 14, 12, "000001111010" }, { 0, 15, 13, "0000000111111" }, { 1, 0, 4, "1101" }, { 1, 1, 3, "101" }, { 1, 2, 5, "10000" }, { 1, 3, 6, "011011" }, { 1, 4, 7, "0101110" }, { 1, 5, 7, "0100100" }, { 1, 6, 8, "00111101" }, { 1, 7, 8, "00110011" }, { 1, 8, 8, "00101010" }, { 1, 9, 9, "001000110" }, { 1, 10, 9, "000110100" }, { 1, 11, 10, "0001010011" }, { 1, 12, 10, "0001000001" }, { 1, 13, 10, "0000101001" }, { 1, 14, 11, "00000111011" }, { 1, 15, 11, "00000100100" }, { 2, 0, 5, "10011" }, { 2, 1, 5, "10001" }, { 2, 2, 5, "01111" }, { 2, 3, 6, "011000" }, { 2, 4, 7, "0101001" }, { 2, 5, 7, "0100010" }, { 2, 6, 8, "00111011" }, { 2, 7, 8, "00110000" }, { 2, 8, 8, "00101000" }, { 2, 9, 9, "001000000" }, { 2, 10, 9, "000110010" }, { 2, 11, 10, "0001001110" }, { 2, 12, 10, "0000111110" }, { 2, 13, 11, "00001010000" }, { 2, 14, 11, "00000111000" }, { 2, 15, 11, "00000100001" }, { 3, 0, 6, "011101" }, { 3, 1, 6, "011100" }, { 3, 2, 6, "011001" }, { 3, 3, 7, "0101011" }, { 3, 4, 7, "0100111" }, { 3, 5, 8, "00111111" }, { 3, 6, 8, "00110111" }, { 3, 7, 9, "001011101" }, { 3, 8, 9, "001001100" }, { 3, 9, 9, "000111011" }, { 3, 10, 10, "0001011101" }, { 3, 11, 10, "0001001000" }, { 3, 12, 10, "0000110110" }, { 3, 13, 11, "00001001011" }, { 3, 14, 11, "00000110010" }, { 3, 15, 11, "00000011101" }, { 4, 0, 7, "0110100" }, { 4, 1, 6, "010110" }, { 4, 2, 7, "0101010" }, { 4, 3, 7, "0101000" }, { 4, 4, 8, "01000011" }, { 4, 5, 8, "00111001" }, { 4, 6, 9, "001011111" }, { 4, 7, 9, "001001111" }, { 4, 8, 9, "001001000" }, { 4, 9, 9, "000111001" }, { 4, 10, 10, "0001011001" }, { 4, 11, 10, "0001000101" }, { 4, 12, 10, "0000110001" }, { 4, 13, 11, "00001000010" }, { 4, 14, 11, "00000101110" }, { 4, 15, 11, "00000011011" }, { 5, 0, 8, "01001101" }, { 5, 1, 7, "0100101" }, { 5, 2, 7, "0100011" }, { 5, 3, 8, "01000010" }, { 5, 4, 8, "00111010" }, { 5, 5, 8, "00110100" }, { 5, 6, 9, "001011011" }, { 5, 7, 9, "001001010" }, { 5, 8, 9, "000111110" }, { 5, 9, 9, "000110000" }, { 5, 10, 10, "0001001111" }, { 5, 11, 10, "0000111111" }, { 5, 12, 11, "00001011010" }, { 5, 13, 11, "00000111110" }, { 5, 14, 11, "00000101000" }, { 5, 15, 12, "000000100110" }, { 6, 0, 9, "001111101" }, { 6, 1, 7, "0100000" }, { 6, 2, 8, "00111100" }, { 6, 3, 8, "00111000" }, { 6, 4, 8, "00110010" }, { 6, 5, 9, "001011100" }, { 6, 6, 9, "001001110" }, { 6, 7, 9, "001000001" }, { 6, 8, 9, "000110111" }, { 6, 9, 10, "0001010111" }, { 6, 10, 10, "0001000111" }, { 6, 11, 10, "0000110011" }, { 6, 12, 11, "00001001001" }, { 6, 13, 11, "00000110011" }, { 6, 14, 12, "000001000110" }, { 6, 15, 12, "000000011110" }, { 7, 0, 9, "001101101" }, { 7, 1, 8, "00110101" }, { 7, 2, 8, "00110001" }, { 7, 3, 9, "001011110" }, { 7, 4, 9, "001011000" }, { 7, 5, 9, "001001011" }, { 7, 6, 9, "001000010" }, { 7, 7, 10, "0001111010" }, { 7, 8, 10, "0001011011" }, { 7, 9, 10, "0001001001" }, { 7, 10, 10, "0000111000" }, { 7, 11, 10, "0000101010" }, { 7, 12, 11, "00001000000" }, { 7, 13, 11, "00000101100" }, { 7, 14, 11, "00000010101" }, { 7, 15, 12, "000000011001" }, { 8, 0, 9, "001011010" }, { 8, 1, 8, "00101011" }, { 8, 2, 8, "00101001" }, { 8, 3, 9, "001001101" }, { 8, 4, 9, "001001001" }, { 8, 5, 9, "000111111" }, { 8, 6, 9, "000111000" }, { 8, 7, 10, "0001011100" }, { 8, 8, 10, "0001001101" }, { 8, 9, 10, "0001000010" }, { 8, 10, 10, "0000101111" }, { 8, 11, 11, "00001000011" }, { 8, 12, 11, "00000110000" }, { 8, 13, 12, "000000110101" }, { 8, 14, 12, "000000100100" }, { 8, 15, 12, "000000010100" }, { 9, 0, 9, "001000111" }, { 9, 1, 8, "00100010" }, { 9, 2, 9, "001000011" }, { 9, 3, 9, "000111100" }, { 9, 4, 9, "000111010" }, { 9, 5, 9, "000110001" }, { 9, 6, 10, "0001011000" }, { 9, 7, 10, "0001001100" }, { 9, 8, 10, "0001000011" }, { 9, 9, 11, "00001101010" }, { 9, 10, 11, "00001000111" }, { 9, 11, 11, "00000110110" }, { 9, 12, 11, "00000100110" }, { 9, 13, 12, "000000100111" }, { 9, 14, 12, "000000010111" }, { 9, 15, 12, "000000001111" }, { 10, 0, 10, "0001101101" }, { 10, 1, 9, "000110101" }, { 10, 2, 9, "000110011" }, { 10, 3, 9, "000101111" }, { 10, 4, 10, "0001011010" }, { 10, 5, 10, "0001010010" }, { 10, 6, 10, "0000111010" }, { 10, 7, 10, "0000111001" }, { 10, 8, 10, "0000110000" }, { 10, 9, 11, "00001001000" }, { 10, 10, 11, "00000111001" }, { 10, 11, 11, "00000101001" }, { 10, 12, 11, "00000010111" }, { 10, 13, 12, "000000011011" }, { 10, 14, 13, "0000000111110" }, { 10, 15, 12, "000000001001" }, { 11, 0, 10, "0001010110" }, { 11, 1, 9, "000101010" }, { 11, 2, 9, "000101000" }, { 11, 3, 9, "000100101" }, { 11, 4, 10, "0001000110" }, { 11, 5, 10, "0001000000" }, { 11, 6, 10, "0000110100" }, { 11, 7, 10, "0000101011" }, { 11, 8, 11, "00001000110" }, { 11, 9, 11, "00000110111" }, { 11, 10, 11, "00000101010" }, { 11, 11, 11, "00000011001" }, { 11, 12, 12, "000000011101" }, { 11, 13, 12, "000000010010" }, { 11, 14, 12, "000000001011" }, { 11, 15, 13, "0000000001011" }, { 12, 0, 11, "00001110110" }, { 12, 1, 10, "0001000100" }, { 12, 2, 9, "000011110" }, { 12, 3, 10, "0000110111" }, { 12, 4, 10, "0000110010" }, { 12, 5, 10, "0000101110" }, { 12, 6, 11, "00001001010" }, { 12, 7, 11, "00001000001" }, { 12, 8, 11, "00000110001" }, { 12, 9, 11, "00000100111" }, { 12, 10, 11, "00000011000" }, { 12, 11, 11, "00000010000" }, { 12, 12, 12, "000000010110" }, { 12, 13, 12, "000000001101" }, { 12, 14, 13, "0000000001110" }, { 12, 15, 13, "0000000000111" }, { 13, 0, 11, "00001011011" }, { 13, 1, 10, "0000101100" }, { 13, 2, 10, "0000100111" }, { 13, 3, 10, "0000100110" }, { 13, 4, 10, "0000100010" }, { 13, 5, 11, "00000111111" }, { 13, 6, 11, "00000110100" }, { 13, 7, 11, "00000101101" }, { 13, 8, 11, "00000011111" }, { 13, 9, 12, "000000110100" }, { 13, 10, 12, "000000011100" }, { 13, 11, 12, "000000010011" }, { 13, 12, 12, "000000001110" }, { 13, 13, 12, "000000001000" }, { 13, 14, 13, "0000000001001" }, { 13, 15, 13, "0000000000011" }, { 14, 0, 12, "000001111011" }, { 14, 1, 11, "00000111100" }, { 14, 2, 11, "00000111010" }, { 14, 3, 11, "00000110101" }, { 14, 4, 11, "00000101111" }, { 14, 5, 11, "00000101011" }, { 14, 6, 11, "00000100000" }, { 14, 7, 11, "00000010110" }, { 14, 8, 12, "000000100101" }, { 14, 9, 12, "000000011000" }, { 14, 10, 12, "000000010001" }, { 14, 11, 12, "000000001100" }, { 14, 12, 13, "0000000001111" }, { 14, 13, 13, "0000000001010" }, { 14, 14, 12, "000000000010" }, { 14, 15, 13, "0000000000001" }, { 15, 0, 12, "000001000111" }, { 15, 1, 11, "00000100101" }, { 15, 2, 11, "00000100010" }, { 15, 3, 11, "00000011110" }, { 15, 4, 11, "00000011100" }, { 15, 5, 11, "00000010100" }, { 15, 6, 11, "00000010001" }, { 15, 7, 12, "000000011010" }, { 15, 8, 12, "000000010101" }, { 15, 9, 12, "000000010000" }, { 15, 10, 12, "000000001010" }, { 15, 11, 12, "000000000110" }, { 15, 12, 13, "0000000001000" }, { 15, 13, 13, "0000000000110" }, { 15, 14, 13, "0000000000010" }, { 15, 15, 13, "0000000000000" }, { 100,100,100,"" } }; const HTABLE tab16[] = { { 0, 0, 1, "1" }, { 0, 1, 4, "0101" }, { 0, 2, 6, "001110" }, { 0, 3, 8, "00101100" }, { 0, 4, 9, "001001010" }, { 0, 5, 9, "000111111" }, { 0, 6, 10, "0001101110" }, { 0, 7, 10, "0001011101" }, { 0, 8, 11, "00010101100" }, { 0, 9, 11, "00010010101" }, { 0, 10, 11, "00010001010" }, { 0, 11, 12, "000011110010" }, { 0, 12, 12, "000011100001" }, { 0, 13, 12, "000011000011" }, { 0, 14, 13, "0000101111000" }, { 0, 15, 9, "000010001" }, { 1, 0, 3, "011" }, { 1, 1, 4, "0100" }, { 1, 2, 6, "001100" }, { 1, 3, 7, "0010100" }, { 1, 4, 8, "00100011" }, { 1, 5, 9, "000111110" }, { 1, 6, 9, "000110101" }, { 1, 7, 9, "000101111" }, { 1, 8, 10, "0001010011" }, { 1, 9, 10, "0001001011" }, { 1, 10, 10, "0001000100" }, { 1, 11, 11, "00001110111" }, { 1, 12, 12, "000011001001" }, { 1, 13, 11, "00001101011" }, { 1, 14, 12, "000011001111" }, { 1, 15, 8, "00001001" }, { 2, 0, 6, "001111" }, { 2, 1, 6, "001101" }, { 2, 2, 7, "0010111" }, { 2, 3, 8, "00100110" }, { 2, 4, 9, "001000011" }, { 2, 5, 9, "000111010" }, { 2, 6, 10, "0001100111" }, { 2, 7, 10, "0001011010" }, { 2, 8, 11, "00010100001" }, { 2, 9, 10, "0001001000" }, { 2, 10, 11, "00001111111" }, { 2, 11, 11, "00001110101" }, { 2, 12, 11, "00001101110" }, { 2, 13, 12, "000011010001" }, { 2, 14, 12, "000011001110" }, { 2, 15, 9, "000010000" }, { 3, 0, 8, "00101101" }, { 3, 1, 7, "0010101" }, { 3, 2, 8, "00100111" }, { 3, 3, 9, "001000101" }, { 3, 4, 9, "001000000" }, { 3, 5, 10, "0001110010" }, { 3, 6, 10, "0001100011" }, { 3, 7, 10, "0001010111" }, { 3, 8, 11, "00010011110" }, { 3, 9, 11, "00010001100" }, { 3, 10, 12, "000011111100" }, { 3, 11, 12, "000011010100" }, { 3, 12, 12, "000011000111" }, { 3, 13, 13, "0000110000011" }, { 3, 14, 13, "0000101101101" }, { 3, 15, 10, "0000011010" }, { 4, 0, 9, "001001011" }, { 4, 1, 8, "00100100" }, { 4, 2, 9, "001000100" }, { 4, 3, 9, "001000001" }, { 4, 4, 10, "0001110011" }, { 4, 5, 10, "0001100101" }, { 4, 6, 11, "00010110011" }, { 4, 7, 11, "00010100100" }, { 4, 8, 11, "00010011011" }, { 4, 9, 12, "000100001000" }, { 4, 10, 12, "000011110110" }, { 4, 11, 12, "000011100010" }, { 4, 12, 13, "0000110001011" }, { 4, 13, 13, "0000101111110" }, { 4, 14, 13, "0000101101010" }, { 4, 15, 9, "000001001" }, { 5, 0, 9, "001000010" }, { 5, 1, 8, "00011110" }, { 5, 2, 9, "000111011" }, { 5, 3, 9, "000111000" }, { 5, 4, 10, "0001100110" }, { 5, 5, 11, "00010111001" }, { 5, 6, 11, "00010101101" }, { 5, 7, 12, "000100001001" }, { 5, 8, 11, "00010001110" }, { 5, 9, 12, "000011111101" }, { 5, 10, 12, "000011101000" }, { 5, 11, 13, "0000110010000" }, { 5, 12, 13, "0000110000100" }, { 5, 13, 13, "0000101111010" }, { 5, 14, 14, "00000110111101" }, { 5, 15, 10, "0000010000" }, { 6, 0, 10, "0001101111" }, { 6, 1, 9, "000110110" }, { 6, 2, 9, "000110100" }, { 6, 3, 10, "0001100100" }, { 6, 4, 11, "00010111000" }, { 6, 5, 11, "00010110010" }, { 6, 6, 11, "00010100000" }, { 6, 7, 11, "00010000101" }, { 6, 8, 12, "000100000001" }, { 6, 9, 12, "000011110100" }, { 6, 10, 12, "000011100100" }, { 6, 11, 12, "000011011001" }, { 6, 12, 13, "0000110000001" }, { 6, 13, 13, "0000101101110" }, { 6, 14, 14, "00001011001011" }, { 6, 15, 10, "0000001010" }, { 7, 0, 10, "0001100010" }, { 7, 1, 9, "000110000" }, { 7, 2, 10, "0001011011" }, { 7, 3, 10, "0001011000" }, { 7, 4, 11, "00010100101" }, { 7, 5, 11, "00010011101" }, { 7, 6, 11, "00010010100" }, { 7, 7, 12, "000100000101" }, { 7, 8, 12, "000011111000" }, { 7, 9, 13, "0000110010111" }, { 7, 10, 13, "0000110001101" }, { 7, 11, 13, "0000101110100" }, { 7, 12, 13, "0000101111100" }, { 7, 13, 15, "000001101111001" }, { 7, 14, 15, "000001101110100" }, { 7, 15, 10, "0000001000" }, { 8, 0, 10, "0001010101" }, { 8, 1, 10, "0001010100" }, { 8, 2, 10, "0001010001" }, { 8, 3, 11, "00010011111" }, { 8, 4, 11, "00010011100" }, { 8, 5, 11, "00010001111" }, { 8, 6, 12, "000100000100" }, { 8, 7, 12, "000011111001" }, { 8, 8, 13, "0000110101011" }, { 8, 9, 13, "0000110010001" }, { 8, 10, 13, "0000110001000" }, { 8, 11, 13, "0000101111111" }, { 8, 12, 14, "00001011010111" }, { 8, 13, 14, "00001011001001" }, { 8, 14, 14, "00001011000100" }, { 8, 15, 10, "0000000111" }, { 9, 0, 11, "00010011010" }, { 9, 1, 10, "0001001100" }, { 9, 2, 10, "0001001001" }, { 9, 3, 11, "00010001101" }, { 9, 4, 11, "00010000011" }, { 9, 5, 12, "000100000000" }, { 9, 6, 12, "000011110101" }, { 9, 7, 13, "0000110101010" }, { 9, 8, 13, "0000110010110" }, { 9, 9, 13, "0000110001010" }, { 9, 10, 13, "0000110000000" }, { 9, 11, 14, "00001011011111" }, { 9, 12, 13, "0000101100111" }, { 9, 13, 14, "00001011000110" }, { 9, 14, 13, "0000101100000" }, { 9, 15, 11, "00000001011" }, { 10, 0, 11, "00010001011" }, { 10, 1, 11, "00010000001" }, { 10, 2, 10, "0001000011" }, { 10, 3, 11, "00001111101" }, { 10, 4, 12, "000011110111" }, { 10, 5, 12, "000011101001" }, { 10, 6, 12, "000011100101" }, { 10, 7, 12, "000011011011" }, { 10, 8, 13, "0000110001001" }, { 10, 9, 14, "00001011100111" }, { 10, 10, 14, "00001011100001" }, { 10, 11, 14, "00001011010000" }, { 10, 12, 15, "000001101110101" }, { 10, 13, 15, "000001101110010" }, { 10, 14, 14, "00000110110111" }, { 10, 15, 10, "0000000100" }, { 11, 0, 12, "000011110011" }, { 11, 1, 11, "00001111000" }, { 11, 2, 11, "00001110110" }, { 11, 3, 11, "00001110011" }, { 11, 4, 12, "000011100011" }, { 11, 5, 12, "000011011111" }, { 11, 6, 13, "0000110001100" }, { 11, 7, 14, "00001011101010" }, { 11, 8, 14, "00001011100110" }, { 11, 9, 14, "00001011100000" }, { 11, 10, 14, "00001011010001" }, { 11, 11, 14, "00001011001000" }, { 11, 12, 14, "00001011000010" }, { 11, 13, 13, "0000011011111" }, { 11, 14, 14, "00000110110100" }, { 11, 15, 11, "00000000110" }, { 12, 0, 12, "000011001010" }, { 12, 1, 12, "000011100000" }, { 12, 2, 12, "000011011110" }, { 12, 3, 12, "000011011010" }, { 12, 4, 12, "000011011000" }, { 12, 5, 13, "0000110000101" }, { 12, 6, 13, "0000110000010" }, { 12, 7, 13, "0000101111101" }, { 12, 8, 13, "0000101101100" }, { 12, 9, 15, "000001101111000" }, { 12, 10, 14, "00000110111011" }, { 12, 11, 14, "00001011000011" }, { 12, 12, 14, "00000110111000" }, { 12, 13, 14, "00000110110101" }, { 12, 14, 16, "0000011011000000" }, { 12, 15, 11, "00000000100" }, { 13, 0, 14, "00001011101011" }, { 13, 1, 12, "000011010011" }, { 13, 2, 12, "000011010010" }, { 13, 3, 12, "000011010000" }, { 13, 4, 13, "0000101110010" }, { 13, 5, 13, "0000101111011" }, { 13, 6, 14, "00001011011110" }, { 13, 7, 14, "00001011010011" }, { 13, 8, 14, "00001011001010" }, { 13, 9, 16, "0000011011000111" }, { 13, 10, 15, "000001101110011" }, { 13, 11, 15, "000001101101101" }, { 13, 12, 15, "000001101101100" }, { 13, 13, 17, "00000110110000011" }, { 13, 14, 15, "000001101100001" }, { 13, 15, 11, "00000000010" }, { 14, 0, 13, "0000101111001" }, { 14, 1, 13, "0000101110001" }, { 14, 2, 11, "00001100110" }, { 14, 3, 12, "000010111011" }, { 14, 4, 14, "00001011010110" }, { 14, 5, 14, "00001011010010" }, { 14, 6, 13, "0000101100110" }, { 14, 7, 14, "00001011000111" }, { 14, 8, 14, "00001011000101" }, { 14, 9, 15, "000001101100010" }, { 14, 10, 16, "0000011011000110" }, { 14, 11, 15, "000001101100111" }, { 14, 12, 17, "00000110110000010" }, { 14, 13, 15, "000001101100110" }, { 14, 14, 14, "00000110110010" }, { 14, 15, 11, "00000000000" }, { 15, 0, 9, "000001100" }, { 15, 1, 8, "00001010" }, { 15, 2, 8, "00000111" }, { 15, 3, 9, "000001011" }, { 15, 4, 9, "000001010" }, { 15, 5, 10, "0000010001" }, { 15, 6, 10, "0000001011" }, { 15, 7, 10, "0000001001" }, { 15, 8, 11, "00000001101" }, { 15, 9, 11, "00000001100" }, { 15, 10, 11, "00000001010" }, { 15, 11, 11, "00000000111" }, { 15, 12, 11, "00000000101" }, { 15, 13, 11, "00000000011" }, { 15, 14, 11, "00000000001" }, { 15, 15, 8, "00000011" }, { 100,100,100,"" } }; const HTABLE tab24[] = { { 0, 0, 4, "1111" }, { 0, 1, 4, "1101" }, { 0, 2, 6, "101110" }, { 0, 3, 7, "1010000" }, { 0, 4, 8, "10010010" }, { 0, 5, 9, "100000110" }, { 0, 6, 9, "011111000" }, { 0, 7, 10, "0110110010" }, { 0, 8, 10, "0110101010" }, { 0, 9, 11, "01010011101" }, { 0, 10, 11, "01010001101" }, { 0, 11, 11, "01010001001" }, { 0, 12, 11, "01001101101" }, { 0, 13, 11, "01000000101" }, { 0, 14, 12, "010000001000" }, { 0, 15, 9, "001011000" }, { 1, 0, 4, "1110" }, { 1, 1, 4, "1100" }, { 1, 2, 5, "10101" }, { 1, 3, 6, "100110" }, { 1, 4, 7, "1000111" }, { 1, 5, 8, "10000010" }, { 1, 6, 8, "01111010" }, { 1, 7, 9, "011011000" }, { 1, 8, 9, "011010001" }, { 1, 9, 9, "011000110" }, { 1, 10, 10, "0101000111" }, { 1, 11, 10, "0101011001" }, { 1, 12, 10, "0100111111" }, { 1, 13, 10, "0100101001" }, { 1, 14, 10, "0100010111" }, { 1, 15, 8, "00101010" }, { 2, 0, 6, "101111" }, { 2, 1, 5, "10110" }, { 2, 2, 6, "101001" }, { 2, 3, 7, "1001010" }, { 2, 4, 7, "1000100" }, { 2, 5, 8, "10000000" }, { 2, 6, 8, "01111000" }, { 2, 7, 9, "011011101" }, { 2, 8, 9, "011001111" }, { 2, 9, 9, "011000010" }, { 2, 10, 9, "010110110" }, { 2, 11, 10, "0101010100" }, { 2, 12, 10, "0100111011" }, { 2, 13, 10, "0100100111" }, { 2, 14, 11, "01000011101" }, { 2, 15, 7, "0010010" }, { 3, 0, 7, "1010001" }, { 3, 1, 6, "100111" }, { 3, 2, 7, "1001011" }, { 3, 3, 7, "1000110" }, { 3, 4, 8, "10000110" }, { 3, 5, 8, "01111101" }, { 3, 6, 8, "01110100" }, { 3, 7, 9, "011011100" }, { 3, 8, 9, "011001100" }, { 3, 9, 9, "010111110" }, { 3, 10, 9, "010110010" }, { 3, 11, 10, "0101000101" }, { 3, 12, 10, "0100110111" }, { 3, 13, 10, "0100100101" }, { 3, 14, 10, "0100001111" }, { 3, 15, 7, "0010000" }, { 4, 0, 8, "10010011" }, { 4, 1, 7, "1001000" }, { 4, 2, 7, "1000101" }, { 4, 3, 8, "10000111" }, { 4, 4, 8, "01111111" }, { 4, 5, 8, "01110110" }, { 4, 6, 8, "01110000" }, { 4, 7, 9, "011010010" }, { 4, 8, 9, "011001000" }, { 4, 9, 9, "010111100" }, { 4, 10, 10, "0101100000" }, { 4, 11, 10, "0101000011" }, { 4, 12, 10, "0100110010" }, { 4, 13, 10, "0100011101" }, { 4, 14, 11, "01000011100" }, { 4, 15, 7, "0001110" }, { 5, 0, 9, "100000111" }, { 5, 1, 7, "1000010" }, { 5, 2, 8, "10000001" }, { 5, 3, 8, "01111110" }, { 5, 4, 8, "01110111" }, { 5, 5, 8, "01110010" }, { 5, 6, 9, "011010110" }, { 5, 7, 9, "011001010" }, { 5, 8, 9, "011000000" }, { 5, 9, 9, "010110100" }, { 5, 10, 10, "0101010101" }, { 5, 11, 10, "0100111101" }, { 5, 12, 10, "0100101101" }, { 5, 13, 10, "0100011001" }, { 5, 14, 10, "0100000110" }, { 5, 15, 7, "0001100" }, { 6, 0, 9, "011111001" }, { 6, 1, 8, "01111011" }, { 6, 2, 8, "01111001" }, { 6, 3, 8, "01110101" }, { 6, 4, 8, "01110001" }, { 6, 5, 9, "011010111" }, { 6, 6, 9, "011001110" }, { 6, 7, 9, "011000011" }, { 6, 8, 9, "010111001" }, { 6, 9, 10, "0101011011" }, { 6, 10, 10, "0101001010" }, { 6, 11, 10, "0100110100" }, { 6, 12, 10, "0100100011" }, { 6, 13, 10, "0100010000" }, { 6, 14, 11, "01000001000" }, { 6, 15, 7, "0001010" }, { 7, 0, 10, "0110110011" }, { 7, 1, 8, "01110011" }, { 7, 2, 8, "01101111" }, { 7, 3, 8, "01101101" }, { 7, 4, 9, "011010011" }, { 7, 5, 9, "011001011" }, { 7, 6, 9, "011000100" }, { 7, 7, 9, "010111011" }, { 7, 8, 10, "0101100001" }, { 7, 9, 10, "0101001100" }, { 7, 10, 10, "0100111001" }, { 7, 11, 10, "0100101010" }, { 7, 12, 10, "0100011011" }, { 7, 13, 11, "01000010011" }, { 7, 14, 11, "00101111101" }, { 7, 15, 8, "00010001" }, { 8, 0, 10, "0110101011" }, { 8, 1, 9, "011010100" }, { 8, 2, 9, "011010000" }, { 8, 3, 9, "011001101" }, { 8, 4, 9, "011001001" }, { 8, 5, 9, "011000001" }, { 8, 6, 9, "010111010" }, { 8, 7, 9, "010110001" }, { 8, 8, 9, "010101001" }, { 8, 9, 10, "0101000000" }, { 8, 10, 10, "0100101111" }, { 8, 11, 10, "0100011110" }, { 8, 12, 10, "0100001100" }, { 8, 13, 11, "01000000010" }, { 8, 14, 11, "00101111001" }, { 8, 15, 8, "00010000" }, { 9, 0, 10, "0101001111" }, { 9, 1, 9, "011000111" }, { 9, 2, 9, "011000101" }, { 9, 3, 9, "010111111" }, { 9, 4, 9, "010111101" }, { 9, 5, 9, "010110101" }, { 9, 6, 9, "010101110" }, { 9, 7, 10, "0101001101" }, { 9, 8, 10, "0101000001" }, { 9, 9, 10, "0100110001" }, { 9, 10, 10, "0100100001" }, { 9, 11, 10, "0100010011" }, { 9, 12, 11, "01000001001" }, { 9, 13, 11, "00101111011" }, { 9, 14, 11, "00101110011" }, { 9, 15, 8, "00001011" }, { 10, 0, 11, "01010011100" }, { 10, 1, 9, "010111000" }, { 10, 2, 9, "010110111" }, { 10, 3, 9, "010110011" }, { 10, 4, 9, "010101111" }, { 10, 5, 10, "0101011000" }, { 10, 6, 10, "0101001011" }, { 10, 7, 10, "0100111010" }, { 10, 8, 10, "0100110000" }, { 10, 9, 10, "0100100010" }, { 10, 10, 10, "0100010101" }, { 10, 11, 11, "01000010010" }, { 10, 12, 11, "00101111111" }, { 10, 13, 11, "00101110101" }, { 10, 14, 11, "00101101110" }, { 10, 15, 8, "00001010" }, { 11, 0, 11, "01010001100" }, { 11, 1, 10, "0101011010" }, { 11, 2, 9, "010101011" }, { 11, 3, 9, "010101000" }, { 11, 4, 9, "010100100" }, { 11, 5, 10, "0100111110" }, { 11, 6, 10, "0100110101" }, { 11, 7, 10, "0100101011" }, { 11, 8, 10, "0100011111" }, { 11, 9, 10, "0100010100" }, { 11, 10, 10, "0100000111" }, { 11, 11, 11, "01000000001" }, { 11, 12, 11, "00101110111" }, { 11, 13, 11, "00101110000" }, { 11, 14, 11, "00101101010" }, { 11, 15, 8, "00000110" }, { 12, 0, 11, "01010001000" }, { 12, 1, 10, "0101000010" }, { 12, 2, 10, "0100111100" }, { 12, 3, 10, "0100111000" }, { 12, 4, 10, "0100110011" }, { 12, 5, 10, "0100101110" }, { 12, 6, 10, "0100100100" }, { 12, 7, 10, "0100011100" }, { 12, 8, 10, "0100001101" }, { 12, 9, 10, "0100000101" }, { 12, 10, 11, "01000000000" }, { 12, 11, 11, "00101111000" }, { 12, 12, 11, "00101110010" }, { 12, 13, 11, "00101101100" }, { 12, 14, 11, "00101100111" }, { 12, 15, 8, "00000100" }, { 13, 0, 11, "01001101100" }, { 13, 1, 10, "0100101100" }, { 13, 2, 10, "0100101000" }, { 13, 3, 10, "0100100110" }, { 13, 4, 10, "0100100000" }, { 13, 5, 10, "0100011010" }, { 13, 6, 10, "0100010001" }, { 13, 7, 10, "0100001010" }, { 13, 8, 11, "01000000011" }, { 13, 9, 11, "00101111100" }, { 13, 10, 11, "00101110110" }, { 13, 11, 11, "00101110001" }, { 13, 12, 11, "00101101101" }, { 13, 13, 11, "00101101001" }, { 13, 14, 11, "00101100101" }, { 13, 15, 8, "00000010" }, { 14, 0, 12, "010000001001" }, { 14, 1, 10, "0100011000" }, { 14, 2, 10, "0100010110" }, { 14, 3, 10, "0100010010" }, { 14, 4, 10, "0100001011" }, { 14, 5, 10, "0100001000" }, { 14, 6, 10, "0100000011" }, { 14, 7, 11, "00101111110" }, { 14, 8, 11, "00101111010" }, { 14, 9, 11, "00101110100" }, { 14, 10, 11, "00101101111" }, { 14, 11, 11, "00101101011" }, { 14, 12, 11, "00101101000" }, { 14, 13, 11, "00101100110" }, { 14, 14, 11, "00101100100" }, { 14, 15, 8, "00000000" }, { 15, 0, 8, "00101011" }, { 15, 1, 7, "0010100" }, { 15, 2, 7, "0010011" }, { 15, 3, 7, "0010001" }, { 15, 4, 7, "0001111" }, { 15, 5, 7, "0001101" }, { 15, 6, 7, "0001011" }, { 15, 7, 7, "0001001" }, { 15, 8, 7, "0000111" }, { 15, 9, 7, "0000110" }, { 15, 10, 7, "0000100" }, { 15, 11, 8, "00000111" }, { 15, 12, 8, "00000101" }, { 15, 13, 8, "00000011" }, { 15, 14, 8, "00000001" }, { 15, 15, 4, "0011" }, { 100,100,100,"" } }; const HTABLE tab32[] = { { 0, 0, 1, "1" }, { 1, 1, 4, "0101" }, { 2, 2, 4, "0100" }, { 3, 3, 5, "00101" }, { 4, 4, 4, "0110" }, { 5, 5, 6, "000101" }, { 6, 6, 5, "00100" }, { 7, 7, 6, "000100" }, { 8, 8, 4, "0111" }, { 9, 9, 5, "00011" }, { 10, 10, 5, "00110" }, { 11, 11, 6, "000000" }, { 12, 12, 5, "00111" }, { 13, 13, 6, "000010" }, { 14, 14, 6, "000011" }, { 15, 15, 6, "000001" }, { 100,100,100,"" } }; const HTABLE tab33[] = { { 0, 0, 4, "1111" }, { 1, 1, 4, "1110" }, { 2, 2, 4, "1101" }, { 3, 3, 4, "1100" }, { 4, 4, 4, "1011" }, { 5, 5, 4, "1010" }, { 6, 6, 4, "1001" }, { 7, 7, 4, "1000" }, { 8, 8, 4, "0111" }, { 9, 9, 4, "0110" }, { 10, 10, 4, "0101" }, { 11, 11, 4, "0100" }, { 12, 12, 4, "0011" }, { 13, 13, 4, "0010" }, { 14, 14, 4, "0001" }, { 15, 15, 4, "0000" }, { 100,100,100,"" } }; const HTABLE FAR *h_tab[34] = { NULL,tab1,tab2,tab3,tab5,tab5,tab6,tab7,tab8,tab9,tab10, tab11,tab12,tab13,tab15,tab15,tab16,tab16,tab16,tab16,tab16, tab16,tab16,tab16,tab24,tab24,tab24,tab24,tab24,tab24,tab24,tab24, tab32,tab33 }; const S32 h_linbits[34] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,6,8,10,13,4,5,6,7,8,9,11,13,-1,-1}; //######################################################################### //# # //# Tables and definitions used by MPEG decoder # //# # //######################################################################### // // Boundaries of each scalefactor band (layer 3) // // 21 bands at each sampling frequency for long (type 0,1,3) windows // 12 bands each for short windows // // [MPEG version][sampling frequency][band boundary] // const S16 sf_bound_l[2][3][22] = { { { 5,11,17,23,29,35,43,53,65,79,95,115,139,167,199,237,283,335,395,463,521,575 }, { 5,11,17,23,29,35,43,53,65,79,95,113,135,161,193,231,277,331,393,463,539,575 }, { 5,11,17,23,29,35,43,53,65,79,95,115,139,167,199,237,283,335,395,463,521,575 } }, { { 3,7,11,15,19,23,29,35,43,51,61,73, 89,109,133,161,195,237,287,341,417,575 }, { 3,7,11,15,19,23,29,35,41,49,59,71, 87,105,127,155,189,229,275,329,383,575 }, { 3,7,11,15,19,23,29,35,43,53,65,81,101,125,155,193,239,295,363,447,549,575 } } }; const S16 sf_bound_s[2][3][13] = { { { 3,7,11,17,23,31,41,55,73, 99,131,173,191}, { 3,7,11,17,25,35,47,61,79,103,135,179,191}, { 3,7,11,17,25,35,47,61,79,103,133,173,191} }, { { 3,7,11,15,21,29,39,51,65, 83,105,135,191}, { 3,7,11,15,21,27,37,49,63, 79, 99,125,191}, { 3,7,11,15,21,29,41,57,77,103,137,179,191} } }; // // Scalefactor band tables from reference source // const struct { S16 l[23]; S16 s[14]; } sfBandIndex[6] = {{{0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, {0,4,8,12,18,24,32,42,56,74,100,132,174,192}}, {{0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,330,394,464,540,576}, {0,4,8,12,18,26,36,48,62,80,104,136,180,192}}, {{0,6,12,18,24,30,36,44,54,66,80,96,116,140,168,200,238,284,336,396,464,522,576}, {0,4,8,12,18,26,36,48,62,80,104,134,174,192}}, {{0,4,8,12,16,20,24,30,36,44,52,62,74,90,110,134,162,196,238,288,342,418,576}, {0,4,8,12,16,22,30,40,52,66,84,106,136,192}}, {{0,4,8,12,16,20,24,30,36,42,50,60,72,88,106,128,156,190,230,276,330,384,576}, {0,4,8,12,16,22,28,38,50,64,80,100,126,192}}, {{0,4,8,12,16,20,24,30,36,44,54,66,82,102,126,156,194,240,296,364,448,550,576}, {0,4,8,12,16,22,30,42,58,78,104,138,180,192}}}; const struct { S32 l[5]; S32 s[3]; } sfbtable = {{0, 6, 11, 16, 21}, {0, 6, 12}}; const S32 slen[2][16] = {{0, 0, 0, 0, 3, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4}, {0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 2, 3}}; // // Forward-transform dest=[mpeg version][sfreq][src] // const S16 reord_ft[2][3][576] = {{ { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 90, 91, 78, 79, 80, 81, 82, 83, 96, 97, 84, 85, 86, 87, 88, 89, 102, 103, 92, 93, 94, 95, 108, 109, 110, 111, 112, 113, 98, 99, 100, 101, 114, 115, 116, 117, 118, 119, 104, 105, 106, 107, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 144, 145, 146, 147, 148, 149, 162, 163, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, 154, 155, 168, 169, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 160, 161, 174, 175, 164, 165, 166, 167, 180, 181, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 170, 171, 172, 173, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 176, 177, 178, 179, 192, 193, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 218, 219, 220, 221, 234, 235, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 224, 225, 226, 227, 240, 241, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 230, 231, 232, 233, 246, 247, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 292, 293, 306, 307, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 298, 299, 312, 313, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 304, 305, 318, 319, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 402, 403, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 408, 409, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575}, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 72, 73, 60, 61, 62, 63, 64, 65, 78, 79, 66, 67, 68, 69, 70, 71, 84, 85, 74, 75, 76, 77, 90, 91, 92, 93, 94, 95, 80, 81, 82, 83, 96, 97, 98, 99, 100, 101, 86, 87, 88, 89, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 114, 115, 116, 117, 118, 119, 132, 133, 134, 135, 136, 137, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575}, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 72, 73, 60, 61, 62, 63, 64, 65, 78, 79, 66, 67, 68, 69, 70, 71, 84, 85, 74, 75, 76, 77, 90, 91, 92, 93, 94, 95, 80, 81, 82, 83, 96, 97, 98, 99, 100, 101, 86, 87, 88, 89, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 114, 115, 116, 117, 118, 119, 132, 133, 134, 135, 136, 137, 120, 121, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575} }, { { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, 68, 69, 58, 59, 72, 73, 74, 75, 76, 77, 64, 65, 78, 79, 80, 81, 82, 83, 70, 71, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 108, 109, 110, 111, 96, 97, 98, 99, 100, 101, 114, 115, 116, 117, 102, 103, 104, 105, 106, 107, 120, 121, 122, 123, 112, 113, 126, 127, 128, 129, 130, 131, 144, 145, 146, 147, 118, 119, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, 124, 125, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 182, 183, 184, 185, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 188, 189, 190, 191, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 236, 237, 238, 239, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 242, 243, 244, 245, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 308, 309, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 314, 315, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 320, 321, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575}, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, 68, 69, 58, 59, 72, 73, 74, 75, 64, 65, 78, 79, 80, 81, 70, 71, 84, 85, 86, 87, 76, 77, 90, 91, 92, 93, 94, 95, 108, 109, 82, 83, 96, 97, 98, 99, 100, 101, 114, 115, 88, 89, 102, 103, 104, 105, 106, 107, 120, 121, 110, 111, 112, 113, 126, 127, 128, 129, 130, 131, 144, 145, 116, 117, 118, 119, 132, 133, 134, 135, 136, 137, 150, 151, 122, 123, 124, 125, 138, 139, 140, 141, 142, 143, 156, 157, 146, 147, 148, 149, 162, 163, 164, 165, 166, 167, 180, 181, 182, 183, 152, 153, 154, 155, 168, 169, 170, 171, 172, 173, 186, 187, 188, 189, 158, 159, 160, 161, 174, 175, 176, 177, 178, 179, 192, 193, 194, 195, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 234, 235, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 240, 241, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 246, 247, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 292, 293, 306, 307, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 298, 299, 312, 313, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 304, 305, 318, 319, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 400, 401, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 406, 407, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 412, 413, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575}, { 0, 1, 2, 3, 6, 7, 8, 9, 12, 13, 14, 15, 4, 5, 18, 19, 10, 11, 24, 25, 16, 17, 30, 31, 20, 21, 22, 23, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 42, 43, 44, 45, 48, 49, 50, 51, 40, 41, 54, 55, 56, 57, 46, 47, 60, 61, 62, 63, 52, 53, 66, 67, 68, 69, 58, 59, 72, 73, 74, 75, 76, 77, 64, 65, 78, 79, 80, 81, 82, 83, 70, 71, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 108, 109, 110, 111, 112, 113, 96, 97, 98, 99, 100, 101, 114, 115, 116, 117, 118, 119, 102, 103, 104, 105, 106, 107, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 144, 145, 146, 147, 148, 149, 162, 163, 164, 165, 132, 133, 134, 135, 136, 137, 150, 151, 152, 153, 154, 155, 168, 169, 170, 171, 138, 139, 140, 141, 142, 143, 156, 157, 158, 159, 160, 161, 174, 175, 176, 177, 166, 167, 180, 181, 182, 183, 184, 185, 198, 199, 200, 201, 202, 203, 216, 217, 218, 219, 220, 221, 172, 173, 186, 187, 188, 189, 190, 191, 204, 205, 206, 207, 208, 209, 222, 223, 224, 225, 226, 227, 178, 179, 192, 193, 194, 195, 196, 197, 210, 211, 212, 213, 214, 215, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 252, 253, 254, 255, 256, 257, 270, 271, 272, 273, 274, 275, 288, 289, 290, 291, 292, 293, 306, 307, 240, 241, 242, 243, 244, 245, 258, 259, 260, 261, 262, 263, 276, 277, 278, 279, 280, 281, 294, 295, 296, 297, 298, 299, 312, 313, 246, 247, 248, 249, 250, 251, 264, 265, 266, 267, 268, 269, 282, 283, 284, 285, 286, 287, 300, 301, 302, 303, 304, 305, 318, 319, 308, 309, 310, 311, 324, 325, 326, 327, 328, 329, 342, 343, 344, 345, 346, 347, 360, 361, 362, 363, 364, 365, 378, 379, 380, 381, 382, 383, 396, 397, 398, 399, 400, 401, 314, 315, 316, 317, 330, 331, 332, 333, 334, 335, 348, 349, 350, 351, 352, 353, 366, 367, 368, 369, 370, 371, 384, 385, 386, 387, 388, 389, 402, 403, 404, 405, 406, 407, 320, 321, 322, 323, 336, 337, 338, 339, 340, 341, 354, 355, 356, 357, 358, 359, 372, 373, 374, 375, 376, 377, 390, 391, 392, 393, 394, 395, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 432, 433, 434, 435, 436, 437, 450, 451, 452, 453, 454, 455, 468, 469, 470, 471, 472, 473, 486, 487, 488, 489, 490, 491, 504, 505, 506, 507, 508, 509, 522, 523, 524, 525, 526, 527, 420, 421, 422, 423, 424, 425, 438, 439, 440, 441, 442, 443, 456, 457, 458, 459, 460, 461, 474, 475, 476, 477, 478, 479, 492, 493, 494, 495, 496, 497, 510, 511, 512, 513, 514, 515, 528, 529, 530, 531, 532, 533, 426, 427, 428, 429, 430, 431, 444, 445, 446, 447, 448, 449, 462, 463, 464, 465, 466, 467, 480, 481, 482, 483, 484, 485, 498, 499, 500, 501, 502, 503, 516, 517, 518, 519, 520, 521, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 558, 559, 560, 561, 562, 563, 546, 547, 548, 549, 550, 551, 564, 565, 566, 567, 568, 569, 552, 553, 554, 555, 556, 557, 570, 571, 572, 573, 574, 575} }}; // // Antialiasing coefficients // const F32 Ca[8] = { -0.5144957554270F, -0.4717319685650F, -0.3133774542040F, -0.1819131996110F, -0.0945741925262F, -0.0409655828852F, -0.0141985685725F,-0.00369997467375F }; const F32 Cs[8] = { 0.857492925712F, 0.881741997318F, 0.949628649103F, 0.983314592492F, 0.995517816065F, 0.999160558175F, 0.999899195243F, 0.999993155067F }; // // Bit rate in bits/second for [MPEG version][value] // const S32 bit_rate[2][15] = { { 0L,8000L,16000L,24000L,32000L,40000L,48000L,56000L,64000L,80000L,96000L,112000L,128000L,144000L,160000L } , { 0L,32000L,40000L,48000L,56000L,64000L,80000L,96000L,112000L,128000L,160000L,192000L,224000L,256000L,320000L } }; // // Sample rate in samples/second for [MPEG25][MPEG version][value] // const S32 sample_rate[2][2][4] = {{ { 22050L,24000L,16000L,22050L }, { 44100L,48000L,32000L,44100L } }, { { 11025L,12000L, 8000L,11025L }, { 44100L,48000L,32000L,44100L } }}; // // Quantization class table (ISO 11172-3 p. 53) // // Note that for grouped values of n_steps (5,9) that do not satisfy // 2.sup.n-1, we use the next higher n_steps value to ensure that // the quantization factor _n is calculated properly. The actual // quantization-step scale is found in the grouping field. // const struct MPEG2_QCLASS { S32 n_steps; F32 c; F32 d; S32 grouping; S32 bpc; } qc[] = { { 3, 1.33333333333F, 0.50000000000F, 3, 5 }, { 7, 1.60000000000F, 0.50000000000F, 5, 7 }, { 7, 1.14285714286F, 0.25000000000F, 0, 3 }, { 15, 1.77777777777F, 0.50000000000F, 9, 10 }, { 15, 1.06666666666F, 0.12500000000F, 0, 4 }, { 31, 1.03225806452F, 0.06250000000F, 0, 5 }, { 63, 1.01587301587F, 0.03125000000F, 0, 6 }, { 127, 1.00787401575F, 0.01562500000F, 0, 7 }, { 255, 1.00392156863F, 0.00781250000F, 0, 8 }, { 511, 1.00195694716F, 0.00390625000F, 0, 9 }, { 1023, 1.00097751711F, 0.00195312500F, 0, 10 }, { 2047, 1.00048851979F, 0.00097656250F, 0, 11 }, { 4095, 1.00024420024F, 0.00048828125F, 0, 12 }, { 8191, 1.00012208522F, 0.00024414063F, 0, 13 }, { 16383, 1.00006103888F, 0.00012207031F, 0, 14 }, { 32767, 1.00003051851F, 0.00006103516F, 0, 15 }, { 65535, 1.00001525902F, 0.00003051758F, 0, 16 } }; #endif //######################################################################### //# # //# Trig and window-coefficient tables # //# # //######################################################################### #ifdef _MSC_VER #pragma warning( disable : 4305) #endif #ifdef DCT_WINDOW // // Window function coefficients // F32 win[4][36]; static const F32 t_sin[4][36]= {{ -0.032160f, 0.103553f, -0.182543f, 0.266729f, -0.353554f, 0.440377f, -0.524563f, 0.603553f, -0.674947f, 0.736575f, -0.786566f, 0.823400f, -0.845957f, 0.853554f, -0.845957f, 0.823399f, -0.786566f, 0.736575f, -0.674947f, 0.603553f, -0.524564f, 0.440378f, -0.353553f, 0.266729f, -0.182544f, 0.103553f, -0.032160f, -0.029469f, 0.079459f, -0.116293f, 0.138851f, -0.146446f, 0.138851f, -0.116293f, 0.079459f, -0.029469f },{ -0.032160f, 0.103553f, -0.182543f, 0.266729f, -0.353554f, 0.440377f, -0.524563f, 0.603553f, -0.674947f, 0.736575f, -0.786566f, 0.823400f, -0.845957f, 0.853554f, -0.845957f, 0.823399f, -0.786566f, 0.736575f, -0.675590f, 0.608761f, -0.537300f, 0.461749f, -0.382683f, 0.300706f, -0.214588f, 0.120590f, -0.034606f, -0.026554f, 0.049950f, -0.028251f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f },{ -0.103553f, 0.353554f, -0.603553f, 0.786566f, -0.853554f, 0.786566f, -0.603553f, 0.353553f, -0.103553f, -0.079459f, 0.146446f, -0.079459f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f },{ 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, -0.127432f, 0.379410f, -0.608182f, 0.792598f, -0.915976f, 0.967944f, -0.953717f, 0.923880f, -0.887011f, 0.843391f, -0.793353f, 0.737277f, -0.674947f, 0.603553f, -0.524564f, 0.440378f, -0.353553f, 0.266729f, -0.182544f, 0.103553f, -0.032160f, -0.029469f, 0.079459f, -0.116293f, 0.138851f, -0.146446f, 0.138851f, -0.116293f, 0.079459f, -0.029469f }}; static const F32 t_2cos[4][18] = { { -0.174311f, -0.517638f, -0.845237f, -1.147153f, -1.414214f, -1.638304f, -1.812616f, -1.931852f, -1.992389f, 0.174311f, 0.517638f, 0.845237f, 1.147153f, 1.414214f, 1.638304f, 1.812616f, 1.931852f, 1.992389f}, { -0.174311f, -0.517638f, -0.845237f, -1.147153f, -1.414214f, -1.638304f, -1.812616f, -1.931852f, -1.992389f, 0.174311f, 0.517638f, 0.845237f, 1.147153f, 1.414214f, 1.638304f, 1.812616f, 1.931852f, 1.992389f}, { -0.517638f, -1.41421f, -1.93185f, 0.517638f, 1.41421f, 1.93185f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}, { -0.174311f, -0.517638f, -0.845237f, -1.147153f, -1.414214f, -1.638304f, -1.812616f, -1.931852f, -1.992389f, 0.174311f, 0.517638f, 0.845237f, 1.147153f, 1.414214f, 1.638304f, 1.812616f, 1.931852f, 1.992389f} }; static const F32 b[32] = { 0.000000000f, 1.997590912f, 1.990369453f, 1.978353019f, 1.961570560f, 1.940062506f, 1.913880671f, 1.883088130f, 1.847759065f, 1.807978586f, 1.763842529f, 1.715457220f, 1.662939225f, 1.606415063f, 1.546020907f, 1.481902251f, 1.414213562f, 1.343117910f, 1.268786568f, 1.191398609f, 1.111140466f, 1.028205488f, 0.942793474f, 0.855110187f, 0.765366865f, 0.673779707f, 0.580569355f, 0.485960360f, 0.390180644f, 0.293460949f, 0.196034281f, 0.098135349f }; F32 #if defined(IS_WIN32) || defined(IS_XBOX) __declspec(align(32)) #else #if defined(IS_PS2) __attribute__ ((aligned (32))) #endif #endif const t_dewindow[17][32] = {{ 0.000000000f * 16383.5f,-0.000442505f * 16383.5f, 0.003250122f * 16383.5f,-0.007003784f * 16383.5f,0.031082153f * 16383.5f,-0.078628540f * 16383.5f, 0.100311279f * 16383.5f,-0.572036743f * 16383.5f, 1.144989014f * 16383.5f, 0.572036743f * 16383.5f, 0.100311279f * 16383.5f, 0.078628540f * 16383.5f,0.031082153f * 16383.5f, 0.007003784f * 16383.5f, 0.003250122f * 16383.5f, 0.000442505f * 16383.5f, 0.000000000f * 16383.5f,-0.000442505f * 16383.5f, 0.003250122f * 16383.5f,-0.007003784f * 16383.5f,0.031082153f * 16383.5f,-0.078628540f * 16383.5f, 0.100311279f * 16383.5f,-0.572036743f * 16383.5f, 1.144989014f * 16383.5f, 0.572036743f * 16383.5f, 0.100311279f * 16383.5f, 0.078628540f * 16383.5f,0.031082153f * 16383.5f, 0.007003784f * 16383.5f, 0.003250122f * 16383.5f, 0.000442505f * 16383.5f, },{ -0.000015259f * 16383.5f,-0.000473022f * 16383.5f, 0.003326416f * 16383.5f,-0.007919312f * 16383.5f,0.030517578f * 16383.5f,-0.084182739f * 16383.5f, 0.090927124f * 16383.5f,-0.600219727f * 16383.5f, 1.144287109f * 16383.5f, 0.543823242f * 16383.5f, 0.108856201f * 16383.5f, 0.073059082f * 16383.5f,0.031478882f * 16383.5f, 0.006118774f * 16383.5f, 0.003173828f * 16383.5f, 0.000396729f * 16383.5f, -0.000015259f * 16383.5f,-0.000473022f * 16383.5f, 0.003326416f * 16383.5f,-0.007919312f * 16383.5f,0.030517578f * 16383.5f,-0.084182739f * 16383.5f, 0.090927124f * 16383.5f,-0.600219727f * 16383.5f, 1.144287109f * 16383.5f, 0.543823242f * 16383.5f, 0.108856201f * 16383.5f, 0.073059082f * 16383.5f,0.031478882f * 16383.5f, 0.006118774f * 16383.5f, 0.003173828f * 16383.5f, 0.000396729f * 16383.5f, },{ -0.000015259f * 16383.5f,-0.000534058f * 16383.5f, 0.003387451f * 16383.5f,-0.008865356f * 16383.5f,0.029785156f * 16383.5f,-0.089706421f * 16383.5f, 0.080688477f * 16383.5f,-0.628295898f * 16383.5f, 1.142211914f * 16383.5f, 0.515609741f * 16383.5f, 0.116577148f * 16383.5f, 0.067520142f * 16383.5f,0.031738281f * 16383.5f, 0.005294800f * 16383.5f, 0.003082275f * 16383.5f, 0.000366211f * 16383.5f, -0.000015259f * 16383.5f,-0.000534058f * 16383.5f, 0.003387451f * 16383.5f,-0.008865356f * 16383.5f,0.029785156f * 16383.5f,-0.089706421f * 16383.5f, 0.080688477f * 16383.5f,-0.628295898f * 16383.5f, 1.142211914f * 16383.5f, 0.515609741f * 16383.5f, 0.116577148f * 16383.5f, 0.067520142f * 16383.5f,0.031738281f * 16383.5f, 0.005294800f * 16383.5f, 0.003082275f * 16383.5f, 0.000366211f * 16383.5f, },{ -0.000015259f * 16383.5f,-0.000579834f * 16383.5f, 0.003433228f * 16383.5f,-0.009841919f * 16383.5f,0.028884888f * 16383.5f,-0.095169067f * 16383.5f, 0.069595337f * 16383.5f,-0.656219482f * 16383.5f, 1.138763428f * 16383.5f, 0.487472534f * 16383.5f, 0.123474121f * 16383.5f, 0.061996460f * 16383.5f,0.031845093f * 16383.5f, 0.004486084f * 16383.5f, 0.002990723f * 16383.5f, 0.000320435f * 16383.5f, -0.000015259f * 16383.5f,-0.000579834f * 16383.5f, 0.003433228f * 16383.5f,-0.009841919f * 16383.5f,0.028884888f * 16383.5f,-0.095169067f * 16383.5f, 0.069595337f * 16383.5f,-0.656219482f * 16383.5f, 1.138763428f * 16383.5f, 0.487472534f * 16383.5f, 0.123474121f * 16383.5f, 0.061996460f * 16383.5f,0.031845093f * 16383.5f, 0.004486084f * 16383.5f, 0.002990723f * 16383.5f, 0.000320435f * 16383.5f, },{ -0.000015259f * 16383.5f,-0.000625610f * 16383.5f, 0.003463745f * 16383.5f,-0.010848999f * 16383.5f,0.027801514f * 16383.5f,-0.100540161f * 16383.5f, 0.057617187f * 16383.5f,-0.683914185f * 16383.5f, 1.133926392f * 16383.5f, 0.459472656f * 16383.5f, 0.129577637f * 16383.5f, 0.056533813f * 16383.5f,0.031814575f * 16383.5f, 0.003723145f * 16383.5f, 0.002899170f * 16383.5f, 0.000289917f * 16383.5f, -0.000015259f * 16383.5f,-0.000625610f * 16383.5f, 0.003463745f * 16383.5f,-0.010848999f * 16383.5f,0.027801514f * 16383.5f,-0.100540161f * 16383.5f, 0.057617187f * 16383.5f,-0.683914185f * 16383.5f, 1.133926392f * 16383.5f, 0.459472656f * 16383.5f, 0.129577637f * 16383.5f, 0.056533813f * 16383.5f,0.031814575f * 16383.5f, 0.003723145f * 16383.5f, 0.002899170f * 16383.5f, 0.000289917f * 16383.5f, },{ -0.000015259f * 16383.5f,-0.000686646f * 16383.5f, 0.003479004f * 16383.5f,-0.011886597f * 16383.5f,0.026535034f * 16383.5f,-0.105819702f * 16383.5f, 0.044784546f * 16383.5f,-0.711318970f * 16383.5f, 1.127746582f * 16383.5f, 0.431655884f * 16383.5f, 0.134887695f * 16383.5f, 0.051132202f * 16383.5f,0.031661987f * 16383.5f, 0.003005981f * 16383.5f, 0.002792358f * 16383.5f, 0.000259399f * 16383.5f, -0.000015259f * 16383.5f,-0.000686646f * 16383.5f, 0.003479004f * 16383.5f,-0.011886597f * 16383.5f,0.026535034f * 16383.5f,-0.105819702f * 16383.5f, 0.044784546f * 16383.5f,-0.711318970f * 16383.5f, 1.127746582f * 16383.5f, 0.431655884f * 16383.5f, 0.134887695f * 16383.5f, 0.051132202f * 16383.5f,0.031661987f * 16383.5f, 0.003005981f * 16383.5f, 0.002792358f * 16383.5f, 0.000259399f * 16383.5f, },{ -0.000015259f * 16383.5f,-0.000747681f * 16383.5f, 0.003479004f * 16383.5f,-0.012939453f * 16383.5f,0.025085449f * 16383.5f,-0.110946655f * 16383.5f, 0.031082153f * 16383.5f,-0.738372803f * 16383.5f, 1.120223999f * 16383.5f, 0.404083252f * 16383.5f, 0.139450073f * 16383.5f, 0.045837402f * 16383.5f,0.031387329f * 16383.5f, 0.002334595f * 16383.5f, 0.002685547f * 16383.5f, 0.000244141f * 16383.5f, -0.000015259f * 16383.5f,-0.000747681f * 16383.5f, 0.003479004f * 16383.5f,-0.012939453f * 16383.5f,0.025085449f * 16383.5f,-0.110946655f * 16383.5f, 0.031082153f * 16383.5f,-0.738372803f * 16383.5f, 1.120223999f * 16383.5f, 0.404083252f * 16383.5f, 0.139450073f * 16383.5f, 0.045837402f * 16383.5f,0.031387329f * 16383.5f, 0.002334595f * 16383.5f, 0.002685547f * 16383.5f, 0.000244141f * 16383.5f, },{ -0.000030518f * 16383.5f,-0.000808716f * 16383.5f, 0.003463745f * 16383.5f,-0.014022827f * 16383.5f,0.023422241f * 16383.5f,-0.115921021f * 16383.5f, 0.016510010f * 16383.5f,-0.765029907f * 16383.5f, 1.111373901f * 16383.5f, 0.376800537f * 16383.5f, 0.143264771f * 16383.5f, 0.040634155f * 16383.5f,0.031005859f * 16383.5f, 0.001693726f * 16383.5f, 0.002578735f * 16383.5f, 0.000213623f * 16383.5f, -0.000030518f * 16383.5f,-0.000808716f * 16383.5f, 0.003463745f * 16383.5f,-0.014022827f * 16383.5f,0.023422241f * 16383.5f,-0.115921021f * 16383.5f, 0.016510010f * 16383.5f,-0.765029907f * 16383.5f, 1.111373901f * 16383.5f, 0.376800537f * 16383.5f, 0.143264771f * 16383.5f, 0.040634155f * 16383.5f,0.031005859f * 16383.5f, 0.001693726f * 16383.5f, 0.002578735f * 16383.5f, 0.000213623f * 16383.5f, },{ -0.000030518f * 16383.5f,-0.000885010f * 16383.5f, 0.003417969f * 16383.5f,-0.015121460f * 16383.5f,0.021575928f * 16383.5f,-0.120697021f * 16383.5f, 0.001068115f * 16383.5f,-0.791213989f * 16383.5f, 1.101211548f * 16383.5f, 0.349868774f * 16383.5f, 0.146362305f * 16383.5f, 0.035552979f * 16383.5f,0.030532837f * 16383.5f, 0.001098633f * 16383.5f, 0.002456665f * 16383.5f, 0.000198364f * 16383.5f, -0.000030518f * 16383.5f,-0.000885010f * 16383.5f, 0.003417969f * 16383.5f,-0.015121460f * 16383.5f,0.021575928f * 16383.5f,-0.120697021f * 16383.5f, 0.001068115f * 16383.5f,-0.791213989f * 16383.5f, 1.101211548f * 16383.5f, 0.349868774f * 16383.5f, 0.146362305f * 16383.5f, 0.035552979f * 16383.5f,0.030532837f * 16383.5f, 0.001098633f * 16383.5f, 0.002456665f * 16383.5f, 0.000198364f * 16383.5f, },{ -0.000030518f * 16383.5f,-0.000961304f * 16383.5f, 0.003372192f * 16383.5f,-0.016235352f * 16383.5f,0.019531250f * 16383.5f,-0.125259399f * 16383.5f,-0.015228271f * 16383.5f,-0.816864014f * 16383.5f, 1.089782715f * 16383.5f, 0.323318481f * 16383.5f, 0.148773193f * 16383.5f, 0.030609131f * 16383.5f,0.029937744f * 16383.5f, 0.000549316f * 16383.5f, 0.002349854f * 16383.5f, 0.000167847f * 16383.5f, -0.000030518f * 16383.5f,-0.000961304f * 16383.5f, 0.003372192f * 16383.5f,-0.016235352f * 16383.5f,0.019531250f * 16383.5f,-0.125259399f * 16383.5f,-0.015228271f * 16383.5f,-0.816864014f * 16383.5f, 1.089782715f * 16383.5f, 0.323318481f * 16383.5f, 0.148773193f * 16383.5f, 0.030609131f * 16383.5f,0.029937744f * 16383.5f, 0.000549316f * 16383.5f, 0.002349854f * 16383.5f, 0.000167847f * 16383.5f, },{ -0.000030518f * 16383.5f,-0.001037598f * 16383.5f, 0.003280640f * 16383.5f,-0.017349243f * 16383.5f,0.017257690f * 16383.5f,-0.129562378f * 16383.5f,-0.032379150f * 16383.5f,-0.841949463f * 16383.5f, 1.077117920f * 16383.5f, 0.297210693f * 16383.5f, 0.150497437f * 16383.5f, 0.025817871f * 16383.5f,0.029281616f * 16383.5f, 0.000030518f * 16383.5f, 0.002243042f * 16383.5f, 0.000152588f * 16383.5f, -0.000030518f * 16383.5f,-0.001037598f * 16383.5f, 0.003280640f * 16383.5f,-0.017349243f * 16383.5f,0.017257690f * 16383.5f,-0.129562378f * 16383.5f,-0.032379150f * 16383.5f,-0.841949463f * 16383.5f, 1.077117920f * 16383.5f, 0.297210693f * 16383.5f, 0.150497437f * 16383.5f, 0.025817871f * 16383.5f,0.029281616f * 16383.5f, 0.000030518f * 16383.5f, 0.002243042f * 16383.5f, 0.000152588f * 16383.5f, },{ -0.000045776f * 16383.5f,-0.001113892f * 16383.5f, 0.003173828f * 16383.5f,-0.018463135f * 16383.5f,0.014801025f * 16383.5f,-0.133590698f * 16383.5f,-0.050354004f * 16383.5f,-0.866363525f * 16383.5f, 1.063217163f * 16383.5f, 0.271591187f * 16383.5f, 0.151596069f * 16383.5f, 0.021179199f * 16383.5f,0.028533936f * 16383.5f,-0.000442505f * 16383.5f, 0.002120972f * 16383.5f, 0.000137329f * 16383.5f, -0.000045776f * 16383.5f,-0.001113892f * 16383.5f, 0.003173828f * 16383.5f,-0.018463135f * 16383.5f,0.014801025f * 16383.5f,-0.133590698f * 16383.5f,-0.050354004f * 16383.5f,-0.866363525f * 16383.5f, 1.063217163f * 16383.5f, 0.271591187f * 16383.5f, 0.151596069f * 16383.5f, 0.021179199f * 16383.5f,0.028533936f * 16383.5f,-0.000442505f * 16383.5f, 0.002120972f * 16383.5f, 0.000137329f * 16383.5f, },{ -0.000045776f * 16383.5f,-0.001205444f * 16383.5f, 0.003051758f * 16383.5f,-0.019577026f * 16383.5f,0.012115479f * 16383.5f,-0.137298584f * 16383.5f,-0.069168091f * 16383.5f,-0.890090942f * 16383.5f, 1.048156738f * 16383.5f, 0.246505737f * 16383.5f, 0.152069092f * 16383.5f, 0.016708374f * 16383.5f,0.027725220f * 16383.5f,-0.000869751f * 16383.5f, 0.002014160f * 16383.5f, 0.000122070f * 16383.5f, -0.000045776f * 16383.5f,-0.001205444f * 16383.5f, 0.003051758f * 16383.5f,-0.019577026f * 16383.5f,0.012115479f * 16383.5f,-0.137298584f * 16383.5f,-0.069168091f * 16383.5f,-0.890090942f * 16383.5f, 1.048156738f * 16383.5f, 0.246505737f * 16383.5f, 0.152069092f * 16383.5f, 0.016708374f * 16383.5f,0.027725220f * 16383.5f,-0.000869751f * 16383.5f, 0.002014160f * 16383.5f, 0.000122070f * 16383.5f, },{ -0.000061035f * 16383.5f,-0.001296997f * 16383.5f, 0.002883911f * 16383.5f,-0.020690918f * 16383.5f,0.009231567f * 16383.5f,-0.140670776f * 16383.5f,-0.088775635f * 16383.5f,-0.913055420f * 16383.5f, 1.031936646f * 16383.5f, 0.221984863f * 16383.5f, 0.151962280f * 16383.5f, 0.012420654f * 16383.5f,0.026840210f * 16383.5f,-0.001266479f * 16383.5f, 0.001907349f * 16383.5f, 0.000106812f * 16383.5f, -0.000061035f * 16383.5f,-0.001296997f * 16383.5f, 0.002883911f * 16383.5f,-0.020690918f * 16383.5f,0.009231567f * 16383.5f,-0.140670776f * 16383.5f,-0.088775635f * 16383.5f,-0.913055420f * 16383.5f, 1.031936646f * 16383.5f, 0.221984863f * 16383.5f, 0.151962280f * 16383.5f, 0.012420654f * 16383.5f,0.026840210f * 16383.5f,-0.001266479f * 16383.5f, 0.001907349f * 16383.5f, 0.000106812f * 16383.5f, },{ -0.000061035f * 16383.5f,-0.001388550f * 16383.5f, 0.002700806f * 16383.5f,-0.021789551f * 16383.5f,0.006134033f * 16383.5f,-0.143676758f * 16383.5f,-0.109161377f * 16383.5f,-0.935195923f * 16383.5f, 1.014617920f * 16383.5f, 0.198059082f * 16383.5f, 0.151306152f * 16383.5f, 0.008316040f * 16383.5f,0.025909424f * 16383.5f,-0.001617432f * 16383.5f, 0.001785278f * 16383.5f, 0.000106812f * 16383.5f, -0.000061035f * 16383.5f,-0.001388550f * 16383.5f, 0.002700806f * 16383.5f,-0.021789551f * 16383.5f,0.006134033f * 16383.5f,-0.143676758f * 16383.5f,-0.109161377f * 16383.5f,-0.935195923f * 16383.5f, 1.014617920f * 16383.5f, 0.198059082f * 16383.5f, 0.151306152f * 16383.5f, 0.008316040f * 16383.5f,0.025909424f * 16383.5f,-0.001617432f * 16383.5f, 0.001785278f * 16383.5f, 0.000106812f * 16383.5f, },{ -0.000076294f * 16383.5f,-0.001480103f * 16383.5f, 0.002487183f * 16383.5f,-0.022857666f * 16383.5f,0.002822876f * 16383.5f,-0.146255493f * 16383.5f,-0.130310059f * 16383.5f,-0.956481934f * 16383.5f, 0.996246338f * 16383.5f, 0.174789429f * 16383.5f, 0.150115967f * 16383.5f, 0.004394531f * 16383.5f,0.024932861f * 16383.5f,-0.001937866f * 16383.5f, 0.001693726f * 16383.5f, 0.000091553f * 16383.5f, -0.000076294f * 16383.5f,-0.001480103f * 16383.5f, 0.002487183f * 16383.5f,-0.022857666f * 16383.5f,0.002822876f * 16383.5f,-0.146255493f * 16383.5f,-0.130310059f * 16383.5f,-0.956481934f * 16383.5f, 0.996246338f * 16383.5f, 0.174789429f * 16383.5f, 0.150115967f * 16383.5f, 0.004394531f * 16383.5f,0.024932861f * 16383.5f,-0.001937866f * 16383.5f, 0.001693726f * 16383.5f, 0.000091553f * 16383.5f, },{ -0.000076294f * 16383.5f,-0.001586914f * 16383.5f, 0.002227783f * 16383.5f,-0.023910522f * 16383.5f,-0.000686646f * 16383.5f,-0.148422241f * 16383.5f,-0.152206421f * 16383.5f,-0.976852417f * 16383.5f, 0.976852417f * 16383.5f, 0.152206421f * 16383.5f, 0.148422241f * 16383.5f, 0.000686646f * 16383.5f, 0.023910522f * 16383.5f,-0.002227783f * 16383.5f, 0.001586914f * 16383.5f, 0.000076294f * 16383.5f, -0.000076294f * 16383.5f,-0.001586914f * 16383.5f, 0.002227783f * 16383.5f,-0.023910522f * 16383.5f,-0.000686646f * 16383.5f,-0.148422241f * 16383.5f,-0.152206421f * 16383.5f,-0.976852417f * 16383.5f, 0.976852417f * 16383.5f, 0.152206421f * 16383.5f, 0.148422241f * 16383.5f, 0.000686646f * 16383.5f, 0.023910522f * 16383.5f,-0.002227783f * 16383.5f, 0.001586914f * 16383.5f, 0.000076294f * 16383.5f, } }; #define PI12 0.261799387f #define PI36 0.087266462f #endif