26 #ifndef AVCODEC_VP56_H 27 #define AVCODEC_VP56_H 71 #define VP56_SIZE_CHANGE 1 76 int offset1,
int offset2, ptrdiff_t
stride,
155 int above_block_idx[6];
156 int16_t prev_dc[3][3];
162 int idct_selector[6];
210 unsigned int nb_null[2][2];
219 int flip,
int has_alpha);
254 code_word |= bytestream_get_be16(&c->
buffer) <<
bits;
267 #ifndef vp56_rac_get_prob 268 #define vp56_rac_get_prob vp56_rac_get_prob 272 unsigned int low = 1 + (((c->
high - 1) * prob) >> 8);
273 unsigned int low_shift = low << 16;
274 int bit = code_word >= low_shift;
276 c->
high = bit ? c->
high - low : low;
277 c->
code_word = bit ? code_word - low_shift : code_word;
283 #ifndef vp56_rac_get_prob_branchy 288 unsigned low = 1 + (((c->
high - 1) * prob) >> 8);
289 unsigned low_shift = low << 16;
291 if (code_word >= low_shift) {
307 int low = (c->
high + 1) >> 1;
308 unsigned int low_shift = low << 16;
309 int bit = code_word >= low_shift;
312 code_word -= low_shift;
383 while (tree->
val > 0) {
static int shift(int a, int b)
This structure describes decoded (raw) audio or video data.
ptrdiff_t const GLvoid * data
int(* VP56ParseCoeff)(VP56Context *s)
int(* VP56ParseCoeffModels)(VP56Context *s)
static av_always_inline int vp8_rac_get_tree(VP56RangeCoder *c, const int8_t(*tree)[2], const uint8_t *probs)
Inter MB, no vector, from previous frame.
VP56ParseVectorAdjustment parse_vector_adjustment
VP56ParseCoeffModels parse_coeff_models
if it could not because there are no more frames
VP56ParseVectorModels parse_vector_models
int ff_vp56_init(AVCodecContext *avctx, int flip, int has_alpha)
void(* VP56ParseVectorModels)(VP56Context *s)
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
GLsizei GLboolean const GLfloat * value
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
void ff_vp56_init_dequant(VP56Context *s, int quantizer)
bitstream reader API header.
static av_always_inline int vpX_rac_is_end(VP56RangeCoder *c)
vp5689 returns 1 if the end of the stream has been reached, 0 otherwise.
uint8_t * edge_emu_buffer
static av_always_inline int vp56_rac_get_tree(VP56RangeCoder *c, const VP56Tree *tree, const uint8_t *probs)
Inter MB, second vector, from golden frame.
VP56ParseCoeff parse_coeff
#define prob(name, subs,...)
#define i(width, name, range_min, range_max)
static const uint16_t mask[17]
static void flip(AVCodecContext *avctx, AVFrame *frame)
static av_always_inline int vp56_rac_get(VP56RangeCoder *c)
Inter MB, first vector, from previous frame.
int ff_vp56_init_range_decoder(VP56RangeCoder *c, const uint8_t *buf, int buf_size)
static av_unused int vp56_rac_gets_nn(VP56RangeCoder *c, int bits)
VP56Context * alpha_context
Inter MB, first vector, from golden frame.
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)
static av_unused int vp8_rac_get_sint(VP56RangeCoder *c, int bits)
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
VP56ParseHeader parse_header
#define vp56_rac_get_prob
VP56Macroblock * macroblocks
static const int8_t mv[256][2]
static av_always_inline int vp56_rac_get_prob_branchy(VP56RangeCoder *c, int prob)
Inter MB, 4 vectors, from previous frame.
Inter MB, no vector, from golden frame.
int ff_vp56_init_context(AVCodecContext *avctx, VP56Context *s, int flip, int has_alpha)
Libavcodec external API header.
Inter MB, second vector, from previous frame.
main external API structure.
static av_always_inline unsigned int vp56_rac_renorm(VP56RangeCoder *c)
int ff_vp56_free(AVCodecContext *avctx)
VP56DefaultModelsInit default_models_init
Inter MB, above/left vector + delta, from previous frame.
static av_always_inline int vp8_rac_get_coeff(VP56RangeCoder *c, const uint8_t *prob)
int sample_variance_threshold
int ff_vp56_free_context(VP56Context *s)
const uint8_t ff_vp56_norm_shift[256]
vp56 specific range coder implementation
static int vp8_rac_get_uint(VP56RangeCoder *c, int bits)
int ff_vp56_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
const uint8_t * vp56_coord_div
GLint GLenum GLboolean GLsizei stride
int(* VP56ParseHeader)(VP56Context *s, const uint8_t *buf, int buf_size)
#define bit(string, value)
void(* VP56ParseVectorAdjustment)(VP56Context *s, VP56mv *vect)
void(* VP56DefaultModelsInit)(VP56Context *s)
static av_always_inline int vp8_rac_get(VP56RangeCoder *c)
Core video DSP helper functions.
Inter MB, above/left vector + delta, from golden frame.
uint8_t * edge_emu_buffer_alloc
static av_unused int vp8_rac_get_nn(VP56RangeCoder *c)
This structure stores compressed data.
H264ChromaContext h264chroma
static int vp56_rac_gets(VP56RangeCoder *c, int bits)