h263data.h
上传用户:jxp0626
上传日期:2007-01-08
资源大小:102k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Unix_Linux

  1. /* DCT coefficients. Four tables, two for last = 0, two for last = 1.
  2.    the sign bit must be added afterwards. */
  3. /* first part of coeffs for last = 0. Indexed by [run][level-1] */
  4. static const UINT8 coeff_tab0[2][12][2] =
  5. {
  6.   /* run = 0 */
  7.   {
  8.     {0x02, 2}, {0x0f, 4}, {0x15, 6}, {0x17, 7},
  9.     {0x1f, 8}, {0x25, 9}, {0x24, 9}, {0x21,10},
  10.     {0x20,10}, {0x07,11}, {0x06,11}, {0x20,11}
  11.   },
  12.   /* run = 1 */
  13.   {
  14.     {0x06, 3}, {0x14, 6}, {0x1e, 8}, {0x0f,10},
  15.     {0x21,11}, {0x50,12}, {0x00, 0}, {0x00, 0},
  16.     {0x00, 0}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  17.   }
  18. };
  19. /* rest of coeffs for last = 0. indexing by [run-2][level-1] */
  20. static const UINT8 coeff_tab1[25][4][2] =
  21. {
  22.   /* run = 2 */
  23.   {
  24.     {0x0e, 4}, {0x1d, 8}, {0x0e,10}, {0x51,12}
  25.   },
  26.   /* run = 3 */
  27.   {
  28.     {0x0d, 5}, {0x23, 9}, {0x0d,10}, {0x00, 0}
  29.   },
  30.   /* run = 4-26 */
  31.   {
  32.     {0x0c, 5}, {0x22, 9}, {0x52,12}, {0x00, 0}
  33.   },
  34.   {
  35.     {0x0b, 5}, {0x0c,10}, {0x53,12}, {0x00, 0}
  36.   },
  37.   {
  38.     {0x13, 6}, {0x0b,10}, {0x54,12}, {0x00, 0}
  39.   },
  40.   {
  41.     {0x12, 6}, {0x0a,10}, {0x00, 0}, {0x00, 0}
  42.   },
  43.   {
  44.     {0x11, 6}, {0x09,10}, {0x00, 0}, {0x00, 0}
  45.   },
  46.   {
  47.     {0x10, 6}, {0x08,10}, {0x00, 0}, {0x00, 0}
  48.   },
  49.   {
  50.     {0x16, 7}, {0x55,12}, {0x00, 0}, {0x00, 0}
  51.   },
  52.   {
  53.     {0x15, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  54.   },
  55.   {
  56.     {0x14, 7}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  57.   },
  58.   {
  59.     {0x1c, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  60.   },
  61.   {
  62.     {0x1b, 8}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  63.   },
  64.   {
  65.     {0x21, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  66.   },
  67.   {
  68.     {0x20, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  69.   },
  70.   {
  71.     {0x1f, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  72.   },
  73.   {
  74.     {0x1e, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  75.   },
  76.   {
  77.     {0x1d, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  78.   },
  79.   {
  80.     {0x1c, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  81.   },
  82.   {
  83.     {0x1b, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  84.   },
  85.   {
  86.     {0x1a, 9}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  87.   },
  88.   {
  89.     {0x22,11}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  90.   },
  91.   {
  92.     {0x23,11}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  93.   },
  94.   {
  95.     {0x56,12}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  96.   },
  97.   {
  98.     {0x57,12}, {0x00, 0}, {0x00, 0}, {0x00, 0}
  99.   }
  100. };
  101. /* first coeffs of last = 1. indexing by [run][level-1] */
  102. static const UINT8 coeff_tab2[2][3][2] =
  103. {
  104.   /* run = 0 */
  105.   {
  106.     {0x07, 4}, {0x19, 9}, {0x05,11}
  107.   },
  108.   /* run = 1 */
  109.   {
  110.     {0x0f, 6}, {0x04,11}, {0x00, 0}
  111.   }
  112. };
  113. /* rest of coeffs for last = 1. indexing by [run-2] */
  114. static const UINT8 coeff_tab3[40][2] =
  115. {
  116.   {0x0e, 6}, {0x0d, 6}, {0x0c, 6},
  117.   {0x13, 7}, {0x12, 7}, {0x11, 7}, {0x10, 7},
  118.   {0x1a, 8}, {0x19, 8}, {0x18, 8}, {0x17, 8},
  119.   {0x16, 8}, {0x15, 8}, {0x14, 8}, {0x13, 8},
  120.   {0x18, 9}, {0x17, 9}, {0x16, 9}, {0x15, 9},    
  121.   {0x14, 9}, {0x13, 9}, {0x12, 9}, {0x11, 9},    
  122.   {0x07,10}, {0x06,10}, {0x05,10}, {0x04,10},    
  123.   {0x24,11}, {0x25,11}, {0x26,11}, {0x27,11},    
  124.   {0x58,12}, {0x59,12}, {0x5a,12}, {0x5b,12},    
  125.   {0x5c,12}, {0x5d,12}, {0x5e,12}, {0x5f,12},
  126.   {0x00, 0}               
  127. };
  128. /* intra MCBPC, mb_type = 3 */
  129. static const UINT8 intra_MCBPC_code[4] = { 1, 1, 2, 3 };
  130. static const UINT8 intra_MCBPC_bits[4] = { 1, 3, 3, 3 };
  131. /* inter MCBPC, mb_type = 0 then 3 */
  132. static const UINT8 inter_MCBPC_code[8] = { 1, 3, 2, 5, 3, 4, 3, 3 };
  133. static const UINT8 inter_MCBPC_bits[8] = { 1, 4, 4, 6, 5, 8, 8, 7 };
  134. static const UINT8 cbpy_tab[16][2] =
  135. {
  136.   {3,4}, {5,5}, {4,5}, {9,4}, {3,5}, {7,4}, {2,6}, {11,4},
  137.   {2,5}, {3,6}, {5,4}, {10,4}, {4,4}, {8,4}, {6,4}, {3,2}
  138. };
  139. static const UINT8 mvtab[33][2] =
  140. {
  141.   {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
  142.   {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10},
  143.   {12,10}, {11,10}, {10,10}, {9,10}, {8,10}, {7,10}, {6,10}, {5,10},
  144.   {4,10}, {7,11}, {6,11}, {5,11}, {4,11}, {3,11}, {2,11}, {3,12},
  145.   {2,12}
  146. };