Go to the documentation of this file.
26 #ifndef AVCODEC_VP56_H
27 #define AVCODEC_VP56_H
72 #define VP56_SIZE_CHANGE 1
77 int offset1,
int offset2, ptrdiff_t
stride,
219 int flip,
int has_alpha);
251 const uint8_t *probs)
253 while (tree->
val > 0) {
H264ChromaContext h264chroma
static av_always_inline int vp56_rac_get_tree(VPXRangeCoder *c, const VP56Tree *tree, const uint8_t *probs)
int16_t block_coeff[6][64]
int ff_vp56_init_context(AVCodecContext *avctx, VP56Context *s, int flip, int has_alpha)
Initializes an VP56Context.
@ VP56_MB_INTER_DELTA_GF
Inter MB, above/left vector + delta, from golden frame.
int(* VP56ParseHeader)(VP56Context *s, const uint8_t *buf, int buf_size)
uint8_t mb_types_stats[3][10][2]
uint8_t coeff_acct[2][3][3][6][5]
@ VP56_MB_INTER_V2_GF
Inter MB, second vector, from golden frame.
static const int8_t mv[256][2]
void(* VP56Filter)(VP56Context *s, uint8_t *dst, uint8_t *src, int offset1, int offset2, ptrdiff_t stride, VP56mv mv, int mask, int select, int luma)
This structure describes decoded (raw) audio or video data.
VP56mv vector_candidate[2]
uint8_t * edge_emu_buffer_alloc
uint8_t * edge_emu_buffer
uint8_t coeff_index_to_pos[64]
VP56ParseCoeff parse_coeff
uint8_t coeff_ract[2][3][6][11]
int(* VP56ParseCoeffModels)(VP56Context *s)
void(* VP56ParseVectorAdjustment)(VP56Context *s, VP56mv *vect)
@ VP56_MB_INTER_NOVEC_PF
Inter MB, no vector, from previous frame.
@ VP56_MB_INTER_V1_PF
Inter MB, first vector, from previous frame.
int(* VP56ParseCoeff)(VP56Context *s)
static av_unused int vp56_rac_gets_nn(VPXRangeCoder *c, int bits)
uint8_t mb_type[3][10][10]
@ VP56_MB_INTER_4V
Inter MB, 4 vectors, from previous frame.
unsigned int nb_null[2][2]
uint8_t coeff_dccv[2][11]
uint8_t coeff_dcct[2][36][5]
uint8_t coeff_runv[2][14]
void(* VP56DefaultModelsInit)(VP56Context *s)
@ VP56_MB_INTER_DELTA_PF
Inter MB, above/left vector + delta, from previous frame.
@ VP56_MB_INTER_NOVEC_GF
Inter MB, no vector, from golden frame.
@ VP56_MB_INTER_V2_PF
Inter MB, second vector, from previous frame.
VP56Context * alpha_context
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
VP56DefaultModelsInit default_models_init
static void flip(AVCodecContext *avctx, AVFrame *frame)
#define DECLARE_ALIGNED(n, t, v)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
const uint8_t * def_coeff_reorder
int sample_variance_threshold
void(* VP56ParseVectorModels)(VP56Context *s)
static int vp56_rac_gets(VPXRangeCoder *c, int bits)
vp56 specific range coder implementation
uint8_t coeff_index_to_idct_selector[64]
@ VP56_MB_INTER_V1_GF
Inter MB, first vector, from golden frame.
void ff_vp56_init_dequant(VP56Context *s, int quantizer)
VP56ParseHeader parse_header
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default value
static av_always_inline int vpx_rac_get_prob_branchy(VPXRangeCoder *c, int prob)
VP56Macroblock * macroblocks
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
uint8_t idct_scantable[64]
main external API structure.
static av_always_inline int vpx_rac_get(VPXRangeCoder *c)
int bounding_values_array[256]
int ff_vp56_free_context(VP56Context *s)
This structure stores compressed data.
int ff_vp56_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt)
VP56ParseCoeffModels parse_coeff_models
VP56ParseVectorModels parse_vector_models
uint8_t coeff_ctx_last[4]
const uint8_t * vp56_coord_div
uint8_t coeff_reorder[64]
VP56ParseVectorAdjustment parse_vector_adjustment