vp8.c File Reference
#include "libavutil/imgutils.h"
#include "avcodec.h"
#include "internal.h"
#include "vp8.h"
#include "vp8data.h"
#include "rectangle.h"
#include "thread.h"
Include dependency graph for vp8.c:

Go to the source code of this file.

Macros

#define MV_EDGE_CHECK(n)
 
#define XCHG(a, b, xchg)
 
#define MARGIN   (16 << 2)
 
#define check_thread_pos(td, otd, mb_x_check, mb_y_check)
 
#define update_pos(td, mb_y, mb_x)
 
#define REBASE(pic)   pic ? pic - &s_src->frames[0] + &s->frames[0] : NULL
 

Functions

static void free_buffers (VP8Context *s)
 
static int vp8_alloc_frame (VP8Context *s, VP8Frame *f, int ref)
 
static void vp8_release_frame (VP8Context *s, VP8Frame *f)
 
static int vp8_ref_frame (VP8Context *s, VP8Frame *dst, VP8Frame *src)
 
static void vp8_decode_flush_impl (AVCodecContext *avctx, int free_mem)
 
static void vp8_decode_flush (AVCodecContext *avctx)
 
static int update_dimensions (VP8Context *s, int width, int height)
 
static void parse_segment_info (VP8Context *s)
 
static void update_lf_deltas (VP8Context *s)
 
static int setup_partitions (VP8Context *s, const uint8_t *buf, int buf_size)
 
static void get_quants (VP8Context *s)
 
static VP56Frame ref_to_update (VP8Context *s, int update, VP56Frame ref)
 Determine which buffers golden and altref should be updated with after this frame. More...
 
static void update_refs (VP8Context *s)
 
static int decode_frame_header (VP8Context *s, const uint8_t *buf, int buf_size)
 
static av_always_inline void clamp_mv (VP8Context *s, VP56mv *dst, const VP56mv *src)
 
static int read_mv_component (VP56RangeCoder *c, const uint8_t *p)
 Motion vector coding, 17.1. More...
 
static av_always_inline const uint8_tget_submv_prob (uint32_t left, uint32_t top)
 
static av_always_inline int decode_splitmvs (VP8Context *s, VP56RangeCoder *c, VP8Macroblock *mb, int layout)
 Split motion vector prediction, 16.4. More...
 
static av_always_inline void decode_mvs (VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, int layout)
 
static av_always_inline void decode_intra4x4_modes (VP8Context *s, VP56RangeCoder *c, VP8Macroblock *mb, int mb_x, int keyframe, int layout)
 
static av_always_inline void decode_mb_mode (VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, uint8_t *segment, uint8_t *ref, int layout)
 
static int decode_block_coeffs_internal (VP56RangeCoder *r, int16_t block[16], uint8_t probs[16][3][NUM_DCT_TOKENS-1], int i, uint8_t *token_prob, int16_t qmul[2])
 
static av_always_inline int decode_block_coeffs (VP56RangeCoder *c, int16_t block[16], uint8_t probs[16][3][NUM_DCT_TOKENS-1], int i, int zero_nhood, int16_t qmul[2])
 
static av_always_inline void decode_mb_coeffs (VP8Context *s, VP8ThreadData *td, VP56RangeCoder *c, VP8Macroblock *mb, uint8_t t_nnz[9], uint8_t l_nnz[9])
 
static av_always_inline void backup_mb_border (uint8_t *top_border, uint8_t *src_y, uint8_t *src_cb, uint8_t *src_cr, int linesize, int uvlinesize, int simple)
 
static av_always_inline void xchg_mb_border (uint8_t *top_border, uint8_t *src_y, uint8_t *src_cb, uint8_t *src_cr, int linesize, int uvlinesize, int mb_x, int mb_y, int mb_width, int simple, int xchg)
 
static av_always_inline int check_dc_pred8x8_mode (int mode, int mb_x, int mb_y)
 
static av_always_inline int check_tm_pred8x8_mode (int mode, int mb_x, int mb_y)
 
static av_always_inline int check_intra_pred8x8_mode (int mode, int mb_x, int mb_y)
 
static av_always_inline int check_intra_pred8x8_mode_emuedge (int mode, int mb_x, int mb_y)
 
static av_always_inline int check_tm_pred4x4_mode (int mode, int mb_x, int mb_y)
 
static av_always_inline int check_intra_pred4x4_mode_emuedge (int mode, int mb_x, int mb_y, int *copy_buf)
 
static av_always_inline void intra_predict (VP8Context *s, VP8ThreadData *td, uint8_t *dst[3], VP8Macroblock *mb, int mb_x, int mb_y)
 
static av_always_inline void vp8_mc_luma (VP8Context *s, VP8ThreadData *td, uint8_t *dst, ThreadFrame *ref, const VP56mv *mv, int x_off, int y_off, int block_w, int block_h, int width, int height, int linesize, vp8_mc_func mc_func[3][3])
 luma MC function More...
 
static av_always_inline void vp8_mc_chroma (VP8Context *s, VP8ThreadData *td, uint8_t *dst1, uint8_t *dst2, ThreadFrame *ref, const VP56mv *mv, int x_off, int y_off, int block_w, int block_h, int width, int height, int linesize, vp8_mc_func mc_func[3][3])
 chroma MC function More...
 
static av_always_inline void vp8_mc_part (VP8Context *s, VP8ThreadData *td, uint8_t *dst[3], ThreadFrame *ref_frame, int x_off, int y_off, int bx_off, int by_off, int block_w, int block_h, int width, int height, VP56mv *mv)
 
static av_always_inline void prefetch_motion (VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, int mb_xy, int ref)
 
static av_always_inline void inter_predict (VP8Context *s, VP8ThreadData *td, uint8_t *dst[3], VP8Macroblock *mb, int mb_x, int mb_y)
 Apply motion vectors to prediction buffer, chapter 18. More...
 
static av_always_inline void idct_mb (VP8Context *s, VP8ThreadData *td, uint8_t *dst[3], VP8Macroblock *mb)
 
static av_always_inline void filter_level_for_mb (VP8Context *s, VP8Macroblock *mb, VP8FilterStrength *f)
 
static av_always_inline void filter_mb (VP8Context *s, uint8_t *dst[3], VP8FilterStrength *f, int mb_x, int mb_y)
 
static av_always_inline void filter_mb_simple (VP8Context *s, uint8_t *dst, VP8FilterStrength *f, int mb_x, int mb_y)
 
static void vp8_decode_mv_mb_modes (AVCodecContext *avctx, VP8Frame *curframe, VP8Frame *prev_frame)
 
static void vp8_decode_mb_row_no_filter (AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
 
static void vp8_filter_mb_row (AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
 
static int vp8_decode_mb_row_sliced (AVCodecContext *avctx, void *tdata, int jobnr, int threadnr)
 
static int vp8_decode_frame (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 
static av_cold int vp8_decode_free (AVCodecContext *avctx)
 
static av_cold int vp8_init_frames (VP8Context *s)
 
static av_cold int vp8_decode_init (AVCodecContext *avctx)
 
static av_cold int vp8_decode_init_thread_copy (AVCodecContext *avctx)
 
static int vp8_decode_update_thread_context (AVCodecContext *dst, const AVCodecContext *src)
 
static unsigned apply_padding (unsigned size)
 
static int webp_decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
 

Variables

static const uint8_t subpel_idx [3][8]
 
AVCodec ff_vp8_decoder
 
AVCodec ff_webp_decoder
 

Macro Definition Documentation

#define check_thread_pos (   td,
  otd,
  mb_x_check,
  mb_y_check 
)

Definition at line 1656 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter(), and vp8_filter_mb_row().

#define MARGIN   (16 << 2)

Definition at line 1592 of file vp8.c.

Referenced by vp8_decode_frame(), vp8_decode_mb_row_no_filter(), and vp8_decode_mv_mb_modes().

#define MV_EDGE_CHECK (   n)
Value:
{\
VP8Macroblock *edge = mb_edge[n];\
int edge_ref = edge->ref_frame;\
if (edge_ref != VP56_FRAME_CURRENT) {\
uint32_t mv = AV_RN32A(&edge->mv);\
if (mv) {\
if (cur_sign_bias != sign_bias[edge_ref]) {\
/* SWAR negate of the values in mv. */\
mv = ~mv;\
mv = ((mv&0x7fff7fff) + 0x00010001) ^ (mv&0x80008000);\
}\
if (!n || mv != AV_RN32A(&near_mv[idx]))\
AV_WN32A(&near_mv[++idx], mv);\
cnt[idx] += 1 + (n != 2);\
} else\
cnt[CNT_ZERO] += 1 + (n != 2);\
}\
}
struct VP8Macroblock VP8Macroblock
#define AV_WN32A(p, v)
Definition: intreadwrite.h:530
initialize output if(nPeaks >3)%at least 3 peaks in spectrum for trying to find f0 nf0peaks
#define AV_RN32A(p)
Definition: intreadwrite.h:518
uint8_t ref_frame
Definition: vp8.h:91
static const int8_t mv[256][2]

Referenced by decode_mvs().

#define REBASE (   pic)    pic ? pic - &s_src->frames[0] + &s->frames[0] : NULL

Definition at line 2065 of file vp8.c.

Referenced by vp8_decode_update_thread_context().

#define update_pos (   td,
  mb_y,
  mb_x 
)
#define XCHG (   a,
  b,
  xchg 
)
Value:
do { \
if (xchg) AV_SWAP64(b,a); \
else AV_COPY64(b,a); \
} while (0)
initialize output if(nPeaks >3)%at least 3 peaks in spectrum for trying to find f0 nf0peaks
#define b
Definition: input.c:42
#define AV_COPY64(d, s)
Definition: intreadwrite.h:582
else[Y, I2]
Synth Windw Norm while(pin< pend)%Until the end...%---Analysis x_w
#define AV_SWAP64(a, b)
Definition: intreadwrite.h:596

Referenced by xchg_mb_border().

Function Documentation

static unsigned apply_padding ( unsigned  size)
static

Definition at line 2101 of file vp8.c.

Referenced by webp_decode_frame().

static av_always_inline void backup_mb_border ( uint8_t top_border,
uint8_t src_y,
uint8_t src_cb,
uint8_t src_cr,
int  linesize,
int  uvlinesize,
int  simple 
)
static

Definition at line 903 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter(), and vp8_filter_mb_row().

static av_always_inline int check_dc_pred8x8_mode ( int  mode,
int  mb_x,
int  mb_y 
)
static

Definition at line 945 of file vp8.c.

Referenced by check_intra_pred8x8_mode(), and check_intra_pred8x8_mode_emuedge().

static av_always_inline int check_intra_pred4x4_mode_emuedge ( int  mode,
int  mb_x,
int  mb_y,
int *  copy_buf 
)
static

Definition at line 1001 of file vp8.c.

Referenced by intra_predict().

static av_always_inline int check_intra_pred8x8_mode ( int  mode,
int  mb_x,
int  mb_y 
)
static

Definition at line 965 of file vp8.c.

Referenced by intra_predict().

static av_always_inline int check_intra_pred8x8_mode_emuedge ( int  mode,
int  mb_x,
int  mb_y 
)
static

Definition at line 975 of file vp8.c.

Referenced by intra_predict().

static av_always_inline int check_tm_pred4x4_mode ( int  mode,
int  mb_x,
int  mb_y 
)
static

Definition at line 991 of file vp8.c.

Referenced by check_intra_pred4x4_mode_emuedge().

static av_always_inline int check_tm_pred8x8_mode ( int  mode,
int  mb_x,
int  mb_y 
)
static

Definition at line 955 of file vp8.c.

Referenced by check_intra_pred8x8_mode_emuedge().

static av_always_inline void clamp_mv ( VP8Context s,
VP56mv dst,
const VP56mv src 
)
static

Definition at line 442 of file vp8.c.

Referenced by decode_mvs().

static av_always_inline int decode_block_coeffs ( VP56RangeCoder c,
int16_t  block[16],
uint8_t  probs[16][3][NUM_DCT_TOKENS-1],
int  i,
int  zero_nhood,
int16_t  qmul[2] 
)
static
Parameters
carithmetic bitstream reader context
blockdestination for block coefficients
probsprobabilities to use when reading trees from the bitstream
iinitial coeff index, 0 unless a separate DC block is coded
zero_nhoodthe initial prediction context for number of surrounding all-zero blocks (only left/top, so 0-2)
qmularray holding the dc/ac dequant factor at position 0/1
Returns
0 if no coeffs were decoded otherwise, the index of the last coeff decoded plus one

Definition at line 831 of file vp8.c.

Referenced by decode_mb_coeffs().

static int decode_block_coeffs_internal ( VP56RangeCoder r,
int16_t  block[16],
uint8_t  probs[16][3][NUM_DCT_TOKENS-1],
int  i,
uint8_t token_prob,
int16_t  qmul[2] 
)
static
Parameters
rarithmetic bitstream reader context
blockdestination for block coefficients
probsprobabilities to use when reading trees from the bitstream
iinitial coeff index, 0 unless a separate DC block is coded
qmularray holding the dc/ac dequant factor at position 0/1
Returns
0 if no coeffs were decoded otherwise, the index of the last coeff decoded plus one

Definition at line 763 of file vp8.c.

Referenced by decode_block_coeffs().

static int decode_frame_header ( VP8Context s,
const uint8_t buf,
int  buf_size 
)
static

Definition at line 304 of file vp8.c.

Referenced by vp8_decode_frame().

static av_always_inline void decode_intra4x4_modes ( VP8Context s,
VP56RangeCoder c,
VP8Macroblock mb,
int  mb_x,
int  keyframe,
int  layout 
)
static

Definition at line 664 of file vp8.c.

Referenced by decode_mb_mode().

static av_always_inline void decode_mb_coeffs ( VP8Context s,
VP8ThreadData td,
VP56RangeCoder c,
VP8Macroblock mb,
uint8_t  t_nnz[9],
uint8_t  l_nnz[9] 
)
static

Definition at line 842 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter().

static av_always_inline void decode_mb_mode ( VP8Context s,
VP8Macroblock mb,
int  mb_x,
int  mb_y,
uint8_t segment,
uint8_t ref,
int  layout 
)
static

Definition at line 698 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter(), and vp8_decode_mv_mb_modes().

static av_always_inline void decode_mvs ( VP8Context s,
VP8Macroblock mb,
int  mb_x,
int  mb_y,
int  layout 
)
static

Definition at line 565 of file vp8.c.

Referenced by decode_mb_mode().

static av_always_inline int decode_splitmvs ( VP8Context s,
VP56RangeCoder c,
VP8Macroblock mb,
int  layout 
)
static

Split motion vector prediction, 16.4.

Returns
the number of motion vectors parsed (2, 4 or 16)

Definition at line 494 of file vp8.c.

Referenced by decode_mvs().

static av_always_inline void filter_level_for_mb ( VP8Context s,
VP8Macroblock mb,
VP8FilterStrength f 
)
static

Definition at line 1461 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter().

static av_always_inline void filter_mb ( VP8Context s,
uint8_t dst[3],
VP8FilterStrength f,
int  mb_x,
int  mb_y 
)
static

Definition at line 1491 of file vp8.c.

Referenced by vp8_filter_mb_row().

static av_always_inline void filter_mb_simple ( VP8Context s,
uint8_t dst,
VP8FilterStrength f,
int  mb_x,
int  mb_y 
)
static

Definition at line 1561 of file vp8.c.

Referenced by vp8_filter_mb_row().

static void free_buffers ( VP8Context s)
static

Definition at line 38 of file vp8.c.

Referenced by vp8_decode_flush_impl(), and vp8_decode_update_thread_context().

static void get_quants ( VP8Context s)
static

Definition at line 231 of file vp8.c.

Referenced by decode_frame_header().

static av_always_inline const uint8_t* get_submv_prob ( uint32_t  left,
uint32_t  top 
)
static

Definition at line 480 of file vp8.c.

Referenced by decode_splitmvs().

static av_always_inline void idct_mb ( VP8Context s,
VP8ThreadData td,
uint8_t dst[3],
VP8Macroblock mb 
)
static

Definition at line 1408 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter().

static av_always_inline void inter_predict ( VP8Context s,
VP8ThreadData td,
uint8_t dst[3],
VP8Macroblock mb,
int  mb_x,
int  mb_y 
)
static

Apply motion vectors to prediction buffer, chapter 18.

Definition at line 1328 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter().

static av_always_inline void intra_predict ( VP8Context s,
VP8ThreadData td,
uint8_t dst[3],
VP8Macroblock mb,
int  mb_x,
int  mb_y 
)
static

Definition at line 1035 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter().

static void parse_segment_info ( VP8Context s)
static

Definition at line 160 of file vp8.c.

Referenced by decode_frame_header().

static av_always_inline void prefetch_motion ( VP8Context s,
VP8Macroblock mb,
int  mb_x,
int  mb_y,
int  mb_xy,
int  ref 
)
static

Definition at line 1306 of file vp8.c.

Referenced by vp8_decode_mb_row_no_filter().

static int read_mv_component ( VP56RangeCoder c,
const uint8_t p 
)
static

Motion vector coding, 17.1.

Definition at line 451 of file vp8.c.

Referenced by decode_mvs(), and decode_splitmvs().

static VP56Frame ref_to_update ( VP8Context s,
int  update,
VP56Frame  ref 
)
static

Determine which buffers golden and altref should be updated with after this frame.

The spec isn't clear here, so I'm going by my understanding of what libvpx does

Intra frames update all 3 references Inter frames update VP56_FRAME_PREVIOUS if the update_last flag is set If the update (golden|altref) flag is set, it's updated with the current frame if update_last is set, and VP56_FRAME_PREVIOUS otherwise. If the flag is not set, the number read means: 0: no update 1: VP56_FRAME_PREVIOUS 2: update golden with altref, or update altref with golden

Definition at line 277 of file vp8.c.

Referenced by update_refs().

static int setup_partitions ( VP8Context s,
const uint8_t buf,
int  buf_size 
)
static

Definition at line 205 of file vp8.c.

Referenced by decode_frame_header().

static int update_dimensions ( VP8Context s,
int  width,
int  height 
)
static

Definition at line 114 of file vp8.c.

Referenced by decode_frame_header().

static void update_lf_deltas ( VP8Context s)
static

Definition at line 181 of file vp8.c.

Referenced by decode_frame_header().

static void update_refs ( VP8Context s)
static

Definition at line 293 of file vp8.c.

Referenced by decode_frame_header().

static int vp8_alloc_frame ( VP8Context s,
VP8Frame f,
int  ref 
)
static

Definition at line 59 of file vp8.c.

Referenced by vp8_decode_frame().

static void vp8_decode_flush ( AVCodecContext avctx)
static

Definition at line 109 of file vp8.c.

static void vp8_decode_flush_impl ( AVCodecContext avctx,
int  free_mem 
)
static

Definition at line 96 of file vp8.c.

Referenced by update_dimensions(), vp8_decode_flush(), and vp8_decode_free().

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

Definition at line 1852 of file vp8.c.

Referenced by webp_decode_frame().

static av_cold int vp8_decode_free ( AVCodecContext avctx)
static

Definition at line 2006 of file vp8.c.

Referenced by vp8_decode_init(), and vp8_decode_init_thread_copy().

static av_cold int vp8_decode_init ( AVCodecContext avctx)
static

Definition at line 2029 of file vp8.c.

static av_cold int vp8_decode_init_thread_copy ( AVCodecContext avctx)
static

Definition at line 2050 of file vp8.c.

static void vp8_decode_mb_row_no_filter ( AVCodecContext avctx,
void tdata,
int  jobnr,
int  threadnr 
)
static

Definition at line 1660 of file vp8.c.

Referenced by vp8_decode_mb_row_sliced().

static int vp8_decode_mb_row_sliced ( AVCodecContext avctx,
void tdata,
int  jobnr,
int  threadnr 
)
static

Definition at line 1825 of file vp8.c.

Referenced by vp8_decode_frame().

static void vp8_decode_mv_mb_modes ( AVCodecContext avctx,
VP8Frame curframe,
VP8Frame prev_frame 
)
static

Definition at line 1593 of file vp8.c.

Referenced by vp8_decode_frame().

static int vp8_decode_update_thread_context ( AVCodecContext dst,
const AVCodecContext src 
)
static

Definition at line 2068 of file vp8.c.

static void vp8_filter_mb_row ( AVCodecContext avctx,
void tdata,
int  jobnr,
int  threadnr 
)
static

Definition at line 1771 of file vp8.c.

Referenced by vp8_decode_mb_row_sliced().

static av_cold int vp8_init_frames ( VP8Context s)
static

Definition at line 2018 of file vp8.c.

Referenced by vp8_decode_init(), and vp8_decode_init_thread_copy().

static av_always_inline void vp8_mc_chroma ( VP8Context s,
VP8ThreadData td,
uint8_t dst1,
uint8_t dst2,
ThreadFrame ref,
const VP56mv mv,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
int  width,
int  height,
int  linesize,
vp8_mc_func  mc_func[3][3] 
)
static

chroma MC function

Parameters
sVP8 decoding context
dst1target buffer for block data at block position (U plane)
dst2target buffer for block data at block position (V plane)
refreference picture buffer at origin (0, 0)
mvmotion vector (relative to block position) to get pixel data from
x_offhorizontal position of block from origin (0, 0)
y_offvertical position of block from origin (0, 0)
block_wwidth of block (16, 8 or 4)
block_hheight of block (always same as block_w)
widthwidth of src/dst plane data
heightheight of src/dst plane data
linesizesize of a single line of plane data, including padding
mc_funcmotion compensation function pointers (bilinear or sixtap MC)

Definition at line 1231 of file vp8.c.

Referenced by inter_predict(), and vp8_mc_part().

static av_always_inline void vp8_mc_luma ( VP8Context s,
VP8ThreadData td,
uint8_t dst,
ThreadFrame ref,
const VP56mv mv,
int  x_off,
int  y_off,
int  block_w,
int  block_h,
int  width,
int  height,
int  linesize,
vp8_mc_func  mc_func[3][3] 
)
static

luma MC function

Parameters
sVP8 decoding context
dsttarget buffer for block data at block position
refreference picture buffer at origin (0, 0)
mvmotion vector (relative to block position) to get pixel data from
x_offhorizontal position of block from origin (0, 0)
y_offvertical position of block from origin (0, 0)
block_wwidth of block (16, 8 or 4)
block_hheight of block (always same as block_w)
widthwidth of src/dst plane data
heightheight of src/dst plane data
linesizesize of a single line of plane data, including padding
mc_funcmotion compensation function pointers (bilinear or sixtap MC)

Definition at line 1180 of file vp8.c.

Referenced by inter_predict(), and vp8_mc_part().

static av_always_inline void vp8_mc_part ( VP8Context s,
VP8ThreadData td,
uint8_t dst[3],
ThreadFrame ref_frame,
int  x_off,
int  y_off,
int  bx_off,
int  by_off,
int  block_w,
int  block_h,
int  width,
int  height,
VP56mv mv 
)
static

Definition at line 1274 of file vp8.c.

Referenced by inter_predict().

static int vp8_ref_frame ( VP8Context s,
VP8Frame dst,
VP8Frame src 
)
static

Definition at line 78 of file vp8.c.

Referenced by vp8_decode_update_thread_context().

static void vp8_release_frame ( VP8Context s,
VP8Frame f 
)
static

Definition at line 72 of file vp8.c.

Referenced by vp8_decode_flush_impl(), vp8_decode_frame(), and vp8_ref_frame().

static int webp_decode_frame ( AVCodecContext avctx,
void data,
int *  data_size,
AVPacket avpkt 
)
static

Definition at line 2103 of file vp8.c.

static av_always_inline void xchg_mb_border ( uint8_t top_border,
uint8_t src_y,
uint8_t src_cb,
uint8_t src_cr,
int  linesize,
int  uvlinesize,
int  mb_x,
int  mb_y,
int  mb_width,
int  simple,
int  xchg 
)
static

Definition at line 914 of file vp8.c.

Referenced by intra_predict().

Variable Documentation

AVCodec ff_vp8_decoder
Initial value:
= {
.name = "vp8",
.priv_data_size = sizeof(VP8Context),
.long_name = NULL_IF_CONFIG_SMALL("On2 VP8"),
}
static int vp8_decode_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
Definition: vp8.c:2068
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static void vp8_decode_flush(AVCodecContext *avctx)
Definition: vp8.c:109
struct VP8DecoderContext VP8Context
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define ONLY_IF_THREADS_ENABLED(x)
Define a function with only the non-default version specified.
static void flush(AVCodecContext *avctx)
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
static av_cold int vp8_decode_init(AVCodecContext *avctx)
Definition: vp8.c:2029
#define CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
#define CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
static av_cold int vp8_decode_init_thread_copy(AVCodecContext *avctx)
Definition: vp8.c:2050
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868
static int vp8_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: vp8.c:1852
static av_cold int vp8_decode_free(AVCodecContext *avctx)
Definition: vp8.c:2006

Definition at line 2147 of file vp8.c.

AVCodec ff_webp_decoder
Initial value:
= {
.name = "webp",
.priv_data_size = sizeof(VP8Context),
.long_name = NULL_IF_CONFIG_SMALL("WebP"),
}
static int vp8_decode_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
Definition: vp8.c:2068
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
static void vp8_decode_flush(AVCodecContext *avctx)
Definition: vp8.c:109
struct VP8DecoderContext VP8Context
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define ONLY_IF_THREADS_ENABLED(x)
Define a function with only the non-default version specified.
static int webp_decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
Definition: vp8.c:2103
static void flush(AVCodecContext *avctx)
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
static av_cold int vp8_decode_init(AVCodecContext *avctx)
Definition: vp8.c:2029
#define CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
#define CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
static av_cold int vp8_decode_init_thread_copy(AVCodecContext *avctx)
Definition: vp8.c:2050
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
Definition: crystalhd.c:868
static av_cold int vp8_decode_free(AVCodecContext *avctx)
Definition: vp8.c:2006

Definition at line 2162 of file vp8.c.

const uint8_t subpel_idx[3][8]
static
Initial value:
= {
{ 0, 1, 2, 1, 2, 1, 2, 1 },
{ 0, 3, 5, 3, 5, 3, 5, 3 },
{ 0, 2, 3, 2, 3, 2, 3, 2 },
}

Definition at line 1156 of file vp8.c.

Referenced by vp8_mc_chroma(), and vp8_mc_luma().