--- vlc_codes.h 2002/06/12 20:38:40 1.6 +++ vlc_codes.h 2002/09/08 13:44:11 1.7 @@ -1,3 +1,38 @@ +/***************************************************************************** + * + * XVID MPEG-4 VIDEO CODEC + * - Vector Length Coding tables - + * + * Copyright(C) 2002 Michael Militzer + * + * + * This program is an implementation of a part of one or more MPEG-4 + * Video tools as specified in ISO/IEC 14496-2 standard. Those intending + * to use this software module in hardware or software products are + * advised that its use may infringe existing patents or copyrights, and + * any such use would be at such party's own risk. The original + * developer of this software module and his/her company, and subsequent + * editors and their companies, will have no liability for use of this + * software or modifications or derivatives thereof. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id: vlc_codes.h,v 1.7 2002/09/08 13:44:11 edgomez Exp $ + * + ****************************************************************************/ + #ifndef _VLC_CODES_H_ #define _VLC_CODES_H_ @@ -7,6 +42,10 @@ #define VLC_ERROR (-1) #define ESCAPE 7167 +/***************************************************************************** + * The Vector Length Coding structure + ****************************************************************************/ + typedef struct { uint32_t code; @@ -17,13 +56,14 @@ static VLC *DCT3D[2]; -/****************************************************************** - * common tables between encoder/decoder * - ******************************************************************/ +/***************************************************************************** + * common tables between encoder/decoder + ****************************************************************************/ /* constants taken from momusys/vm_common/inlcude/max_level.h */ static char max_level[4][64] = { - { // intra, last = 0 + /* intra, last = 0 */ + { 27, 10, 5, 4, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -31,10 +71,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // intra, last = 1 + /* intra, last = 1 */ + { 8, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, @@ -42,10 +83,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // inter, last = 0 + /* inter, last = 0 */ + { 12, 6, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -53,10 +95,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // inter, last = 1 + /* inter, last = 1 */ + { 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -64,12 +107,13 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }; static char max_run[4][256] = { - { // intra, last = 0 + /* intra, last = 0 */ + { 0, 14, 9, 7, 3, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -101,10 +145,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // intra, last = 1 + /* intra, last = 1 */ + { 0, 20, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -136,10 +181,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // inter, last = 0 + /* inter, last = 0 */ + { 0, 26, 10, 6, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -171,10 +217,11 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }, - { // inter, last = 1 + /* inter, last = 1 */ + { 0, 40, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -206,7 +253,7 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 } }; @@ -221,295 +268,188 @@ /* first part of coeffs for last = 0. Indexed by [run][level-1] */ static VLC coeff_tab0[2][12] = { - /* - run = 0 - */ - { - {0x02, 2}, {0x0f, 4}, {0x15, 6}, {0x17, 7}, - {0x1f, 8}, {0x25, 9}, {0x24, 9}, {0x21, 10}, - {0x20, 10}, {0x07, 11}, {0x06, 11}, {0x20, 11} - }, - /* - run = 1 - */ + /* run = 0 */ { - {0x06, 3}, {0x14, 6}, {0x1e, 8}, {0x0f, 10}, - {0x21, 11}, {0x50, 12}, {0x00, 0}, {0x00, 0}, - {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0} - } + {0x02, 2}, {0x0f, 4}, {0x15, 6}, {0x17, 7}, + {0x1f, 8}, {0x25, 9}, {0x24, 9}, {0x21, 10}, + {0x20, 10}, {0x07, 11}, {0x06, 11}, {0x20, 11} + }, + + /* run = 1 */ + { + {0x06, 3}, {0x14, 6}, {0x1e, 8}, {0x0f, 10}, + {0x21, 11}, {0x50, 12}, {0x00, 0}, {0x00, 0}, + {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0} + } }; /* rest of coeffs for last = 0. indexing by [run-2][level-1] */ static VLC coeff_tab1[25][4] = { - /* - run = 2 - */ - { - {0x0e, 4}, {0x1d, 8}, {0x0e, 10}, {0x51, 12} - }, - /* - run = 3 - */ - { - {0x0d, 5}, {0x23, 9}, {0x0d, 10}, {0x00, 0} - }, - /* - run = 4-26 - */ - { - {0x0c, 5}, {0x22, 9}, {0x52, 12}, {0x00, 0} - }, - { - {0x0b, 5}, {0x0c, 10}, {0x53, 12}, {0x00, 0} - }, - { - {0x13, 6}, {0x0b, 10}, {0x54, 12}, {0x00, 0} - }, - { - {0x12, 6}, {0x0a, 10}, {0x00, 0}, {0x00, 0} - }, - { - {0x11, 6}, {0x09, 10}, {0x00, 0}, {0x00, 0} - }, - { - {0x10, 6}, {0x08, 10}, {0x00, 0}, {0x00, 0} - }, - { - {0x16, 7}, {0x55, 12}, {0x00, 0}, {0x00, 0} - }, - { - {0x15, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x14, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1c, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1b, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x21, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x20, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1f, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1e, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1d, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1c, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1b, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x1a, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x22, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x23, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x56, 12}, {0x00, 0}, {0x00, 0}, {0x00, 0} - }, - { - {0x57, 12}, {0x00, 0}, {0x00, 0}, {0x00, 0} - } + /* First row is run=2, then each row is run 2 + index */ + {{0x0e, 4}, {0x1d, 8}, {0x0e, 10}, {0x51, 12}}, + {{0x0d, 5}, {0x23, 9}, {0x0d, 10}, {0x00, 0}}, + {{0x0c, 5}, {0x22, 9}, {0x52, 12}, {0x00, 0}}, + {{0x0b, 5}, {0x0c, 10}, {0x53, 12}, {0x00, 0}}, + {{0x13, 6}, {0x0b, 10}, {0x54, 12}, {0x00, 0}}, + {{0x12, 6}, {0x0a, 10}, {0x00, 0}, {0x00, 0}}, + {{0x11, 6}, {0x09, 10}, {0x00, 0}, {0x00, 0}}, + {{0x10, 6}, {0x08, 10}, {0x00, 0}, {0x00, 0}}, + {{0x16, 7}, {0x55, 12}, {0x00, 0}, {0x00, 0}}, + {{0x15, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x14, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1c, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1b, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x21, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x20, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1f, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1e, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1d, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1c, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1b, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x1a, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x22, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x23, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x56, 12}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + {{0x57, 12}, {0x00, 0}, {0x00, 0}, {0x00, 0}} + }; /* first coeffs of last = 1. indexing by [run][level-1] */ static VLC coeff_tab2[2][3] = { - /* - run = 0 - */ - { - {0x07, 4}, {0x19, 9}, {0x05, 11} - }, - /* - run = 1 - */ - { - {0x0f, 6}, {0x04, 11}, {0x00, 0} - } + /* run = 0 */ + {{0x07, 4}, {0x19, 9}, {0x05, 11}}, + /* run = 1 */ + {{0x0f, 6}, {0x04, 11}, {0x00, 0}} }; /* rest of coeffs for last = 1. indexing by [run-2] */ static VLC coeff_tab3[40][1] = { - {{0x0e, 6}}, {{0x0d, 6}}, {{0x0c, 6}}, - {{0x13, 7}}, {{0x12, 7}}, {{0x11, 7}}, {{0x10, 7}}, - {{0x1a, 8}}, {{0x19, 8}}, {{0x18, 8}}, {{0x17, 8}}, - {{0x16, 8}}, {{0x15, 8}}, {{0x14, 8}}, {{0x13, 8}}, - {{0x18, 9}}, {{0x17, 9}}, {{0x16, 9}}, {{0x15, 9}}, - {{0x14, 9}}, {{0x13, 9}}, {{0x12, 9}}, {{0x11, 9}}, - {{0x07, 10}}, {{0x06, 10}}, {{0x05, 10}}, {{0x04, 10}}, - {{0x24, 11}}, {{0x25, 11}}, {{0x26, 11}}, {{0x27, 11}}, - {{0x58, 12}}, {{0x59, 12}}, {{0x5a, 12}}, {{0x5b, 12}}, - {{0x5c, 12}}, {{0x5d, 12}}, {{0x5e, 12}}, {{0x5f, 12}}, - {{0x00, 0}} -}; - -/* New tables for Intra luminance coefficients. Same codewords, - different meaning */ + {{0x0e, 6}}, {{0x0d, 6}}, {{0x0c, 6}}, {{0x13, 7}}, + {{0x12, 7}}, {{0x11, 7}}, {{0x10, 7}}, {{0x1a, 8}}, + {{0x19, 8}}, {{0x18, 8}}, {{0x17, 8}}, {{0x16, 8}}, + {{0x15, 8}}, {{0x14, 8}}, {{0x13, 8}}, {{0x18, 9}}, + {{0x17, 9}}, {{0x16, 9}}, {{0x15, 9}}, {{0x14, 9}}, + {{0x13, 9}}, {{0x12, 9}}, {{0x11, 9}}, {{0x07, 10}}, + {{0x06, 10}}, {{0x05, 10}}, {{0x04, 10}}, {{0x24, 11}}, + {{0x25, 11}}, {{0x26, 11}}, {{0x27, 11}}, {{0x58, 12}}, + {{0x59, 12}}, {{0x5a, 12}}, {{0x5b, 12}}, {{0x5c, 12}}, + {{0x5d, 12}}, {{0x5e, 12}}, {{0x5f, 12}}, {{0x00, 0}} +}; + +/* + * New tables for Intra luminance coefficients. Same codewords, + * different meaning + */ /* Coeffs for last = 0, run = 0. Indexed by [level-1] */ static VLC coeff_tab4[27] = { - /* - run = 0 - */ - {0x02, 2}, {0x06, 3}, {0x0f, 4}, {0x0d, 5}, - {0x0c, 5}, {0x15, 6}, {0x13, 6}, {0x12, 6}, - {0x17, 7}, {0x1f, 8}, {0x1e, 8}, {0x1d, 8}, - {0x25, 9}, {0x24, 9}, {0x23, 9}, {0x21, 9}, - {0x21, 10}, {0x20, 10}, {0x0f, 10}, {0x0e, 10}, - {0x07, 11}, {0x06, 11}, {0x20, 11}, {0x21, 11}, + /* run = 0 */ + {0x02, 2}, {0x06, 3}, {0x0f, 4}, + {0x0d, 5}, {0x0c, 5}, {0x15, 6}, + {0x13, 6}, {0x12, 6}, {0x17, 7}, + {0x1f, 8}, {0x1e, 8}, {0x1d, 8}, + {0x25, 9}, {0x24, 9}, {0x23, 9}, + {0x21, 9}, {0x21, 10}, {0x20, 10}, + {0x0f, 10}, {0x0e, 10}, {0x07, 11}, + {0x06, 11}, {0x20, 11}, {0x21, 11}, {0x50, 12}, {0x51, 12}, {0x52, 12} }; /* Coeffs for last = 0, run = 1. Indexed by [level-1] */ static VLC coeff_tab5[10] = { - {0x0e, 4}, {0x14, 6}, {0x16, 7}, {0x1c, 8}, - {0x20, 9}, {0x1f, 9}, {0x0d, 10}, {0x22, 11}, - {0x53, 12}, {0x55, 12} + {0x0e, 4}, {0x14, 6}, {0x16, 7}, {0x1c, 8}, {0x20, 9}, + {0x1f, 9}, {0x0d, 10}, {0x22, 11}, {0x53, 12}, {0x55, 12} }; /* Coeffs for last = 0, run = 2 -> 9. Indexed by [run-2][level-1] */ static VLC coeff_tab6[8][5] = { - /* - run = 2 - */ - { - {0x0b, 5}, {0x15, 7}, {0x1e, 9}, {0x0c, 10}, - {0x56, 12} - }, - /* - run = 3 - */ - { - {0x11, 6}, {0x1b, 8}, {0x1d, 9}, {0x0b, 10}, - {0x00, 0} - }, - /* - run = 4 - */ - { - {0x10, 6}, {0x22, 9}, {0x0a, 10}, {0x00, 0}, - {0x00, 0} - }, - /* - run = 5 - */ - { - {0x0d, 6}, {0x1c, 9}, {0x08, 10}, {0x00, 0}, - {0x00, 0} - }, - /* - run = 6 - */ - { - {0x12, 7}, {0x1b, 9}, {0x54, 12}, {0x00, 0}, - {0x00, 0} - }, - /* - run = 7 - */ - { - {0x14, 7}, {0x1a, 9}, {0x57, 12}, {0x00, 0}, - {0x00, 0} - }, - /* - run = 8 - */ - { - {0x19, 8}, {0x09, 10}, {0x00, 0}, {0x00, 0}, - {0x00, 0} - }, - /* - run = 9 - */ - { - {0x18, 8}, {0x23, 11}, {0x00, 0}, {0x00, 0}, - {0x00, 0} - } + /* run = 2 */ + {{0x0b, 5}, {0x15, 7}, {0x1e, 9}, {0x0c, 10}, {0x56, 12}}, + + /* run = 3 */ + {{0x11, 6}, {0x1b, 8}, {0x1d, 9}, {0x0b, 10}, {0x00, 0}}, + + /* run = 4 */ + {{0x10, 6}, {0x22, 9}, {0x0a, 10}, {0x00, 0}, {0x00, 0}}, + + /* run = 5 */ + {{0x0d, 6}, {0x1c, 9}, {0x08, 10}, {0x00, 0}, {0x00, 0}}, + + /* run = 6 */ + {{0x12, 7}, {0x1b, 9}, {0x54, 12}, {0x00, 0}, {0x00, 0}}, + + /* run = 7 */ + {{0x14, 7}, {0x1a, 9}, {0x57, 12}, {0x00, 0}, {0x00, 0}}, + + /* run = 8 */ + {{0x19, 8}, {0x09, 10}, {0x00, 0}, {0x00, 0}, {0x00, 0}}, + + /* run = 9 */ + {{0x18, 8}, {0x23, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0}} }; /* Coeffs for last = 0, run = 10 -> 14. Indexed by [run-10] */ static VLC coeff_tab7[5][1] = { - {{0x17, 8}}, {{0x19, 9}}, {{0x18, 9}}, {{0x07, 10}}, + {{0x17, 8}}, + {{0x19, 9}}, + {{0x18, 9}}, + {{0x07, 10}}, {{0x58, 12}} }; /* Coeffs for last = 1, run = 0. Indexed by [level-1] */ static VLC coeff_tab8[8] = { - {0x07, 4}, {0x0c, 6}, {0x16, 8}, {0x17, 9}, + {0x07, 4}, {0x0c, 6}, {0x16, 8}, {0x17, 9}, {0x06, 10}, {0x05, 11}, {0x04, 11}, {0x59, 12} }; /* Coeffs for last = 1, run = 1 -> 6. Indexed by [run-1][level-1] */ static VLC coeff_tab9[6][3] = { - /* - run = 1 - */ - { - {0x0f, 6}, {0x16, 9}, {0x05, 10} - }, - /* - run = 2 - */ - { - {0x0e, 6}, {0x04, 10}, {0x00, 0} - }, - /* - run = 3 - */ - { - {0x11, 7}, {0x24, 11}, {0x00, 0} - }, - /* - run = 4 - */ - { - {0x10, 7}, {0x25, 11}, {0x00, 0} - }, - /* - run = 5 - */ - { - {0x13, 7}, {0x5a, 12}, {0x00, 0} - }, - /* - run = 6 - */ - { - {0x15, 8}, {0x5b, 12}, {0x00, 0} - } + /* run = 1 */ + {{0x0f, 6}, {0x16, 9}, {0x05, 10}}, + + /* run = 2 */ + {{0x0e, 6}, {0x04, 10}, {0x00, 0}}, + + /* run = 3 */ + {{0x11, 7}, {0x24, 11}, {0x00, 0}}, + + /* run = 4 */ + {{0x10, 7}, {0x25, 11}, {0x00, 0}}, + + /* run = 5 */ + {{0x13, 7}, {0x5a, 12}, {0x00, 0}}, + + /* run = 6 */ + {{0x15, 8}, {0x5b, 12}, {0x00, 0}} }; /* Coeffs for last = 1, run = 7 -> 20. Indexed by [run-7] */ static VLC coeff_tab10[14][1] = { - {{0x14, 8}}, {{0x13, 8}}, {{0x1a, 8}}, {{0x15, 9}}, - {{0x14, 9}}, {{0x13, 9}}, {{0x12, 9}}, {{0x11, 9}}, - {{0x26, 11}}, {{0x27, 11}}, {{0x5c, 12}}, {{0x5d, 12}}, - {{0x5e, 12}}, {{0x5f, 12}} + {{0x14, 8}}, + {{0x13, 8}}, + {{0x1a, 8}}, + {{0x15, 9}}, + {{0x14, 9}}, + {{0x13, 9}}, + {{0x12, 9}}, + {{0x11, 9}}, + {{0x26, 11}}, + {{0x27, 11}}, + {{0x5c, 12}}, + {{0x5d, 12}}, + {{0x5e, 12}}, + {{0x5f, 12}} }; @@ -637,9 +577,11 @@ coeff_inter_last1, }; -/* MCBPC Indexing by cbpc in first two bits, mode in last two. - CBPC as in table 4/H.263, MB type (mode): 3 = 01, 4 = 10. - Example: cbpc = 01 and mode = 4 gives index = 0110 = 6. */ +/* + * MCBPC Indexing by cbpc in first two bits, mode in last two. + * CBPC as in table 4/H.263, MB type (mode): 3 = 01, 4 = 10. + * Example: cbpc = 01 and mode = 4 gives index = 0110 = 6. + */ static VLC mcbpc_intra_tab[15] = { {0x01, 9}, {0x01, 1}, {0x01, 4}, {0x00, 0}, @@ -952,141 +894,128 @@ ******************************************************************/ static const VLC mcbpc_intra_table[64] = { - {-1, 0}, - {20, 6}, {36, 6}, {52, 6}, {4, 4}, {4, 4}, {4, 4}, - {4, 4}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, - {19, 3}, {19, 3}, {19, 3}, {35, 3}, {35, 3}, {35, 3}, - {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {51, 3}, - {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, - {51, 3}, {3, 1}, - {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, - {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, - {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, - {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, - {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, - {3, 1} + {-1, 0}, {20, 6}, {36, 6}, {52, 6}, {4, 4}, {4, 4}, {4, 4}, {4, 4}, + {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, {19, 3}, + {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, {35, 3}, + {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, {51, 3}, + {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, + {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, + {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, + {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1}, {3, 1} }; static const VLC mcbpc_inter_table[257] = { - {VLC_ERROR, 0}, - {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8}, {19, 8}, - {19, 8}, - {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7}, {34, 7}, {34, 7}, - {34, 7}, - {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7}, {33, 7}, {33, 7}, {33, 7}, - {33, 7}, - {17, 7}, {17, 7}, {17, 7}, {17, 7}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, - {4, 6}, {4, 6}, {4, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, - 6}, - {48, 6}, {48, 6}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, - {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, + {VLC_ERROR, 0}, {255, 9}, {52, 9}, {36, 9}, {20, 9}, {49, 9}, {35, 8}, {35, 8}, + {19, 8}, {19, 8}, {50, 8}, {50, 8}, {51, 7}, {51, 7}, {51, 7}, {51, 7}, + {34, 7}, {34, 7}, {34, 7}, {34, 7}, {18, 7}, {18, 7}, {18, 7}, {18, 7}, + {33, 7}, {33, 7}, {33, 7}, {33, 7}, {17, 7}, {17, 7}, {17, 7}, {17, 7}, + {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, + {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, {48, 6}, + {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, + {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {3, 5}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, - {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, - {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, - {32, 4}, - {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {16, 4}, {16, 4}, {16, 4}, - {16, 4}, - {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, - {16, 4}, + {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, {32, 4}, + {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, + {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, - {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, {16, 4}, - {16, 4}, - {16, 4}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, - {2, 3}, {2, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, - {1, 3}, {1, 3}, {1, 3}, {0, 1} + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, {2, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, {1, 3}, + {0, 1} }; static const VLC cbpy_table[64] = { - {-1, 0}, {-1, 0}, {6, 6}, {9, 6}, {8, 5}, {8, 5}, {4, 5}, {4, 5}, - {2, 5}, {2, 5}, {1, 5}, {1, 5}, {0, 4}, {0, 4}, {0, 4}, {0, 4}, + {-1, 0}, {-1, 0}, {6, 6}, {9, 6}, {8, 5}, {8, 5}, {4, 5}, {4, 5}, + {2, 5}, {2, 5}, {1, 5}, {1, 5}, {0, 4}, {0, 4}, {0, 4}, {0, 4}, {12, 4}, {12, 4}, {12, 4}, {12, 4}, {10, 4}, {10, 4}, {10, 4}, {10, 4}, - {14, 4}, {14, 4}, {14, 4}, {14, 4}, {5, 4}, {5, 4}, {5, 4}, {5, 4}, - {13, 4}, {13, 4}, {13, 4}, {13, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4}, - {11, 4}, {11, 4}, {11, 4}, {11, 4}, {7, 4}, {7, 4}, {7, 4}, {7, 4}, - {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, - {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, - {15, 2}, {15, 2} + {14, 4}, {14, 4}, {14, 4}, {14, 4}, {5, 4}, {5, 4}, {5, 4}, {5, 4}, + {13, 4}, {13, 4}, {13, 4}, {13, 4}, {3, 4}, {3, 4}, {3, 4}, {3, 4}, + {11, 4}, {11, 4}, {11, 4}, {11, 4}, {7, 4}, {7, 4}, {7, 4}, {7, 4}, + {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, + {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2}, {15, 2} }; VLC TMNMVtab0[] = { - {3, 4}, {-3, 4}, {2, 3}, {2, 3}, {-2, 3}, {-2, 3}, {1, 2}, {1, 2}, {1, 2}, - {1, 2}, - {-1, 2}, {-1, 2}, {-1, 2}, {-1, 2} + {3, 4}, {-3, 4}, {2, 3}, {2, 3}, {-2, 3}, {-2, 3}, {1, 2}, + {1, 2}, {1, 2}, {1, 2}, {-1, 2}, {-1, 2}, {-1, 2}, {-1, 2} }; VLC TMNMVtab1[] = { - {12, 10}, {-12, 10}, {11, 10}, {-11, 10}, {10, 9}, {10, 9}, {-10, 9}, {-10, - 9}, - {9, 9}, {9, 9}, {-9, 9}, {-9, 9}, {8, 9}, {8, 9}, {-8, 9}, {-8, 9}, {7, 7}, - {7, 7}, - {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {7, 7}, {-7, 7}, {-7, 7}, {-7, 7}, - {-7, 7}, - {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, {6, 7}, - {6, 7}, - {6, 7}, {6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, {-6, - 7}, - {-6, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, {5, 7}, - {-5, 7}, - {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, {4, 6}, {4, - 6}, - {4, 6}, - {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, 6}, {4, - 6}, - {4, 6}, - {4, 6}, {4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, - 6}, - {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, - {-4, 6} + {12, 10}, {-12, 10}, {11, 10}, {-11, 10}, + {10, 9}, {10, 9}, {-10, 9}, {-10, 9}, + {9, 9}, {9, 9}, {-9, 9}, {-9, 9}, + {8, 9}, {8, 9}, {-8, 9}, {-8, 9}, + {7, 7}, {7, 7}, {7, 7}, {7, 7}, + {7, 7}, {7, 7}, {7, 7}, {7, 7}, + {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7}, + {-7, 7}, {-7, 7}, {-7, 7}, {-7, 7}, + {6, 7}, {6, 7}, {6, 7}, {6, 7}, + {6, 7}, {6, 7}, {6, 7}, {6, 7}, + {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, + {-6, 7}, {-6, 7}, {-6, 7}, {-6, 7}, + {5, 7}, {5, 7}, {5, 7}, {5, 7}, + {5, 7}, {5, 7}, {5, 7}, {5, 7}, + {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, + {-5, 7}, {-5, 7}, {-5, 7}, {-5, 7}, + {4, 6}, {4, 6}, {4, 6}, {4, 6}, + {4, 6}, {4, 6}, {4, 6}, {4, 6}, + {4, 6}, {4, 6}, {4, 6}, {4, 6}, + {4, 6}, {4, 6}, {4, 6}, {4, 6}, + {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, + {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, + {-4, 6}, {-4, 6}, {-4, 6}, {-4, 6}, + {-4, 6}, {-4, 6}, {-4, 6},{-4, 6} }; VLC TMNMVtab2[] = { - {32, 12}, {-32, 12}, {31, 12}, {-31, 12}, {30, 11}, {30, 11}, {-30, 11}, - {-30, 11}, - {29, 11}, {29, 11}, {-29, 11}, {-29, 11}, {28, 11}, {28, 11}, {-28, 11}, - {-28, 11}, - {27, 11}, {27, 11}, {-27, 11}, {-27, 11}, {26, 11}, {26, 11}, {-26, 11}, - {-26, 11}, - {25, 11}, {25, 11}, {-25, 11}, {-25, 11}, {24, 10}, {24, 10}, {24, 10}, - {24, 10}, - {-24, 10}, {-24, 10}, {-24, 10}, {-24, 10}, {23, 10}, {23, 10}, {23, 10}, - {23, 10}, - {-23, 10}, {-23, 10}, {-23, 10}, {-23, 10}, {22, 10}, {22, 10}, {22, 10}, - {22, 10}, - {-22, 10}, {-22, 10}, {-22, 10}, {-22, 10}, {21, 10}, {21, 10}, {21, 10}, - {21, 10}, - {-21, 10}, {-21, 10}, {-21, 10}, {-21, 10}, {20, 10}, {20, 10}, {20, 10}, - {20, 10}, - {-20, 10}, {-20, 10}, {-20, 10}, {-20, 10}, {19, 10}, {19, 10}, {19, 10}, - {19, 10}, - {-19, 10}, {-19, 10}, {-19, 10}, {-19, 10}, {18, 10}, {18, 10}, {18, 10}, - {18, 10}, - {-18, 10}, {-18, 10}, {-18, 10}, {-18, 10}, {17, 10}, {17, 10}, {17, 10}, - {17, 10}, - {-17, 10}, {-17, 10}, {-17, 10}, {-17, 10}, {16, 10}, {16, 10}, {16, 10}, - {16, 10}, - {-16, 10}, {-16, 10}, {-16, 10}, {-16, 10}, {15, 10}, {15, 10}, {15, 10}, - {15, 10}, - {-15, 10}, {-15, 10}, {-15, 10}, {-15, 10}, {14, 10}, {14, 10}, {14, 10}, - {14, 10}, - {-14, 10}, {-14, 10}, {-14, 10}, {-14, 10}, {13, 10}, {13, 10}, {13, 10}, - {13, 10}, + {32, 12}, {-32, 12}, {31, 12}, {-31, 12}, + {30, 11}, {30, 11}, {-30, 11}, {-30, 11}, + {29, 11}, {29, 11}, {-29, 11}, {-29, 11}, + {28, 11}, {28, 11}, {-28, 11}, {-28, 11}, + {27, 11}, {27, 11}, {-27, 11}, {-27, 11}, + {26, 11}, {26, 11}, {-26, 11}, {-26, 11}, + {25, 11}, {25, 11}, {-25, 11}, {-25, 11}, + {24, 10}, {24, 10}, {24, 10}, {24, 10}, + {-24, 10}, {-24, 10}, {-24, 10}, {-24, 10}, + {23, 10}, {23, 10}, {23, 10}, {23, 10}, + {-23, 10}, {-23, 10}, {-23, 10}, {-23, 10}, + {22, 10}, {22, 10}, {22, 10}, {22, 10}, + {-22, 10}, {-22, 10}, {-22, 10}, {-22, 10}, + {21, 10}, {21, 10}, {21, 10}, {21, 10}, + {-21, 10}, {-21, 10}, {-21, 10}, {-21, 10}, + {20, 10}, {20, 10}, {20, 10}, {20, 10}, + {-20, 10}, {-20, 10}, {-20, 10}, {-20, 10}, + {19, 10}, {19, 10}, {19, 10}, {19, 10}, + {-19, 10}, {-19, 10}, {-19, 10}, {-19, 10}, + {18, 10}, {18, 10}, {18, 10}, {18, 10}, + {-18, 10}, {-18, 10}, {-18, 10}, {-18, 10}, + {17, 10}, {17, 10}, {17, 10}, {17, 10}, + {-17, 10}, {-17, 10}, {-17, 10}, {-17, 10}, + {16, 10}, {16, 10}, {16, 10}, {16, 10}, + {-16, 10}, {-16, 10}, {-16, 10}, {-16, 10}, + {15, 10}, {15, 10}, {15, 10}, {15, 10}, + {-15, 10}, {-15, 10}, {-15, 10}, {-15, 10}, + {14, 10}, {14, 10}, {14, 10}, {14, 10}, + {-14, 10}, {-14, 10}, {-14, 10}, {-14, 10}, + {13, 10}, {13, 10}, {13, 10}, {13, 10}, {-13, 10}, {-13, 10}, {-13, 10}, {-13, 10} }; @@ -1261,8 +1190,7 @@ }; static const VLC dc_lum_tab[] = { - {0, 0}, - {4, 3}, {3, 3}, {0, 3}, + {0, 0}, {4, 3}, {3, 3}, {0, 3}, {2, 2}, {2, 2}, {1, 2}, {1, 2}, }; @@ -1357,4 +1285,4 @@ } -#endif /* _VLC_CODES_H */ +#endif /* _VLC_CODES_H */