Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h261data.h @ 71160c55

History | View | Annotate | Download (4.24 KB)

1 c6148de2 Michael Niedermayer
/**
2
 * @file h261data.h
3
 * H.261 tables.
4
 */
5
#define MB_TYPE_H261_FIL 0x800000
6
7
// H.261 VLC table for macroblock addressing
8 49e5dcbc Maarten Daniels
const uint8_t h261_mba_code[35] = {
9 c6148de2 Michael Niedermayer
     1,  3,  2,  3,
10
     2,  3,  2,  7,
11
     6, 11, 10,  9,
12
     8,  7,  6, 23,
13
    22, 21, 20, 19,
14
    18, 35, 34, 33,
15
    32, 31, 30, 29,
16
    28, 27, 26, 25,
17
    24,
18 49e5dcbc Maarten Daniels
    15,           //(MBA stuffing)
19
    1             //(start code)
20 c6148de2 Michael Niedermayer
};
21
22 49e5dcbc Maarten Daniels
const uint8_t h261_mba_bits[35] = {
23 c6148de2 Michael Niedermayer
     1,  3,  3,  4,
24
     4,  5,  5,  7,
25
     7,  8,  8,  8,
26
     8,  8,  8, 10,
27
    10, 10, 10, 10,
28
    10, 11, 11, 11,
29
    11, 11, 11, 11,
30
    11, 11, 11, 11,
31
    11,
32 49e5dcbc Maarten Daniels
    11,           //(MBA stuffing)
33
    16            //(start code)
34 c6148de2 Michael Niedermayer
};
35
36
//H.261 VLC table for macroblock type
37
const uint8_t h261_mtype_code[10] = {
38
    1,  1,  1,  1,
39
    1,  1,  1,  1,
40
    1,  1
41
};
42
43
const uint8_t h261_mtype_bits[10] = {
44
    4,  7,  1,  5,
45
    9,  8, 10,  3,
46
    2,  6
47
};
48
49
static const int h261_mtype_map[10]= {
50
        MB_TYPE_INTRA4x4,
51
        MB_TYPE_INTRA4x4  |  MB_TYPE_QUANT,
52
                                               MB_TYPE_CBP,
53
                             MB_TYPE_QUANT  |  MB_TYPE_CBP,
54
                                                               MB_TYPE_16x16,
55
                                               MB_TYPE_CBP  |  MB_TYPE_16x16,
56
                             MB_TYPE_QUANT  |  MB_TYPE_CBP  |  MB_TYPE_16x16,
57
                                                               MB_TYPE_16x16  |  MB_TYPE_H261_FIL,
58
                                               MB_TYPE_CBP  |  MB_TYPE_16x16  |  MB_TYPE_H261_FIL,
59
                             MB_TYPE_QUANT  |  MB_TYPE_CBP  |  MB_TYPE_16x16  |  MB_TYPE_H261_FIL
60
};
61
62
//H.261 VLC table for motion vectors
63
const uint8_t h261_mv_tab[17][2] = {
64
    {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
65
    {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10}, {12,10}
66
};
67
68
static const int mvmap[17] =
69
{
70 ccff9da6 Maarten Daniels
    0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16
71 c6148de2 Michael Niedermayer
};
72
73
//H.261 VLC table for coded block pattern
74
const uint8_t h261_cbp_tab[63][2] =
75
{
76
    {11,5}, {9,5}, {13,6}, {13,4}, {23,7}, {19,7}, {31,8}, {12,4},
77
    {22,7}, {18,7}, {30,8}, {19,5}, {27,8}, {23,8}, {19,8}, {11,4},
78
    {21,7}, {17,7}, {29,8}, {17,5}, {25,8}, {21,8}, {17,8}, {15,6},
79
    {15,8}, {13,8}, {3,9}, {15,5}, {11,8}, {7,8}, {7,9}, {10,4},
80
    {20,7}, {16,7}, {28,8}, {14,6}, {14,8}, {12,8}, {2,9}, {16,5},
81
    {24,8}, {20,8}, {16,8}, {14,5}, {10,8}, {6,8}, {6,9}, {18,5},
82
    {26,8}, {22,8}, {18,8}, {13,5}, {9,8}, {5,8}, {5,9}, {12,5},
83
    {8,8}, {4,8}, {4,9}, {7,3}, {10,5}, {8,5}, {12,6}
84
};
85
86
//H.261 VLC table for transform coefficients
87
const uint16_t h261_tcoeff_vlc[65][2] = {
88
{ 0x2, 2 }, { 0x3, 2 },{ 0x4, 4 },{ 0x5, 5 },
89
{ 0x6, 7 },{ 0x26, 8 },{ 0x21, 8 },{ 0xa, 10 },
90
{ 0x1d, 12 },{ 0x18, 12 },{ 0x13, 12 },{ 0x10 , 12 },
91
{ 0x1a, 13},{ 0x19, 13 }, { 0x18, 13 }, { 0x17, 13 },
92
{ 0x3, 3 }, { 0x6, 6 }, { 0x25 , 8 }, { 0xc, 10 },
93
{ 0x1b, 12 }, { 0x16, 13 }, { 0x15, 13 }, { 0x5, 4},
94
{ 0x4, 7}, { 0xb, 10 }, { 0x14, 12 }, { 0x14, 13 },
95
{ 0x7, 5 }, { 0x24, 8 }, { 0x1c, 12 }, { 0x13, 13 },
96
{ 0x6, 5 }, { 0xf, 10 }, { 0x12, 12}, { 0x7, 6},
97
{ 0x9 , 10 }, { 0x12, 13 }, { 0x5, 6 }, { 0x1e, 12 },
98
{ 0x4, 6 }, { 0x15, 12 }, { 0x7, 7 }, { 0x11, 12},
99
{ 0x5, 7 }, { 0x11, 13 }, { 0x27, 8 }, { 0x10, 13 },
100
{ 0x23, 8 }, { 0x22, 8 }, { 0x20, 8 }, { 0xe , 10 },
101
{ 0xd, 10 }, { 0x8, 10 },{ 0x1f, 12 }, { 0x1a, 12 },
102
{ 0x19, 12 }, { 0x17, 12 }, { 0x16, 12}, { 0x1f, 13},
103
{ 0x1e, 13 }, { 0x1d, 13 }, { 0x1c, 13}, { 0x1b, 13},
104
{ 0x1, 6 }                                             //escape
105
};
106
107
const int8_t h261_tcoeff_level[64] = {
108
    0,  1,  2,  3,  4,  5,  6,  7,
109
    8,  9, 10, 11, 12, 13, 14, 15,
110
    1,  2,  3,  4,  5,  6,  7,  1,
111
    2,  3,  4,  5,  1,  2,  3,  4,
112
    1,  2,  3,  1,  2,  3,  1,  2,
113
    1,  2,  1,  2,  1,  2,  1,  2,
114
    1,  1,  1,  1,  1,  1,  1,  1,
115
    1,  1,  1,  1,  1,  1,  1,  1
116
};
117
118
const int8_t h261_tcoeff_run[64] = {
119
    0,
120
    0,  0,  0,  0,  0,  0,  0,  0,
121
    0,  0,  0,  0,  0,  0,  0,  1,
122
    1,  1,  1,  1,  1,  1,  2,  2,
123
    2,  2,  2,  3,  3,  3,  3,  4,
124
    4,  4,  5,  5,  5,  6,  6,  7,
125
    7,  8,  8,  9,  9, 10, 10, 11,
126
   12, 13, 14, 15, 16, 17, 18, 19,
127
   20, 21, 22, 23, 24, 25, 26
128
};
129
130
static RLTable h261_rl_tcoeff = {
131
    64,
132
    64,
133
    h261_tcoeff_vlc,
134
    h261_tcoeff_run,
135
    h261_tcoeff_level,
136
};