add multiple inclusion guards to headers
[libav.git] / libavcodec / h261data.h
CommitLineData
04d7f601
DB
1/*
2 * copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at>
3 * copyright (c) 2004 Maarten Daniels
4 *
b78e7197
DB
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
04d7f601
DB
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
b78e7197 10 * version 2.1 of the License, or (at your option) any later version.
04d7f601 11 *
b78e7197 12 * FFmpeg is distributed in the hope that it will be useful,
04d7f601
DB
13 * 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
b78e7197 18 * License along with FFmpeg; if not, write to the Free Software
04d7f601
DB
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
c6148de2
MN
22/**
23 * @file h261data.h
24 * H.261 tables.
25 */
c6148de2 26
699b3f99
MR
27#ifndef AVCODEC_H261DATA_H
28#define AVCODEC_H261DATA_H
29
99545457
MR
30#include <stdint.h>
31#include "h261.h"
32
c6148de2 33// H.261 VLC table for macroblock addressing
8e981daf 34static const uint8_t h261_mba_code[35] = {
c6148de2
MN
35 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,
49e5dcbc
MD
44 15, //(MBA stuffing)
45 1 //(start code)
c6148de2
MN
46};
47
8e981daf 48static const uint8_t h261_mba_bits[35] = {
c6148de2
MN
49 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,
49e5dcbc
MD
58 11, //(MBA stuffing)
59 16 //(start code)
c6148de2
MN
60};
61
62//H.261 VLC table for macroblock type
8e981daf 63static const uint8_t h261_mtype_code[10] = {
c6148de2
MN
64 1, 1, 1, 1,
65 1, 1, 1, 1,
66 1, 1
67};
68
8e981daf 69static const uint8_t h261_mtype_bits[10] = {
c6148de2
MN
70 4, 7, 1, 5,
71 9, 8, 10, 3,
72 2, 6
73};
74
75static 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
8e981daf 89static const uint8_t h261_mv_tab[17][2] = {
c6148de2
MN
90 {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
94static const int mvmap[17] =
95{
ccff9da6 96 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16
c6148de2
MN
97};
98
99//H.261 VLC table for coded block pattern
8e981daf 100static const uint8_t h261_cbp_tab[63][2] =
c6148de2
MN
101{
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
8e981daf 113static const uint16_t h261_tcoeff_vlc[65][2] = {
c6148de2
MN
114{ 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
8e981daf 133static const int8_t h261_tcoeff_level[64] = {
c6148de2
MN
134 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
8e981daf 144static const int8_t h261_tcoeff_run[64] = {
c6148de2
MN
145 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
156static RLTable h261_rl_tcoeff = {
157 64,
158 64,
159 h261_tcoeff_vlc,
160 h261_tcoeff_run,
161 h261_tcoeff_level,
162};
699b3f99
MR
163
164#endif