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 | |
| AVCodecContext * | avctx |
| DSPContext | dsp |
| VP8DSPContext | vp8dsp |
| H264PredContext | hpc |
| vp8_mc_func | put_pixels_tab [3][3][3] |
| AVFrame | frames [4] |
| AVFrame * | framep [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] |
| VP8Macroblock * | macroblocks |
| VP8Macroblock * | macroblocks_base |
| VP8FilterStrength * | filter_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 | |
| 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 [4] | |
| filter strength adjustment for the following macroblock modes: [0] - i4x4 [1] - zero mv [2] - inter modes except for zero or split mv [3] - 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. | |
Definition at line 50 of file vp8.c.
| VP8Context::DECLARE_ALIGNED | ( | 8 | , | |
| 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 | ||||
| ) |
Definition at line 51 of file vp8.c.
Referenced by decode_frame_header(), intra_predict(), update_dimensions(), and vp8_decode_init().
Definition at line 52 of file vp8.c.
Referenced by prefetch_motion(), vp8_decode_frame(), and vp8_decode_init().
Definition at line 53 of file vp8.c.
Referenced by decode_frame_header(), decode_mb_coeffs(), filter_mb(), filter_mb_simple(), idct_mb(), intra_predict(), and vp8_decode_init().
| vp8_mc_func VP8Context::put_pixels_tab[3][3][3] |
Definition at line 55 of file vp8.c.
Referenced by decode_frame_header(), inter_predict(), and vp8_mc_part().
Definition at line 57 of file vp8.c.
Referenced by filter_mb_row(), filter_mb_row_simple(), inter_predict(), prefetch_motion(), vp8_decode_flush(), and vp8_decode_frame().
| uint8_t* VP8Context::edge_emu_buffer |
Definition at line 58 of file vp8.c.
Referenced by vp8_decode_flush(), vp8_decode_frame(), and vp8_mc().
header context, includes mb modes and motion vectors
Definition at line 59 of file vp8.c.
Referenced by decode_frame_header(), decode_mb_mode(), get_quants(), parse_segment_info(), ref_to_update(), setup_partitions(), update_lf_deltas(), and update_refs().
Definition at line 60 of file vp8.c.
Referenced by decode_frame_header(), inter_predict(), and vp8_mc_part().
Definition at line 62 of file vp8.c.
Referenced by clamp_mv(), filter_mb_row(), filter_mb_row_simple(), inter_predict(), intra_predict(), update_dimensions(), and vp8_decode_frame().
Definition at line 63 of file vp8.c.
Referenced by clamp_mv(), inter_predict(), update_dimensions(), and vp8_decode_frame().
Definition at line 64 of file vp8.c.
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().
Definition at line 65 of file vp8.c.
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 67 of file vp8.c.
Referenced by decode_frame_header(), decode_mb_mode(), filter_mb(), and vp8_decode_frame().
update VP56_FRAME_PREVIOUS with the current one
Definition at line 69 of file vp8.c.
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 70 of file vp8.c.
Referenced by decode_frame_header(), update_refs(), and vp8_decode_frame().
Definition at line 71 of file vp8.c.
Referenced by decode_frame_header(), update_refs(), and vp8_decode_frame().
If this flag is not set, all the probability updates are discarded after this frame is decoded.
Definition at line 78 of file vp8.c.
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 84 of file vp8.c.
Referenced by setup_partitions(), and vp8_decode_frame().
Definition at line 87 of file vp8.c.
Referenced by update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().
Definition at line 88 of file vp8.c.
Referenced by decode_frame_header(), update_dimensions(), and vp8_decode_flush().
Definition at line 89 of file vp8.c.
Referenced by filter_mb_row(), filter_mb_row_simple(), update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().
| uint8_t* VP8Context::intra4x4_pred_mode_top |
Definition at line 91 of file vp8.c.
Referenced by decode_intra4x4_modes(), decode_mb_mode(), update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().
| uint8_t VP8Context::intra4x4_pred_mode_left[4] |
Definition at line 92 of file vp8.c.
Referenced by decode_intra4x4_modes(), decode_mb_mode(), and vp8_decode_frame().
| uint8_t* VP8Context::segmentation_map |
Definition at line 93 of file vp8.c.
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 99 of file vp8.c.
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 107 of file vp8.c.
Referenced by update_dimensions(), vp8_decode_flush(), and vp8_decode_frame().
| uint8_t VP8Context::intra4x4_pred_mode_mb[16] |
8x8c pred mode of the current macroblock
Definition at line 122 of file vp8.c.
Referenced by decode_mb_mode(), and intra_predict().
segment of the current macroblock
Definition at line 123 of file vp8.c.
Referenced by decode_mb_coeffs(), decode_mb_mode(), and filter_level_for_mb().
| int VP8Context::sign_bias[4] |
one state [0, 1] per ref frame type
Definition at line 126 of file vp8.c.
Referenced by decode_frame_header(), and find_near_mvs().
| int VP8Context::ref_count[3] |
Definition at line 127 of file vp8.c.
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 135 of file vp8.c.
Referenced by decode_frame_header(), filter_level_for_mb(), and get_quants().
Definition at line 136 of file vp8.c.
Referenced by filter_level_for_mb(), get_quants(), and parse_segment_info().
Definition at line 137 of file vp8.c.
Referenced by decode_frame_header(), decode_mb_mode(), and parse_segment_info().
| int8_t VP8Context::base_quant[4] |
| int8_t VP8Context::filter_level[4] |
base loop filter level
Definition at line 139 of file vp8.c.
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().
| int16_t VP8Context::luma_qmul[2] |
| int16_t VP8Context::luma_dc_qmul[2] |
luma dc-only block quant
Definition at line 150 of file vp8.c.
Referenced by decode_mb_coeffs(), and get_quants().
| int16_t VP8Context::chroma_qmul[2] |
| 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 155 of file vp8.c.
Referenced by decode_frame_header(), intra_predict(), and vp8_decode_frame().
Definition at line 156 of file vp8.c.
Referenced by decode_frame_header(), filter_level_for_mb(), and vp8_decode_frame().
Definition at line 157 of file vp8.c.
Referenced by decode_frame_header(), and filter_level_for_mb().
| struct { ... } VP8Context::filter |
Referenced by decode_frame_header(), filter_level_for_mb(), intra_predict(), and vp8_decode_frame().
| int8_t VP8Context::mode[4] |
filter strength adjustment for the following macroblock modes: [0] - i4x4 [1] - zero mv [2] - inter modes except for zero or split mv [3] - split mv i16x16 modes never have any adjustment
Definition at line 171 of file vp8.c.
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 180 of file vp8.c.
Referenced by filter_level_for_mb(), and update_lf_deltas().
| struct { ... } VP8Context::lf_delta |
Referenced by decode_frame_header(), filter_level_for_mb(), and update_lf_deltas().
| uint8_t VP8Context::segmentid[3] |
| uint8_t VP8Context::mbskip |
| uint8_t VP8Context::intra |
| uint8_t VP8Context::last |
| uint8_t VP8Context::golden |
| uint8_t VP8Context::pred16x16[4] |
| uint8_t VP8Context::pred8x8c[3] |
| uint8_t VP8Context::token[4][17][3][NUM_DCT_TOKENS-1] |
| uint8_t VP8Context::mvc[2][19] |
Definition at line 199 of file vp8.c.
Referenced by decode_frame_header(), decode_mb_mode(), 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_splitmvs(), parse_segment_info(), and vp8_decode_frame().
1.5.6