vp8.h
Go to the documentation of this file.
1 
25 #ifndef AVCODEC_VP8_H
26 #define AVCODEC_VP8_H
27 
28 #include "vp56.h"
29 #include "vp56data.h"
30 #include "vp8dsp.h"
31 #include "h264pred.h"
32 
33 #define VP8_MAX_QUANT 127
34 
35 enum dct_token {
48 
50 };
51 
52 // used to signal 4x4 intra pred in luma MBs
53 #define MODE_I4x4 4
54 
59 };
60 
67 };
68 
69 typedef struct {
70  uint8_t filter_level;
71  uint8_t inner_limit;
72  uint8_t inner_filter;
74 
75 typedef struct {
76  uint8_t skip;
77  // todo: make it possible to check for at least (i4x4 or split_mv)
78  // in one op. are others needed?
79  uint8_t mode;
80  uint8_t ref_frame;
81  uint8_t partitioning;
83  VP56mv bmv[16];
85 
86 typedef struct {
88  AVFrame *framep[4];
89  AVFrame *next_framep[4];
90  uint8_t *edge_emu_buffer;
91 
92  uint16_t mb_width; /* number of horizontal MB */
93  uint16_t mb_height; /* number of vertical MB */
94  int linesize;
96 
97  uint8_t keyframe;
98  uint8_t deblock_filter;
99  uint8_t mbskip_enabled;
100  uint8_t segment;
102  uint8_t profile;
105 
106  int8_t sign_bias[4];
107  int ref_count[3];
108 
114  struct {
115  uint8_t enabled;
116  uint8_t absolute_vals;
117  uint8_t update_map;
118  int8_t base_quant[4];
119  int8_t filter_level[4];
120  } segmentation;
121 
122  struct {
123  uint8_t simple;
124  uint8_t level;
125  uint8_t sharpness;
126  } filter;
127 
130 
132  uint8_t intra4x4_pred_mode_left[4];
133 
139  struct {
140  // [0] - DC qmul [1] - AC qmul
141  int16_t luma_qmul[2];
142  int16_t luma_dc_qmul[2];
143  int16_t chroma_qmul[2];
144  } qmat[4];
145 
146  struct {
147  uint8_t enabled;
148 
158  int8_t mode[VP8_MVMODE_SPLIT+1];
159 
167  int8_t ref[4];
168  } lf_delta;
169 
174  uint8_t (*top_border)[16+8+8];
175 
182  uint8_t (*top_nnz)[9];
183  DECLARE_ALIGNED(8, uint8_t, left_nnz)[9];
184 
192  DECLARE_ALIGNED(16, uint8_t, non_zero_count_cache)[6][4];
194  DECLARE_ALIGNED(16, DCTELEM, block)[6][4][16];
195  DECLARE_ALIGNED(16, DCTELEM, block_dc)[16];
196  uint8_t intra4x4_pred_mode_mb[16];
197 
204  struct {
205  uint8_t segmentid[3];
206  uint8_t mbskip;
207  uint8_t intra;
208  uint8_t last;
209  uint8_t golden;
210  uint8_t pred16x16[4];
211  uint8_t pred8x8c[3];
212  uint8_t token[4][16][3][NUM_DCT_TOKENS-1];
213  uint8_t mvc[2][19];
214  } prob[2];
215 
221 
227 
233  VP56RangeCoder coeff_partition[8];
237  vp8_mc_func put_pixels_tab[3][3][3];
238  AVFrame frames[5];
239 
246  uint8_t *segmentation_maps[5];
249 } VP8Context;
250 
251 #endif /* AVCODEC_VP8_H */
void(* vp8_mc_func)(uint8_t *dst, int dstStride, uint8_t *src, int srcStride, int h, int x, int y)
Definition: vp8dsp.h:32
uint8_t golden
Definition: vp8.h:209
Definition: vp8.h:38
uint8_t inner_limit
Definition: vp8.h:71
VP8Macroblock * macroblocks
Definition: vp8.h:128
Definition: vp8.h:46
Definition: vp8.h:39
(only used in prediction) no split MVs
Definition: vp8.h:66
Audio Video Frame.
Definition: avcodec.h:985
VP56mv mv_min
Definition: vp8.h:103
VP5 and VP6 compatible video decoder (common features)
uint8_t * intra4x4_pred_mode_top
Definition: vp8.h:131
uint8_t mbskip_enabled
Definition: vp8.h:99
int linesize
Definition: vp8.h:94
#define DECLARE_ALIGNED(n, t, v)
Definition: mem.h:55
uint8_t inner_filter
Definition: vp8.h:72
uint8_t sharpness
Definition: vp8.h:125
2 16x8 blocks (vertical)
Definition: vp8.h:62
int update_probabilities
If this flag is not set, all the probability updates are discarded after this frame is decoded...
Definition: vp8.h:226
inter_mvmode
Definition: vp8.h:55
uint8_t chroma_pred_mode
8x8c pred mode of the current macroblock
Definition: vp8.h:101
uint8_t update_map
Definition: vp8.h:117
uint16_t mb_height
Definition: vp8.h:93
int update_golden
VP56_FRAME_NONE if not updated, or which frame to copy if so.
Definition: vp8.h:219
struct VP8DecoderContext VP8Context
Definition: vp8.h:36
uint8_t ref_frame
Definition: vp8.h:80
Definition: vp8.h:44
VP8 compatible video decoder.
uint8_t * edge_emu_buffer
Definition: vp8.h:90
VP56mv mv
Definition: vp8.h:82
Context for storing H.264 prediction functions.
Definition: h264pred.h:92
int update_last
update VP56_FRAME_PREVIOUS with the current one
Definition: vp8.h:218
int num_coeff_partitions
All coefficients are contained in separate arith coding contexts.
Definition: vp8.h:232
VP8FilterStrength * filter_strength
Definition: vp8.h:129
H264PredContext hpc
Definition: vp8.h:236
uint8_t absolute_vals
Definition: vp8.h:116
uint16_t mb_width
Definition: vp8.h:92
uint8_t last
Definition: vp8.h:208
uint8_t mode
Definition: vp8.h:79
AVCodecContext * avctx
Definition: vp8.h:87
VP8Macroblock * macroblocks_base
Definition: vp8.h:216
Definition: vp8.h:41
uint8_t keyframe
Definition: vp8.h:97
int maps_are_invalid
Definition: vp8.h:248
static void filter(MpegAudioContext *s, int ch, const short *samples, int incr)
Definition: mpegaudioenc.c:311
VP5 and VP6 compatible video decoder (common data)
static DCTELEM block[64]
Definition: dct-test.c:189
4x4 blocks of 4x4px each
Definition: vp8.h:65
uint8_t deblock_filter
Definition: vp8.h:98
uint8_t mbskip
Definition: vp8.h:206
Definition: vp8.h:43
uint8_t simple
Definition: vp8.h:123
uint8_t level
Definition: vp8.h:124
Definition: vp8.h:47
main external API structure.
Definition: avcodec.h:1329
VP56RangeCoder c
header context, includes mb modes and motion vectors
Definition: vp8.h:193
uint8_t segment
segment of the current macroblock
Definition: vp8.h:100
int num_maps_to_be_freed
Definition: vp8.h:247
uint8_t enabled
whether each mb can have a different strength based on mode/ref
Definition: vp8.h:115
dct_token
Definition: vp8.h:35
Definition: vp8.h:45
int uvlinesize
Definition: vp8.h:95
VP56mv mv_max
Definition: vp8.h:104
short DCTELEM
Definition: dsputil.h:39
Definition: vp8.h:37
DSPContext dsp
Definition: vp8.h:234
H.264 / AVC / MPEG4 prediction functions.
Definition: vp56.h:37
int update_altref
Definition: vp8.h:220
2 8x16 blocks (horizontal)
Definition: vp8.h:63
Definition: vp8.h:40
uint8_t partitioning
Definition: vp8.h:81
Definition: vp8.h:42
int invisible
Definition: vp8.h:217
#define MODE_I4x4
Definition: vp8.h:53
VP8DSPContext vp8dsp
Definition: vp8.h:235
inter_splitmvmode
Definition: vp8.h:61
uint8_t intra
Definition: vp8.h:207
uint8_t skip
Definition: vp8.h:76
uint8_t profile
Definition: vp8.h:102
2x2 blocks of 8x8px each
Definition: vp8.h:64
DSPContext.
Definition: dsputil.h:226
uint8_t filter_level
Definition: vp8.h:70