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

📄 vc1data.c

📁 ffmpeg的完整源代码和作者自己写的文档。不但有在Linux的工程哦
💻 C
📖 第 1 页 / 共 2 页
字号:
const uint8_t ff_vc1_cbpcy_p_bits[4][64] = {
  {
    13,  6,  5,  6,  6,  7,  7,  5,  7,  7,  6,  6,  6,  5,  6,  3,
     7,  8,  8, 13,  7,  8, 13,  8, 13, 13, 13,  8,  8,  7,  7,  3,
    13, 13,  7,  8, 13, 13, 13,  8, 13, 13,  8,  7,  8,  7,  8,  3,
    13, 12, 12, 12, 12, 12, 12,  6, 12, 12, 12,  8,  8,  7,  7,  2
  },
  {
    14,  3,  3,  5,  3,  4,  5,  5,  3,  5,  4,  5,  4,  6,  5,  6,
     8, 14, 13,  8,  8, 13, 13,  8,  8, 13, 13,  8, 13, 13,  8, 13,
    13,  8, 13, 13,  7,  7, 13, 13, 13, 13,  8,  8, 13, 13,  7,  6,
    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,  8,  7
  },
  {
    13,  5,  5,  5,  4,  4,  6,  4,  4,  6,  4,  5,  5,  5,  4,  3,
     6,  8, 10,  9,  8,  8,  7,  8, 13, 13,  7,  7,  8,  8,  7,  5,
     8,  7,  9,  9,  9,  6,  8,  7,  8, 13,  8,  7,  8,  7,  8,  5,
     8,  9,  8, 13,  8,  9, 13,  8, 12,  8,  8,  9,  9,  9,  8,  5
  },
  {
     9,  2,  3,  9,  2,  9,  9,  9,  2,  9,  9,  9,  9,  9,  9,  9,
     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
     9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  8,  8,  8,  8
  }
};
#endif

/* MacroBlock Transform Type: 7.1.3.11, p89
 * 8x8:B
 * 8x4:B:btm  8x4:B:top  8x4:B:both,
 * 4x8:B:right  4x8:B:left  4x8:B:both
 * 4x4:B  8x8:MB
 * 8x4:MB:btm  8x4:MB:top  8x4,MB,both
 * 4x8,MB,right  4x8,MB,left
 * 4x4,MB                               */
const uint16_t ff_vc1_ttmb_codes[3][16] = {
  {
    0x0003,
    0x002E, 0x005F, 0x0000,
    0x0016, 0x0015, 0x0001,
    0x0004, 0x0014,
    0x02F1, 0x0179, 0x017B,
    0x0BC0, 0x0BC1, 0x05E1,
    0x017A
  },
  {
    0x0006,
    0x0006, 0x0003, 0x0007,
    0x000F, 0x000E, 0x0000,
    0x0002, 0x0002,
    0x0014, 0x0011, 0x000B,
    0x0009, 0x0021, 0x0015,
    0x0020
  },
  {
    0x0006,
    0x0000, 0x000E, 0x0005,
    0x0002, 0x0003, 0x0003,
    0x000F, 0x0002,
    0x0081, 0x0021, 0x0009,
    0x0101, 0x0041, 0x0011,
    0x0100
  }
};

const uint8_t ff_vc1_ttmb_bits[3][16] = {
  {
     2,
     6,  7,  2,
     5,  5,  2,
     3,  5,
    10,  9,  9,
    12, 12, 11,
     9
  },
  {
    3,
    4, 4, 4,
    4, 4, 3,
    3, 2,
    7, 7, 6,
    6, 8, 7,
    8
  },
  {
     3,
     3, 4, 5,
     3, 3, 4,
     4, 2,
    10, 8, 6,
    11, 9, 7,
    11
  }
};

/* TTBLK (Transform Type per Block) tables */
const uint8_t ff_vc1_ttblk_codes[3][8] = {
  {  0,  1,  3,  5, 16, 17, 18, 19},
  {  3,  0,  1,  2,  3,  5,  8,  9},
  {  1,  0,  1,  4,  6,  7, 10, 11}
};
const uint8_t ff_vc1_ttblk_bits[3][8] = {
  {  2,  2,  2,  3,  5,  5,  5,  5},
  {  2,  3,  3,  3,  3,  3,  4,  4},
  {  2,  3,  3,  3,  3,  3,  4,  4}
};

/* SUBBLKPAT tables, p93-94, reordered */
const uint8_t ff_vc1_subblkpat_codes[3][15] = {
  { 14, 12,  7, 11,  9, 26,  2, 10, 27,  8,  0,  6,  1, 15,  1},
  { 14,  0,  8, 15, 10,  4, 23, 13,  5,  9, 25,  3, 24, 22,  1},
  {  5,  6,  2,  2,  8,  0, 28,  3,  1,  3, 29,  1, 19, 18, 15}
};
const uint8_t ff_vc1_subblkpat_bits[3][15] = {
  {  5,  5,  5,  5,  5,  6,  4,  5,  6,  5,  4,  5,  4,  5,  1},
  {  4,  3,  4,  4,  4,  5,  5,  4,  5,  4,  5,  4,  5,  5,  2},
  {  3,  3,  4,  3,  4,  5,  5,  3,  5,  4,  5,  4,  5,  5,  4}
};

/* MV differential tables, p265 */
const uint16_t ff_vc1_mv_diff_codes[4][73] = {
  {
       0,    2,    3,    8,  576,    3,    2,    6,
       5,  577,  578,    7,    8,    9,   40,   19,
      37,   82,   21,   22,   23,  579,  580,  166,
      96,  167,   49,  194,  195,  581,  582,  583,
     292,  293,  294,   13,    2,    7,   24,   50,
     102,  295,   13,    7,    8,   18,   50,  103,
      38,   20,   21,   22,   39,  204,  103,   23,
      24,   25,  104,  410,  105,  106,  107,  108,
     109,  220,  411,  442,  222,  443,  446,  447,
       7 /* 73 elements */
  },
  {
       0,    4,    5,    3,    4,    3,    4,    5,
      20,    6,   21,   44,   45,   46, 3008,   95,
     112,  113,   57, 3009, 3010,  116,  117, 3011,
     118, 3012, 3013, 3014, 3015, 3016, 3017, 3018,
    3019, 3020, 3021, 3022,    1,    4,   15,  160,
     161,   41,    6,   11,   42,  162,   43,  119,
      56,   57,   58,  163,  236,  237, 3023,  119,
     120,  242,  122,  486, 1512,  487,  246,  494,
    1513,  495, 1514, 1515, 1516, 1517, 1518, 1519,
      31 /* 73 elements */
  },
  {
       0,  512,  513,  514,  515,    2,    3,  258,
     259,  260,  261,  262,  263,  264,  265,  266,
     267,  268,  269,  270,  271,  272,  273,  274,
     275,  276,  277,  278,  279,  280,  281,  282,
     283,  284,  285,  286,    1,    5,  287,  288,
     289,  290,    6,    7,  291,  292,  293,  294,
     295,  296,  297,  298,  299,  300,  301,  302,
     303,  304,  305,  306,  307,  308,  309,  310,
     311,  312,  313,  314,  315,  316,  317,  318,
     319 /* 73 elements */
  },
  {
       0,    1,    1,    2,    3,    4,    1,    5,
       4,    3,    5,    8,    6,    9,   10,   11,
      12,    7,  104,   14,  105,    4,   10,   15,
      11,    6,   14,    8,  106,  107,  108,   15,
     109,    9,   55,   10,    1,    2,    1,    2,
       3,   12,    6,    2,    6,    7,   28,    7,
      15,    8,    5,   18,   29,  152,   77,   24,
      25,   26,   39,  108,   13,  109,   55,   56,
      57,  116,   11,  153,  234,  235,  118,  119,
      15 /* 73 elements */
  }
};
const uint8_t ff_vc1_mv_diff_bits[4][73] = {
  {
     6,  7,  7,  8, 14,  6,  5,  6,  7, 14, 14,  6,  6,  6,  8,  9,
    10,  9,  7,  7,  7, 14, 14, 10,  9, 10,  8, 10, 10, 14, 14, 14,
    13, 13, 13,  6,  3,  5,  6,  8,  9, 13,  5,  4,  4,  5,  7,  9,
     6,  5,  5,  5,  6,  9,  8,  5,  5,  5,  7, 10,  7,  7,  7,  7,
     7,  8, 10,  9,  8,  9,  9,  9,  3 /* 73 elements */
  },
  {
     5,  7,  7,  6,  6,  5,  5,  6,  7,  5,  7,  8,  8,  8, 14,  9,
     9,  9,  8, 14, 14,  9,  9, 14,  9, 14, 14, 14, 14, 14, 14, 14,
    14, 14, 14, 14,  2,  3,  6,  8,  8,  6,  3,  4,  6,  8,  6,  9,
     6,  6,  6,  8,  8,  8, 14,  7,  7,  8,  7,  9, 13,  9,  8,  9,
    13,  9, 13, 13, 13, 13, 13, 13,  5 /* 73 elements */

  },
  {
     3, 12, 12, 12, 12,  3,  4, 11, 11, 11, 11, 11, 11, 11, 11, 11,
    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
    11, 11, 11, 11,  1,  5, 11, 11, 11, 11,  4,  4, 11, 11, 11, 11,
    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
    11, 11, 11, 11, 11, 11, 11, 11, 11 /* 73 elements */
  },
  {
    15, 11, 15, 15, 15, 15, 12, 15, 12, 11, 12, 12, 15, 12, 12, 12,
    12, 15, 15, 12, 15, 10, 11, 12, 11, 10, 11, 10, 15, 15, 15, 11,
    15, 10, 14, 10,  4,  4,  5,  7,  8,  9,  5,  3,  4,  5,  6,  8,
     5,  4,  3,  5,  6,  8,  7,  5,  5,  5,  6,  7,  9,  7,  6,  6,
     6,  7, 10,  8,  8,  8,  7,  7,  4 /* 73 elements */
  }
};

/* DC differentials low+hi-mo, p217 are the same as in msmpeg4data .h */

/* Scantables/ZZ scan are at 11.9 (p262) and 8.1.1.12 (p10) */
const int8_t ff_vc1_normal_zz[64] = {
       0,     8,     1,     2,     9,    16,    24,    17,
      10,     3,     4,    11,    18,    25,    32,    40,
      33,    48,    26,    19,    12,     5,     6,    13,
      20,    27,    34,    41,    56,    49,    57,    42,
      35,    28,    21,    14,     7,    15,    22,    29,
      36,    43,    50,    58,    51,    59,    44,    37,
      30,    23,    31,    38,    45,    52,    60,    53,
      61,    46,    39,    47,    54,    62,    55,    63
};

const int8_t ff_vc1_horizontal_zz [64] = /* Table 227 */
{
       0,     1,     8,     2,     3,     9,    16,    24,
      17,    10,     4,     5,    11,    18,    25,    32,
      40,    48,    33,    26,    19,    12,     6,     7,
      13,    20,    27,    34,    41,    56,    49,    57,
      42,    35,    28,    21,    14,    15,    22,    29,
      36,    43,    50,    58,    51,    44,    37,    30,
      23,    31,    38,    45,    52,    59,    60,    53,
      46,    39,    47,    54,    61,    62,    55,    63
};

const int8_t ff_vc1_vertical_zz [64] = /* Table 228 */
{
       0,     8,    16,     1,    24,    32,    40,     9,
       2,     3,    10,    17,    25,    48,    56,    41,
      33,    26,    18,    11,     4,     5,    12,    19,
      27,    34,    49,    57,    50,    42,    35,    28,
      20,    13,     6,     7,    14,    21,    29,    36,
      43,    51,    58,    59,    52,    44,    37,    30,
      22,    15,    23,    31,    38,    45,    60,    53,
      46,    39,    47,    54,    61,    62,    55,    63
};

const int8_t ff_vc1_simple_progressive_8x8_zz [64] =
/* Table 229 */
{
       0,     8,     1,     2,     9,    16,    24,    17,
      10,     3,     4,    11,    18,    25,    32,    40,
      48,    56,    41,    33,    26,    19,    12,     5,
       6,    13,    20,    27,    34,    49,    57,    58,
      50,    42,    35,    28,    21,    14,     7,    15,
      22,    29,    36,    43,    51,    59,    60,    52,
      44,    37,    30,    23,    31,    38,    45,    53,
      61,    62,    54,    46,    39,    47,    55,    63
};

const int8_t ff_vc1_simple_progressive_8x4_zz [32] = /* Table 230 */
{
       0,     1,     2,     8,     3,     9,    10,    16,
       4,    11,    17,    24,    18,    12,     5,    19,
      25,    13,    20,    26,    27,     6,    21,    28,
      14,    22,    29,     7,    30,    15,    23,    31
};

const int8_t ff_vc1_simple_progressive_4x8_zz [32] = /* Table 231 */
{
       0,     8,     1,    16,
       9,    24,    17,     2,
      32,    10,    25,    40,
      18,    48,    33,    26,
      56,    41,    34,     3,
      49,    57,    11,    42,
      19,    50,    27,    58,
      35,    43,    51,    59
};

/* Table 232 */
const int8_t ff_vc1_simple_progressive_4x4_zz [16] =
{
       0,     8,    16,     1,
       9,    24,    17,     2,
      10,    18,    25,     3,
      11,    26,    19,    27
};

const int8_t ff_vc1_adv_progressive_8x4_zz [32] = /* Table 233 */
{
       0,     8,     1,    16,     2,     9,    10,     3,
      24,    17,     4,    11,    18,    12,     5,    19,
      25,    13,    20,    26,    27,     6,    21,    28,
      14,    22,    29,     7,    30,    15,    23,    31
};

const int8_t ff_vc1_adv_progressive_4x8_zz [32] = /* Table 234 */
{
       0,     1,     8,     2,
       9,    16,    17,    24,
      10,    32,    25,    18,
      40,     3,    33,    26,
      48,    11,    56,    41,
      34,    49,    57,    42,
      19,    50,    27,    58,
      35,    43,    51,    59
};

const int8_t ff_vc1_adv_interlaced_8x8_zz [64] = /* Table 235 */
{
       0,     8,     1,    16,    24,     9,     2,    32,
      40,    48,    56,    17,    10,     3,    25,    18,
      11,     4,    33,    41,    49,    57,    26,    34,
      42,    50,    58,    19,    12,     5,    27,    20,
      13,     6,    35,    28,    21,    14,     7,    15,
      22,    29,    36,    43,    51,    59,    60,    52,
      44,    37,    30,    23,    31,    38,    45,    53,
      61,    62,    54,    46,    39,    47,    55,    63
};

const int8_t ff_vc1_adv_interlaced_8x4_zz [32] = /* Table 236 */
{
       0,     8,    16,    24,     1,     9,     2,    17,
      25,    10,     3,    18,    26,     4,    11,    19,
      12,     5,    13,    20,    27,     6,    21,    28,
      14,    22,    29,     7,    30,    15,    23,    31
};

const int8_t ff_vc1_adv_interlaced_4x8_zz [32] = /* Table 237 */
{
       0,     1,     2,     8,
      16,     9,    24,    17,
      10,     3,    32,    40,
      48,    56,    25,    18,
      33,    26,    41,    34,
      49,    57,    11,    42,
      19,    50,    27,    58,
      35,    43,    51,    59
};

const int8_t ff_vc1_adv_interlaced_4x4_zz [16] = /* Table 238 */
{
       0,     8,    16,    24,
       1,     9,    17,     2,
      25,    10,    18,     3,
      26,    11,    19,    27
};


/* DQScale as specified in 8.1.3.9 - almost identical to 0x40000/i */
const int32_t ff_vc1_dqscale[63] = {
0x40000, 0x20000, 0x15555, 0x10000, 0xCCCD, 0xAAAB, 0x9249, 0x8000,
    0x71C7, 0x6666, 0x5D17, 0x5555, 0x4EC5, 0x4925, 0x4444, 0x4000,
    0x3C3C, 0x38E4, 0x35E5, 0x3333, 0x30C3, 0x2E8C, 0x2C86, 0x2AAB,
    0x28F6, 0x2762, 0x25ED, 0x2492, 0x234F, 0x2222, 0x2108, 0x2000,
    0x1F08, 0x1E1E, 0x1D42, 0x1C72, 0x1BAD, 0x1AF3, 0x1A42, 0x199A,
    0x18FA, 0x1862, 0x17D0, 0x1746, 0x16C1, 0x1643, 0x15CA, 0x1555,
    0x14E6, 0x147B, 0x1414, 0x13B1, 0x1352, 0x12F7, 0x129E, 0x1249,
    0x11F7, 0x11A8, 0x115B, 0x1111, 0x10C9, 0x1084, 0x1000
};

⌨️ 快捷键说明

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