annotate vc1.h @ 5876:731ee5ad6bde libavcodec

Correct assignment of interlaced_frame; was being set on output frames, in display order, based on decoding information in decoding order. Now set properly, immediately upon completion of decode. Based on original patch from Reinhard Nissl, rnisssl % gmx , de Original Thread: [FFmpeg-devel] H.264 + PAFF: BBC HD recording shows extreme interlacing artefacts, Thu, 01 Nov 2007 22:43:09
author heydowns
date Mon, 05 Nov 2007 18:16:42 +0000
parents 1d83e9c34641
children 83ac4620c6ed
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"
270c8a34f234 Make vc1_parser.c compilable without special defines
kostya
parents: 4926
diff changeset
28
4903
kostya
parents: 4902
diff changeset
29 /** Markers used in VC-1 AP frame data */
4900
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
30 //@{
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
31 enum VC1Code{
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
32 VC1_CODE_RES0 = 0x00000100,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
33 VC1_CODE_ENDOFSEQ = 0x0000010A,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
34 VC1_CODE_SLICE,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
35 VC1_CODE_FIELD,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
36 VC1_CODE_FRAME,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
37 VC1_CODE_ENTRYPOINT,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
38 VC1_CODE_SEQHDR,
36051a4c182a Move VC1 parser to its own file.
diego
parents:
diff changeset
39 };
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 #define IS_MARKER(x) (((x) & ~0xFF) == VC1_CODE_RES0)
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
43
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
44 /** Available Profiles */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
45 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
46 enum Profile {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
47 PROFILE_SIMPLE,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
48 PROFILE_MAIN,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
49 PROFILE_COMPLEX, ///< TODO: WMV9 specific
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
50 PROFILE_ADVANCED
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
51 };
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 /** Sequence quantizer mode */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
55 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
56 enum QuantMode {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
57 QUANT_FRAME_IMPLICIT, ///< Implicitly specified at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
58 QUANT_FRAME_EXPLICIT, ///< Explicitly specified at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
59 QUANT_NON_UNIFORM, ///< Non-uniform quant used for all frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
60 QUANT_UNIFORM ///< Uniform quant used for all frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
61 };
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 /** Where quant can be changed */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
65 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
66 enum DQProfile {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
67 DQPROFILE_FOUR_EDGES,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
68 DQPROFILE_DOUBLE_EDGES,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
69 DQPROFILE_SINGLE_EDGE,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
70 DQPROFILE_ALL_MBS
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
71 };
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 /** @name Where quant can be changed
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
75 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
76 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
77 enum DQSingleEdge {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
78 DQSINGLE_BEDGE_LEFT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
79 DQSINGLE_BEDGE_TOP,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
80 DQSINGLE_BEDGE_RIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
81 DQSINGLE_BEDGE_BOTTOM
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
82 };
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 /** Which pair of edges is quantized with ALTPQUANT */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
86 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
87 enum DQDoubleEdge {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
88 DQDOUBLE_BEDGE_TOPLEFT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
89 DQDOUBLE_BEDGE_TOPRIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
90 DQDOUBLE_BEDGE_BOTTOMRIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
91 DQDOUBLE_BEDGE_BOTTOMLEFT
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
92 };
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 /** MV modes for P frames */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
96 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
97 enum MVModes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
98 MV_PMODE_1MV_HPEL_BILIN,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
99 MV_PMODE_1MV,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
100 MV_PMODE_1MV_HPEL,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
101 MV_PMODE_MIXED_MV,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
102 MV_PMODE_INTENSITY_COMP
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
103 };
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 /** @name MV types for B frames */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
107 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
108 enum BMVTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
109 BMV_TYPE_BACKWARD,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
110 BMV_TYPE_FORWARD,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
111 BMV_TYPE_INTERPOLATED
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
112 };
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 /** @name Block types for P/B frames */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
116 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
117 enum TransformTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
118 TT_8X8,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
119 TT_8X4_BOTTOM,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
120 TT_8X4_TOP,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
121 TT_8X4, //Both halves
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
122 TT_4X8_RIGHT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
123 TT_4X8_LEFT,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
124 TT_4X8, //Both halves
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
125 TT_4X4
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
126 };
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 /** One more frame type */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
130 #define BI_TYPE 7
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
131
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
132 enum CodingSet {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
133 CS_HIGH_MOT_INTRA = 0,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
134 CS_HIGH_MOT_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
135 CS_LOW_MOT_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
136 CS_LOW_MOT_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
137 CS_MID_RATE_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
138 CS_MID_RATE_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
139 CS_HIGH_RATE_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
140 CS_HIGH_RATE_INTER
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
141 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
142
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
143 /** @name Overlap conditions for Advanced Profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
144 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
145 enum COTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
146 CONDOVER_NONE = 0,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
147 CONDOVER_ALL,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
148 CONDOVER_SELECT
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
149 };
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 /** The VC1 Context
5299
4623928e3b9e Replace non-existing @fixme doxygen tags with @todo.
diego
parents: 5169
diff changeset
154 * @todo Change size wherever another size is more efficient
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
155 * Many members are only used for Advanced Profile
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
156 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
157 typedef struct VC1Context{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
158 MpegEncContext s;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
159
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
160 int bits;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
161
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
162 /** Simple/Main Profile sequence header */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
163 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
164 int res_sm; ///< reserved, 2b
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
165 int res_x8; ///< reserved
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
166 int multires; ///< frame-level RESPIC syntax element present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
167 int res_fasttx; ///< reserved, always 1
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
168 int res_transtab; ///< reserved, always 0
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
169 int rangered; ///< RANGEREDFRM (range reduction) syntax element present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
170 ///< at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
171 int res_rtm_flag; ///< reserved, set to 1
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
172 int reserved; ///< reserved
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
173 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
174
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
175 /** Advanced Profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
176 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
177 int level; ///< 3bits, for Advanced/Simple Profile, provided by TS layer
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
178 int chromaformat; ///< 2bits, 2=4:2:0, only defined
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
179 int postprocflag; ///< Per-frame processing suggestion flag present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
180 int broadcast; ///< TFF/RFF present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
181 int interlace; ///< Progressive/interlaced (RPTFTM syntax element)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
182 int tfcntrflag; ///< TFCNTR present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
183 int panscanflag; ///< NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
184 int extended_dmv; ///< Additional extended dmv range at P/B frame-level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
185 int color_prim; ///< 8bits, chroma coordinates of the color primaries
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
186 int transfer_char; ///< 8bits, Opto-electronic transfer characteristics
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
187 int matrix_coef; ///< 8bits, Color primaries->YCbCr transform matrix
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
188 int hrd_param_flag; ///< Presence of Hypothetical Reference
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
189 ///< Decoder parameters
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
190 int psf; ///< Progressive Segmented Frame
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
191 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
192
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
193 /** Sequence header data for all Profiles
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
194 * TODO: choose between ints, uint8_ts and monobit flags
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
195 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
196 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
197 int profile; ///< 2bits, Profile
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
198 int frmrtq_postproc; ///< 3bits,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
199 int bitrtq_postproc; ///< 5bits, quantized framerate-based postprocessing strength
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
200 int fastuvmc; ///< Rounding of qpel vector to hpel ? (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
201 int extended_mv; ///< Ext MV in P/B (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
202 int dquant; ///< How qscale varies with MBs, 2bits (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
203 int vstransform; ///< variable-size [48]x[48] transform type + info
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
204 int overlap; ///< overlapped transforms in use
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
205 int quantizer_mode; ///< 2bits, quantizer mode used for sequence, see QUANT_*
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
206 int finterpflag; ///< INTERPFRM present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
207 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
208
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
209 /** Frame decoding info for all profiles */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
210 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
211 uint8_t mv_mode; ///< MV coding monde
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
212 uint8_t mv_mode2; ///< Secondary MV coding mode (B frames)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
213 int k_x; ///< Number of bits for MVs (depends on MV range)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
214 int k_y; ///< Number of bits for MVs (depends on MV range)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
215 int range_x, range_y; ///< MV range
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
216 uint8_t pq, altpq; ///< Current/alternate frame quantizer scale
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
217 /** pquant parameters */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
218 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
219 uint8_t dquantfrm;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
220 uint8_t dqprofile;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
221 uint8_t dqsbedge;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
222 uint8_t dqbilevel;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
223 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
224 /** AC coding set indexes
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
225 * @see 8.1.1.10, p(1)10
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
226 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
227 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
228 int c_ac_table_index; ///< Chroma index from ACFRM element
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
229 int y_ac_table_index; ///< Luma index from AC2FRM element
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
230 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
231 int ttfrm; ///< Transform type info present at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
232 uint8_t ttmbf; ///< Transform type flag
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
233 uint8_t ttblk4x4; ///< Value of ttblk which indicates a 4x4 transform
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
234 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
235 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
236 int pqindex; ///< raw pqindex used in coding set selection
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
237 int a_avail, c_avail;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
238 uint8_t *mb_type_base, *mb_type[3];
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
239
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
240
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
241 /** Luma compensation parameters */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
242 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
243 uint8_t lumscale;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
244 uint8_t lumshift;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
245 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
246 int16_t bfraction; ///< Relative position % anchors=> how to scale MVs
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
247 uint8_t halfpq; ///< Uniform quant over image and qp+.5
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
248 uint8_t respic; ///< Frame-level flag for resized images
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
249 int buffer_fullness; ///< HRD info
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
250 /** Ranges:
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
251 * -# 0 -> [-64n 63.f] x [-32, 31.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
252 * -# 1 -> [-128, 127.f] x [-64, 63.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
253 * -# 2 -> [-512, 511.f] x [-128, 127.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
254 * -# 3 -> [-1024, 1023.f] x [-256, 255.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
255 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
256 uint8_t mvrange;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
257 uint8_t pquantizer; ///< Uniform (over sequence) quantizer in use
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
258 VLC *cbpcy_vlc; ///< CBPCY VLC table
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
259 int tt_index; ///< Index for Transform Type tables
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
260 uint8_t* mv_type_mb_plane; ///< bitplane for mv_type == (4MV)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
261 uint8_t* direct_mb_plane; ///< bitplane for "direct" MBs
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
262 int mv_type_is_raw; ///< mv type mb plane is not coded
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
263 int dmb_is_raw; ///< direct mb plane is raw
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
264 int skip_is_raw; ///< skip mb plane is not coded
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
265 uint8_t luty[256], lutuv[256]; // lookup tables used for intensity compensation
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
266 int use_ic; ///< use intensity compensation in B-frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
267 int rnd; ///< rounding control
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
268
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
269 /** Frame decoding info for S/M profiles only */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
270 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
271 uint8_t rangeredfrm; ///< out_sample = CLIP((in_sample-128)*2+128)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
272 uint8_t interpfrm;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
273 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
274
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
275 /** Frame decoding info for Advanced profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
276 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
277 uint8_t fcm; ///< 0->Progressive, 2->Frame-Interlace, 3->Field-Interlace
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
278 uint8_t numpanscanwin;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
279 uint8_t tfcntr;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
280 uint8_t rptfrm, tff, rff;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
281 uint16_t topleftx;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
282 uint16_t toplefty;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
283 uint16_t bottomrightx;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
284 uint16_t bottomrighty;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
285 uint8_t uvsamp;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
286 uint8_t postproc;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
287 int hrd_num_leaky_buckets;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
288 uint8_t bit_rate_exponent;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
289 uint8_t buffer_size_exponent;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
290 uint8_t* acpred_plane; ///< AC prediction flags bitplane
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
291 int acpred_is_raw;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
292 uint8_t* over_flags_plane; ///< Overflags bitplane
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
293 int overflg_is_raw;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
294 uint8_t condover;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
295 uint16_t *hrd_rate, *hrd_buffer;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
296 uint8_t *hrd_fullness;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
297 uint8_t range_mapy_flag;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
298 uint8_t range_mapuv_flag;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
299 uint8_t range_mapy;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
300 uint8_t range_mapuv;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
301 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
302
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
303 int p_frame_skipped;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
304 int bi_type;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
305 } VC1Context;
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 4927
diff changeset
306
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5299
diff changeset
307 #endif /* FFMPEG_VC1_H */