VP8Context Struct Reference

#include <vp8.h>


Public Member Functions

 DECLARE_ALIGNED (8, uint8_t, left_nnz)[9]
 DECLARE_ALIGNED (16, 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 macroblock.
 DECLARE_ALIGNED (16, DCTELEM, block)[6][4][16]
 DECLARE_ALIGNED (16, DCTELEM, block_dc)[16]

Data Fields

AVCodecContextavctx
DSPContext dsp
VP8DSPContext vp8dsp
H264PredContext hpc
vp8_mc_func put_pixels_tab [3][3][3]
AVFrame frames [4]
AVFrameframep [4]
uint8_t * edge_emu_buffer
VP56RangeCoder c
 header context, includes mb modes and motion vectors
int profile
int mb_width
int mb_height
int linesize
int uvlinesize
int keyframe
int invisible
int update_last
 update VP56_FRAME_PREVIOUS with the current one
int update_golden
 VP56_FRAME_NONE if not updated, or which frame to copy if so.
int update_altref
int deblock_filter
int update_probabilities
 If this flag is not set, all the probability updates are discarded after this frame is decoded.
int num_coeff_partitions
 All coefficients are contained in separate arith coding contexts.
VP56RangeCoder coeff_partition [8]
VP8Macroblockmacroblocks
VP8Macroblockmacroblocks_base
VP8FilterStrengthfilter_strength
uint8_t * intra4x4_pred_mode_top
uint8_t intra4x4_pred_mode_left [4]
uint8_t * segmentation_map
uint8_t(* top_border )[16+8+8]
 Cache of the top row needed for intra prediction 16 for luma, 8 for each chroma plane.
uint8_t(* top_nnz )[9]
 For coeff decode, we need to know whether the above block had non-zero coefficients.
uint8_t intra4x4_pred_mode_mb [16]
int chroma_pred_mode
 8x8c pred mode of the current macroblock
int segment
 segment of the current macroblock
VP56mv mv_min
VP56mv mv_max
int mbskip_enabled
int sign_bias [4]
 one state [0, 1] per ref frame type
int ref_count [3]
struct {
   int   enabled
   int   absolute_vals
   int   update_map
   int8_t   base_quant [4]
   int8_t   filter_level [4]
 base loop filter level
segmentation
 Base parameters for segmentation, i.e.
struct {
   int16_t   luma_qmul [2]
   int16_t   luma_dc_qmul [2]
 luma dc-only block quant
   int16_t   chroma_qmul [2]
qmat [4]
 Macroblocks can have one of 4 different quants in a frame when segmentation is enabled.
struct {
   int   simple
   int   level
   int   sharpness
filter
struct {
   int   enabled
 whether each mb can have a different strength based on mode/ref
   int8_t   mode [VP8_MVMODE_SPLIT+1]
 filter strength adjustment for the following macroblock modes: [0-3] - i16x16 (always zero) [4] - i4x4 [5] - zero mv [6] - inter modes except for zero or split mv [7] - split mv i16x16 modes never have any adjustment
   int8_t   ref [4]
 filter strength adjustment for macroblocks that reference: [0] - intra / VP56_FRAME_CURRENT [1] - VP56_FRAME_PREVIOUS [2] - VP56_FRAME_GOLDEN [3] - altref / VP56_FRAME_GOLDEN2
lf_delta
struct {
   uint8_t   segmentid [3]
   uint8_t   mbskip
   uint8_t   intra
   uint8_t   last
   uint8_t   golden
   uint8_t   pred16x16 [4]
   uint8_t   pred8x8c [3]
   uint8_t   token [4][17][3][NUM_DCT_TOKENS-1]
   uint8_t   mvc [2][19]
prob [2]
 These are all of the updatable probabilities for binary decisions.


Detailed Description

Definition at line 86 of file vp8.h.


Member Function Documentation

VP8Context::DECLARE_ALIGNED ( ,
uint8_t  ,
left_nnz   
)

VP8Context::DECLARE_ALIGNED ( 16  ,
uint8_t  ,
non_zero_count_cache   
)

This is the index plus one of the last non-zero coeff for each of the blocks in the current macroblock.

So, 0 -> no coeffs 1 -> dc-only (special transform) 2+-> full transform

VP8Context::DECLARE_ALIGNED ( 16  ,
DCTELEM  ,
block   
)

VP8Context::DECLARE_ALIGNED ( 16  ,
DCTELEM  ,
block_dc   
)


Field Documentation

Definition at line 87 of file vp8.h.

Referenced by decode_frame_header(), intra_predict(), update_dimensions(), and vp8_decode_init().

Definition at line 88 of file vp8.h.

Referenced by prefetch_motion(), vp8_decode_frame(), vp8_decode_init(), vp8_mc_chroma(), and vp8_mc_luma().

Definition at line 90 of file vp8.h.

Referenced by intra_predict(), and vp8_decode_init().

Definition at line 91 of file vp8.h.

Referenced by decode_frame_header(), inter_predict(), and vp8_mc_part().

Definition at line 92 of file vp8.h.

Referenced by vp8_decode_flush(), and vp8_decode_frame().

Definition at line 94 of file vp8.h.

Referenced by vp8_decode_flush(), vp8_decode_frame(), vp8_mc_chroma(), and vp8_mc_luma().

header context, includes mb modes and motion vectors

Definition at line 95 of file vp8.h.

Referenced by decode_frame_header(), decode_mb_mode(), decode_mvs(), get_quants(), parse_segment_info(), ref_to_update(), setup_partitions(), update_lf_deltas(), and update_refs().

Definition at line 96 of file vp8.h.

Referenced by decode_frame_header(), inter_predict(), and vp8_mc_part().

Definition at line 99 of file vp8.h.

Referenced by inter_predict(), update_dimensions(), and vp8_decode_frame().

Definition at line 103 of file vp8.h.

Referenced by decode_frame_header(), decode_mb_mode(), filter_mb(), and vp8_decode_frame().

Definition at line 104 of file vp8.h.

Referenced by decode_frame_header(), and vp8_decode_frame().

update VP56_FRAME_PREVIOUS with the current one

Definition at line 105 of file vp8.h.

Referenced by decode_frame_header(), and vp8_decode_frame().

VP56_FRAME_NONE if not updated, or which frame to copy if so.

Definition at line 106 of file vp8.h.

Referenced by decode_frame_header(), update_refs(), and vp8_decode_frame().

Definition at line 107 of file vp8.h.

Referenced by decode_frame_header(), update_refs(), and vp8_decode_frame().

Definition at line 108 of file vp8.h.

Referenced by intra_predict(), and vp8_decode_frame().

If this flag is not set, all the probability updates are discarded after this frame is decoded.

Definition at line 114 of file vp8.h.

Referenced by decode_frame_header(), and vp8_decode_frame().

All coefficients are contained in separate arith coding contexts.

There can be 1, 2, 4, or 8 of these after the header context.

Definition at line 120 of file vp8.h.

Referenced by setup_partitions(), and vp8_decode_frame().

Definition at line 121 of file vp8.h.

Referenced by setup_partitions(), and vp8_decode_frame().

Definition at line 123 of file vp8.h.

Referenced by update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().

Definition at line 124 of file vp8.h.

Referenced by decode_frame_header(), update_dimensions(), and vp8_decode_flush().

Definition at line 128 of file vp8.h.

Referenced by decode_intra4x4_modes(), decode_mb_mode(), and vp8_decode_frame().

Definition at line 129 of file vp8.h.

Referenced by update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().

uint8_t(* VP8Context::top_border)[16+8+8]

Cache of the top row needed for intra prediction 16 for luma, 8 for each chroma plane.

Definition at line 135 of file vp8.h.

Referenced by filter_mb_row(), filter_mb_row_simple(), intra_predict(), update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().

uint8_t(* VP8Context::top_nnz)[9]

For coeff decode, we need to know whether the above block had non-zero coefficients.

This means for each macroblock, we need data for 4 luma blocks, 2 u blocks, 2 v blocks, and the luma dc block, for a total of 9 per macroblock. We keep the last row in top_nnz.

Definition at line 143 of file vp8.h.

Referenced by update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().

Definition at line 156 of file vp8.h.

Referenced by decode_intra4x4_modes(), and intra_predict().

8x8c pred mode of the current macroblock

Definition at line 158 of file vp8.h.

Referenced by decode_mb_mode(), and intra_predict().

segment of the current macroblock

Definition at line 159 of file vp8.h.

Referenced by decode_mb_coeffs(), decode_mb_mode(), and filter_level_for_mb().

Definition at line 160 of file vp8.h.

Referenced by clamp_mv(), and vp8_decode_frame().

Definition at line 161 of file vp8.h.

Referenced by clamp_mv(), and vp8_decode_frame().

Definition at line 163 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

one state [0, 1] per ref frame type

Definition at line 164 of file vp8.h.

Referenced by decode_frame_header(), and decode_mvs().

Definition at line 165 of file vp8.h.

Referenced by decode_mb_mode(), prefetch_motion(), and vp8_decode_frame().

whether each mb can have a different strength based on mode/ref

Definition at line 173 of file vp8.h.

Referenced by decode_frame_header(), filter_level_for_mb(), and get_quants().

Definition at line 174 of file vp8.h.

Referenced by filter_level_for_mb(), get_quants(), and parse_segment_info().

Definition at line 175 of file vp8.h.

Referenced by decode_frame_header(), decode_mb_mode(), and parse_segment_info().

Definition at line 176 of file vp8.h.

Referenced by get_quants(), and parse_segment_info().

base loop filter level

Definition at line 177 of file vp8.h.

Referenced by filter_level_for_mb(), and parse_segment_info().

struct { ... } VP8Context::segmentation

Base parameters for segmentation, i.e.

per-macroblock parameters. These must be kept unchanged even if segmentation is not used for a frame, since the values persist between interframes.

Referenced by decode_frame_header(), decode_mb_mode(), filter_level_for_mb(), get_quants(), and parse_segment_info().

Definition at line 187 of file vp8.h.

Referenced by decode_mb_coeffs(), and get_quants().

luma dc-only block quant

Definition at line 188 of file vp8.h.

Referenced by decode_mb_coeffs(), and get_quants().

Definition at line 189 of file vp8.h.

Referenced by decode_mb_coeffs(), and get_quants().

struct { ... } VP8Context::qmat[4]

Macroblocks can have one of 4 different quants in a frame when segmentation is enabled.

If segmentation is disabled, only the first segment's values are used.

Referenced by decode_mb_coeffs(), and get_quants().

Definition at line 193 of file vp8.h.

Referenced by decode_frame_header(), intra_predict(), and vp8_decode_frame().

Definition at line 194 of file vp8.h.

Referenced by decode_frame_header(), filter_level_for_mb(), and vp8_decode_frame().

Definition at line 195 of file vp8.h.

Referenced by decode_frame_header(), and filter_level_for_mb().

struct { ... } VP8Context::filter

int8_t VP8Context::mode[VP8_MVMODE_SPLIT+1]

filter strength adjustment for the following macroblock modes: [0-3] - i16x16 (always zero) [4] - i4x4 [5] - zero mv [6] - inter modes except for zero or split mv [7] - split mv i16x16 modes never have any adjustment

Definition at line 210 of file vp8.h.

Referenced by filter_level_for_mb(), and update_lf_deltas().

int8_t VP8Context::ref[4]

filter strength adjustment for macroblocks that reference: [0] - intra / VP56_FRAME_CURRENT [1] - VP56_FRAME_PREVIOUS [2] - VP56_FRAME_GOLDEN [3] - altref / VP56_FRAME_GOLDEN2

Definition at line 219 of file vp8.h.

Referenced by filter_level_for_mb(), and update_lf_deltas().

struct { ... } VP8Context::lf_delta

Definition at line 229 of file vp8.h.

Referenced by decode_mb_mode(), and parse_segment_info().

Definition at line 230 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

Definition at line 231 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

Definition at line 232 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

Definition at line 233 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

Definition at line 234 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

Definition at line 235 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

uint8_t VP8Context::token[4][17][3][NUM_DCT_TOKENS-1]

Definition at line 237 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_coeffs().

uint8_t VP8Context::mvc[2][19]

Definition at line 238 of file vp8.h.

Referenced by decode_frame_header(), decode_mvs(), and decode_splitmvs().

struct { ... } VP8Context::prob[2]

These are all of the updatable probabilities for binary decisions.

They are only implictly reset on keyframes, making it quite likely for an interframe to desync if a prior frame's header was corrupt or missing outright!

Referenced by decode_frame_header(), decode_mb_coeffs(), decode_mb_mode(), decode_mvs(), decode_splitmvs(), parse_segment_info(), and vp8_decode_frame().


The documentation for this struct was generated from the following file:

Generated on Mon May 2 19:50:39 2011 for FFmpeg by  doxygen 1.5.6