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

📄 vlc.h

📁 H.263的压缩算法
💻 H
字号:
/************************************************************************ * *  vlc.h, VLC tables for tmn (TMN encoder)  * *  Copyright (C) 1997  University of BC, Canada * *  Contacts:  *  Michael Gallant                   <mikeg@ee.ubc.ca> *  Guy Cote                          <guyc@ee.ubc.ca> *  Berna Erol                        <bernae@ee.ubc.ca> * *  UBC Image Processing Laboratory   http://www.ee.ubc.ca/image *  2356 Main Mall                    tel.: +1 604 822 4051 *  Vancouver BC Canada V6T1Z4        fax.: +1 604 822 5949 * *  Copyright (C) 1995, 1996  Telenor R&D, Norway *   *  Contacts:  *  Robert Danielsen                  <Robert.Danielsen@nta.no> * *  Telenor Research and Development  http://www.nta.no/brukere/DVC/ *  P.O.Box 83                        tel.:   +47 63 84 84 00 *  N-2007 Kjeller, Norway            fax.:   +47 63 81 00 76 * ************************************************************************//* * Disclaimer of Warranty * * These software programs are available to the user without any * license fee or royalty on an "as is" basis. The University of * British Columbia disclaims any and all warranties, whether * express, implied, or statuary, including any implied warranties * or merchantability or of fitness for a particular purpose.  In no * event shall the copyright-holder be liable for any incidental, * punitive, or consequential damages of any kind whatsoever arising * from the use of these programs. * * This disclaimer of warranty extends to the user of these programs * and user's customers, employees, agents, transferees, successors, * and assigns. * * The University of British Columbia does not represent or warrant * that the programs furnished hereunder are free of infringement of * any third-party patents. * * Commercial implementations of H.263, including shareware, are * subject to royalty fees to patent holders.  Many of these patents * are general enough such that they are unavoidable regardless of * implementation design. **//************************************************************************ *         *  Author:	Robert.Danielsen@nta.no *  Date:	06.05.96 * *  Comment:	struct idea from MPEG-2 Simulation Software Group. *         ************************************************************************//* type definitions for variable length code table entries */typedef struct{  unsigned int code; /* right justified */  int len;} VLCtable;typedef struct {  int val, len;} VLCtab;/* Motion vectors */static VLCtable mvtab[33] ={  {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},  {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},  {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},  {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},  {2,12}};/* CBPCM (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 VLCtable cbpcm_intra_tab[15] ={  {0x01,9}, {0x01,1}, {0x01,4}, {0x00,0},  {0x00,0}, {0x01,3}, {0x01,6}, {0x00,0},  {0x00,0}, {0x02,3}, {0x02,6}, {0x00,0},  {0x00,0}, {0x03,3}, {0x03,6}};/* CBPCM inter.   Addressing: 5 bit ccmmm (cc = CBPC, mmm = mode (1-5 binary)) *//* 230897 added codes for new INTER4C_Q MB type */static VLCtable cbpcm_inter_tab[32] ={  {1,1}, {3,3}, {2,3}, {3,5}, {4,6}, {2,11}, {0,0}, {0,0},  {3,4}, {7,7}, {5,7}, {4,8}, {4,9}, {12,13}, {0,0}, {0,0},  {2,4}, {6,7}, {4,7}, {3,8}, {3,9}, {14,13}, {0,0}, {0,0},  {5,6}, {5,9}, {5,8}, {3,7}, {2,9}, {15,13}, {0,0}, {0,0}};/* CBPY. Straightforward indexing */static VLCtable cbpy_tab[16] ={  {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},  {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}};/* DCT coefficients. Four tables, two for last = 0, two for last = 1.   the sign bit must be added afterwards. *//* first part of coeffs for last = 0. Indexed by [run][level-1] */static VLCtable 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 */  {    {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 VLCtable 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 coeffs of last = 1. indexing by [run][level-1] */static VLCtable coeff_tab2[2][3] ={  /* 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 VLCtable coeff_tab3[40] ={  {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}               };/* DCT coefficients for INTRA TCOEFF in advanced intra coding mode.    Four tables, two for last = 0, two for last = 1.   the sign bit must be added afterwards. *//* first part of INTRA_TCOEFF with last = 0 *//* indexed by [run][level-1] */static VLCtable intra_coeff_tab0[2][25] ={  /* run = 0 */  {    {0x02,2}, {0x06,3}, {0x0e,4}, {0x0c,5},    {0x0d,5}, {0x10,6}, {0x11,6}, {0x12,6},    {0x16,7}, {0x1b,8}, {0x20,9}, {0x21,9},    {0x1a,9}, {0x1b,9}, {0x1c,9}, {0x1d,9},    {0x1e,9}, {0x1f,9}, {0x23,11}, {0x22,11},    {0x57,12}, {0x56,12}, {0x55,12}, {0x54,12},    {0x53,12}  },  /* run = 1 */  {    {0x0f, 4}, {0x14, 6}, {0x14, 7}, {0x1e,8},    {0x0f,10}, {0x21,11}, {0x50, 12}, {0x00, 0},    {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0},    {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0},    {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0},    {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0},    {0x00, 0}  }};/* rest of intra coeffs for last = 0. indexing by [run-2][level-1] */static VLCtable intra_coeff_tab1[12][4] ={  /* run = 2 */  {    {0x0b, 5}, {0x15, 7}, {0x0e,10}, {0x09,10}  },  /* run = 3 */  {    {0x15, 6}, {0x1d, 8}, {0x0d,10}, {0x51, 12}  },  /* run = 4-13 */  {    {0x13, 6}, {0x23, 9}, {0x07,11}, {0x00, 0}  },  {    {0x17, 7}, {0x22,9}, {0x52,12}, {0x00, 0}  },  {    {0x1c, 8}, {0x0c,10}, {0x00,0}, {0x00, 0}  },  {    {0x1f, 8}, {0x0b,10}, {0x00, 0}, {0x00, 0}  },  {    {0x25, 9}, {0x0a,10}, {0x00, 0}, {0x00, 0}  },  {    {0x24, 9}, {0x06,11}, {0x00, 0}, {0x00, 0}  },  {    {0x21, 10}, {0x00,0}, {0x00, 0}, {0x00, 0}  },  {    {0x20, 10}, {0x00, 0}, {0x00, 0}, {0x00, 0}  },  {    {0x08, 10}, {0x00, 0}, {0x00, 0}, {0x00, 0}  },  {    {0x20, 11}, {0x00, 0}, {0x00, 0}, {0x00, 0}  },};/* first intra coeffs of last = 1. indexing by [run][level-1] */static VLCtable intra_coeff_tab2[2][10] ={  /* run = 0 */  {  {0x07, 4}, {0x0c, 6}, {0x10,7}, {0x13,8},  {0x11, 9}, {0x12, 9}, {0x04,10}, {0x27,11},  {0x26, 11}, {0x5f, 12}  },  /* run = 1 */  {  {0x0f, 6}, {0x13,9}, {0x05, 10}, {0x25, 11},  {0x00, 0}, {0x00, 0}, {0x00,0}, {0x00,0},  {0x00, 0}, {0x00, 0}  }};/* rest of intra coeffs for last = 1. indexing by [run-2][level-1] */static VLCtable intra_coeff_tab3[22][3] ={  /* run = 2 */  {    {0x0e, 6}, {0x14, 9}, {0x24,11}  },  /* run = 3 */  {    {0x0d, 6}, {0x06, 10}, {0x5e,12}  },  /* run = 4-23 */  {    {0x11, 7}, {0x07, 10}, {0x00, 0}  },  {    {0x13, 7}, {0x5d,12}, {0x00, 0}  },  {    {0x12, 7}, {0x5c,12}, {0x00, 0}  },  {    {0x14, 8}, {0x5b,12}, {0x00, 0}  },  {    {0x15, 8}, {0x00,0}, {0x00, 0}  },                {    {0x1a, 8}, {0x00,0}, {0x00, 0}  },                {    {0x19, 8}, {0x00,0}, {0x00, 0}  },                {    {0x18, 8}, {0x00,0}, {0x00, 0}  },                {    {0x17, 8}, {0x00,0}, {0x00, 0}  },                {    {0x16, 8}, {0x00,0}, {0x00, 0}  },                {    {0x19, 9}, {0x00,0}, {0x00, 0}  },                {    {0x15, 9}, {0x00,0}, {0x00, 0}  },                {    {0x16, 9}, {0x00,0}, {0x00, 0}  },                {    {0x18, 9}, {0x00,0}, {0x00, 0}  },                {    {0x17, 9}, {0x00,0}, {0x00, 0}  },                {    {0x04, 11}, {0x00,0}, {0x00, 0}  },                {    {0x05, 11}, {0x00,0}, {0x00, 0}  },                {    {0x58, 12}, {0x00,0}, {0x00, 0}  },                {    {0x59, 12}, {0x00,0}, {0x00, 0}  },                {    {0x5a, 12}, {0x00,0}, {0x00, 0}  },};/* inverse DCT table for inter in alternative inter VLC mode */VLCtab DCT3Dtab0[] = {{4225,7}, {4209,7}, {4193,7}, {4177,7}, {193,7}, {177,7}, {161,7}, {4,7}, {4161,6}, {4161,6}, {4145,6}, {4145,6}, {4129,6}, {4129,6}, {4113,6}, {4113,6}, {145,6}, {145,6}, {129,6}, {129,6}, {113,6}, {113,6}, {97,6}, {97,6}, {18,6}, {18,6}, {3,6}, {3,6}, {81,5}, {81,5}, {81,5}, {81,5}, {65,5}, {65,5}, {65,5}, {65,5}, {49,5}, {49,5}, {49,5}, {49,5}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {4097,4}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {1,2}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {17,3}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {33,4}, {2,4}, {2,4},{2,4},{2,4},{2,4}, {2,4},{2,4},{2,4},};VLCtab DCT3Dtab1[] = {{9,10}, {8,10}, {4481,9}, {4481,9}, {4465,9}, {4465,9}, {4449,9}, {4449,9}, {4433,9}, {4433,9}, {4417,9}, {4417,9}, {4401,9}, {4401,9}, {4385,9}, {4385,9}, {4369,9}, {4369,9}, {4098,9}, {4098,9}, {353,9}, {353,9}, {337,9}, {337,9}, {321,9}, {321,9}, {305,9}, {305,9}, {289,9}, {289,9}, {273,9}, {273,9}, {257,9}, {257,9}, {241,9}, {241,9}, {66,9}, {66,9}, {50,9}, {50,9}, {7,9}, {7,9}, {6,9}, {6,9}, {4353,8}, {4353,8}, {4353,8}, {4353,8}, {4337,8}, {4337,8}, {4337,8}, {4337,8}, {4321,8}, {4321,8}, {4321,8}, {4321,8}, {4305,8}, {4305,8}, {4305,8}, {4305,8}, {4289,8}, {4289,8}, {4289,8}, {4289,8}, {4273,8}, {4273,8}, {4273,8}, {4273,8}, {4257,8}, {4257,8}, {4257,8}, {4257,8}, {4241,8}, {4241,8}, {4241,8}, {4241,8}, {225,8}, {225,8}, {225,8}, {225,8}, {209,8}, {209,8}, {209,8}, {209,8}, {34,8}, {34,8}, {34,8}, {34,8}, {19,8}, {19,8}, {19,8}, {19,8}, {5,8}, {5,8}, {5,8}, {5,8}, };VLCtab DCT3Dtab2[] = {{4114,11}, {4114,11}, {4099,11}, {4099,11}, {11,11}, {11,11}, {10,11}, {10,11}, {4545,10}, {4545,10}, {4545,10}, {4545,10}, {4529,10}, {4529,10}, {4529,10}, {4529,10}, {4513,10}, {4513,10}, {4513,10}, {4513,10}, {4497,10}, {4497,10}, {4497,10}, {4497,10}, {146,10}, {146,10}, {146,10}, {146,10}, {130,10}, {130,10}, {130,10}, {130,10}, {114,10}, {114,10}, {114,10}, {114,10}, {98,10}, {98,10}, {98,10}, {98,10}, {82,10}, {82,10}, {82,10}, {82,10}, {51,10}, {51,10}, {51,10}, {51,10}, {35,10}, {35,10}, {35,10}, {35,10}, {20,10}, {20,10}, {20,10}, {20,10}, {12,11}, {12,11}, {21,11}, {21,11}, {369,11}, {369,11}, {385,11}, {385,11}, {4561,11}, {4561,11}, {4577,11}, {4577,11}, {4593,11}, {4593,11}, {4609,11}, {4609,11}, {22,12}, {36,12}, {67,12}, {83,12}, {99,12}, {162,12}, {401,12}, {417,12}, {4625,12}, {4641,12}, {4657,12}, {4673,12}, {4689,12}, {4705,12}, {4721,12}, {4737,12}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, {7167,7}, };

⌨️ 快捷键说明

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