VirtualBox

source: vbox/trunk/src/libs/ffmpeg-20060710/libavcodec/h261data.h@ 7789

Last change on this file since 7789 was 5776, checked in by vboxsync, 17 years ago

ffmpeg: exported to OSE

File size: 4.2 KB
Line 
1/**
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
8const uint8_t h261_mba_code[35] = {
9 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 15, //(MBA stuffing)
19 1 //(start code)
20};
21
22const uint8_t h261_mba_bits[35] = {
23 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 11, //(MBA stuffing)
33 16 //(start code)
34};
35
36//H.261 VLC table for macroblock type
37const uint8_t h261_mtype_code[10] = {
38 1, 1, 1, 1,
39 1, 1, 1, 1,
40 1, 1
41};
42
43const uint8_t h261_mtype_bits[10] = {
44 4, 7, 1, 5,
45 9, 8, 10, 3,
46 2, 6
47};
48
49static 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
63const 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
68static const int mvmap[17] =
69{
70 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16
71};
72
73//H.261 VLC table for coded block pattern
74const 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
87const 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
107const 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
118const 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
130static RLTable h261_rl_tcoeff = {
131 64,
132 64,
133 h261_tcoeff_vlc,
134 h261_tcoeff_run,
135 h261_tcoeff_level,
136};
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette