29 #include <stdatomic.h>
39 #define VP8_MAX_QUANT 127
132 #define EDGE_EMU_LINESIZE 32
143 #define MAX_THREADS 8
VP8Macroblock * macroblocks
int ff_vp8_decode_free(AVCodecContext *avctx)
(only used in prediction) no split MVs
ptrdiff_t const GLvoid * data
VP5 and VP6 compatible video decoder (common features)
int8_t sign_bias[4]
one state [0, 1] per ref frame type
uint8_t feature_value[4][4]
uint8_t * intra4x4_pred_mode_top
uint8_t token[4][16][3][NUM_DCT_TOKENS-1]
struct VP8Context::@142 filter
int update_probabilities
If this flag is not set, all the probability updates are discarded after this frame is decoded...
int(* cond)(enum AVPixelFormat pix_fmt)
int update_golden
VP56_FRAME_NONE if not updated, or which frame to copy if so.
uint8_t intra4x4_pred_mode_top[4]
int fade_present
Fade bit present in bitstream (VP7)
int ff_vp8_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Multithreading support functions.
VP8 compatible video decoder.
struct VP8Context::@143 qmat[4]
Macroblocks can have one of 4 different quants in a frame when segmentation is enabled.
Context for storing H.264 prediction functions.
int update_last
update VP56_FRAME_PREVIOUS with the current one
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
int num_coeff_partitions
All coefficients are contained in separate arith coding contexts.
vp8_mc_func put_pixels_tab[3][3][3]
uint8_t feature_index_prob[4][3]
uint8_t intra4x4_pred_mode_mb[16]
uint8_t intra4x4_pred_mode_left[4]
uint8_t colorspace
0 is the only value allowed (meaning bt601)
#define EDGE_EMU_LINESIZE
uint16_t inter_dc_pred[2][2]
Interframe DC prediction (VP7) [0] VP56_FRAME_PREVIOUS [1] VP56_FRAME_GOLDEN.
VP8Macroblock * macroblocks_base
uint8_t edge_emu_buffer[21 *EDGE_EMU_LINESIZE]
int(* decode_mb_row_no_filter)(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
uint8_t feature_present_prob[4]
uint8_t fullrange
whether we can skip clamping in dsp functions
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
int8_t ref[4]
filter strength adjustment for macroblocks that reference: [0] - intra / VP56_FRAME_CURRENT [1] - VP5...
void(* filter_mb_row)(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
struct VP8Context::@141 segmentation
Base parameters for segmentation, i.e.
void(* vp8_mc_func)(uint8_t *dst, ptrdiff_t dstStride, uint8_t *src, ptrdiff_t srcStride, int h, int x, int y)
int16_t luma_dc_qmul[2]
luma dc-only block quant
uint8_t(* top_border)[16+8+8]
main external API structure.
VP8Frame * next_framep[4]
int mb_layout
This describes the macroblock memory layout.
uint8_t left_nnz[9]
For coeff decode, we need to know whether the above block had non-zero coefficients.
VP56RangeCoder c
header context, includes mb modes and motion vectors
VP56RangeCoder coeff_partition[8]
VP8FilterStrength * filter_strength
uint8_t enabled
whether each mb can have a different strength based on mode/ref
refcounted data buffer API
H.264 / AVC / MPEG-4 prediction functions.
int ff_vp8_decode_init(AVCodecContext *avctx)
uint8_t feature_enabled[4]
Macroblock features (VP7)
2 8x16 blocks (horizontal)
static pthread_mutex_t lock
A reference to a data buffer.
struct VP8Context::@145 prob[2]
These are all of the updatable probabilities for binary decisions.
struct VP8Context::@144 lf_delta
int8_t filter_level[4]
base loop filter level
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 macrobloc...
This structure stores compressed data.
mode
Use these values in ebur128_init (or'ed).
VP8ThreadData * thread_data