FFmpeg
vp8.h
Go to the documentation of this file.
1 /*
2  * VP8 compatible video decoder
3  *
4  * Copyright (C) 2010 David Conrad
5  * Copyright (C) 2010 Ronald S. Bultje
6  * Copyright (C) 2010 Fiona Glaser
7  * Copyright (C) 2012 Daniel Kang
8  *
9  * This file is part of FFmpeg.
10  *
11  * FFmpeg is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public
13  * License as published by the Free Software Foundation; either
14  * version 2.1 of the License, or (at your option) any later version.
15  *
16  * FFmpeg is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  * Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with FFmpeg; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
24  */
25 
26 #ifndef AVCODEC_VP8_H
27 #define AVCODEC_VP8_H
28 
29 #include <stdatomic.h>
30 
31 #include "libavutil/mem_internal.h"
32 #include "libavutil/thread.h"
33 
34 #include "avcodec.h"
35 #include "h264pred.h"
36 #include "progressframe.h"
37 #include "videodsp.h"
38 #include "vp8dsp.h"
39 #include "vpx_rac.h"
40 
41 #define VP8_MAX_QUANT 127
42 
43 typedef enum {
49 } VP8FrameType;
50 
51 enum dct_token {
64 
66 };
67 
68 // used to signal 4x4 intra pred in luma MBs
69 #define MODE_I4x4 4
70 
75 };
76 
78  VP8_SPLITMVMODE_16x8 = 0, ///< 2 16x8 blocks (vertical)
79  VP8_SPLITMVMODE_8x16, ///< 2 8x16 blocks (horizontal)
80  VP8_SPLITMVMODE_8x8, ///< 2x2 blocks of 8x8px each
81  VP8_SPLITMVMODE_4x4, ///< 4x4 blocks of 4x4px each
82  VP8_SPLITMVMODE_NONE, ///< (only used in prediction) no split MVs
83 };
84 
85 typedef struct VP8mv {
86  DECLARE_ALIGNED(4, int16_t, x);
87  int16_t y;
88 } VP8mv;
89 
90 typedef struct VP8FilterStrength {
91  uint8_t filter_level;
92  uint8_t inner_limit;
93  uint8_t inner_filter;
95 
96 typedef struct VP8Macroblock {
97  uint8_t skip;
98  // TODO: make it possible to check for at least (i4x4 or split_mv)
99  // in one op. are others needed?
100  uint8_t mode;
101  uint8_t ref_frame;
102  uint8_t partitioning;
104  uint8_t segment;
108  VP8mv bmv[16];
109 } VP8Macroblock;
110 
111 typedef struct VP8intmv {
112  int x;
113  int y;
114 } VP8intmv;
115 
116 typedef struct VP8mvbounds {
119 } VP8mvbounds;
120 
121 typedef struct VP8ThreadData {
122  DECLARE_ALIGNED(16, int16_t, block)[6][4][16];
123  DECLARE_ALIGNED(16, int16_t, block_dc)[16];
124  /**
125  * This is the index plus one of the last non-zero coeff
126  * for each of the blocks in the current macroblock.
127  * So, 0 -> no coeffs
128  * 1 -> dc-only (special transform)
129  * 2+-> full transform
130  */
132  /**
133  * For coeff decode, we need to know whether the above block had non-zero
134  * coefficients. This means for each macroblock, we need data for 4 luma
135  * blocks, 2 u blocks, 2 v blocks, and the luma dc block, for a total of 9
136  * per macroblock. We keep the last row in top_nnz.
137  */
138  DECLARE_ALIGNED(8, uint8_t, left_nnz)[9];
140 #if HAVE_THREADS
143 #endif
144  atomic_int thread_mb_pos; // (mb_y << 16) | (mb_x & 0xFFFF)
145  atomic_int wait_mb_pos; // What the current thread is waiting on.
146 
147 #define EDGE_EMU_LINESIZE 32
151 } VP8ThreadData;
152 
153 typedef struct VP8Frame {
155  uint8_t *seg_map; ///< RefStruct reference
156 
157  void *hwaccel_picture_private; ///< RefStruct reference
158 } VP8Frame;
159 
160 #define MAX_THREADS 8
161 typedef struct VP8Context {
166 
171 
172  uint16_t mb_width; /* number of horizontal MB */
173  uint16_t mb_height; /* number of vertical MB */
174  ptrdiff_t linesize;
175  ptrdiff_t uvlinesize;
176 
177  uint8_t keyframe;
178  uint8_t deblock_filter;
179  uint8_t mbskip_enabled;
180  uint8_t profile;
182 
183  int8_t sign_bias[4]; ///< one state [0, 1] per ref frame type
184  int ref_count[3];
185 
186  /**
187  * Base parameters for segmentation, i.e. per-macroblock parameters.
188  * These must be kept unchanged even if segmentation is not used for
189  * a frame, since the values persist between interframes.
190  */
191  struct {
192  uint8_t enabled;
193  uint8_t absolute_vals;
194  uint8_t update_map;
196  int8_t base_quant[4];
197  int8_t filter_level[4]; ///< base loop filter level
198  } segmentation;
199 
200  struct {
201  uint8_t simple;
202  uint8_t level;
203  uint8_t sharpness;
204  } filter;
205 
207 
210 
211  /**
212  * Macroblocks can have one of 4 different quants in a frame when
213  * segmentation is enabled.
214  * If segmentation is disabled, only the first segment's values are used.
215  */
216  struct {
217  // [0] - DC qmul [1] - AC qmul
218  int16_t luma_qmul[2];
219  int16_t luma_dc_qmul[2]; ///< luma dc-only block quant
220  int16_t chroma_qmul[2];
221  } qmat[4];
222 
223  // Raw quantisation values, which may be needed by hwaccel decode.
224  struct {
225  int yac_qi;
231  } quant;
232 
233  struct {
234  uint8_t enabled; ///< whether each mb can have a different strength based on mode/ref
235  uint8_t update;
236 
237  /**
238  * filter strength adjustment for the following macroblock modes:
239  * [0-3] - i16x16 (always zero)
240  * [4] - i4x4
241  * [5] - zero mv
242  * [6] - inter modes except for zero or split mv
243  * [7] - split mv
244  * i16x16 modes never have any adjustment
245  */
246  int8_t mode[VP8_MVMODE_SPLIT + 1];
247 
248  /**
249  * filter strength adjustment for macroblocks that reference:
250  * [0] - intra / VP8_FRAME_CURRENT
251  * [1] - VP8_FRAME_PREVIOUS
252  * [2] - VP8_FRAME_GOLDEN
253  * [3] - altref / VP8_FRAME_ALTREF
254  */
255  int8_t ref[4];
256  } lf_delta;
257 
258  uint8_t (*top_border)[16 + 8 + 8];
259  uint8_t (*top_nnz)[9];
260 
261  VPXRangeCoder c; ///< header context, includes mb modes and motion vectors
262 
263  /* This contains the entropy coder state at the end of the header
264  * block, in the form specified by the standard. For use by
265  * hwaccels, so that a hardware decoder has the information to
266  * start decoding at the macroblock layer.
267  */
268  struct {
269  const uint8_t *input;
270  uint32_t range;
271  uint32_t value;
274 
276 
277  /**
278  * These are all of the updatable probabilities for binary decisions.
279  * They are only implicitly reset on keyframes, making it quite likely
280  * for an interframe to desync if a prior frame's header was corrupt
281  * or missing outright!
282  */
283  struct {
284  uint8_t segmentid[3];
285  uint8_t mbskip;
286  uint8_t intra;
287  uint8_t last;
288  uint8_t golden;
289  uint8_t pred16x16[4];
290  uint8_t pred8x8c[3];
291  uint8_t token[4][16][3][NUM_DCT_TOKENS - 1];
292  uint8_t mvc[2][19];
293  uint8_t scan[16];
294  } prob[2];
295 
298  int update_last; ///< update VP8_FRAME_PREVIOUS with the current one
299  int update_golden; ///< VP8_FRAME_NONE if not updated, or which frame to copy if so
301 
302  /**
303  * If this flag is not set, all the probability updates
304  * are discarded after this frame is decoded.
305  */
307 
308  /**
309  * All coefficients are contained in separate arith coding contexts.
310  * There can be 1, 2, 4, or 8 of these after the header context.
311  */
320 
321  uint8_t colorspace; ///< 0 is the only value allowed (meaning bt601)
322  uint8_t fullrange; ///< whether we can skip clamping in dsp functions
323 
324  int num_jobs;
325  /**
326  * This describes the macroblock memory layout.
327  * 0 -> Only width+height*2+1 macroblocks allocated (frame/single thread).
328  * 1 -> Macroblocks for entire frame allocated (sliced thread).
329  */
331 
332  int (*decode_mb_row_no_filter)(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr);
333  void (*filter_mb_row)(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr);
334 
335  /**
336  * Interframe DC prediction (VP7)
337  * [0] VP8_FRAME_PREVIOUS
338  * [1] VP8_FRAME_GOLDEN
339  */
340  uint16_t inter_dc_pred[2][2];
341 
342  /**
343  * Macroblock features (VP7)
344  */
345  uint8_t feature_enabled[4];
347  uint8_t feature_index_prob[4][3];
348  uint8_t feature_value[4][4];
349 } VP8Context;
350 
352 
354  int *got_frame, AVPacket *avpkt);
355 
357 
358 #endif /* AVCODEC_VP8_H */
VP8Context::num_jobs
int num_jobs
Definition: vp8.h:324
VP8ThreadData::thread_mb_pos
atomic_int thread_mb_pos
Definition: vp8.h:144
VP8Macroblock::intra4x4_pred_mode_mb
uint8_t intra4x4_pred_mode_mb[16]
Definition: vp8.h:105
pthread_mutex_t
_fmutex pthread_mutex_t
Definition: os2threads.h:53
VP8Context::prev_frame
VP8Frame * prev_frame
Definition: vp8.h:170
VP8Context::coeff_partition_size
int coeff_partition_size[8]
Definition: vp8.h:314
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:71
VP8Context::intra4x4_pred_mode_top
uint8_t * intra4x4_pred_mode_top
Definition: vp8.h:208
VP8Macroblock::partitioning
uint8_t partitioning
Definition: vp8.h:102
VP8Context::macroblocks_base
VP8Macroblock * macroblocks_base
Definition: vp8.h:296
VP8_FRAME_CURRENT
@ VP8_FRAME_CURRENT
Definition: vp8.h:45
mem_internal.h
VP8Context::top_border
uint8_t(* top_border)[16+8+8]
Definition: vp8.h:258
thread.h
VP8Frame::tf
ProgressFrame tf
Definition: vp8.h:154
DCT_2
@ DCT_2
Definition: vp8.h:54
VP8FilterStrength::inner_filter
uint8_t inner_filter
Definition: vp8.h:93
DCT_4
@ DCT_4
Definition: vp8.h:56
VP8Context::thread_data
VP8ThreadData * thread_data
Definition: vp8.h:162
VP8Context::segmentid
uint8_t segmentid[3]
Definition: vp8.h:284
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:389
VP8Context::top_nnz
uint8_t(* top_nnz)[9]
Definition: vp8.h:259
VP8Context::num_coeff_partitions
int num_coeff_partitions
All coefficients are contained in separate arith coding contexts.
Definition: vp8.h:312
inter_mvmode
inter_mvmode
Definition: vp8.h:71
VP8Context::put_pixels_tab
vp8_mc_func put_pixels_tab[3][3][3]
Definition: vp8.h:318
atomic_int
intptr_t atomic_int
Definition: stdatomic.h:55
VP8intmv::y
int y
Definition: vp8.h:113
VP8Context::uvdc_delta
int uvdc_delta
Definition: vp8.h:229
VP8Context::quant
struct VP8Context::@264 quant
VP8mvbounds
Definition: vp8.h:116
VP8_SPLITMVMODE_4x4
@ VP8_SPLITMVMODE_4x4
4x4 blocks of 4x4px each
Definition: vp8.h:81
VP8_FRAME_ALTREF
@ VP8_FRAME_ALTREF
Definition: vp8.h:48
VP8Context::value
uint32_t value
Definition: vp8.h:271
VPXRangeCoder
Definition: vpx_rac.h:35
VP8intmv
Definition: vp8.h:111
VP8FilterStrength::inner_limit
uint8_t inner_limit
Definition: vp8.h:92
VP8Context::vdsp
VideoDSPContext vdsp
Definition: vp8.h:315
VP8Context::enabled
uint8_t enabled
whether each mb can have a different strength based on mode/ref
Definition: vp8.h:192
VP8Context::framep
VP8Frame * framep[4]
Definition: vp8.h:167
VP8Context::mb_height
uint16_t mb_height
Definition: vp8.h:173
VP8_SPLITMVMODE_8x8
@ VP8_SPLITMVMODE_8x8
2x2 blocks of 8x8px each
Definition: vp8.h:80
VP8Context::hpc
H264PredContext hpc
Definition: vp8.h:317
VP8ThreadData::non_zero_count_cache
uint8_t non_zero_count_cache[6][4]
This is the index plus one of the last non-zero coeff for each of the blocks in the current macrobloc...
Definition: vp8.h:131
VP8Context::simple
uint8_t simple
Definition: vp8.h:201
VP8mv::y
int16_t y
Definition: vp8.h:87
VP8Context::feature_enabled
uint8_t feature_enabled[4]
Macroblock features (VP7)
Definition: vp8.h:345
VP8Context::luma_qmul
int16_t luma_qmul[2]
Definition: vp8.h:218
ff_vp8_decode_free
int ff_vp8_decode_free(AVCodecContext *avctx)
Definition: vp8.c:2854
VP8Macroblock::bmv
VP8mv bmv[16]
Definition: vp8.h:108
VP8Context::actually_webp
int actually_webp
Definition: vp8.h:165
DCT_CAT4
@ DCT_CAT4
Definition: vp8.h:60
VP8Context::coeff_partition
VPXRangeCoder coeff_partition[8]
Definition: vp8.h:313
progressframe.h
VP8_SPLITMVMODE_16x8
@ VP8_SPLITMVMODE_16x8
2 16x8 blocks (vertical)
Definition: vp8.h:78
VP8Context::deblock_filter
uint8_t deblock_filter
Definition: vp8.h:178
VP8Macroblock::skip
uint8_t skip
Definition: vp8.h:97
VP8Context::prob
struct VP8Context::@267 prob[2]
These are all of the updatable probabilities for binary decisions.
VP8Context::ref
int8_t ref[4]
filter strength adjustment for macroblocks that reference: [0] - intra / VP8_FRAME_CURRENT [1] - VP8_...
Definition: vp8.h:255
VP8Context::mbskip
uint8_t mbskip
Definition: vp8.h:285
vp8dsp.h
VP8Context::update_golden
int update_golden
VP8_FRAME_NONE if not updated, or which frame to copy if so.
Definition: vp8.h:299
VP8Context::mbskip_enabled
uint8_t mbskip_enabled
Definition: vp8.h:179
VP8Context::uvlinesize
ptrdiff_t uvlinesize
Definition: vp8.h:175
VP8ThreadData::left_nnz
uint8_t left_nnz[9]
For coeff decode, we need to know whether the above block had non-zero coefficients.
Definition: vp8.h:138
VP8Context::y2ac_delta
int y2ac_delta
Definition: vp8.h:228
DCT_CAT3
@ DCT_CAT3
Definition: vp8.h:59
VP8Context::mv_bounds
VP8mvbounds mv_bounds
Definition: vp8.h:181
VP8Context::chroma_qmul
int16_t chroma_qmul[2]
Definition: vp8.h:220
VP8ThreadData::filter_strength
VP8FilterStrength * filter_strength
Definition: vp8.h:149
DCT_EOB
@ DCT_EOB
Definition: vp8.h:63
VP8Context::yac_qi
int yac_qi
Definition: vp8.h:225
inter_splitmvmode
inter_splitmvmode
Definition: vp8.h:77
VP8Context::vp8dsp
VP8DSPContext vp8dsp
Definition: vp8.h:316
VP8Context::sharpness
uint8_t sharpness
Definition: vp8.h:203
VP8Context::keyframe
uint8_t keyframe
Definition: vp8.h:177
VP8Context::token
uint8_t token[4][16][3][NUM_DCT_TOKENS - 1]
Definition: vp8.h:291
DCT_0
@ DCT_0
Definition: vp8.h:52
VP8_SPLITMVMODE_8x16
@ VP8_SPLITMVMODE_8x16
2 8x16 blocks (horizontal)
Definition: vp8.h:79
VP8Context::avctx
AVCodecContext * avctx
Definition: vp8.h:163
dct_token
dct_token
Definition: vp8.h:51
VP8Frame::seg_map
uint8_t * seg_map
RefStruct reference.
Definition: vp8.h:155
VP8Context::curframe
VP8Frame * curframe
Definition: vp8.h:169
VP8Context::pred16x16
uint8_t pred16x16[4]
Definition: vp8.h:289
ff_vp8_decode_init
int ff_vp8_decode_init(AVCodecContext *avctx)
Definition: vp8.c:2898
VP8Context::update_map
uint8_t update_map
Definition: vp8.h:194
DCT_CAT1
@ DCT_CAT1
Definition: vp8.h:57
VP8Context::last
uint8_t last
Definition: vp8.h:287
VP8Context::bit_count
int bit_count
Definition: vp8.h:272
VP8Context::filter_level
int8_t filter_level[4]
base loop filter level
Definition: vp8.h:197
VP8FilterStrength
Definition: vp8.h:90
VP8Context::update
uint8_t update
Definition: vp8.h:235
VP8Context::mvc
uint8_t mvc[2][19]
Definition: vp8.h:292
VP8Context::linesize
ptrdiff_t linesize
Definition: vp8.h:174
NUM_DCT_TOKENS
@ NUM_DCT_TOKENS
Definition: vp8.h:65
VP8Context::luma_dc_qmul
int16_t luma_dc_qmul[2]
luma dc-only block quant
Definition: vp8.h:219
VP8Context::mb_width
uint16_t mb_width
Definition: vp8.h:172
vp8_mc_func
void(* vp8_mc_func)(uint8_t *dst, ptrdiff_t dstStride, const uint8_t *src, ptrdiff_t srcStride, int h, int x, int y)
Definition: vp8dsp.h:33
VP8Context::macroblocks
VP8Macroblock * macroblocks
Definition: vp8.h:206
VP8FrameType
VP8FrameType
Definition: vp8.h:43
VP8mv
Definition: vp8.h:85
VP8Frame
Definition: vp8.h:153
VP8Context::frames
VP8Frame frames[5]
Definition: vp8.h:319
VP8Context::feature_index_prob
uint8_t feature_index_prob[4][3]
Definition: vp8.h:347
VP8_FRAME_GOLDEN
@ VP8_FRAME_GOLDEN
Definition: vp8.h:47
VP8Context::update_probabilities
int update_probabilities
If this flag is not set, all the probability updates are discarded after this frame is decoded.
Definition: vp8.h:306
VP8DSPContext
Definition: vp8dsp.h:37
VP8Context::intra4x4_pred_mode_left
uint8_t intra4x4_pred_mode_left[4]
Definition: vp8.h:209
VP8Context::pred8x8c
uint8_t pred8x8c[3]
Definition: vp8.h:290
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem_internal.h:109
VP8Context::range
uint32_t range
Definition: vp8.h:270
VP8ThreadData::thread_nr
int thread_nr
Definition: vp8.h:139
EDGE_EMU_LINESIZE
#define EDGE_EMU_LINESIZE
Definition: vp8.h:147
VP8Context::colorspace
uint8_t colorspace
0 is the only value allowed (meaning bt601)
Definition: vp8.h:321
VP8Macroblock::ref_frame
uint8_t ref_frame
Definition: vp8.h:101
VP8FilterStrength::filter_level
uint8_t filter_level
Definition: vp8.h:91
VP8Context::mb_layout
int mb_layout
This describes the macroblock memory layout.
Definition: vp8.h:330
VP8Context::update_last
int update_last
update VP8_FRAME_PREVIOUS with the current one
Definition: vp8.h:298
VP8Context::decode_mb_row_no_filter
int(* decode_mb_row_no_filter)(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
Definition: vp8.h:332
DCT_1
@ DCT_1
Definition: vp8.h:53
VP8Context::c
VPXRangeCoder c
header context, includes mb modes and motion vectors
Definition: vp8.h:261
VP8ThreadData::mv_bounds
VP8mvbounds mv_bounds
Definition: vp8.h:150
VP8ThreadData
Definition: vp8.h:121
VP8Macroblock::chroma_pred_mode
uint8_t chroma_pred_mode
Definition: vp8.h:103
VP8Context::update_feature_data
uint8_t update_feature_data
Definition: vp8.h:195
VP8Context::invisible
int invisible
Definition: vp8.h:297
MODE_I4x4
#define MODE_I4x4
Definition: vp8.h:69
VP8Context::ref_count
int ref_count[3]
Definition: vp8.h:184
VP8ThreadData::edge_emu_buffer
uint8_t edge_emu_buffer[21 *EDGE_EMU_LINESIZE]
Definition: vp8.h:148
DCT_CAT5
@ DCT_CAT5
Definition: vp8.h:61
VP8Context::absolute_vals
uint8_t absolute_vals
Definition: vp8.h:193
lock
static pthread_mutex_t lock
Definition: ffjni.c:39
VP8Context::header_partition_size
int header_partition_size
Definition: vp8.h:275
VP8Context::golden
uint8_t golden
Definition: vp8.h:288
VP8Macroblock::segment
uint8_t segment
Definition: vp8.h:104
VP8ThreadData::wait_mb_pos
atomic_int wait_mb_pos
Definition: vp8.h:145
VP8Context::next_framep
VP8Frame * next_framep[4]
Definition: vp8.h:168
vpx_rac.h
VP8Context::fullrange
uint8_t fullrange
whether we can skip clamping in dsp functions
Definition: vp8.h:322
VP8Context::feature_present_prob
uint8_t feature_present_prob[4]
Definition: vp8.h:346
VP8Context::y2dc_delta
int y2dc_delta
Definition: vp8.h:227
VP8Context::lf_delta
struct VP8Context::@265 lf_delta
VP8mv::x
int16_t x
Definition: vp8.h:86
VP8mvbounds::mv_max
VP8intmv mv_max
Definition: vp8.h:118
pthread_cond_t
Definition: os2threads.h:58
VP8_FRAME_NONE
@ VP8_FRAME_NONE
Definition: vp8.h:44
VP8Macroblock
Definition: vp8.h:96
VP8Context::segmentation
struct VP8Context::@261 segmentation
Base parameters for segmentation, i.e.
VP8Context::filter
struct VP8Context::@262 filter
VP8Context::filter_mb_row
void(* filter_mb_row)(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
Definition: vp8.h:333
VP8_SPLITMVMODE_NONE
@ VP8_SPLITMVMODE_NONE
(only used in prediction) no split MVs
Definition: vp8.h:82
VP8Context::sign_bias
int8_t sign_bias[4]
one state [0, 1] per ref frame type
Definition: vp8.h:183
avcodec.h
frame
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
Definition: filter_design.txt:264
ff_vp8_decode_frame
int ff_vp8_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt)
Definition: vp8.c:2840
DCT_CAT2
@ DCT_CAT2
Definition: vp8.h:58
VP8Context::profile
uint8_t profile
Definition: vp8.h:180
DCT_3
@ DCT_3
Definition: vp8.h:55
h264pred.h
VP8Macroblock::mv
VP8mv mv
Definition: vp8.h:107
VP8Context::coder_state_at_header_end
struct VP8Context::@266 coder_state_at_header_end
AVCodecContext
main external API structure.
Definition: avcodec.h:451
VP8Macroblock::intra4x4_pred_mode_top
uint8_t intra4x4_pred_mode_top[4]
Definition: vp8.h:106
mode
mode
Definition: ebur128.h:83
VP8Macroblock::mode
uint8_t mode
Definition: vp8.h:100
VP8intmv::x
int x
Definition: vp8.h:112
VP8_MVMODE_SPLIT
@ VP8_MVMODE_SPLIT
Definition: vp8.h:74
VP8Context::qmat
struct VP8Context::@263 qmat[4]
Macroblocks can have one of 4 different quants in a frame when segmentation is enabled.
VideoDSPContext
Definition: videodsp.h:40
H264PredContext
Context for storing H.264 prediction functions.
Definition: h264pred.h:94
VP8mvbounds::mv_min
VP8intmv mv_min
Definition: vp8.h:117
VP8Context::feature_value
uint8_t feature_value[4][4]
Definition: vp8.h:348
VP8Context::pix_fmt
enum AVPixelFormat pix_fmt
Definition: vp8.h:164
VP8ThreadData::block
int16_t block[6][4][16]
Definition: vp8.h:122
ProgressFrame
The ProgressFrame structure.
Definition: progressframe.h:73
VP8Context::intra
uint8_t intra
Definition: vp8.h:286
AVPacket
This structure stores compressed data.
Definition: packet.h:516
VP8Context::base_quant
int8_t base_quant[4]
Definition: vp8.h:196
VP8Context::ydc_delta
int ydc_delta
Definition: vp8.h:226
DCT_CAT6
@ DCT_CAT6
Definition: vp8.h:62
videodsp.h
VP8Context::input
const uint8_t * input
Definition: vp8.h:269
VP8Context
Definition: vp8.h:161
VP8Context::uvac_delta
int uvac_delta
Definition: vp8.h:230
VP8_MVMODE_ZERO
@ VP8_MVMODE_ZERO
Definition: vp8.h:72
VP8Context::inter_dc_pred
uint16_t inter_dc_pred[2][2]
Interframe DC prediction (VP7) [0] VP8_FRAME_PREVIOUS [1] VP8_FRAME_GOLDEN.
Definition: vp8.h:340
VP8Context::scan
uint8_t scan[16]
Definition: vp8.h:293
VP8Context::level
uint8_t level
Definition: vp8.h:202
VP8Context::update_altref
int update_altref
Definition: vp8.h:300
VP8ThreadData::block_dc
int16_t block_dc[16]
Definition: vp8.h:123
VP8_FRAME_PREVIOUS
@ VP8_FRAME_PREVIOUS
Definition: vp8.h:46
VP8_MVMODE_MV
@ VP8_MVMODE_MV
Definition: vp8.h:73
cond
int(* cond)(enum AVPixelFormat pix_fmt)
Definition: pixdesc_query.c:28
VP8Frame::hwaccel_picture_private
void * hwaccel_picture_private
RefStruct reference.
Definition: vp8.h:157