Statistics
| Branch: | Revision:

ffmpeg / libavcodec / h261data.h @ 5b21bdab

History | View | Annotate | Download (5.24 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
27 5b21bdab Diego Biurrun
#ifndef FFMPEG_H261DATA_H
28
#define FFMPEG_H261DATA_H
29 699b3f99 Måns Rullgård
30 99545457 Måns Rullgård
#include <stdint.h>
31
#include "h261.h"
32
33 c6148de2 Michael Niedermayer
// H.261 VLC table for macroblock addressing
34 8e981daf Måns Rullgård
static const uint8_t h261_mba_code[35] = {
35 c6148de2 Michael Niedermayer
     1,  3,  2,  3,
36
     2,  3,  2,  7,
37
     6, 11, 10,  9,
38
     8,  7,  6, 23,
39
    22, 21, 20, 19,
40
    18, 35, 34, 33,
41
    32, 31, 30, 29,
42
    28, 27, 26, 25,
43
    24,
44 49e5dcbc Maarten Daniels
    15,           //(MBA stuffing)
45
    1             //(start code)
46 c6148de2 Michael Niedermayer
};
47
48 8e981daf Måns Rullgård
static const uint8_t h261_mba_bits[35] = {
49 c6148de2 Michael Niedermayer
     1,  3,  3,  4,
50
     4,  5,  5,  7,
51
     7,  8,  8,  8,
52
     8,  8,  8, 10,
53
    10, 10, 10, 10,
54
    10, 11, 11, 11,
55
    11, 11, 11, 11,
56
    11, 11, 11, 11,
57
    11,
58 49e5dcbc Maarten Daniels
    11,           //(MBA stuffing)
59
    16            //(start code)
60 c6148de2 Michael Niedermayer
};
61
62
//H.261 VLC table for macroblock type
63 8e981daf Måns Rullgård
static const uint8_t h261_mtype_code[10] = {
64 c6148de2 Michael Niedermayer
    1,  1,  1,  1,
65
    1,  1,  1,  1,
66
    1,  1
67
};
68
69 8e981daf Måns Rullgård
static const uint8_t h261_mtype_bits[10] = {
70 c6148de2 Michael Niedermayer
    4,  7,  1,  5,
71
    9,  8, 10,  3,
72
    2,  6
73
};
74
75
static const int h261_mtype_map[10]= {
76
        MB_TYPE_INTRA4x4,
77
        MB_TYPE_INTRA4x4  |  MB_TYPE_QUANT,
78
                                               MB_TYPE_CBP,
79
                             MB_TYPE_QUANT  |  MB_TYPE_CBP,
80
                                                               MB_TYPE_16x16,
81
                                               MB_TYPE_CBP  |  MB_TYPE_16x16,
82
                             MB_TYPE_QUANT  |  MB_TYPE_CBP  |  MB_TYPE_16x16,
83
                                                               MB_TYPE_16x16  |  MB_TYPE_H261_FIL,
84
                                               MB_TYPE_CBP  |  MB_TYPE_16x16  |  MB_TYPE_H261_FIL,
85
                             MB_TYPE_QUANT  |  MB_TYPE_CBP  |  MB_TYPE_16x16  |  MB_TYPE_H261_FIL
86
};
87
88
//H.261 VLC table for motion vectors
89 8e981daf Måns Rullgård
static const uint8_t h261_mv_tab[17][2] = {
90 c6148de2 Michael Niedermayer
    {1,1}, {1,2}, {1,3}, {1,4}, {3,6}, {5,7}, {4,7}, {3,7},
91
    {11,9}, {10,9}, {9,9}, {17,10}, {16,10}, {15,10}, {14,10}, {13,10}, {12,10}
92
};
93
94
static const int mvmap[17] =
95
{
96 ccff9da6 Maarten Daniels
    0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16
97 c6148de2 Michael Niedermayer
};
98
99
//H.261 VLC table for coded block pattern
100 8e981daf Måns Rullgård
static const uint8_t h261_cbp_tab[63][2] =
101 c6148de2 Michael Niedermayer
{
102
    {11,5}, {9,5}, {13,6}, {13,4}, {23,7}, {19,7}, {31,8}, {12,4},
103
    {22,7}, {18,7}, {30,8}, {19,5}, {27,8}, {23,8}, {19,8}, {11,4},
104
    {21,7}, {17,7}, {29,8}, {17,5}, {25,8}, {21,8}, {17,8}, {15,6},
105
    {15,8}, {13,8}, {3,9}, {15,5}, {11,8}, {7,8}, {7,9}, {10,4},
106
    {20,7}, {16,7}, {28,8}, {14,6}, {14,8}, {12,8}, {2,9}, {16,5},
107
    {24,8}, {20,8}, {16,8}, {14,5}, {10,8}, {6,8}, {6,9}, {18,5},
108
    {26,8}, {22,8}, {18,8}, {13,5}, {9,8}, {5,8}, {5,9}, {12,5},
109
    {8,8}, {4,8}, {4,9}, {7,3}, {10,5}, {8,5}, {12,6}
110
};
111
112
//H.261 VLC table for transform coefficients
113 8e981daf Måns Rullgård
static const uint16_t h261_tcoeff_vlc[65][2] = {
114 c6148de2 Michael Niedermayer
{ 0x2, 2 }, { 0x3, 2 },{ 0x4, 4 },{ 0x5, 5 },
115
{ 0x6, 7 },{ 0x26, 8 },{ 0x21, 8 },{ 0xa, 10 },
116
{ 0x1d, 12 },{ 0x18, 12 },{ 0x13, 12 },{ 0x10 , 12 },
117
{ 0x1a, 13},{ 0x19, 13 }, { 0x18, 13 }, { 0x17, 13 },
118
{ 0x3, 3 }, { 0x6, 6 }, { 0x25 , 8 }, { 0xc, 10 },
119
{ 0x1b, 12 }, { 0x16, 13 }, { 0x15, 13 }, { 0x5, 4},
120
{ 0x4, 7}, { 0xb, 10 }, { 0x14, 12 }, { 0x14, 13 },
121
{ 0x7, 5 }, { 0x24, 8 }, { 0x1c, 12 }, { 0x13, 13 },
122
{ 0x6, 5 }, { 0xf, 10 }, { 0x12, 12}, { 0x7, 6},
123
{ 0x9 , 10 }, { 0x12, 13 }, { 0x5, 6 }, { 0x1e, 12 },
124
{ 0x4, 6 }, { 0x15, 12 }, { 0x7, 7 }, { 0x11, 12},
125
{ 0x5, 7 }, { 0x11, 13 }, { 0x27, 8 }, { 0x10, 13 },
126
{ 0x23, 8 }, { 0x22, 8 }, { 0x20, 8 }, { 0xe , 10 },
127
{ 0xd, 10 }, { 0x8, 10 },{ 0x1f, 12 }, { 0x1a, 12 },
128
{ 0x19, 12 }, { 0x17, 12 }, { 0x16, 12}, { 0x1f, 13},
129
{ 0x1e, 13 }, { 0x1d, 13 }, { 0x1c, 13}, { 0x1b, 13},
130
{ 0x1, 6 }                                             //escape
131
};
132
133 8e981daf Måns Rullgård
static const int8_t h261_tcoeff_level[64] = {
134 c6148de2 Michael Niedermayer
    0,  1,  2,  3,  4,  5,  6,  7,
135
    8,  9, 10, 11, 12, 13, 14, 15,
136
    1,  2,  3,  4,  5,  6,  7,  1,
137
    2,  3,  4,  5,  1,  2,  3,  4,
138
    1,  2,  3,  1,  2,  3,  1,  2,
139
    1,  2,  1,  2,  1,  2,  1,  2,
140
    1,  1,  1,  1,  1,  1,  1,  1,
141
    1,  1,  1,  1,  1,  1,  1,  1
142
};
143
144 8e981daf Måns Rullgård
static const int8_t h261_tcoeff_run[64] = {
145 c6148de2 Michael Niedermayer
    0,
146
    0,  0,  0,  0,  0,  0,  0,  0,
147
    0,  0,  0,  0,  0,  0,  0,  1,
148
    1,  1,  1,  1,  1,  1,  2,  2,
149
    2,  2,  2,  3,  3,  3,  3,  4,
150
    4,  4,  5,  5,  5,  6,  6,  7,
151
    7,  8,  8,  9,  9, 10, 10, 11,
152
   12, 13, 14, 15, 16, 17, 18, 19,
153
   20, 21, 22, 23, 24, 25, 26
154
};
155
156
static RLTable h261_rl_tcoeff = {
157
    64,
158
    64,
159
    h261_tcoeff_vlc,
160
    h261_tcoeff_run,
161
    h261_tcoeff_level,
162
};
163 699b3f99 Måns Rullgård
164 5b21bdab Diego Biurrun
#endif /* FFMPEG_H261DATA_H */