VP8Context Struct Reference

#include <vp8.h>

Data Fields

AVCodecContextavctx
AVFrameframep [4]
AVFramenext_framep [4]
uint8_t * edge_emu_buffer
uint16_t mb_width
uint16_t mb_height
int linesize
int uvlinesize
uint8_t keyframe
uint8_t deblock_filter
uint8_t mbskip_enabled
uint8_t segment
 segment of the current macroblock
uint8_t chroma_pred_mode
 8x8c pred mode of the current macroblock
uint8_t profile
VP56mv mv_min
VP56mv mv_max
int8_t sign_bias [4]
 one state [0, 1] per ref frame type
int ref_count [3]
struct {
   uint8_t   enabled
   uint8_t   absolute_vals
   uint8_t   update_map
   int8_t   base_quant [4]
   int8_t   filter_level [4]
 base loop filter level
segmentation
 Base parameters for segmentation, i.e.
struct {
   uint8_t   simple
   uint8_t   level
   uint8_t   sharpness
filter
VP8Macroblockmacroblocks
VP8FilterStrengthfilter_strength
uint8_t * intra4x4_pred_mode_top
uint8_t intra4x4_pred_mode_left [4]
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 {
   uint8_t   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
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 left_nnz [9]
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.
VP56RangeCoder c
 header context, includes mb modes and motion vectors
DCTELEM block [6][4][16]
DCTELEM block_dc [16]
uint8_t intra4x4_pred_mode_mb [16]
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][16][3][NUM_DCT_TOKENS-1]
   uint8_t   mvc [2][19]
prob [2]
 These are all of the updatable probabilities for binary decisions.
VP8Macroblockmacroblocks_base
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 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]
DSPContext dsp
VP8DSPContext vp8dsp
H264PredContext hpc
vp8_mc_func put_pixels_tab [3][3][3]
AVFrame frames [5]
uint8_t * segmentation_maps [5]
 A list of segmentation_map buffers that are to be free()'ed in the next decoding iteration.
int num_maps_to_be_freed
int maps_are_invalid

Detailed Description

Definition at line 86 of file vp8.h.

Field Documentation

uint8_t VP8Context::absolute_vals

Definition at line 116 of file vp8.h.

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

int8_t VP8Context::base_quant[4]

Definition at line 118 of file vp8.h.

Referenced by get_quants(), and parse_segment_info().

DCTELEM VP8Context::block[6][4][16]

Definition at line 194 of file vp8.h.

Referenced by decode_mb_coeffs(), idct_mb(), and intra_predict().

DCTELEM VP8Context::block_dc[16]

Definition at line 195 of file vp8.h.

Referenced by decode_mb_coeffs().

VP56RangeCoder VP8Context::c

header context, includes mb modes and motion vectors

Definition at line 193 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().

uint8_t VP8Context::chroma_pred_mode

8x8c pred mode of the current macroblock

Definition at line 101 of file vp8.h.

Referenced by decode_mb_mode(), and intra_predict().

int16_t VP8Context::chroma_qmul[2]

Definition at line 143 of file vp8.h.

Referenced by decode_mb_coeffs(), and get_quants().

VP56RangeCoder VP8Context::coeff_partition[8]

Definition at line 233 of file vp8.h.

Referenced by setup_partitions(), and vp8_decode_frame().

uint8_t VP8Context::deblock_filter

Definition at line 98 of file vp8.h.

Referenced by intra_predict(), and vp8_decode_frame().

DSPContext VP8Context::dsp

Definition at line 234 of file vp8.h.

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

uint8_t* VP8Context::edge_emu_buffer

Definition at line 90 of file vp8.h.

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

uint8_t VP8Context::enabled

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

Definition at line 115 of file vp8.h.

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

struct { ... } VP8Context::filter
int8_t VP8Context::filter_level[4]

base loop filter level

Definition at line 119 of file vp8.h.

Referenced by filter_level_for_mb(), and parse_segment_info().

VP8FilterStrength* VP8Context::filter_strength
AVFrame* VP8Context::framep[4]
AVFrame VP8Context::frames[5]
uint8_t VP8Context::golden

Definition at line 209 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

H264PredContext VP8Context::hpc

Definition at line 236 of file vp8.h.

Referenced by intra_predict(), and vp8_decode_init().

uint8_t VP8Context::intra

Definition at line 207 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

uint8_t VP8Context::intra4x4_pred_mode_left[4]

Definition at line 132 of file vp8.h.

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

uint8_t VP8Context::intra4x4_pred_mode_mb[16]

Definition at line 196 of file vp8.h.

Referenced by decode_intra4x4_modes(), and intra_predict().

uint8_t* VP8Context::intra4x4_pred_mode_top
int VP8Context::invisible

Definition at line 217 of file vp8.h.

Referenced by decode_frame_header(), and vp8_decode_frame().

uint8_t VP8Context::keyframe

Definition at line 97 of file vp8.h.

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

uint8_t VP8Context::last

Definition at line 208 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

uint8_t VP8Context::left_nnz[9]

Definition at line 183 of file vp8.h.

Referenced by vp8_decode_frame().

uint8_t VP8Context::level

Definition at line 124 of file vp8.h.

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

struct { ... } VP8Context::lf_delta
int16_t VP8Context::luma_dc_qmul[2]

luma dc-only block quant

Definition at line 142 of file vp8.h.

Referenced by decode_mb_coeffs(), and get_quants().

int16_t VP8Context::luma_qmul[2]

Definition at line 141 of file vp8.h.

Referenced by decode_mb_coeffs(), and get_quants().

VP8Macroblock* VP8Context::macroblocks

Definition at line 128 of file vp8.h.

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

VP8Macroblock* VP8Context::macroblocks_base
int VP8Context::maps_are_invalid
uint16_t VP8Context::mb_height
uint8_t VP8Context::mbskip

Definition at line 206 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

uint8_t VP8Context::mbskip_enabled

Definition at line 99 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

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 158 of file vp8.h.

Referenced by filter_level_for_mb(), and update_lf_deltas().

VP56mv VP8Context::mv_max

Definition at line 104 of file vp8.h.

Referenced by clamp_mv(), and vp8_decode_frame().

VP56mv VP8Context::mv_min

Definition at line 103 of file vp8.h.

Referenced by clamp_mv(), and vp8_decode_frame().

uint8_t VP8Context::mvc[2][19]

Definition at line 213 of file vp8.h.

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

AVFrame* VP8Context::next_framep[4]

Definition at line 89 of file vp8.h.

Referenced by vp8_decode_frame().

uint8_t VP8Context::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.

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

Definition at line 192 of file vp8.h.

Referenced by decode_mb_coeffs(), idct_mb(), and intra_predict().

int VP8Context::num_coeff_partitions

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 232 of file vp8.h.

Referenced by setup_partitions(), and vp8_decode_frame().

int VP8Context::num_maps_to_be_freed

Definition at line 247 of file vp8.h.

Referenced by release_queued_segmaps(), vp8_alloc_frame(), and vp8_release_frame().

uint8_t VP8Context::pred16x16[4]

Definition at line 210 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

uint8_t VP8Context::pred8x8c[3]

Definition at line 211 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_mode().

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(), vp8_decode_frame(), and vp8_decode_update_thread_context().

uint8_t VP8Context::profile

Definition at line 102 of file vp8.h.

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

vp8_mc_func VP8Context::put_pixels_tab[3][3][3]

Definition at line 237 of file vp8.h.

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

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().

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 167 of file vp8.h.

Referenced by filter_level_for_mb(), and update_lf_deltas().

int VP8Context::ref_count[3]

Definition at line 107 of file vp8.h.

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

uint8_t VP8Context::segment

segment of the current macroblock

Definition at line 100 of file vp8.h.

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

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(), parse_segment_info(), vp8_decode_frame(), and vp8_decode_update_thread_context().

uint8_t* VP8Context::segmentation_maps[5]

A list of segmentation_map buffers that are to be free()'ed in the next decoding iteration.

We can't free() them right away because the map may still be used by subsequent decoding threads. Unused if frame threading is off.

Definition at line 246 of file vp8.h.

Referenced by release_queued_segmaps(), vp8_alloc_frame(), and vp8_release_frame().

uint8_t VP8Context::segmentid[3]

Definition at line 205 of file vp8.h.

Referenced by decode_mb_mode(), and parse_segment_info().

uint8_t VP8Context::sharpness

Definition at line 125 of file vp8.h.

Referenced by decode_frame_header(), and filter_level_for_mb().

int8_t VP8Context::sign_bias[4]

one state [0, 1] per ref frame type

Definition at line 106 of file vp8.h.

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

uint8_t VP8Context::simple

Definition at line 123 of file vp8.h.

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

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

Definition at line 212 of file vp8.h.

Referenced by decode_frame_header(), and decode_mb_coeffs().

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 174 of file vp8.h.

Referenced by filter_mb_row(), filter_mb_row_simple(), free_buffers(), intra_predict(), update_dimensions(), 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 182 of file vp8.h.

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

int VP8Context::update_altref

Definition at line 220 of file vp8.h.

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

int VP8Context::update_golden

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

Definition at line 219 of file vp8.h.

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

int VP8Context::update_last

update VP56_FRAME_PREVIOUS with the current one

Definition at line 218 of file vp8.h.

Referenced by decode_frame_header(), and vp8_decode_frame().

uint8_t VP8Context::update_map

Definition at line 117 of file vp8.h.

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

int VP8Context::update_probabilities

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

Definition at line 226 of file vp8.h.

Referenced by decode_frame_header(), and vp8_decode_frame().

int VP8Context::uvlinesize

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