annotate vc1.h @ 6323:e6da66f378c7 libavcodec

mpegvideo.h has two function declarations with the 'inline' specifier but no definition for those functions. The C standard requires a definition to appear in the same translation unit for any function declared with 'inline'. Most of the files including mpegvideo.h do not define those functions. Fix this by removing the 'inline' specifiers from the header. patch by Uoti Urpala
author diego
date Sun, 03 Feb 2008 17:54:30 +0000
parents ddf5d7fae101
children ff4fa36b555e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4900
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
1 /*
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
2 * VC-1 and WMV3 decoder
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
3 * Copyright (c) 2006-2007 Konstantin Shishkov
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
4 * Partly based on vc9.c (c) 2005 Anonymous, Alex Beregszaszi, Michael Niedermayer
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
5 *
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
6 * This file is part of FFmpeg.
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
7 *
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
12 *
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
16 * Lesser General Public License for more details.
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
17 *
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
21 */
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
22
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5299
diff changeset
23 #ifndef FFMPEG_VC1_H
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5299
diff changeset
24 #define FFMPEG_VC1_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 4927
diff changeset
25
4927
270c8a34f234 Make vc1_parser.c compilable without special defines
kostya
parents: 4926
diff changeset
26 #include "avcodec.h"
270c8a34f234 Make vc1_parser.c compilable without special defines
kostya
parents: 4926
diff changeset
27 #include "mpegvideo.h"
5887
83ac4620c6ed intrax8 decoder patch by "someone"
michael
parents: 5830
diff changeset
28 #include "intrax8.h"
4927
270c8a34f234 Make vc1_parser.c compilable without special defines
kostya
parents: 4926
diff changeset
29
4903
kostya
parents: 4902
diff changeset
30 /** Markers used in VC-1 AP frame data */
4900
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
31 //@{
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
32 enum VC1Code{
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
33 VC1_CODE_RES0 = 0x00000100,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
34 VC1_CODE_ENDOFSEQ = 0x0000010A,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
35 VC1_CODE_SLICE,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
36 VC1_CODE_FIELD,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
37 VC1_CODE_FRAME,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
38 VC1_CODE_ENTRYPOINT,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
39 VC1_CODE_SEQHDR,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
40 };
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
41 //@}
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
42
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
43 #define IS_MARKER(x) (((x) & ~0xFF) == VC1_CODE_RES0)
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
44
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
45 /** Available Profiles */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
46 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
47 enum Profile {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
48 PROFILE_SIMPLE,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
49 PROFILE_MAIN,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
50 PROFILE_COMPLEX, ///< TODO: WMV9 specific
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
51 PROFILE_ADVANCED
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
52 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
53 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
54
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
55 /** Sequence quantizer mode */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
56 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
57 enum QuantMode {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
58 QUANT_FRAME_IMPLICIT, ///< Implicitly specified at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
59 QUANT_FRAME_EXPLICIT, ///< Explicitly specified at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
60 QUANT_NON_UNIFORM, ///< Non-uniform quant used for all frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
61 QUANT_UNIFORM ///< Uniform quant used for all frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
62 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
63 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
64
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
65 /** Where quant can be changed */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
66 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
67 enum DQProfile {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
68 DQPROFILE_FOUR_EDGES,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
69 DQPROFILE_DOUBLE_EDGES,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
70 DQPROFILE_SINGLE_EDGE,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
71 DQPROFILE_ALL_MBS
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
72 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
73 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
74
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
75 /** @name Where quant can be changed
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
76 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
77 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
78 enum DQSingleEdge {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
79 DQSINGLE_BEDGE_LEFT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
80 DQSINGLE_BEDGE_TOP,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
81 DQSINGLE_BEDGE_RIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
82 DQSINGLE_BEDGE_BOTTOM
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
83 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
84 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
85
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
86 /** Which pair of edges is quantized with ALTPQUANT */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
87 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
88 enum DQDoubleEdge {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
89 DQDOUBLE_BEDGE_TOPLEFT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
90 DQDOUBLE_BEDGE_TOPRIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
91 DQDOUBLE_BEDGE_BOTTOMRIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
92 DQDOUBLE_BEDGE_BOTTOMLEFT
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
93 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
94 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
95
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
96 /** MV modes for P frames */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
97 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
98 enum MVModes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
99 MV_PMODE_1MV_HPEL_BILIN,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
100 MV_PMODE_1MV,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
101 MV_PMODE_1MV_HPEL,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
102 MV_PMODE_MIXED_MV,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
103 MV_PMODE_INTENSITY_COMP
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
104 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
105 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
106
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
107 /** @name MV types for B frames */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
108 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
109 enum BMVTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
110 BMV_TYPE_BACKWARD,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
111 BMV_TYPE_FORWARD,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
112 BMV_TYPE_INTERPOLATED
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
113 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
114 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
115
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
116 /** @name Block types for P/B frames */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
117 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
118 enum TransformTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
119 TT_8X8,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
120 TT_8X4_BOTTOM,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
121 TT_8X4_TOP,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
122 TT_8X4, //Both halves
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
123 TT_4X8_RIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
124 TT_4X8_LEFT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
125 TT_4X8, //Both halves
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
126 TT_4X4
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
127 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
128 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
129
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
130 /** One more frame type */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
131 #define BI_TYPE 7
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
132
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
133 enum CodingSet {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
134 CS_HIGH_MOT_INTRA = 0,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
135 CS_HIGH_MOT_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
136 CS_LOW_MOT_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
137 CS_LOW_MOT_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
138 CS_MID_RATE_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
139 CS_MID_RATE_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
140 CS_HIGH_RATE_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
141 CS_HIGH_RATE_INTER
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
142 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
143
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
144 /** @name Overlap conditions for Advanced Profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
145 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
146 enum COTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
147 CONDOVER_NONE = 0,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
148 CONDOVER_ALL,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
149 CONDOVER_SELECT
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
150 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
151 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
152
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
153
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
154 /** The VC1 Context
5299
4623928e3b9e Replace non-existing @fixme doxygen tags with @todo.
diego
parents: 5169
diff changeset
155 * @todo Change size wherever another size is more efficient
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
156 * Many members are only used for Advanced Profile
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
157 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
158 typedef struct VC1Context{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
159 MpegEncContext s;
5887
83ac4620c6ed intrax8 decoder patch by "someone"
michael
parents: 5830
diff changeset
160 IntraX8Context x8;
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
161
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
162 int bits;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
163
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
164 /** Simple/Main Profile sequence header */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
165 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
166 int res_sm; ///< reserved, 2b
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
167 int res_x8; ///< reserved
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
168 int multires; ///< frame-level RESPIC syntax element present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
169 int res_fasttx; ///< reserved, always 1
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
170 int res_transtab; ///< reserved, always 0
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
171 int rangered; ///< RANGEREDFRM (range reduction) syntax element present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
172 ///< at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
173 int res_rtm_flag; ///< reserved, set to 1
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
174 int reserved; ///< reserved
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
175 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
176
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
177 /** Advanced Profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
178 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
179 int level; ///< 3bits, for Advanced/Simple Profile, provided by TS layer
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
180 int chromaformat; ///< 2bits, 2=4:2:0, only defined
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
181 int postprocflag; ///< Per-frame processing suggestion flag present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
182 int broadcast; ///< TFF/RFF present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
183 int interlace; ///< Progressive/interlaced (RPTFTM syntax element)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
184 int tfcntrflag; ///< TFCNTR present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
185 int panscanflag; ///< NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
186 int extended_dmv; ///< Additional extended dmv range at P/B frame-level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
187 int color_prim; ///< 8bits, chroma coordinates of the color primaries
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
188 int transfer_char; ///< 8bits, Opto-electronic transfer characteristics
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
189 int matrix_coef; ///< 8bits, Color primaries->YCbCr transform matrix
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
190 int hrd_param_flag; ///< Presence of Hypothetical Reference
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
191 ///< Decoder parameters
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
192 int psf; ///< Progressive Segmented Frame
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
193 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
194
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
195 /** Sequence header data for all Profiles
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
196 * TODO: choose between ints, uint8_ts and monobit flags
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
197 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
198 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
199 int profile; ///< 2bits, Profile
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
200 int frmrtq_postproc; ///< 3bits,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
201 int bitrtq_postproc; ///< 5bits, quantized framerate-based postprocessing strength
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
202 int fastuvmc; ///< Rounding of qpel vector to hpel ? (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
203 int extended_mv; ///< Ext MV in P/B (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
204 int dquant; ///< How qscale varies with MBs, 2bits (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
205 int vstransform; ///< variable-size [48]x[48] transform type + info
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
206 int overlap; ///< overlapped transforms in use
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
207 int quantizer_mode; ///< 2bits, quantizer mode used for sequence, see QUANT_*
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
208 int finterpflag; ///< INTERPFRM present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
209 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
210
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
211 /** Frame decoding info for all profiles */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
212 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
213 uint8_t mv_mode; ///< MV coding monde
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
214 uint8_t mv_mode2; ///< Secondary MV coding mode (B frames)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
215 int k_x; ///< Number of bits for MVs (depends on MV range)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
216 int k_y; ///< Number of bits for MVs (depends on MV range)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
217 int range_x, range_y; ///< MV range
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
218 uint8_t pq, altpq; ///< Current/alternate frame quantizer scale
6145
ddf5d7fae101 Select scan tables for 8x4 and 4x8 blocks only once.
kostya
parents: 5887
diff changeset
219 const uint8_t* zz_8x4;///< Zigzag scan table for TT_8x4 coding mode
ddf5d7fae101 Select scan tables for 8x4 and 4x8 blocks only once.
kostya
parents: 5887
diff changeset
220 const uint8_t* zz_4x8;///< Zigzag scan table for TT_4x8 coding mode
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
221 /** pquant parameters */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
222 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
223 uint8_t dquantfrm;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
224 uint8_t dqprofile;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
225 uint8_t dqsbedge;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
226 uint8_t dqbilevel;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
227 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
228 /** AC coding set indexes
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
229 * @see 8.1.1.10, p(1)10
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
230 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
231 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
232 int c_ac_table_index; ///< Chroma index from ACFRM element
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
233 int y_ac_table_index; ///< Luma index from AC2FRM element
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
234 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
235 int ttfrm; ///< Transform type info present at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
236 uint8_t ttmbf; ///< Transform type flag
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
237 uint8_t ttblk4x4; ///< Value of ttblk which indicates a 4x4 transform
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
238 int codingset; ///< index of current table set from 11.8 to use for luma block decoding
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
239 int codingset2; ///< index of current table set from 11.8 to use for chroma block decoding
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
240 int pqindex; ///< raw pqindex used in coding set selection
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
241 int a_avail, c_avail;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
242 uint8_t *mb_type_base, *mb_type[3];
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
243
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
244
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
245 /** Luma compensation parameters */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
246 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
247 uint8_t lumscale;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
248 uint8_t lumshift;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
249 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
250 int16_t bfraction; ///< Relative position % anchors=> how to scale MVs
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
251 uint8_t halfpq; ///< Uniform quant over image and qp+.5
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
252 uint8_t respic; ///< Frame-level flag for resized images
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
253 int buffer_fullness; ///< HRD info
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
254 /** Ranges:
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
255 * -# 0 -> [-64n 63.f] x [-32, 31.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
256 * -# 1 -> [-128, 127.f] x [-64, 63.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
257 * -# 2 -> [-512, 511.f] x [-128, 127.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
258 * -# 3 -> [-1024, 1023.f] x [-256, 255.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
259 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
260 uint8_t mvrange;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
261 uint8_t pquantizer; ///< Uniform (over sequence) quantizer in use
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
262 VLC *cbpcy_vlc; ///< CBPCY VLC table
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
263 int tt_index; ///< Index for Transform Type tables
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
264 uint8_t* mv_type_mb_plane; ///< bitplane for mv_type == (4MV)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
265 uint8_t* direct_mb_plane; ///< bitplane for "direct" MBs
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
266 int mv_type_is_raw; ///< mv type mb plane is not coded
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
267 int dmb_is_raw; ///< direct mb plane is raw
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
268 int skip_is_raw; ///< skip mb plane is not coded
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
269 uint8_t luty[256], lutuv[256]; // lookup tables used for intensity compensation
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
270 int use_ic; ///< use intensity compensation in B-frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
271 int rnd; ///< rounding control
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
272
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
273 /** Frame decoding info for S/M profiles only */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
274 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
275 uint8_t rangeredfrm; ///< out_sample = CLIP((in_sample-128)*2+128)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
276 uint8_t interpfrm;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
277 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
278
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
279 /** Frame decoding info for Advanced profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
280 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
281 uint8_t fcm; ///< 0->Progressive, 2->Frame-Interlace, 3->Field-Interlace
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
282 uint8_t numpanscanwin;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
283 uint8_t tfcntr;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
284 uint8_t rptfrm, tff, rff;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
285 uint16_t topleftx;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
286 uint16_t toplefty;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
287 uint16_t bottomrightx;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
288 uint16_t bottomrighty;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
289 uint8_t uvsamp;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
290 uint8_t postproc;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
291 int hrd_num_leaky_buckets;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
292 uint8_t bit_rate_exponent;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
293 uint8_t buffer_size_exponent;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
294 uint8_t* acpred_plane; ///< AC prediction flags bitplane
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
295 int acpred_is_raw;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
296 uint8_t* over_flags_plane; ///< Overflags bitplane
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
297 int overflg_is_raw;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
298 uint8_t condover;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
299 uint16_t *hrd_rate, *hrd_buffer;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
300 uint8_t *hrd_fullness;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
301 uint8_t range_mapy_flag;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
302 uint8_t range_mapuv_flag;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
303 uint8_t range_mapy;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
304 uint8_t range_mapuv;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
305 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
306
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
307 int p_frame_skipped;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
308 int bi_type;
5887
83ac4620c6ed intrax8 decoder patch by "someone"
michael
parents: 5830
diff changeset
309 int x8_type;
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
310 } VC1Context;
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 4927
diff changeset
311
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5299
diff changeset
312 #endif /* FFMPEG_VC1_H */