Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h261data.h @ bb54f6ab

History | View | Annotate | Download (5.15 KB)

1 04d7f601 Diego Biurrun
/*
2
 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
3
 * copyright (c) 2004 Maarten Daniels
4
 *
5 b78e7197 Diego Biurrun
 * This file is part of FFmpeg.
6
 *
7
 * FFmpeg is free software; you can redistribute it and/or
8 04d7f601 Diego Biurrun
 * modify it under the terms of the GNU Lesser General Public
9
 * License as published by the Free Software Foundation; either
10 b78e7197 Diego Biurrun
 * version 2.1 of the License, or (at your option) any later version.
11 04d7f601 Diego Biurrun
 *
12 b78e7197 Diego Biurrun
 * FFmpeg is distributed in the hope that it will be useful,
13 04d7f601 Diego Biurrun
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15
 * Lesser General Public License for more details.
16
 *
17
 * You should have received a copy of the GNU Lesser General Public
18 b78e7197 Diego Biurrun
 * License along with FFmpeg; if not, write to the Free Software
19 04d7f601 Diego Biurrun
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
 */
21
22 c6148de2 Michael Niedermayer
/**
23
 * @file h261data.h
24
 * H.261 tables.
25
 */
26
#define MB_TYPE_H261_FIL 0x800000
27
28
// H.261 VLC table for macroblock addressing
29 8e981daf Måns Rullgård
static const uint8_t h261_mba_code[35] = {
30 c6148de2 Michael Niedermayer
     1,  3,  2,  3,
31
     2,  3,  2,  7,
32
     6, 11, 10,  9,
33
     8,  7,  6, 23,
34
    22, 21, 20, 19,
35
    18, 35, 34, 33,
36
    32, 31, 30, 29,
37
    28, 27, 26, 25,
38
    24,
39 49e5dcbc Maarten Daniels
    15,           //(MBA stuffing)
40
    1             //(start code)
41 c6148de2 Michael Niedermayer
};
42
43 8e981daf Måns Rullgård
static const uint8_t h261_mba_bits[35] = {
44 c6148de2 Michael Niedermayer
     1,  3,  3,  4,
45
     4,  5,  5,  7,
46
     7,  8,  8,  8,
47
     8,  8,  8, 10,
48
    10, 10, 10, 10,
49
    10, 11, 11, 11,
50
    11, 11, 11, 11,
51
    11, 11, 11, 11,
52
    11,
53 49e5dcbc Maarten Daniels
    11,           //(MBA stuffing)
54
    16            //(start code)
55 c6148de2 Michael Niedermayer
};
56
57
//H.261 VLC table for macroblock type
58 8e981daf Måns Rullgård
static const uint8_t h261_mtype_code[10] = {
59 c6148de2 Michael Niedermayer
    1,  1,  1,  1,
60
    1,  1,  1,  1,
61
    1,  1
62
};
63
64 8e981daf Måns Rullgård
static const uint8_t h261_mtype_bits[10] = {
65 c6148de2 Michael Niedermayer
    4,  7,  1,  5,
66
    9,  8, 10,  3,
67
    2,  6
68
};
69
70
static const int h261_mtype_map[10]= {
71
        MB_TYPE_INTRA4x4,
72
        MB_TYPE_INTRA4x4  |  MB_TYPE_QUANT,
73
                                               MB_TYPE_CBP,
74
                             MB_TYPE_QUANT  |  MB_TYPE_CBP,
75
                                                               MB_TYPE_16x16,
76
                                               MB_TYPE_CBP  |  MB_TYPE_16x16,
77
                             MB_TYPE_QUANT  |  MB_TYPE_CBP  |  MB_TYPE_16x16,
78
                                                               MB_TYPE_16x16  |  MB_TYPE_H261_FIL,
79
                                               MB_TYPE_CBP  |  MB_TYPE_16x16  |  MB_TYPE_H261_FIL,
80
                             MB_TYPE_QUANT  |  MB_TYPE_CBP  |  MB_TYPE_16x16  |  MB_TYPE_H261_FIL
81
};
82
83
//H.261 VLC table for motion vectors
84 8e981daf Måns Rullgård
static const uint8_t h261_mv_tab[17][2] = {
85 c6148de2 Michael Niedermayer
    {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
86
    {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10}, {12,10}
87
};
88
89
static const int mvmap[17] =
90
{
91 ccff9da6 Maarten Daniels
    0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16
92 c6148de2 Michael Niedermayer
};
93
94
//H.261 VLC table for coded block pattern
95 8e981daf Måns Rullgård
static const uint8_t h261_cbp_tab[63][2] =
96 c6148de2 Michael Niedermayer
{
97
    {11,5}, {9,5}, {13,6}, {13,4}, {23,7}, {19,7}, {31,8}, {12,4},
98
    {22,7}, {18,7}, {30,8}, {19,5}, {27,8}, {23,8}, {19,8}, {11,4},
99
    {21,7}, {17,7}, {29,8}, {17,5}, {25,8}, {21,8}, {17,8}, {15,6},
100
    {15,8}, {13,8}, {3,9}, {15,5}, {11,8}, {7,8}, {7,9}, {10,4},
101
    {20,7}, {16,7}, {28,8}, {14,6}, {14,8}, {12,8}, {2,9}, {16,5},
102
    {24,8}, {20,8}, {16,8}, {14,5}, {10,8}, {6,8}, {6,9}, {18,5},
103
    {26,8}, {22,8}, {18,8}, {13,5}, {9,8}, {5,8}, {5,9}, {12,5},
104
    {8,8}, {4,8}, {4,9}, {7,3}, {10,5}, {8,5}, {12,6}
105
};
106
107
//H.261 VLC table for transform coefficients
108 8e981daf Måns Rullgård
static const uint16_t h261_tcoeff_vlc[65][2] = {
109 c6148de2 Michael Niedermayer
{ 0x2, 2 }, { 0x3, 2 },{ 0x4, 4 },{ 0x5, 5 },
110
{ 0x6, 7 },{ 0x26, 8 },{ 0x21, 8 },{ 0xa, 10 },
111
{ 0x1d, 12 },{ 0x18, 12 },{ 0x13, 12 },{ 0x10 , 12 },
112
{ 0x1a, 13},{ 0x19, 13 }, { 0x18, 13 }, { 0x17, 13 },
113
{ 0x3, 3 }, { 0x6, 6 }, { 0x25 , 8 }, { 0xc, 10 },
114
{ 0x1b, 12 }, { 0x16, 13 }, { 0x15, 13 }, { 0x5, 4},
115
{ 0x4, 7}, { 0xb, 10 }, { 0x14, 12 }, { 0x14, 13 },
116
{ 0x7, 5 }, { 0x24, 8 }, { 0x1c, 12 }, { 0x13, 13 },
117
{ 0x6, 5 }, { 0xf, 10 }, { 0x12, 12}, { 0x7, 6},
118
{ 0x9 , 10 }, { 0x12, 13 }, { 0x5, 6 }, { 0x1e, 12 },
119
{ 0x4, 6 }, { 0x15, 12 }, { 0x7, 7 }, { 0x11, 12},
120
{ 0x5, 7 }, { 0x11, 13 }, { 0x27, 8 }, { 0x10, 13 },
121
{ 0x23, 8 }, { 0x22, 8 }, { 0x20, 8 }, { 0xe , 10 },
122
{ 0xd, 10 }, { 0x8, 10 },{ 0x1f, 12 }, { 0x1a, 12 },
123
{ 0x19, 12 }, { 0x17, 12 }, { 0x16, 12}, { 0x1f, 13},
124
{ 0x1e, 13 }, { 0x1d, 13 }, { 0x1c, 13}, { 0x1b, 13},
125
{ 0x1, 6 }                                             //escape
126
};
127
128 8e981daf Måns Rullgård
static const int8_t h261_tcoeff_level[64] = {
129 c6148de2 Michael Niedermayer
    0,  1,  2,  3,  4,  5,  6,  7,
130
    8,  9, 10, 11, 12, 13, 14, 15,
131
    1,  2,  3,  4,  5,  6,  7,  1,
132
    2,  3,  4,  5,  1,  2,  3,  4,
133
    1,  2,  3,  1,  2,  3,  1,  2,
134
    1,  2,  1,  2,  1,  2,  1,  2,
135
    1,  1,  1,  1,  1,  1,  1,  1,
136
    1,  1,  1,  1,  1,  1,  1,  1
137
};
138
139 8e981daf Måns Rullgård
static const int8_t h261_tcoeff_run[64] = {
140 c6148de2 Michael Niedermayer
    0,
141
    0,  0,  0,  0,  0,  0,  0,  0,
142
    0,  0,  0,  0,  0,  0,  0,  1,
143
    1,  1,  1,  1,  1,  1,  2,  2,
144
    2,  2,  2,  3,  3,  3,  3,  4,
145
    4,  4,  5,  5,  5,  6,  6,  7,
146
    7,  8,  8,  9,  9, 10, 10, 11,
147
   12, 13, 14, 15, 16, 17, 18, 19,
148
   20, 21, 22, 23, 24, 25, 26
149
};
150
151
static RLTable h261_rl_tcoeff = {
152
    64,
153
    64,
154
    h261_tcoeff_vlc,
155
    h261_tcoeff_run,
156
    h261_tcoeff_level,
157
};