#include <vp8.h>
Data Fields | |
AVCodecContext * | avctx |
AVFrame * | framep [4] |
AVFrame * | next_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 |
VP8Macroblock * | macroblocks |
VP8FilterStrength * | filter_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. | |
VP8Macroblock * | macroblocks_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 |
Definition at line 86 of file vp8.h.
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().
Definition at line 87 of file vp8.h.
Referenced by decode_frame_header(), intra_predict(), update_dimensions(), vp8_alloc_frame(), vp8_decode_init(), vp8_decode_init_thread_copy(), and vp8_release_frame().
int8_t VP8Context::base_quant[4] |
DCTELEM VP8Context::block[6][4][16] |
Definition at line 194 of file vp8.h.
Referenced by decode_mb_coeffs(), idct_mb(), and intra_predict().
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().
uint8_t VP8Context::deblock_filter |
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(), filter_level_for_mb(), get_quants(), and vp8_decode_frame().
struct { ... } VP8Context::filter |
Referenced by decode_frame_header(), filter_level_for_mb(), intra_predict(), and vp8_decode_frame().
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().
Definition at line 129 of file vp8.h.
Referenced by filter_mb_row(), filter_mb_row_simple(), free_buffers(), update_dimensions(), and vp8_decode_frame().
Definition at line 88 of file vp8.h.
Referenced by inter_predict(), prefetch_motion(), vp8_decode_flush_impl(), vp8_decode_frame(), and vp8_decode_update_thread_context().
Definition at line 238 of file vp8.h.
Referenced by vp8_decode_flush_impl(), vp8_decode_frame(), and vp8_decode_update_thread_context().
uint8_t VP8Context::golden |
uint8_t VP8Context::intra |
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] |
uint8_t* VP8Context::intra4x4_pred_mode_top |
Definition at line 131 of file vp8.h.
Referenced by decode_intra4x4_modes(), decode_mb_mode(), free_buffers(), update_dimensions(), and vp8_decode_frame().
Definition at line 217 of file vp8.h.
Referenced by decode_frame_header(), skipframe_clear(), 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 |
uint8_t VP8Context::left_nnz[9] |
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 |
Referenced by decode_frame_header(), filter_level_for_mb(), update_lf_deltas(), and vp8_decode_update_thread_context().
Definition at line 94 of file vp8.h.
Referenced by filter_mb(), filter_mb_row(), filter_mb_row_simple(), filter_mb_simple(), idct_mb(), inter_predict(), intra_predict(), prefetch_motion(), vp8_decode_frame(), and vp8_mc_part().
luma dc-only block quant
Definition at line 142 of file vp8.h.
Referenced by decode_mb_coeffs(), and get_quants().
Definition at line 128 of file vp8.h.
Referenced by free_buffers(), update_dimensions(), and vp8_decode_frame().
Definition at line 216 of file vp8.h.
Referenced by decode_frame_header(), free_buffers(), update_dimensions(), and vp8_decode_update_thread_context().
Definition at line 248 of file vp8.h.
Referenced by release_queued_segmaps(), vp8_alloc_frame(), vp8_decode_flush_impl(), and vp8_decode_update_thread_context().
uint16_t VP8Context::mb_height |
Definition at line 93 of file vp8.h.
Referenced by inter_predict(), update_dimensions(), vp8_alloc_frame(), vp8_decode_frame(), and vp8_decode_update_thread_context().
uint16_t VP8Context::mb_width |
Definition at line 92 of file vp8.h.
Referenced by filter_mb_row(), filter_mb_row_simple(), inter_predict(), intra_predict(), update_dimensions(), vp8_alloc_frame(), vp8_decode_frame(), and vp8_decode_update_thread_context().
uint8_t VP8Context::mbskip |
uint8_t VP8Context::mbskip_enabled |
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().
uint8_t VP8Context::mvc[2][19] |
Definition at line 213 of file vp8.h.
Referenced by decode_frame_header(), decode_mvs(), and decode_splitmvs().
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().
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().
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] |
uint8_t VP8Context::pred8x8c[3] |
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] |
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] |
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().
Definition at line 220 of file vp8.h.
Referenced by decode_frame_header(), update_refs(), and vp8_decode_frame().
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().
update VP56_FRAME_PREVIOUS with the current one
Definition at line 218 of file vp8.h.
Referenced by decode_frame_header(), skipframe_clear(), 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().
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().
Definition at line 95 of file vp8.h.
Referenced by filter_mb(), filter_mb_row(), idct_mb(), inter_predict(), intra_predict(), prefetch_motion(), vp8_decode_frame(), and vp8_mc_part().
Definition at line 235 of file vp8.h.
Referenced by decode_frame_header(), decode_mb_coeffs(), filter_mb(), filter_mb_simple(), idct_mb(), intra_predict(), and vp8_decode_init().