video_tables.c

来自「基于linux的DVD播放器程序」· C语言 代码 · 共 944 行 · 第 1/3 页

C
944
字号
    33, 26, 19, 12,  5,  6, 13, 20,    27, 34, 41, 48, 56, 49, 42, 35,    28, 21, 14,  7, 15, 22, 29, 36,    43, 50, 57, 58, 51, 44, 37, 30,    23, 31, 38, 45, 52, 59, 60, 53,      46, 39, 47, 54, 61, 62, 55, 63  },   /* Derived from Figure 7-2. Definition of scan[1][v][u] */  {  0,  1,  2,  3,  8,  9, 16, 17,    10, 11,  4,  5,  6,  7, 15, 14,    13, 12, 19, 18, 24, 25, 32, 33,    26, 27, 20, 21, 22, 23, 28, 29,    30, 31, 34, 35, 40, 41, 48, 49,    42, 43, 36, 37, 38, 39, 44, 45,    46, 47, 50, 51, 56, 57, 58, 59,    52, 53, 54, 55, 60, 61, 62, 63,  }};#elif defined(HAVE_MMX)/* Wierd version for the MMX IDCT */const uint8_t inverse_scan[2][64] = {  /* Derived from Figure 7-1. Definition of scan[0][v][u] */  {  0,  4,  8, 16, 12,  1,  5,  9,    20, 24, 32, 28, 17, 13,  2,  6,    10, 21, 25, 36, 40, 48, 44, 33,    29, 18, 14,  3,  7, 11, 22, 26,    37, 41, 52, 56, 60, 49, 45, 34,    30, 19, 15, 23, 27, 38, 42, 53,    57, 61, 50, 46, 35, 31, 39, 43,    54, 58, 62, 51, 47, 55, 59, 63,  },  {  0,  8, 16, 24,  4, 12,  1,  9,    20, 28, 32, 40, 48, 56, 60, 52,    44, 36, 25, 17,  5, 13,  2, 10,    21, 29, 33, 41, 49, 57, 37, 45,    53, 61, 18, 26,  6, 14,  3, 11,    22, 30, 34, 42, 50, 58, 38, 46,    54, 62, 19, 27,  7, 15, 23, 31,    35, 43, 51, 59, 39, 47, 55, 63,  }};#elseconst uint8_t inverse_scan[2][64] = {  /* Derived from Figure 7-1. Definition of scan[0][v][u] */  {  0,  1,  8, 16,  9,  2,  3, 10,      17, 24, 32, 25, 18, 11,  4,  5,      12, 19, 26, 33, 40, 48, 41, 34,      27, 20, 13,  6,  7, 14, 21, 28,      35, 42, 49, 56, 57, 50, 43, 36,    29, 22, 15, 23, 30, 37, 44, 51,    58, 59, 52, 45, 38, 31, 39, 46,    53, 60, 61, 54, 47, 55, 62, 63  },   /* Derived from Figure 7-2. Definition of scan[1][v][u] */  {  0,  8, 16, 24,  1,  9,  2, 10,    17, 25, 32, 40, 48, 56, 57, 49,    41, 33, 26, 18,  3, 11,  4, 12,    19, 27, 34, 42, 50, 58, 35, 43,    51, 59, 20, 28,  5, 13,  6, 14,    21, 29, 36, 44, 52, 60, 37, 45,    53, 61, 22, 30,  7, 15, 23, 31,    38, 46, 54, 62, 39, 47, 55, 63  }};#endif/* Table 7-6. Relation between quantiser_scale and quantiser_scale_code */const uint8_t q_scale[2][32] = {  { 255,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,      32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62 },    { 255,   1, 2,  3,  4,  5,  6,  7,  8, 10, 12, 14, 16, 18, 20, 22,     24, 28, 32, 36, 40, 44, 48, 52, 56, 64, 72, 80, 88, 96,104,112 }};/* 6.3.7 Quant matrix extension */#if defined(HAVE_ALTIVEC)/* Transposed version for the AltiVec IDCTs */const int8_t default_intra_inverse_quantiser_matrix[8][8] = {  {  8, 16, 19, 22, 22, 26, 26, 27 },  { 16, 16, 22, 22, 26, 27, 27, 29 },  { 19, 22, 26, 26, 27, 29, 29, 35 },  { 22, 24, 27, 27, 29, 32, 34, 38 },  { 26, 27, 29, 29, 32, 35, 38, 46 },  { 27, 29, 34, 34, 35, 40, 46, 56 },  { 29, 34, 34, 37, 40, 48, 56, 69 },  { 34, 37, 38, 40, 48, 58, 69, 83 }};#elif defined(HAVE_MMX)const int8_t default_intra_inverse_quantiser_matrix[8][8] = {  {  8, 19, 26, 29, 16, 22, 27, 34 },  { 16, 22, 27, 34, 16, 24, 29, 37 },  { 19, 26, 29, 34, 22, 27, 34, 38 },  { 22, 26, 29, 37, 22, 27, 34, 40 },  { 22, 27, 32, 40, 26, 29, 35, 48 },  { 26, 29, 35, 48, 27, 32, 40, 58 },  { 26, 29, 38, 56, 27, 34, 46, 69 },  { 27, 35, 46, 69, 29, 38, 56, 83 }};#elseconst int8_t default_intra_inverse_quantiser_matrix[8][8] = {  {  8, 16, 19, 22, 26, 27, 29, 34 },  { 16, 16, 22, 24, 27, 29, 34, 37 },  { 19, 22, 26, 27, 29, 34, 34, 38 },  { 22, 22, 26, 27, 29, 34, 37, 40 },  { 22, 26, 27, 29, 32, 35, 40, 48 },  { 26, 27, 29, 32, 35, 40, 48, 58 },  { 26, 27, 29, 34, 38, 46, 56, 69 },  { 27, 29, 35, 38, 46, 56, 69, 83 }};#endifconst int8_t default_non_intra_inverse_quantiser_matrix[8][8] = {  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 },  { 16, 16, 16, 16, 16, 16, 16, 16 }};/* Table B-14, DCT coefficients table zero, * codes 0100 ... 1xxx (used for first (DC) coefficient) */const DCTtab DCTtabfirst[12] ={  { 0, 2, 4}, {2, 1, 4}, {1, 1, 3}, {1, 1, 3},  { 0, 1, 1}, {0, 1, 1}, {0, 1, 1}, {0, 1, 1},  { 0, 1, 1}, {0, 1, 1}, {0, 1, 1}, {0, 1, 1}};/* Table B-14, DCT coefficients table zero, * codes 0100 ... 1xxx (used for all other coefficients) */const DCTtab DCTtabnext[12] ={  { 0, 2, 4}, { 2, 1, 4}, { 1, 1, 3}, { 1, 1, 3},  {64, 0, 2}, {64, 0, 2}, {64, 0, 2}, {64, 0, 2}, /* EOB */  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}};/* Table B-14, DCT coefficients table zero, * codes 000001xx ... 00111xxx */const DCTtab DCTtab0[60] ={  {65, 0, 6}, {65, 0, 6}, {65, 0, 6}, {65, 0, 6}, /* Escape */  { 2, 2, 7}, { 2, 2, 7}, { 9, 1, 7}, { 9, 1, 7},  { 0, 4, 7}, { 0, 4, 7}, { 8, 1, 7}, { 8, 1, 7},  { 7, 1, 6}, { 7, 1, 6}, { 7, 1, 6}, { 7, 1, 6},  { 6, 1, 6}, { 6, 1, 6}, { 6, 1, 6}, { 6, 1, 6},  { 1, 2, 6}, { 1, 2, 6}, { 1, 2, 6}, { 1, 2, 6},  { 5, 1, 6}, { 5, 1, 6}, { 5, 1, 6}, { 5, 1, 6},  {13, 1, 8}, { 0, 6, 8}, {12, 1, 8}, {11, 1, 8},  { 3, 2, 8}, { 1, 3, 8}, { 0, 5, 8}, {10, 1, 8},  { 0, 3, 5}, { 0, 3, 5}, { 0, 3, 5}, { 0, 3, 5},  { 0, 3, 5}, { 0, 3, 5}, { 0, 3, 5}, { 0, 3, 5},  { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5},  { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5}, { 4, 1, 5},  { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5},  { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}};/* Table B-15, DCT coefficients table one, * codes 000001xx ... 11111111*/const DCTtab DCTtab0a[252] ={  {65, 0, 6}, {65, 0, 6}, {65, 0, 6}, {65, 0, 6}, /* Escape */  { 7, 1, 7}, { 7, 1, 7}, { 8, 1, 7}, { 8, 1, 7},  { 6, 1, 7}, { 6, 1, 7}, { 2, 2, 7}, { 2, 2, 7},  { 0, 7, 6}, { 0, 7, 6}, { 0, 7, 6}, { 0, 7, 6},  { 0, 6, 6}, { 0, 6, 6}, { 0, 6, 6}, { 0, 6, 6},  { 4, 1, 6}, { 4, 1, 6}, { 4, 1, 6}, { 4, 1, 6},  { 5, 1, 6}, { 5, 1, 6}, { 5, 1, 6}, { 5, 1, 6},  { 1, 5, 8}, {11, 1, 8}, { 0,11, 8}, { 0,10, 8},  {13, 1, 8}, {12, 1, 8}, { 3, 2, 8}, { 1, 4, 8},  { 2, 1, 5}, { 2, 1, 5}, { 2, 1, 5}, { 2, 1, 5},  { 2, 1, 5}, { 2, 1, 5}, { 2, 1, 5}, { 2, 1, 5},  { 1, 2, 5}, { 1, 2, 5}, { 1, 2, 5}, { 1, 2, 5},  { 1, 2, 5}, { 1, 2, 5}, { 1, 2, 5}, { 1, 2, 5},  { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5},  { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5}, { 3, 1, 5},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3}, { 1, 1, 3},  {64, 0, 4}, {64, 0, 4}, {64, 0, 4}, {64, 0, 4}, /* EOB */  {64, 0, 4}, {64, 0, 4}, {64, 0, 4}, {64, 0, 4},  {64, 0, 4}, {64, 0, 4}, {64, 0, 4}, {64, 0, 4},  {64, 0, 4}, {64, 0, 4}, {64, 0, 4}, {64, 0, 4},  { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4},  { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4},  { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4},  { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4}, { 0, 3, 4},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2}, { 0, 1, 2},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3}, { 0, 2, 3},  { 0, 4, 5}, { 0, 4, 5}, { 0, 4, 5}, { 0, 4, 5},  { 0, 4, 5}, { 0, 4, 5}, { 0, 4, 5}, { 0, 4, 5},  { 0, 5, 5}, { 0, 5, 5}, { 0, 5, 5}, { 0, 5, 5},  { 0, 5, 5}, { 0, 5, 5}, { 0, 5, 5}, { 0, 5, 5},  { 9, 1, 7}, { 9, 1, 7}, { 1, 3, 7}, { 1, 3, 7},  {10, 1, 7}, {10, 1, 7}, { 0, 8, 7}, { 0, 8, 7},  { 0, 9, 7}, { 0, 9, 7}, { 0,12, 8}, { 0,13, 8},  { 2, 3, 8}, { 4, 2, 8}, { 0,14, 8}, { 0,15, 8}};/* Table B-14, DCT coefficients table zero, * codes 0000001000 ... 0000001111 */const DCTtab DCTtab1[8] ={  {16, 1,10}, { 5, 2,10}, { 0, 7,10}, { 2, 3,10},  { 1, 4,10}, {15, 1,10}, {14, 1,10}, { 4, 2,10}};/* Table B-15, DCT coefficients table one, * codes 000000100x ... 000000111x */const DCTtab DCTtab1a[8] ={  { 5, 2, 9}, { 5, 2, 9}, {14, 1, 9}, {14, 1, 9},  { 2, 4,10}, {16, 1,10}, {15, 1, 9}, {15, 1, 9}};/* Table B-14/15, DCT coefficients table zero / one, * codes 000000010000 ... 000000011111 */const DCTtab DCTtab2[16] ={  { 0,11,12}, { 8, 2,12}, { 4, 3,12}, { 0,10,12},  { 2, 4,12}, { 7, 2,12}, {21, 1,12}, {20, 1,12},  { 0, 9,12}, {19, 1,12}, {18, 1,12}, { 1, 5,12},  { 3, 3,12}, { 0, 8,12}, { 6, 2,12}, {17, 1,12}};/* Table B-14/15, DCT coefficients table zero / one, * codes 0000000010000 ... 0000000011111 */const DCTtab DCTtab3[16] ={  {10, 2,13}, { 9, 2,13}, { 5, 3,13}, { 3, 4,13},  { 2, 5,13}, { 1, 7,13}, { 1, 6,13}, { 0,15,13},  { 0,14,13}, { 0,13,13}, { 0,12,13}, {26, 1,13},  {25, 1,13}, {24, 1,13}, {23, 1,13}, {22, 1,13}};/* Table B-14/15, DCT coefficients table zero / one, * codes 00000000010000 ... 00000000011111 */const DCTtab DCTtab4[16] ={  { 0,31,14}, { 0,30,14}, { 0,29,14}, { 0,28,14},  { 0,27,14}, { 0,26,14}, { 0,25,14}, { 0,24,14},  { 0,23,14}, { 0,22,14}, { 0,21,14}, { 0,20,14},  { 0,19,14}, { 0,18,14}, { 0,17,14}, { 0,16,14}};/* Table B-14/15, DCT coefficients table zero / one, * codes 000000000010000 ... 000000000011111 */const DCTtab DCTtab5[16] ={  { 0,40,15}, { 0,39,15}, { 0,38,15}, { 0,37,15},  { 0,36,15}, { 0,35,15}, { 0,34,15}, { 0,33,15},  { 0,32,15}, { 1,14,15}, { 1,13,15}, { 1,12,15},  { 1,11,15}, { 1,10,15}, { 1, 9,15}, { 1, 8,15}};/* Table B-14/15, DCT coefficients table zero / one, * codes 0000000000010000 ... 0000000000011111 */const DCTtab DCTtab6[16] ={  { 1,18,16}, { 1,17,16}, { 1,16,16}, { 1,15,16},  { 6, 3,16}, {16, 2,16}, {15, 2,16}, {14, 2,16},  {13, 2,16}, {12, 2,16}, {11, 2,16}, {31, 1,16},  {30, 1,16}, {29, 1,16}, {28, 1,16}, {27, 1,16}};

⌨️ 快捷键说明

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