FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
vp56.h File Reference

VP5 and VP6 compatible video decoder (common features) More...

#include "get_bits.h"
#include "hpeldsp.h"
#include "bytestream.h"
#include "h264chroma.h"
#include "videodsp.h"
#include "vp3dsp.h"
#include "vp56dsp.h"

Go to the source code of this file.

Data Structures

struct  VP56Tree
 
struct  VP56mv
 
struct  VP56RangeCoder
 
struct  VP56RefDc
 
struct  VP56Macroblock
 
struct  VP56Model
 
struct  VP56Context
 

Macros

#define VP56_SIZE_CHANGE   1
 
#define vp56_rac_get_prob   vp56_rac_get_prob
 

Typedefs

typedef void(* VP56ParseVectorAdjustment )(VP56Context *s, VP56mv *vect)
 
typedef void(* VP56Filter )(VP56Context *s, uint8_t *dst, uint8_t *src, int offset1, int offset2, int stride, VP56mv mv, int mask, int select, int luma)
 
typedef void(* VP56ParseCoeff )(VP56Context *s)
 
typedef void(* VP56DefaultModelsInit )(VP56Context *s)
 
typedef void(* VP56ParseVectorModels )(VP56Context *s)
 
typedef int(* VP56ParseCoeffModels )(VP56Context *s)
 
typedef int(* VP56ParseHeader )(VP56Context *s, const uint8_t *buf, int buf_size)
 

Enumerations

enum  VP56Frame {
  VP56_FRAME_NONE =-1, VP56_FRAME_CURRENT = 0, VP56_FRAME_PREVIOUS = 1, VP56_FRAME_GOLDEN = 2,
  VP56_FRAME_GOLDEN2 = 3
}
 
enum  VP56mb {
  VP56_MB_INTER_NOVEC_PF = 0, VP56_MB_INTRA = 1, VP56_MB_INTER_DELTA_PF = 2, VP56_MB_INTER_V1_PF = 3,
  VP56_MB_INTER_V2_PF = 4, VP56_MB_INTER_NOVEC_GF = 5, VP56_MB_INTER_DELTA_GF = 6, VP56_MB_INTER_4V = 7,
  VP56_MB_INTER_V1_GF = 8, VP56_MB_INTER_V2_GF = 9
}
 

Functions

int ff_vp56_init (AVCodecContext *avctx, int flip, int has_alpha)
 
int ff_vp56_init_context (AVCodecContext *avctx, VP56Context *s, int flip, int has_alpha)
 
int ff_vp56_free (AVCodecContext *avctx)
 
int ff_vp56_free_context (VP56Context *s)
 
void ff_vp56_init_dequant (VP56Context *s, int quantizer)
 
int ff_vp56_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
void ff_vp56_init_range_decoder (VP56RangeCoder *c, const uint8_t *buf, int buf_size)
 
static av_always_inline
unsigned int 
vp56_rac_renorm (VP56RangeCoder *c)
 
static av_always_inline int vp56_rac_get_prob (VP56RangeCoder *c, uint8_t prob)
 
static av_always_inline int vp56_rac_get_prob_branchy (VP56RangeCoder *c, int prob)
 
static av_always_inline int vp56_rac_get (VP56RangeCoder *c)
 
static av_always_inline int vp8_rac_get (VP56RangeCoder *c)
 
static int vp56_rac_gets (VP56RangeCoder *c, int bits)
 
static int vp8_rac_get_uint (VP56RangeCoder *c, int bits)
 
static av_unused int vp8_rac_get_sint (VP56RangeCoder *c, int bits)
 
static av_unused int vp56_rac_gets_nn (VP56RangeCoder *c, int bits)
 
static av_unused int vp8_rac_get_nn (VP56RangeCoder *c)
 
static av_always_inline int vp56_rac_get_tree (VP56RangeCoder *c, const VP56Tree *tree, const uint8_t *probs)
 
static av_always_inline int vp8_rac_get_tree (VP56RangeCoder *c, const int8_t(*tree)[2], const uint8_t *probs)
 
static av_always_inline int vp8_rac_get_coeff (VP56RangeCoder *c, const uint8_t *prob)
 

Variables

const uint8_t ff_vp56_norm_shift [256]
 vp56 specific range coder implementation
 

Detailed Description

VP5 and VP6 compatible video decoder (common features)

Definition in file vp56.h.

Macro Definition Documentation

#define VP56_SIZE_CHANGE   1

Definition at line 70 of file vp56.h.

Referenced by ff_vp56_decode_frame(), vp5_parse_header(), and vp6_parse_header().

#define vp56_rac_get_prob   vp56_rac_get_prob

Typedef Documentation

typedef void(* VP56ParseVectorAdjustment)(VP56Context *s, VP56mv *vect)

Definition at line 72 of file vp56.h.

typedef void(* VP56Filter)(VP56Context *s, uint8_t *dst, uint8_t *src, int offset1, int offset2, int stride, VP56mv mv, int mask, int select, int luma)

Definition at line 74 of file vp56.h.

typedef void(* VP56ParseCoeff)(VP56Context *s)

Definition at line 77 of file vp56.h.

typedef void(* VP56DefaultModelsInit)(VP56Context *s)

Definition at line 78 of file vp56.h.

typedef void(* VP56ParseVectorModels)(VP56Context *s)

Definition at line 79 of file vp56.h.

typedef int(* VP56ParseCoeffModels)(VP56Context *s)

Definition at line 80 of file vp56.h.

typedef int(* VP56ParseHeader)(VP56Context *s, const uint8_t *buf, int buf_size)

Definition at line 81 of file vp56.h.

Enumeration Type Documentation

enum VP56Frame
Enumerator:
VP56_FRAME_NONE 
VP56_FRAME_CURRENT 
VP56_FRAME_PREVIOUS 
VP56_FRAME_GOLDEN 
VP56_FRAME_GOLDEN2 

Definition at line 39 of file vp56.h.

enum VP56mb
Enumerator:
VP56_MB_INTER_NOVEC_PF 

Inter MB, no vector, from previous frame.

VP56_MB_INTRA 

Intra MB.

VP56_MB_INTER_DELTA_PF 

Inter MB, above/left vector + delta, from previous frame.

VP56_MB_INTER_V1_PF 

Inter MB, first vector, from previous frame.

VP56_MB_INTER_V2_PF 

Inter MB, second vector, from previous frame.

VP56_MB_INTER_NOVEC_GF 

Inter MB, no vector, from golden frame.

VP56_MB_INTER_DELTA_GF 

Inter MB, above/left vector + delta, from golden frame.

VP56_MB_INTER_4V 

Inter MB, 4 vectors, from previous frame.

VP56_MB_INTER_V1_GF 

Inter MB, first vector, from golden frame.

VP56_MB_INTER_V2_GF 

Inter MB, second vector, from golden frame.

Definition at line 47 of file vp56.h.

Function Documentation

int ff_vp56_init ( AVCodecContext avctx,
int  flip,
int  has_alpha 
)

Definition at line 682 of file vp56.c.

Referenced by vp5_decode_init(), and vp6_decode_init().

int ff_vp56_init_context ( AVCodecContext avctx,
VP56Context *  s,
int  flip,
int  has_alpha 
)

Definition at line 688 of file vp56.c.

Referenced by ff_vp56_init(), and vp6_decode_init().

int ff_vp56_free ( AVCodecContext avctx)

Definition at line 742 of file vp56.c.

Referenced by ff_vp56_init_context(), and vp6_decode_free().

int ff_vp56_free_context ( VP56Context *  s)

Definition at line 748 of file vp56.c.

Referenced by ff_vp56_free(), and vp6_decode_free().

void ff_vp56_init_dequant ( VP56Context *  s,
int  quantizer 
)

Definition at line 34 of file vp56.c.

Referenced by vp5_parse_header(), and vp6_parse_header().

int ff_vp56_decode_frame ( AVCodecContext avctx,
void data,
int *  got_frame,
AVPacket avpkt 
)

Definition at line 499 of file vp56.c.

void ff_vp56_init_range_decoder ( VP56RangeCoder c,
const uint8_t buf,
int  buf_size 
)
static av_always_inline unsigned int vp56_rac_renorm ( VP56RangeCoder c)
static

Definition at line 226 of file vp56.h.

Referenced by vp56_rac_get(), vp56_rac_get_prob(), and vp56_rac_get_prob_branchy().

static av_always_inline int vp56_rac_get_prob ( VP56RangeCoder c,
uint8_t  prob 
)
static

Definition at line 251 of file vp56.h.

static av_always_inline int vp56_rac_get_prob_branchy ( VP56RangeCoder c,
int  prob 
)
static
static av_always_inline int vp56_rac_get ( VP56RangeCoder c)
static
static av_always_inline int vp8_rac_get ( VP56RangeCoder c)
static
static int vp56_rac_gets ( VP56RangeCoder c,
int  bits 
)
static
static int vp8_rac_get_uint ( VP56RangeCoder c,
int  bits 
)
static
static av_unused int vp8_rac_get_sint ( VP56RangeCoder c,
int  bits 
)
static

Definition at line 332 of file vp56.h.

Referenced by parse_segment_info(), and vp8_get_quants().

static av_unused int vp56_rac_gets_nn ( VP56RangeCoder c,
int  bits 
)
static
static av_unused int vp8_rac_get_nn ( VP56RangeCoder c)
static

Definition at line 354 of file vp56.h.

Referenced by vp78_update_pred16x16_pred8x8_mvc_probabilities().

static av_always_inline int vp56_rac_get_tree ( VP56RangeCoder c,
const VP56Tree tree,
const uint8_t probs 
)
static
static av_always_inline int vp8_rac_get_tree ( VP56RangeCoder c,
const int8_t(*)  tree[2],
const uint8_t probs 
)
static
static av_always_inline int vp8_rac_get_coeff ( VP56RangeCoder c,
const uint8_t prob 
)
static

Definition at line 389 of file vp56.h.

Referenced by decode_block_coeffs_internal().

Variable Documentation

const uint8_t ff_vp56_norm_shift[256]

vp56 specific range coder implementation

Definition at line 25 of file vp56rac.c.

Referenced by vp56_rac_renorm().