annotate vc1.h @ 7744:7477cbdacb20 libavcodec

Fix lossless jpeg encoder to comply to spec and store full redundant residuals, Note this does not change RGB32 as we need to check this against some decoder that supports it.
author michael
date Sat, 30 Aug 2008 20:39:12 +0000
parents 5719e2c85aa3
children c4a4495715dd
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 enum CodingSet {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
131 CS_HIGH_MOT_INTRA = 0,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
132 CS_HIGH_MOT_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
133 CS_LOW_MOT_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
134 CS_LOW_MOT_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
135 CS_MID_RATE_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
136 CS_MID_RATE_INTER,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
137 CS_HIGH_RATE_INTRA,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
138 CS_HIGH_RATE_INTER
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
139 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
140
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
141 /** @name Overlap conditions for Advanced Profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
142 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
143 enum COTypes {
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
144 CONDOVER_NONE = 0,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
145 CONDOVER_ALL,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
146 CONDOVER_SELECT
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
147 };
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
148 //@}
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 /** The VC1 Context
5299
4623928e3b9e Replace non-existing @fixme doxygen tags with @todo.
diego
parents: 5169
diff changeset
152 * @todo Change size wherever another size is more efficient
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
153 * Many members are only used for Advanced Profile
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
154 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
155 typedef struct VC1Context{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
156 MpegEncContext s;
5887
83ac4620c6ed intrax8 decoder patch by "someone"
michael
parents: 5830
diff changeset
157 IntraX8Context x8;
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
158
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
159 int bits;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
160
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
161 /** Simple/Main Profile sequence header */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
162 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
163 int res_sm; ///< reserved, 2b
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
164 int res_x8; ///< reserved
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
165 int multires; ///< frame-level RESPIC syntax element present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
166 int res_fasttx; ///< reserved, always 1
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
167 int res_transtab; ///< reserved, always 0
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
168 int rangered; ///< RANGEREDFRM (range reduction) syntax element present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
169 ///< at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
170 int res_rtm_flag; ///< reserved, set to 1
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
171 int reserved; ///< reserved
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
172 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
173
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
174 /** Advanced Profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
175 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
176 int level; ///< 3bits, for Advanced/Simple Profile, provided by TS layer
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
177 int chromaformat; ///< 2bits, 2=4:2:0, only defined
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
178 int postprocflag; ///< Per-frame processing suggestion flag present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
179 int broadcast; ///< TFF/RFF present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
180 int interlace; ///< Progressive/interlaced (RPTFTM syntax element)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
181 int tfcntrflag; ///< TFCNTR present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
182 int panscanflag; ///< NUMPANSCANWIN, TOPLEFT{X,Y}, BOTRIGHT{X,Y} present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
183 int extended_dmv; ///< Additional extended dmv range at P/B frame-level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
184 int color_prim; ///< 8bits, chroma coordinates of the color primaries
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
185 int transfer_char; ///< 8bits, Opto-electronic transfer characteristics
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
186 int matrix_coef; ///< 8bits, Color primaries->YCbCr transform matrix
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
187 int hrd_param_flag; ///< Presence of Hypothetical Reference
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
188 ///< Decoder parameters
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
189 int psf; ///< Progressive Segmented Frame
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
190 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
191
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
192 /** Sequence header data for all Profiles
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
193 * TODO: choose between ints, uint8_ts and monobit flags
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
194 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
195 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
196 int profile; ///< 2bits, Profile
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
197 int frmrtq_postproc; ///< 3bits,
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
198 int bitrtq_postproc; ///< 5bits, quantized framerate-based postprocessing strength
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
199 int fastuvmc; ///< Rounding of qpel vector to hpel ? (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
200 int extended_mv; ///< Ext MV in P/B (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
201 int dquant; ///< How qscale varies with MBs, 2bits (not in Simple)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
202 int vstransform; ///< variable-size [48]x[48] transform type + info
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
203 int overlap; ///< overlapped transforms in use
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
204 int quantizer_mode; ///< 2bits, quantizer mode used for sequence, see QUANT_*
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
205 int finterpflag; ///< INTERPFRM present
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
206 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
207
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
208 /** Frame decoding info for all profiles */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
209 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
210 uint8_t mv_mode; ///< MV coding monde
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
211 uint8_t mv_mode2; ///< Secondary MV coding mode (B frames)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
212 int k_x; ///< Number of bits for MVs (depends on MV range)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
213 int k_y; ///< Number of bits for MVs (depends on MV range)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
214 int range_x, range_y; ///< MV range
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
215 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
216 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
217 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
218 /** pquant parameters */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
219 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
220 uint8_t dquantfrm;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
221 uint8_t dqprofile;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
222 uint8_t dqsbedge;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
223 uint8_t dqbilevel;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
224 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
225 /** AC coding set indexes
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
226 * @see 8.1.1.10, p(1)10
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
227 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
228 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
229 int c_ac_table_index; ///< Chroma index from ACFRM element
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
230 int y_ac_table_index; ///< Luma index from AC2FRM element
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 ttfrm; ///< Transform type info present at frame level
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
233 uint8_t ttmbf; ///< Transform type flag
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
234 uint8_t ttblk4x4; ///< Value of ttblk which indicates a 4x4 transform
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
235 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
236 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
237 int pqindex; ///< raw pqindex used in coding set selection
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
238 int a_avail, c_avail;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
239 uint8_t *mb_type_base, *mb_type[3];
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
240
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
241
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
242 /** Luma compensation parameters */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
243 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
244 uint8_t lumscale;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
245 uint8_t lumshift;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
246 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
247 int16_t bfraction; ///< Relative position % anchors=> how to scale MVs
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
248 uint8_t halfpq; ///< Uniform quant over image and qp+.5
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
249 uint8_t respic; ///< Frame-level flag for resized images
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
250 int buffer_fullness; ///< HRD info
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
251 /** Ranges:
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
252 * -# 0 -> [-64n 63.f] x [-32, 31.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
253 * -# 1 -> [-128, 127.f] x [-64, 63.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
254 * -# 2 -> [-512, 511.f] x [-128, 127.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
255 * -# 3 -> [-1024, 1023.f] x [-256, 255.f]
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
256 */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
257 uint8_t mvrange;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
258 uint8_t pquantizer; ///< Uniform (over sequence) quantizer in use
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
259 VLC *cbpcy_vlc; ///< CBPCY VLC table
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
260 int tt_index; ///< Index for Transform Type tables
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
261 uint8_t* mv_type_mb_plane; ///< bitplane for mv_type == (4MV)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
262 uint8_t* direct_mb_plane; ///< bitplane for "direct" MBs
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
263 int mv_type_is_raw; ///< mv type mb plane is not coded
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
264 int dmb_is_raw; ///< direct mb plane is raw
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
265 int skip_is_raw; ///< skip mb plane is not coded
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
266 uint8_t luty[256], lutuv[256]; // lookup tables used for intensity compensation
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
267 int use_ic; ///< use intensity compensation in B-frames
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
268 int rnd; ///< rounding control
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
269
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
270 /** Frame decoding info for S/M profiles only */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
271 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
272 uint8_t rangeredfrm; ///< out_sample = CLIP((in_sample-128)*2+128)
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
273 uint8_t interpfrm;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
274 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
275
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
276 /** Frame decoding info for Advanced profile */
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
277 //@{
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
278 uint8_t fcm; ///< 0->Progressive, 2->Frame-Interlace, 3->Field-Interlace
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
279 uint8_t numpanscanwin;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
280 uint8_t tfcntr;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
281 uint8_t rptfrm, tff, rff;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
282 uint16_t topleftx;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
283 uint16_t toplefty;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
284 uint16_t bottomrightx;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
285 uint16_t bottomrighty;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
286 uint8_t uvsamp;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
287 uint8_t postproc;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
288 int hrd_num_leaky_buckets;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
289 uint8_t bit_rate_exponent;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
290 uint8_t buffer_size_exponent;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
291 uint8_t* acpred_plane; ///< AC prediction flags bitplane
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
292 int acpred_is_raw;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
293 uint8_t* over_flags_plane; ///< Overflags bitplane
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
294 int overflg_is_raw;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
295 uint8_t condover;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
296 uint16_t *hrd_rate, *hrd_buffer;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
297 uint8_t *hrd_fullness;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
298 uint8_t range_mapy_flag;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
299 uint8_t range_mapuv_flag;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
300 uint8_t range_mapy;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
301 uint8_t range_mapuv;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
302 //@}
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
303
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
304 int p_frame_skipped;
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
305 int bi_type;
5887
83ac4620c6ed intrax8 decoder patch by "someone"
michael
parents: 5830
diff changeset
306 int x8_type;
7355
5719e2c85aa3 In-loop deblocking filter for VC-1 decoder
kostya
parents: 6481
diff changeset
307
5719e2c85aa3 In-loop deblocking filter for VC-1 decoder
kostya
parents: 6481
diff changeset
308 uint32_t *cbp_base, *cbp;
4902
1296fd337cdf Move some declarations into header
kostya
parents: 4900
diff changeset
309 } VC1Context;
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 4927
diff changeset
310
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5299
diff changeset
311 #endif /* FFMPEG_VC1_H */