29 #include <stdatomic.h> 40 #define VP8_MAX_QUANT 127 133 #define EDGE_EMU_LINESIZE 32 147 #define MAX_THREADS 8 183 int8_t base_quant[4];
205 int16_t luma_qmul[2];
206 int16_t luma_dc_qmul[2];
207 int16_t chroma_qmul[2];
260 } coder_state_at_header_end;
301 int coeff_partition_size[8];
334 uint16_t inter_dc_pred[2][2];
VP8Macroblock * macroblocks
int ff_vp8_decode_free(AVCodecContext *avctx)
static enum AVPixelFormat pix_fmt
(only used in prediction) no split MVs
ptrdiff_t const GLvoid * data
VP5 and VP6 compatible video decoder (common features)
uint8_t * intra4x4_pred_mode_top
if it could not because there are no more frames
int update_probabilities
If this flag is not set, all the probability updates are discarded after this frame is decoded...
int update_golden
VP56_FRAME_NONE if not updated, or which frame to copy if so.
static av_always_inline void filter_mb_row(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr, int is_vp7)
The exact code depends on how similar the blocks are and how related they are to the block
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.
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.
#define prob(name, subs,...)
uint8_t colorspace
0 is the only value allowed (meaning bt601)
filter_frame For filters that do not use the this method is called when a frame is pushed to the filter s input It can be called at any time except in a reentrant way If the input frame is enough to produce then the filter should push the output frames on the output link immediately As an exception to the previous rule if the input frame is enough to produce several output frames then the filter needs output only at least one per link The additional frames can be left buffered in the filter
#define EDGE_EMU_LINESIZE
VP8Macroblock * macroblocks_base
uint8_t fullrange
whether we can skip clamping in dsp functions
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
static av_always_inline int decode_mb_row_no_filter(AVCodecContext *avctx, void *tdata, int jobnr, int threadnr, int is_vp7)
void(* vp8_mc_func)(uint8_t *dst, ptrdiff_t dstStride, uint8_t *src, ptrdiff_t srcStride, int h, int x, int y)
main external API structure.
int mb_layout
This describes the macroblock memory layout.
VP56RangeCoder c
header context, includes mb modes and motion vectors
AVBufferRef * hwaccel_priv_buf
VP8FilterStrength * filter_strength
uint8_t enabled
whether each mb can have a different strength based on mode/ref
refcounted data buffer API
int header_partition_size
uint8_t update_feature_data
H.264 / AVC / MPEG-4 prediction functions.
int ff_vp8_decode_init(AVCodecContext *avctx)
void * hwaccel_picture_private
2 8x16 blocks (horizontal)
static pthread_mutex_t lock
int(* cond)(enum AVPixelFormat pix_fmt)
A reference to a data buffer.
static int ref[MAX_W *MAX_W]
AVPixelFormat
Pixel format.
This structure stores compressed data.
mode
Use these values in ebur128_init (or'ed).
VP8ThreadData * thread_data