annotate mpeg4data.h @ 2497:69adfbbdcdeb libavcodec

- samples from mplayer ftp in the "adv" profile seem to have profile=2, which isn't the advanced one; and indeed, using adv. profile parser fails. Using normal parser works, and that's what is done - attempt at taking care of stride for NORM2 bitplane decoding - duplication of much code from msmpeg4.c; this code isn't yet used, but goes down as far as the block layer (mainly Transform Type stuff, the remains are wild editing without checking). Unusable yet, and lacks the AC decoding (but a step further in bitstream parsing) patch by anonymous
author michael
date Fri, 04 Feb 2005 02:20:38 +0000
parents dd544554ed42
children ba8ecddf5598
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1106
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
1 /**
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
2 * @file mpeg4data.h
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
3 * mpeg4 tables.
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
4 */
1e39f273ecd6 per file doxy
michaelni
parents: 1064
diff changeset
5
253
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
6 // shapes
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
7 #define RECT_SHAPE 0
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
8 #define BIN_SHAPE 1
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
9 #define BIN_ONLY_SHAPE 2
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
10 #define GRAY_SHAPE 3
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
11
923
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
12 #define SIMPLE_VO_TYPE 1
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
13 #define CORE_VO_TYPE 3
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
14 #define MAIN_VO_TYPE 4
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
15 #define NBIT_VO_TYPE 5
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
16 #define ARTS_VO_TYPE 10
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
17 #define ACE_VO_TYPE 12
3b5d9ecedc73 correct mpeg4 vo type
michaelni
parents: 745
diff changeset
18 #define ADV_SIMPLE_VO_TYPE 17
336
c56b45669214 export delay info
michaelni
parents: 312
diff changeset
19
253
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
20 // aspect_ratio_info
355
ac6fc4c7aecb - H263 PAR support by Alex Beregszaszi.
pulento
parents: 336
diff changeset
21 #define EXTENDED_PAR 15
253
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
22
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
23 //vol_sprite_usage / sprite_enable
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
24 #define STATIC_SPRITE 1
4448dd55d415 parsing more of the mpeg4 header & print some "not supported" stuff
michaelni
parents: 39
diff changeset
25 #define GMC_SPRITE 2
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
26
458
e573f907734d data partitioning
michaelni
parents: 355
diff changeset
27 #define MOTION_MARKER 0x1F001
e573f907734d data partitioning
michaelni
parents: 355
diff changeset
28 #define DC_MARKER 0x6B001
e573f907734d data partitioning
michaelni
parents: 355
diff changeset
29
1349
89e6c3ce263a warning fix
al3x
parents: 1177
diff changeset
30 static const int mb_type_b_map[4]= {
1177
fea03d2c4946 simplified adressing of most mb based arrays (mb_x + mb_y*s->mb_stride) now instead of mb_x + mb_y*mb_width and 1+mb_x + (1+mb_y)*(mb_width+2) and ... mixture
michaelni
parents: 1132
diff changeset
31 MB_TYPE_DIRECT2 | MB_TYPE_L0L1,
fea03d2c4946 simplified adressing of most mb based arrays (mb_x + mb_y*s->mb_stride) now instead of mb_x + mb_y*mb_width and 1+mb_x + (1+mb_y)*(mb_width+2) and ... mixture
michaelni
parents: 1132
diff changeset
32 MB_TYPE_L0L1 | MB_TYPE_16x16,
fea03d2c4946 simplified adressing of most mb based arrays (mb_x + mb_y*s->mb_stride) now instead of mb_x + mb_y*mb_width and 1+mb_x + (1+mb_y)*(mb_width+2) and ... mixture
michaelni
parents: 1132
diff changeset
33 MB_TYPE_L1 | MB_TYPE_16x16,
fea03d2c4946 simplified adressing of most mb based arrays (mb_x + mb_y*s->mb_stride) now instead of mb_x + mb_y*mb_width and 1+mb_x + (1+mb_y)*(mb_width+2) and ... mixture
michaelni
parents: 1132
diff changeset
34 MB_TYPE_L0 | MB_TYPE_16x16,
fea03d2c4946 simplified adressing of most mb based arrays (mb_x + mb_y*s->mb_stride) now instead of mb_x + mb_y*mb_width and 1+mb_x + (1+mb_y)*(mb_width+2) and ... mixture
michaelni
parents: 1132
diff changeset
35 };
458
e573f907734d data partitioning
michaelni
parents: 355
diff changeset
36
942
c237f5db1c22 correcter mpeg4 headers
michaelni
parents: 923
diff changeset
37 #define VOS_STARTCODE 0x1B0
c237f5db1c22 correcter mpeg4 headers
michaelni
parents: 923
diff changeset
38 #define USER_DATA_STARTCODE 0x1B2
c237f5db1c22 correcter mpeg4 headers
michaelni
parents: 923
diff changeset
39 #define GOP_STARTCODE 0x1B3
c237f5db1c22 correcter mpeg4 headers
michaelni
parents: 923
diff changeset
40 #define VISUAL_OBJ_STARTCODE 0x1B5
c237f5db1c22 correcter mpeg4 headers
michaelni
parents: 923
diff changeset
41 #define VOP_STARTCODE 0x1B6
c237f5db1c22 correcter mpeg4 headers
michaelni
parents: 923
diff changeset
42
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
43 /* dc encoding for mpeg4 */
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
44 const uint8_t DCtab_lum[13][2] =
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
45 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
46 {3,3}, {3,2}, {2,2}, {2,3}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7},
986e461dc072 Initial revision
glantau
parents:
diff changeset
47 {1,8}, {1,9}, {1,10}, {1,11},
986e461dc072 Initial revision
glantau
parents:
diff changeset
48 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
49
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
50 const uint8_t DCtab_chrom[13][2] =
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
51 {
986e461dc072 Initial revision
glantau
parents:
diff changeset
52 {3,2}, {2,2}, {1,2}, {1,3}, {1,4}, {1,5}, {1,6}, {1,7}, {1,8},
986e461dc072 Initial revision
glantau
parents:
diff changeset
53 {1,9}, {1,10}, {1,11}, {1,12},
986e461dc072 Initial revision
glantau
parents:
diff changeset
54 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
55
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
56 const uint16_t intra_vlc[103][2] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
57 { 0x2, 2 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
58 { 0x6, 3 },{ 0xf, 4 },{ 0xd, 5 },{ 0xc, 5 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
59 { 0x15, 6 },{ 0x13, 6 },{ 0x12, 6 },{ 0x17, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
60 { 0x1f, 8 },{ 0x1e, 8 },{ 0x1d, 8 },{ 0x25, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
61 { 0x24, 9 },{ 0x23, 9 },{ 0x21, 9 },{ 0x21, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
62 { 0x20, 10 },{ 0xf, 10 },{ 0xe, 10 },{ 0x7, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
63 { 0x6, 11 },{ 0x20, 11 },{ 0x21, 11 },{ 0x50, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
64 { 0x51, 12 },{ 0x52, 12 },{ 0xe, 4 },{ 0x14, 6 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
65 { 0x16, 7 },{ 0x1c, 8 },{ 0x20, 9 },{ 0x1f, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
66 { 0xd, 10 },{ 0x22, 11 },{ 0x53, 12 },{ 0x55, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
67 { 0xb, 5 },{ 0x15, 7 },{ 0x1e, 9 },{ 0xc, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
68 { 0x56, 12 },{ 0x11, 6 },{ 0x1b, 8 },{ 0x1d, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
69 { 0xb, 10 },{ 0x10, 6 },{ 0x22, 9 },{ 0xa, 10 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
70 { 0xd, 6 },{ 0x1c, 9 },{ 0x8, 10 },{ 0x12, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
71 { 0x1b, 9 },{ 0x54, 12 },{ 0x14, 7 },{ 0x1a, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
72 { 0x57, 12 },{ 0x19, 8 },{ 0x9, 10 },{ 0x18, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
73 { 0x23, 11 },{ 0x17, 8 },{ 0x19, 9 },{ 0x18, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
74 { 0x7, 10 },{ 0x58, 12 },{ 0x7, 4 },{ 0xc, 6 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
75 { 0x16, 8 },{ 0x17, 9 },{ 0x6, 10 },{ 0x5, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
76 { 0x4, 11 },{ 0x59, 12 },{ 0xf, 6 },{ 0x16, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
77 { 0x5, 10 },{ 0xe, 6 },{ 0x4, 10 },{ 0x11, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
78 { 0x24, 11 },{ 0x10, 7 },{ 0x25, 11 },{ 0x13, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
79 { 0x5a, 12 },{ 0x15, 8 },{ 0x5b, 12 },{ 0x14, 8 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
80 { 0x13, 8 },{ 0x1a, 8 },{ 0x15, 9 },{ 0x14, 9 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
81 { 0x13, 9 },{ 0x12, 9 },{ 0x11, 9 },{ 0x26, 11 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
82 { 0x27, 11 },{ 0x5c, 12 },{ 0x5d, 12 },{ 0x5e, 12 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
83 { 0x5f, 12 },{ 0x3, 7 },
986e461dc072 Initial revision
glantau
parents:
diff changeset
84 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
85
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
86 const int8_t intra_level[102] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
87 1, 2, 3, 4, 5, 6, 7, 8,
986e461dc072 Initial revision
glantau
parents:
diff changeset
88 9, 10, 11, 12, 13, 14, 15, 16,
986e461dc072 Initial revision
glantau
parents:
diff changeset
89 17, 18, 19, 20, 21, 22, 23, 24,
986e461dc072 Initial revision
glantau
parents:
diff changeset
90 25, 26, 27, 1, 2, 3, 4, 5,
986e461dc072 Initial revision
glantau
parents:
diff changeset
91 6, 7, 8, 9, 10, 1, 2, 3,
986e461dc072 Initial revision
glantau
parents:
diff changeset
92 4, 5, 1, 2, 3, 4, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
93 3, 1, 2, 3, 1, 2, 3, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
94 2, 3, 1, 2, 1, 2, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
95 1, 1, 1, 1, 2, 3, 4, 5,
986e461dc072 Initial revision
glantau
parents:
diff changeset
96 6, 7, 8, 1, 2, 3, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
97 1, 2, 1, 2, 1, 2, 1, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
98 1, 1, 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
99 1, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
100 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
101
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
102 const int8_t intra_run[102] = {
0
986e461dc072 Initial revision
glantau
parents:
diff changeset
103 0, 0, 0, 0, 0, 0, 0, 0,
986e461dc072 Initial revision
glantau
parents:
diff changeset
104 0, 0, 0, 0, 0, 0, 0, 0,
986e461dc072 Initial revision
glantau
parents:
diff changeset
105 0, 0, 0, 0, 0, 0, 0, 0,
986e461dc072 Initial revision
glantau
parents:
diff changeset
106 0, 0, 0, 1, 1, 1, 1, 1,
986e461dc072 Initial revision
glantau
parents:
diff changeset
107 1, 1, 1, 1, 1, 2, 2, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
108 2, 2, 3, 3, 3, 3, 4, 4,
986e461dc072 Initial revision
glantau
parents:
diff changeset
109 4, 5, 5, 5, 6, 6, 6, 7,
986e461dc072 Initial revision
glantau
parents:
diff changeset
110 7, 7, 8, 8, 9, 9, 10, 11,
986e461dc072 Initial revision
glantau
parents:
diff changeset
111 12, 13, 14, 0, 0, 0, 0, 0,
986e461dc072 Initial revision
glantau
parents:
diff changeset
112 0, 0, 0, 1, 1, 1, 2, 2,
986e461dc072 Initial revision
glantau
parents:
diff changeset
113 3, 3, 4, 4, 5, 5, 6, 6,
986e461dc072 Initial revision
glantau
parents:
diff changeset
114 7, 8, 9, 10, 11, 12, 13, 14,
986e461dc072 Initial revision
glantau
parents:
diff changeset
115 15, 16, 17, 18, 19, 20,
986e461dc072 Initial revision
glantau
parents:
diff changeset
116 };
986e461dc072 Initial revision
glantau
parents:
diff changeset
117
986e461dc072 Initial revision
glantau
parents:
diff changeset
118 static RLTable rl_intra = {
986e461dc072 Initial revision
glantau
parents:
diff changeset
119 102,
986e461dc072 Initial revision
glantau
parents:
diff changeset
120 67,
986e461dc072 Initial revision
glantau
parents:
diff changeset
121 intra_vlc,
986e461dc072 Initial revision
glantau
parents:
diff changeset
122 intra_run,
986e461dc072 Initial revision
glantau
parents:
diff changeset
123 intra_level,
986e461dc072 Initial revision
glantau
parents:
diff changeset
124 };
254
b4fed8b24e3a gmc bitstream decoding support (the real motion compensation isnt implemnted yet)
michaelni
parents: 253
diff changeset
125
1132
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
126 static const uint16_t inter_rvlc[170][2]={ //note this is identical to the intra rvlc except that its reordered
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
127 {0x0006, 3},{0x0001, 4},{0x0004, 5},{0x001C, 7},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
128 {0x003C, 8},{0x003D, 8},{0x007C, 9},{0x00FC, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
129 {0x00FD, 10},{0x01FC, 11},{0x01FD, 11},{0x03FC, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
130 {0x07FC, 13},{0x07FD, 13},{0x0BFC, 13},{0x0BFD, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
131 {0x0FFC, 14},{0x0FFD, 14},{0x1FFC, 15},{0x0007, 3},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
132 {0x000C, 6},{0x005C, 8},{0x007D, 9},{0x017C, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
133 {0x02FC, 11},{0x03FD, 12},{0x0DFC, 13},{0x17FC, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
134 {0x17FD, 14},{0x000A, 4},{0x001D, 7},{0x00BC, 9},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
135 {0x02FD, 11},{0x05FC, 12},{0x1BFC, 14},{0x1BFD, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
136 {0x0005, 5},{0x005D, 8},{0x017D, 10},{0x05FD, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
137 {0x0DFD, 13},{0x1DFC, 14},{0x1FFD, 15},{0x0008, 5},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
138 {0x006C, 8},{0x037C, 11},{0x0EFC, 13},{0x2FFC, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
139 {0x0009, 5},{0x00BD, 9},{0x037D, 11},{0x0EFD, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
140 {0x000D, 6},{0x01BC, 10},{0x06FC, 12},{0x1DFD, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
141 {0x0014, 6},{0x01BD, 10},{0x06FD, 12},{0x2FFD, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
142 {0x0015, 6},{0x01DC, 10},{0x0F7C, 13},{0x002C, 7},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
143 {0x01DD, 10},{0x1EFC, 14},{0x002D, 7},{0x03BC, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
144 {0x0034, 7},{0x077C, 12},{0x006D, 8},{0x0F7D, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
145 {0x0074, 8},{0x1EFD, 14},{0x0075, 8},{0x1F7C, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
146 {0x00DC, 9},{0x1F7D, 14},{0x00DD, 9},{0x1FBC, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
147 {0x00EC, 9},{0x37FC, 15},{0x01EC, 10},{0x01ED, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
148 {0x01F4, 10},{0x03BD, 11},{0x03DC, 11},{0x03DD, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
149 {0x03EC, 11},{0x03ED, 11},{0x03F4, 11},{0x077D, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
150 {0x07BC, 12},{0x07BD, 12},{0x0FBC, 13},{0x0FBD, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
151 {0x0FDC, 13},{0x0FDD, 13},{0x1FBD, 14},{0x1FDC, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
152 {0x1FDD, 14},{0x37FD, 15},{0x3BFC, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
153 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
154 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
155 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
156 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
157 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
158 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
159 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
160 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
161 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
162 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
163 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
164 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
165 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
166 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
167 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
168 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
169 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
170 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
171
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
172 static const uint8_t inter_rvlc_run[169]={
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
173 0, 0, 0, 0, 0, 0, 0, 0,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
174 0, 0, 0, 0, 0, 0, 0, 0,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
175 0, 0, 0, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
176 1, 1, 1, 1, 1, 2, 2, 2,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
177 2, 2, 2, 2, 3, 3, 3, 3,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
178 3, 3, 3, 4, 4, 4, 4, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
179 5, 5, 5, 5, 6, 6, 6, 6,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
180 7, 7, 7, 7, 8, 8, 8, 9,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
181 9, 9, 10, 10, 11, 11, 12, 12,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
182 13, 13, 14, 14, 15, 15, 16, 16,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
183 17, 17, 18, 19, 20, 21, 22, 23,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
184 24, 25, 26, 27, 28, 29, 30, 31,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
185 32, 33, 34, 35, 36, 37, 38,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
186 0, 0, 0, 0, 0, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
187 1, 1, 2, 2, 2, 3, 3, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
188 4, 5, 5, 6, 6, 7, 7, 8,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
189 8, 9, 9, 10, 10, 11, 11, 12,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
190 12, 13, 13, 14, 15, 16, 17, 18,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
191 19, 20, 21, 22, 23, 24, 25, 26,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
192 27, 28, 29, 30, 31, 32, 33, 34,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
193 35, 36, 37, 38, 39, 40, 41, 42,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
194 43, 44,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
195 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
196
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
197 static const uint8_t inter_rvlc_level[169]={
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
198 1, 2, 3, 4, 5, 6, 7, 8,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
199 9, 10, 11, 12, 13, 14, 15, 16,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
200 17, 18, 19, 1, 2, 3, 4, 5,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
201 6, 7, 8, 9, 10, 1, 2, 3,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
202 4, 5, 6, 7, 1, 2, 3, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
203 5, 6, 7, 1, 2, 3, 4, 5,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
204 1, 2, 3, 4, 1, 2, 3, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
205 1, 2, 3, 4, 1, 2, 3, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
206 2, 3, 1, 2, 1, 2, 1, 2,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
207 1, 2, 1, 2, 1, 2, 1, 2,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
208 1, 2, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
209 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
210 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
211 1, 2, 3, 4, 5, 1, 2, 3,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
212 4, 5, 1, 2, 3, 1, 2, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
213 2, 1, 2, 1, 2, 1, 2, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
214 2, 1, 2, 1, 2, 1, 2, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
215 2, 1, 2, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
216 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
217 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
218 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
219 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
220 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
221
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
222 static RLTable rvlc_rl_inter = {
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
223 169,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
224 103,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
225 inter_rvlc,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
226 inter_rvlc_run,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
227 inter_rvlc_level,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
228 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
229
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
230 static const uint16_t intra_rvlc[170][2]={
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
231 {0x0006, 3},{0x0007, 3},{0x000A, 4},{0x0009, 5},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
232 {0x0014, 6},{0x0015, 6},{0x0034, 7},{0x0074, 8},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
233 {0x0075, 8},{0x00DD, 9},{0x00EC, 9},{0x01EC, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
234 {0x01ED, 10},{0x01F4, 10},{0x03EC, 11},{0x03ED, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
235 {0x03F4, 11},{0x077D, 12},{0x07BC, 12},{0x0FBD, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
236 {0x0FDC, 13},{0x07BD, 12},{0x0FDD, 13},{0x1FBD, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
237 {0x1FDC, 14},{0x1FDD, 14},{0x1FFC, 15},{0x0001, 4},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
238 {0x0008, 5},{0x002D, 7},{0x006C, 8},{0x006D, 8},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
239 {0x00DC, 9},{0x01DD, 10},{0x03DC, 11},{0x03DD, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
240 {0x077C, 12},{0x0FBC, 13},{0x1F7D, 14},{0x1FBC, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
241 {0x0004, 5},{0x002C, 7},{0x00BC, 9},{0x01DC, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
242 {0x03BC, 11},{0x03BD, 11},{0x0EFD, 13},{0x0F7C, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
243 {0x0F7D, 13},{0x1EFD, 14},{0x1F7C, 14},{0x0005, 5},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
244 {0x005C, 8},{0x00BD, 9},{0x037D, 11},{0x06FC, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
245 {0x0EFC, 13},{0x1DFD, 14},{0x1EFC, 14},{0x1FFD, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
246 {0x000C, 6},{0x005D, 8},{0x01BD, 10},{0x03FD, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
247 {0x06FD, 12},{0x1BFD, 14},{0x000D, 6},{0x007D, 9},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
248 {0x02FC, 11},{0x05FC, 12},{0x1BFC, 14},{0x1DFC, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
249 {0x001C, 7},{0x017C, 10},{0x02FD, 11},{0x05FD, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
250 {0x2FFC, 15},{0x001D, 7},{0x017D, 10},{0x037C, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
251 {0x0DFD, 13},{0x2FFD, 15},{0x003C, 8},{0x01BC, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
252 {0x0BFD, 13},{0x17FD, 14},{0x003D, 8},{0x01FD, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
253 {0x0DFC, 13},{0x37FC, 15},{0x007C, 9},{0x03FC, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
254 {0x00FC, 10},{0x0BFC, 13},{0x00FD, 10},{0x37FD, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
255 {0x01FC, 11},{0x07FC, 13},{0x07FD, 13},{0x0FFC, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
256 {0x0FFD, 14},{0x17FC, 14},{0x3BFC, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
257 {0x000B, 4},{0x0078, 8},{0x03F5, 11},{0x0FEC, 13},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
258 {0x1FEC, 14},{0x0012, 5},{0x00ED, 9},{0x07DC, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
259 {0x1FED, 14},{0x3BFD, 15},{0x0013, 5},{0x03F8, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
260 {0x3DFC, 15},{0x0018, 6},{0x07DD, 12},{0x0019, 6},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
261 {0x07EC, 12},{0x0022, 6},{0x0FED, 13},{0x0023, 6},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
262 {0x0FF4, 13},{0x0035, 7},{0x0FF5, 13},{0x0038, 7},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
263 {0x0FF8, 13},{0x0039, 7},{0x0FF9, 13},{0x0042, 7},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
264 {0x1FF4, 14},{0x0043, 7},{0x1FF5, 14},{0x0079, 8},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
265 {0x1FF8, 14},{0x0082, 8},{0x3DFD, 15},{0x0083, 8},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
266 {0x00F4, 9},{0x00F5, 9},{0x00F8, 9},{0x00F9, 9},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
267 {0x0102, 9},{0x0103, 9},{0x01F5, 10},{0x01F8, 10},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
268 {0x01F9, 10},{0x0202, 10},{0x0203, 10},{0x03F9, 11},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
269 {0x0402, 11},{0x0403, 11},{0x07ED, 12},{0x07F4, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
270 {0x07F5, 12},{0x07F8, 12},{0x07F9, 12},{0x0802, 12},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
271 {0x0803, 12},{0x1002, 13},{0x1003, 13},{0x1FF9, 14},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
272 {0x2002, 14},{0x2003, 14},{0x3EFC, 15},{0x3EFD, 15},
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
273 {0x3F7C, 15},{0x3F7D, 15},{0x0000, 4}
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
274 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
275
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
276 static const uint8_t intra_rvlc_run[169]={
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
277 0, 0, 0, 0, 0, 0, 0, 0,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
278 0, 0, 0, 0, 0, 0, 0, 0,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
279 0, 0, 0, 0, 0, 0, 0, 0,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
280 0, 0, 0, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
281 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
282 2, 2, 2, 2, 2, 2, 2, 2,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
283 2, 2, 2, 3, 3, 3, 3, 3,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
284 3, 3, 3, 3, 4, 4, 4, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
285 4, 4, 5, 5, 5, 5, 5, 5,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
286 6, 6, 6, 6, 6, 7, 7, 7,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
287 7, 7, 8, 8, 8, 8, 9, 9,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
288 9, 9, 10, 10, 11, 11, 12, 12,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
289 13, 14, 15, 16, 17, 18, 19,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
290 0, 0, 0, 0, 0, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
291 1, 1, 2, 2, 2, 3, 3, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
292 4, 5, 5, 6, 6, 7, 7, 8,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
293 8, 9, 9, 10, 10, 11, 11, 12,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
294 12, 13, 13, 14, 15, 16, 17, 18,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
295 19, 20, 21, 22, 23, 24, 25, 26,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
296 27, 28, 29, 30, 31, 32, 33, 34,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
297 35, 36, 37, 38, 39, 40, 41, 42,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
298 43, 44,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
299 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
300
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
301 static const uint8_t intra_rvlc_level[169]={
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
302 1, 2, 3, 4, 5, 6, 7, 8,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
303 9, 10, 11, 12, 13, 14, 15, 16,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
304 17, 18, 19, 20, 21, 22, 23, 24,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
305 25, 26, 27, 1, 2, 3, 4, 5,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
306 6, 7, 8, 9, 10, 11, 12, 13,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
307 1, 2, 3, 4, 5, 6, 7, 8,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
308 9, 10, 11, 1, 2, 3, 4, 5,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
309 6, 7, 8, 9, 1, 2, 3, 4,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
310 5, 6, 1, 2, 3, 4, 5, 6,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
311 1, 2, 3, 4, 5, 1, 2, 3,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
312 4, 5, 1, 2, 3, 4, 1, 2,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
313 3, 4, 1, 2, 1, 2, 1, 2,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
314 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
315 1, 2, 3, 4, 5, 1, 2, 3,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
316 4, 5, 1, 2, 3, 1, 2, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
317 2, 1, 2, 1, 2, 1, 2, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
318 2, 1, 2, 1, 2, 1, 2, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
319 2, 1, 2, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
320 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
321 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
322 1, 1, 1, 1, 1, 1, 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
323 1, 1,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
324 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
325
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
326 static RLTable rvlc_rl_intra = {
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
327 169,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
328 103,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
329 intra_rvlc,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
330 intra_rvlc_run,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
331 intra_rvlc_level,
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
332 };
61c89e8ffa88 rvlc decoding support
michaelni
parents: 1106
diff changeset
333
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
334 static const uint16_t sprite_trajectory_tab[15][2] = {
254
b4fed8b24e3a gmc bitstream decoding support (the real motion compensation isnt implemnted yet)
michaelni
parents: 253
diff changeset
335 {0x00, 2}, {0x02, 3}, {0x03, 3}, {0x04, 3}, {0x05, 3}, {0x06, 3},
b4fed8b24e3a gmc bitstream decoding support (the real motion compensation isnt implemnted yet)
michaelni
parents: 253
diff changeset
336 {0x0E, 4}, {0x1E, 5}, {0x3E, 6}, {0x7E, 7}, {0xFE, 8},
b4fed8b24e3a gmc bitstream decoding support (the real motion compensation isnt implemnted yet)
michaelni
parents: 253
diff changeset
337 {0x1FE, 9},{0x3FE, 10},{0x7FE, 11},{0xFFE, 12},
b4fed8b24e3a gmc bitstream decoding support (the real motion compensation isnt implemnted yet)
michaelni
parents: 253
diff changeset
338 };
262
7d941b8c4e84 mpeg4 b-frames :)
michaelni
parents: 254
diff changeset
339
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
340 static const uint8_t mb_type_b_tab[4][2] = {
262
7d941b8c4e84 mpeg4 b-frames :)
michaelni
parents: 254
diff changeset
341 {1, 1}, {1, 2}, {1, 3}, {1, 4},
7d941b8c4e84 mpeg4 b-frames :)
michaelni
parents: 254
diff changeset
342 };
307
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
343
1548
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
344 static const AVRational pixel_aspect[16]={
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
345 {0, 1},
307
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
346 {1, 1},
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
347 {12, 11},
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
348 {10, 11},
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
349 {16, 11},
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
350 {40, 33},
1548
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
351 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
352 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
353 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
354 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
355 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
356 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
357 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
358 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
359 {0, 1},
dd544554ed42 AVRational
michael
parents: 1520
diff changeset
360 {0, 1},
307
764aeec1320e msmpeg4v2 decoding (no encoding yet)
michaelni
parents: 262
diff changeset
361 };
312
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
362
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
363 /* these matrixes will be permuted for the idct */
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
364 const int16_t ff_mpeg4_default_intra_matrix[64] = {
312
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
365 8, 17, 18, 19, 21, 23, 25, 27,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
366 17, 18, 19, 21, 23, 25, 27, 28,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
367 20, 21, 22, 23, 24, 26, 28, 30,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
368 21, 22, 23, 24, 26, 28, 30, 32,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
369 22, 23, 24, 26, 28, 30, 32, 35,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
370 23, 24, 26, 28, 30, 32, 35, 38,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
371 25, 26, 28, 30, 32, 35, 38, 41,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
372 27, 28, 30, 32, 35, 38, 41, 45,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
373 };
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
374
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
375 const int16_t ff_mpeg4_default_non_intra_matrix[64] = {
312
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
376 16, 17, 18, 19, 20, 21, 22, 23,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
377 17, 18, 19, 20, 21, 22, 23, 24,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
378 18, 19, 20, 21, 22, 23, 24, 25,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
379 19, 20, 21, 22, 23, 24, 26, 27,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
380 20, 21, 22, 23, 25, 26, 27, 28,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
381 21, 22, 23, 24, 26, 27, 28, 30,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
382 22, 23, 24, 26, 27, 28, 30, 31,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
383 23, 24, 25, 27, 28, 30, 31, 33,
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
384 };
8cf5507e6ca5 mpeg4 mpeg quantizer support
michaelni
parents: 307
diff changeset
385
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
386 uint8_t ff_mpeg4_y_dc_scale_table[32]={
498
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
387 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
388 0, 8, 8, 8, 8,10,12,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,38,40,42,44,46
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
389 };
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
390 uint8_t ff_mpeg4_c_dc_scale_table[32]={
498
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
391 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
392 0, 8, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,20,21,22,23,24,25
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
393 };
0b4450c15067 dc scale simplification/optimization
michaelni
parents: 458
diff changeset
394
1064
b32afefe7d33 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 942
diff changeset
395 const uint16_t ff_mpeg4_resync_prefix[8]={
745
25d7fb7c89be better/cleaner error resilience (done in a 2nd pass after decoding)
michaelni
parents: 706
diff changeset
396 0x7F00, 0x7E00, 0x7C00, 0x7800, 0x7000, 0x6000, 0x4000, 0x0000
25d7fb7c89be better/cleaner error resilience (done in a 2nd pass after decoding)
michaelni
parents: 706
diff changeset
397 };
1520
ad5461bad820 intra dc treshold != 0 decoding fixed
michael
parents: 1349
diff changeset
398
ad5461bad820 intra dc treshold != 0 decoding fixed
michael
parents: 1349
diff changeset
399 static const uint8_t mpeg4_dc_threshold[8]={
ad5461bad820 intra dc treshold != 0 decoding fixed
michael
parents: 1349
diff changeset
400 99, 13, 15, 17, 19, 21, 23, 0
ad5461bad820 intra dc treshold != 0 decoding fixed
michael
parents: 1349
diff changeset
401 };