FFmpeg
|
#include "avcodec.h"
#include "get_bits.h"
#include "internal.h"
#include "profiles.h"
#include "thread.h"
#include "videodsp.h"
#include "vp56.h"
#include "vp9.h"
#include "vp9data.h"
#include "vp9dsp.h"
#include "libavutil/avassert.h"
#include "libavutil/pixdesc.h"
#include "vp9_mc_template.c"
Go to the source code of this file.
Data Structures | |
struct | VP9Filter |
struct | VP9Block |
struct | VP9Context |
Macros | |
#define | VP9_SYNCCODE 0x498342 |
#define | HWACCEL_MAX (CONFIG_VP9_DXVA2_HWACCEL + CONFIG_VP9_D3D11VA_HWACCEL + CONFIG_VP9_VAAPI_HWACCEL) |
#define | assign(var, type, n) var = (type) p; p += s->sb_cols * (n) * sizeof(*var) |
#define | INVALID_MV 0x80008000U |
#define | RETURN_DIRECT_MV(mv) |
#define | RETURN_MV(mv) |
#define | RETURN_SCALE_MV(mv, scale) |
#define | SPLAT_CTX(var, val, n) |
#define | SET_CTXS(dir, off, n) |
#define | STORE_COEF(c, i, v) |
#define | MERGE(la, end, step, rd) |
#define | MERGE_CTX(step, rd) |
#define | DECODE_Y_COEF_LOOP(step, mode_index, v) |
#define | SPLAT(la, end, step, cond) |
#define | SPLAT_CTX(step) |
#define | DECODE_UV_COEF_LOOP(step, v) |
#define | memset_bpp(c, i1, v, i2, num) |
#define | memset_val(c, val, num) |
#define | assign_bpp(c, i1, v, i2) |
#define | assign_val(c, i, v) |
#define | mc_luma_dir(s, mc, dst, dst_ls, src, src_ls, tref, row, col, mv, px, py, pw, ph, bw, bh, w, h, i) |
#define | mc_chroma_dir(s, mc, dstu, dstv, dst_ls, srcu, srcu_ls, srcv, srcv_ls, tref, row, col, mv, px, py, pw, ph, bw, bh, w, h, i) |
#define | SCALED 0 |
#define | FN(x) x##_8bpp |
#define | BYTES_PER_PIXEL 1 |
#define | FN(x) x##_16bpp |
#define | BYTES_PER_PIXEL 2 |
#define | scale_mv(n, dim) (((int64_t)(n) * scale[dim]) >> 14) |
#define | mc_luma_dir(s, mc, dst, dst_ls, src, src_ls, tref, row, col, mv, px, py, pw, ph, bw, bh, w, h, i) |
#define | mc_chroma_dir(s, mc, dstu, dstv, dst_ls, srcu, srcu_ls, srcv, srcv_ls, tref, row, col, mv, px, py, pw, ph, bw, bh, w, h, i) |
#define | SCALED 1 |
#define | FN(x) x##_scaled_8bpp |
#define | BYTES_PER_PIXEL 1 |
#define | FN(x) x##_scaled_16bpp |
#define | BYTES_PER_PIXEL 2 |
#define | SPLAT_ZERO_CTX(v, n) |
#define | SPLAT_ZERO_YUV(dir, var, off, n, dir2) |
Functions | |
static void | vp9_unref_frame (AVCodecContext *ctx, VP9Frame *f) |
static int | vp9_alloc_frame (AVCodecContext *ctx, VP9Frame *f) |
static int | vp9_ref_frame (AVCodecContext *ctx, VP9Frame *dst, VP9Frame *src) |
static int | update_size (AVCodecContext *ctx, int w, int h) |
static int | update_block_buffers (AVCodecContext *ctx) |
static av_always_inline int | get_sbits_inv (GetBitContext *gb, int n) |
static av_always_inline int | inv_recenter_nonneg (int v, int m) |
static int | update_prob (VP56RangeCoder *c, int p) |
static int | read_colorspace_details (AVCodecContext *ctx) |
static int | decode_frame_header (AVCodecContext *ctx, const uint8_t *data, int size, int *ref) |
static av_always_inline void | clamp_mv (VP56mv *dst, const VP56mv *src, VP9Context *s) |
static void | find_ref_mvs (VP9Context *s, VP56mv *pmv, int ref, int z, int idx, int sb) |
static av_always_inline int | read_mv_component (VP9Context *s, int idx, int hp) |
static void | fill_mv (VP9Context *s, VP56mv *mv, int mode, int sb) |
static av_always_inline void | setctx_2d (uint8_t *ptr, int w, int h, ptrdiff_t stride, int v) |
static void | decode_mode (AVCodecContext *ctx) |
static av_always_inline int | decode_coeffs_b_generic (VP56RangeCoder *c, int16_t *coef, int n_coeffs, int is_tx32x32, int is8bitsperpixel, int bpp, unsigned(*cnt)[6][3], unsigned(*eob)[6][2], uint8_t(*p)[6][11], int nnz, const int16_t *scan, const int16_t(*nb)[2], const int16_t *band_counts, const int16_t *qmul) |
static int | decode_coeffs_b_8bpp (VP9Context *s, int16_t *coef, int n_coeffs, unsigned(*cnt)[6][3], unsigned(*eob)[6][2], uint8_t(*p)[6][11], int nnz, const int16_t *scan, const int16_t(*nb)[2], const int16_t *band_counts, const int16_t *qmul) |
static int | decode_coeffs_b32_8bpp (VP9Context *s, int16_t *coef, int n_coeffs, unsigned(*cnt)[6][3], unsigned(*eob)[6][2], uint8_t(*p)[6][11], int nnz, const int16_t *scan, const int16_t(*nb)[2], const int16_t *band_counts, const int16_t *qmul) |
static int | decode_coeffs_b_16bpp (VP9Context *s, int16_t *coef, int n_coeffs, unsigned(*cnt)[6][3], unsigned(*eob)[6][2], uint8_t(*p)[6][11], int nnz, const int16_t *scan, const int16_t(*nb)[2], const int16_t *band_counts, const int16_t *qmul) |
static int | decode_coeffs_b32_16bpp (VP9Context *s, int16_t *coef, int n_coeffs, unsigned(*cnt)[6][3], unsigned(*eob)[6][2], uint8_t(*p)[6][11], int nnz, const int16_t *scan, const int16_t(*nb)[2], const int16_t *band_counts, const int16_t *qmul) |
static av_always_inline int | decode_coeffs (AVCodecContext *ctx, int is8bitsperpixel) |
static int | decode_coeffs_8bpp (AVCodecContext *ctx) |
static int | decode_coeffs_16bpp (AVCodecContext *ctx) |
static av_always_inline int | check_intra_mode (VP9Context *s, int mode, uint8_t **a, uint8_t *dst_edge, ptrdiff_t stride_edge, uint8_t *dst_inner, ptrdiff_t stride_inner, uint8_t *l, int col, int x, int w, int row, int y, enum TxfmMode tx, int p, int ss_h, int ss_v, int bytesperpixel) |
static av_always_inline void | intra_recon (AVCodecContext *ctx, ptrdiff_t y_off, ptrdiff_t uv_off, int bytesperpixel) |
static void | intra_recon_8bpp (AVCodecContext *ctx, ptrdiff_t y_off, ptrdiff_t uv_off) |
static void | intra_recon_16bpp (AVCodecContext *ctx, ptrdiff_t y_off, ptrdiff_t uv_off) |
static av_always_inline void | mc_luma_unscaled (VP9Context *s, vp9_mc_func(*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *ref, ptrdiff_t ref_stride, ThreadFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP56mv *mv, int bw, int bh, int w, int h, int bytesperpixel) |
static av_always_inline void | mc_chroma_unscaled (VP9Context *s, vp9_mc_func(*mc)[2], uint8_t *dst_u, uint8_t *dst_v, ptrdiff_t dst_stride, const uint8_t *ref_u, ptrdiff_t src_stride_u, const uint8_t *ref_v, ptrdiff_t src_stride_v, ThreadFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP56mv *mv, int bw, int bh, int w, int h, int bytesperpixel) |
static av_always_inline void | mc_luma_scaled (VP9Context *s, vp9_scaled_mc_func smc, vp9_mc_func(*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *ref, ptrdiff_t ref_stride, ThreadFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP56mv *in_mv, int px, int py, int pw, int ph, int bw, int bh, int w, int h, int bytesperpixel, const uint16_t *scale, const uint8_t *step) |
static av_always_inline void | mc_chroma_scaled (VP9Context *s, vp9_scaled_mc_func smc, vp9_mc_func(*mc)[2], uint8_t *dst_u, uint8_t *dst_v, ptrdiff_t dst_stride, const uint8_t *ref_u, ptrdiff_t src_stride_u, const uint8_t *ref_v, ptrdiff_t src_stride_v, ThreadFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP56mv *in_mv, int px, int py, int pw, int ph, int bw, int bh, int w, int h, int bytesperpixel, const uint16_t *scale, const uint8_t *step) |
static av_always_inline void | inter_recon (AVCodecContext *ctx, int bytesperpixel) |
static void | inter_recon_8bpp (AVCodecContext *ctx) |
static void | inter_recon_16bpp (AVCodecContext *ctx) |
static av_always_inline void | mask_edges (uint8_t(*mask)[8][4], int ss_h, int ss_v, int row_and_7, int col_and_7, int w, int h, int col_end, int row_end, enum TxfmMode tx, int skip_inter) |
static void | decode_b (AVCodecContext *ctx, int row, int col, struct VP9Filter *lflvl, ptrdiff_t yoff, ptrdiff_t uvoff, enum BlockLevel bl, enum BlockPartition bp) |
static void | decode_sb (AVCodecContext *ctx, int row, int col, struct VP9Filter *lflvl, ptrdiff_t yoff, ptrdiff_t uvoff, enum BlockLevel bl) |
static void | decode_sb_mem (AVCodecContext *ctx, int row, int col, struct VP9Filter *lflvl, ptrdiff_t yoff, ptrdiff_t uvoff, enum BlockLevel bl) |
static av_always_inline void | filter_plane_cols (VP9Context *s, int col, int ss_h, int ss_v, uint8_t *lvl, uint8_t(*mask)[4], uint8_t *dst, ptrdiff_t ls) |
static av_always_inline void | filter_plane_rows (VP9Context *s, int row, int ss_h, int ss_v, uint8_t *lvl, uint8_t(*mask)[4], uint8_t *dst, ptrdiff_t ls) |
static void | loopfilter_sb (AVCodecContext *ctx, struct VP9Filter *lflvl, int row, int col, ptrdiff_t yoff, ptrdiff_t uvoff) |
static void | set_tile_offset (int *start, int *end, int idx, int log2_n, int n) |
static av_always_inline void | adapt_prob (uint8_t *p, unsigned ct0, unsigned ct1, int max_count, int update_factor) |
static void | adapt_probs (VP9Context *s) |
static void | free_buffers (VP9Context *s) |
static av_cold int | vp9_decode_free (AVCodecContext *ctx) |
static int | vp9_decode_frame (AVCodecContext *ctx, void *frame, int *got_frame, AVPacket *pkt) |
static void | vp9_decode_flush (AVCodecContext *ctx) |
static int | init_frames (AVCodecContext *ctx) |
static av_cold int | vp9_decode_init (AVCodecContext *ctx) |
Variables | |
static const uint8_t | bwh_tab [2][N_BS_SIZES][2] |
AVCodec | ff_vp9_decoder |
#define VP9_SYNCCODE 0x498342 |
Definition at line 37 of file vp9.c.
Referenced by decode_frame_header().
#define HWACCEL_MAX (CONFIG_VP9_DXVA2_HWACCEL + CONFIG_VP9_D3D11VA_HWACCEL + CONFIG_VP9_VAAPI_HWACCEL) |
Referenced by update_size().
Referenced by update_size().
#define INVALID_MV 0x80008000U |
Referenced by find_ref_mvs().
#define RETURN_DIRECT_MV | ( | mv | ) |
Referenced by find_ref_mvs().
#define RETURN_MV | ( | mv | ) |
Referenced by find_ref_mvs().
#define RETURN_SCALE_MV | ( | mv, | |
scale | |||
) |
Referenced by decode_coeffs().
#define SET_CTXS | ( | dir, | |
off, | |||
n | |||
) |
Referenced by decode_mode().
#define STORE_COEF | ( | c, | |
i, | |||
v | |||
) |
Referenced by decode_coeffs_b_generic().
#define MERGE | ( | la, | |
end, | |||
step, | |||
rd | |||
) |
#define MERGE_CTX | ( | step, | |
rd | |||
) |
Referenced by decode_coeffs().
#define DECODE_Y_COEF_LOOP | ( | step, | |
mode_index, | |||
v | |||
) |
Referenced by decode_coeffs().
#define SPLAT | ( | la, | |
end, | |||
step, | |||
cond | |||
) |
#define SPLAT_CTX | ( | step | ) |
#define DECODE_UV_COEF_LOOP | ( | step, | |
v | |||
) |
Referenced by decode_coeffs().
#define memset_bpp | ( | c, | |
i1, | |||
v, | |||
i2, | |||
num | |||
) |
Referenced by check_intra_mode().
Referenced by check_intra_mode().
#define assign_bpp | ( | c, | |
i1, | |||
v, | |||
i2 | |||
) |
Referenced by check_intra_mode().
#define assign_val | ( | c, | |
i, | |||
v | |||
) |
Referenced by check_intra_mode().
#define mc_luma_dir | ( | s, | |
mc, | |||
dst, | |||
dst_ls, | |||
src, | |||
src_ls, | |||
tref, | |||
row, | |||
col, | |||
mv, | |||
px, | |||
py, | |||
pw, | |||
ph, | |||
bw, | |||
bh, | |||
w, | |||
h, | |||
i | |||
) |
Definition at line 2961 of file vp9.c.
Referenced by inter_pred().
#define mc_chroma_dir | ( | s, | |
mc, | |||
dstu, | |||
dstv, | |||
dst_ls, | |||
srcu, | |||
srcu_ls, | |||
srcv, | |||
srcv_ls, | |||
tref, | |||
row, | |||
col, | |||
mv, | |||
px, | |||
py, | |||
pw, | |||
ph, | |||
bw, | |||
bh, | |||
w, | |||
h, | |||
i | |||
) |
Definition at line 2966 of file vp9.c.
Referenced by inter_pred().
#define BYTES_PER_PIXEL 1 |
Definition at line 2978 of file vp9.c.
Referenced by inter_pred().
Referenced by ff_vc1_pred_b_mv(), ff_vc1_pred_b_mv_intfi(), mc_chroma_scaled(), mc_luma_scaled(), and vc1_decode_b_mb_intfr().
#define mc_luma_dir | ( | s, | |
mc, | |||
dst, | |||
dst_ls, | |||
src, | |||
src_ls, | |||
tref, | |||
row, | |||
col, | |||
mv, | |||
px, | |||
py, | |||
pw, | |||
ph, | |||
bw, | |||
bh, | |||
w, | |||
h, | |||
i | |||
) |
#define mc_chroma_dir | ( | s, | |
mc, | |||
dstu, | |||
dstv, | |||
dst_ls, | |||
srcu, | |||
srcu_ls, | |||
srcv, | |||
srcv_ls, | |||
tref, | |||
row, | |||
col, | |||
mv, | |||
px, | |||
py, | |||
pw, | |||
ph, | |||
bw, | |||
bh, | |||
w, | |||
h, | |||
i | |||
) |
#define SPLAT_ZERO_CTX | ( | v, | |
n | |||
) |
#define SPLAT_ZERO_YUV | ( | dir, | |
var, | |||
off, | |||
n, | |||
dir2 | |||
) |
Referenced by decode_b().
|
static |
Definition at line 177 of file vp9.c.
Referenced by vp9_alloc_frame(), vp9_decode_flush(), vp9_decode_frame(), vp9_decode_free(), and vp9_ref_frame().
|
static |
Definition at line 186 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 219 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 247 of file vp9.c.
Referenced by decode_frame_header().
|
static |
Definition at line 338 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 381 of file vp9.c.
Referenced by decode_frame_header().
|
static |
Definition at line 387 of file vp9.c.
Referenced by update_prob().
|
static |
Definition at line 393 of file vp9.c.
Referenced by decode_frame_header().
|
static |
Definition at line 451 of file vp9.c.
Referenced by decode_frame_header().
|
static |
Definition at line 513 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 1043 of file vp9.c.
Referenced by find_ref_mvs().
|
static |
|
static |
|
static |
Definition at line 1305 of file vp9.c.
Referenced by decode_mode().
|
static |
Definition at line 1378 of file vp9.c.
Referenced by decode_b(), and decode_mode().
|
static |
Definition at line 1424 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 2130 of file vp9.c.
Referenced by decode_coeffs_b32_16bpp(), decode_coeffs_b32_8bpp(), decode_coeffs_b_16bpp(), and decode_coeffs_b_8bpp().
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 2293 of file vp9.c.
Referenced by decode_coeffs_16bpp(), and decode_coeffs_8bpp().
|
static |
Definition at line 2460 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 2465 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 2470 of file vp9.c.
Referenced by intra_recon().
|
static |
Definition at line 2651 of file vp9.c.
Referenced by intra_recon_16bpp(), and intra_recon_8bpp().
|
static |
Definition at line 2721 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 2726 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 2731 of file vp9.c.
Referenced by mc_luma_scaled().
|
static |
Definition at line 2763 of file vp9.c.
Referenced by mc_chroma_scaled().
|
static |
|
static |
|
static |
Definition at line 2986 of file vp9.c.
Referenced by inter_recon_16bpp(), and inter_recon_8bpp().
|
static |
Definition at line 3052 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 3057 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 3062 of file vp9.c.
Referenced by decode_b().
|
static |
Definition at line 3184 of file vp9.c.
Referenced by decode_sb(), and decode_sb_mem().
|
static |
Definition at line 3384 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 3463 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 3512 of file vp9.c.
Referenced by loopfilter_sb().
|
static |
Definition at line 3587 of file vp9.c.
Referenced by loopfilter_sb().
|
static |
Definition at line 3664 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 3690 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 3698 of file vp9.c.
Referenced by adapt_probs().
|
static |
Definition at line 3716 of file vp9.c.
Referenced by vp9_decode_frame().
|
static |
Definition at line 3938 of file vp9.c.
Referenced by vp9_decode_free().
|
static |
Definition at line 3945 of file vp9.c.
Referenced by init_frames().
|
static |
|
static |
|
static |
Definition at line 4261 of file vp9.c.
Referenced by vp9_decode_init().
|
static |
|
static |
Definition at line 167 of file vp9.c.
Referenced by decode_b(), decode_coeffs(), decode_mode(), inter_pred(), inter_recon(), and intra_recon().
AVCodec ff_vp9_decoder |