FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
vp9.c File Reference
#include "avcodec.h"
#include "get_bits.h"
#include "internal.h"
#include "thread.h"
#include "videodsp.h"
#include "vp56.h"
#include "vp9.h"
#include "vp9data.h"
#include "vp9dsp.h"
#include "libavutil/avassert.h"

Go to the source code of this file.

Data Structures

struct  VP9mvrefPair
 
struct  VP9Frame
 
struct  VP9Filter
 
struct  VP9Block
 
struct  VP9Context
 

Macros

#define VP9_SYNCCODE   0x498342
 
#define CUR_FRAME   0
 
#define LAST_FRAME   1
 
#define MAX_SEGMENT   8
 
#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 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)
 
#define SPLAT_ZERO_CTX(v, n)
 
#define SPLAT_ZERO_YUV(dir, var, off, n)
 

Enumerations

enum  CompPredMode { PRED_SINGLEREF, PRED_COMPREF, PRED_SWITCHABLE }
 
enum  BlockLevel { BL_64X64, BL_32X32, BL_16X16, BL_8X8 }
 
enum  BlockSize {
  BS_64x64, BS_64x32, BS_32x64, BS_32x32,
  BS_32x16, BS_16x32, BS_16x16, BS_16x8,
  BS_8x16, BS_8x8, BS_8x4, BS_4x8,
  BS_4x4, N_BS_SIZES
}
 

Functions

static int vp9_alloc_frame (AVCodecContext *ctx, VP9Frame *f)
 
static void vp9_unref_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 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, 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 (VP56RangeCoder *c, 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 (VP56RangeCoder *c, 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 void decode_coeffs (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)
 
static void intra_recon (AVCodecContext *ctx, ptrdiff_t y_off, ptrdiff_t uv_off)
 
static av_always_inline void mc_luma_dir (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)
 
static av_always_inline void mc_chroma_dir (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)
 
static void inter_recon (AVCodecContext *ctx)
 
static av_always_inline void mask_edges (struct VP9Filter *lflvl, int is_uv, 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 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)
 
static av_cold int vp9_decode_init_thread_copy (AVCodecContext *avctx)
 
static int vp9_decode_update_thread_context (AVCodecContext *dst, const AVCodecContext *src)
 

Variables

static const uint8_t bwh_tab [2][N_BS_SIZES][2]
 
AVCodec ff_vp9_decoder
 

Macro Definition Documentation

#define VP9_SYNCCODE   0x498342

Definition at line 35 of file vp9.c.

Referenced by decode_frame_header().

#define CUR_FRAME   0
#define LAST_FRAME   1

Definition at line 131 of file vp9.c.

Referenced by decode_mode(), find_ref_mvs(), vp9_alloc_frame(), and vp9_decode_frame().

#define MAX_SEGMENT   8

Definition at line 148 of file vp9.c.

#define assign (   var,
  type,
  n 
)    var = (type) p; p += s->sb_cols * (n) * sizeof(*var)

Referenced by update_size().

#define INVALID_MV   0x80008000U

Referenced by find_ref_mvs().

#define RETURN_DIRECT_MV (   mv)
Value:
do { \
uint32_t m = AV_RN32A(&mv); \
if (!idx) { \
AV_WN32A(pmv, m); \
return; \
} else if (mem == INVALID_MV) { \
mem = m; \
} else if (m != mem) { \
AV_WN32A(pmv, m); \
return; \
} \
} while (0)

Referenced by find_ref_mvs().

#define RETURN_MV (   mv)
Value:
do { \
if (sb > 0) { \
VP56mv tmp; \
uint32_t m; \
clamp_mv(&tmp, &mv, s); \
m = AV_RN32A(&tmp); \
if (!idx) { \
AV_WN32A(pmv, m); \
return; \
} else if (mem == INVALID_MV) { \
mem = m; \
} else if (m != mem) { \
AV_WN32A(pmv, m); \
return; \
} \
} else { \
uint32_t m = AV_RN32A(&mv); \
if (!idx) { \
clamp_mv(pmv, &mv, s); \
return; \
} else if (mem == INVALID_MV) { \
mem = m; \
} else if (m != mem) { \
clamp_mv(pmv, &mv, s); \
return; \
} \
} \
} while (0)

Referenced by find_ref_mvs().

#define RETURN_SCALE_MV (   mv,
  scale 
)
Value:
do { \
if (scale) { \
VP56mv mv_temp = { -mv.x, -mv.y }; \
RETURN_MV(mv_temp); \
} else { \
RETURN_MV(mv); \
} \
} while (0)

Referenced by find_ref_mvs().

#define SPLAT_CTX (   var,
  val,
  n 
)
Value:
switch (n) { \
case 1: var = val; break; \
case 2: AV_WN16A(&var, val * 0x0101); break; \
case 4: AV_WN32A(&var, val * 0x01010101); break; \
case 8: { \
uint32_t v32 = val * 0x01010101; \
AV_WN32A( &var, v32); \
AV_WN32A(&((uint8_t *) &var)[4], v32); \
break; \
} \
case 16: { \
uint32_t v32 = val * 0x01010101; \
AV_WN32A( &var, v32); \
AV_WN32A(&((uint8_t *) &var)[4], v32); \
AV_WN32A(&((uint8_t *) &var)[8], v32); \
AV_WN32A(&((uint8_t *) &var)[12], v32); \
break; \
} \
}

Referenced by decode_coeffs().

#define SET_CTXS (   dir,
  off,
  n 
)
Value:
do { \
SPLAT_CTX(s->dir##_skip_ctx[off], b->skip, n); \
SPLAT_CTX(s->dir##_txfm_ctx[off], b->tx, n); \
SPLAT_CTX(s->dir##_partition_ctx[off], dir##_ctx[b->bs], n); \
if (!s->keyframe && !s->intraonly) { \
SPLAT_CTX(s->dir##_intra_ctx[off], b->intra, n); \
SPLAT_CTX(s->dir##_comp_ctx[off], b->comp, n); \
SPLAT_CTX(s->dir##_mode_ctx[off], b->mode[3], n); \
if (!b->intra) { \
SPLAT_CTX(s->dir##_ref_ctx[off], vref, n); \
if (s->filtermode == FILTER_SWITCHABLE) { \
SPLAT_CTX(s->dir##_filter_ctx[off], filter_id, n); \
} \
} \
} \
} while (0)

Referenced by decode_mode().

#define MERGE (   la,
  end,
  step,
  rd 
)
Value:
for (n = 0; n < end; n += step) \
la[n] = !!rd(&la[n])
#define MERGE_CTX (   step,
  rd 
)
Value:
do { \
MERGE(l, end_y, step, rd); \
MERGE(a, end_x, step, rd); \
} while (0)

Referenced by decode_coeffs().

#define DECODE_Y_COEF_LOOP (   step,
  mode_index,
  v 
)
Value:
for (n = 0, y = 0; y < end_y; y += step) { \
for (x = 0; x < end_x; x += step, n += step * step) { \
enum TxfmType txtp = vp9_intra_txfm_type[b->mode[mode_index]]; \
res = decode_coeffs_b##v(&s->c, s->block + 16 * n, 16 * step * step, \
c, e, p, a[x] + l[y], yscans[txtp], \
ynbs[txtp], y_band_counts, qmul[0]); \
a[x] = l[y] = !!res; \
if (step >= 4) { \
AV_WN16A(&s->eob[n], res); \
} else { \
s->eob[n] = res; \
} \
} \
}

Referenced by decode_coeffs().

#define SPLAT (   la,
  end,
  step,
  cond 
)
Value:
if (step == 2) { \
for (n = 1; n < end; n += step) \
la[n] = la[n - 1]; \
} else if (step == 4) { \
if (cond) { \
for (n = 0; n < end; n += step) \
AV_WN32A(&la[n], la[n] * 0x01010101); \
} else { \
for (n = 0; n < end; n += step) \
memset(&la[n + 1], la[n], FFMIN(end - n - 1, 3)); \
} \
} else /* step == 8 */ { \
if (cond) { \
if (HAVE_FAST_64BIT) { \
for (n = 0; n < end; n += step) \
AV_WN64A(&la[n], la[n] * 0x0101010101010101ULL); \
} else { \
for (n = 0; n < end; n += step) { \
uint32_t v32 = la[n] * 0x01010101; \
AV_WN32A(&la[n], v32); \
AV_WN32A(&la[n + 4], v32); \
} \
} \
} else { \
for (n = 0; n < end; n += step) \
memset(&la[n + 1], la[n], FFMIN(end - n - 1, 7)); \
} \
}
#define SPLAT_CTX (   step)
Value:
do { \
SPLAT(a, end_x, step, end_x == w4); \
SPLAT(l, end_y, step, end_y == h4); \
} while (0)
#define DECODE_UV_COEF_LOOP (   step)
Value:
for (n = 0, y = 0; y < end_y; y += step) { \
for (x = 0; x < end_x; x += step, n += step * step) { \
res = decode_coeffs_b(&s->c, s->uvblock[pl] + 16 * n, \
16 * step * step, c, e, p, a[x] + l[y], \
uvscan, uvnb, uv_band_counts, qmul[1]); \
a[x] = l[y] = !!res; \
if (step >= 4) { \
AV_WN16A(&s->uveob[pl][n], res); \
} else { \
s->uveob[pl][n] = res; \
} \
} \
}

Referenced by decode_coeffs().

#define SPLAT_ZERO_CTX (   v,
  n 
)
Value:
switch (n) { \
case 1: v = 0; break; \
case 2: AV_ZERO16(&v); break; \
case 4: AV_ZERO32(&v); break; \
case 8: AV_ZERO64(&v); break; \
case 16: AV_ZERO128(&v); break; \
}
#define SPLAT_ZERO_YUV (   dir,
  var,
  off,
  n 
)
Value:
do { \
SPLAT_ZERO_CTX(s->dir##_y_##var[off * 2], n * 2); \
SPLAT_ZERO_CTX(s->dir##_uv_##var[0][off], n); \
SPLAT_ZERO_CTX(s->dir##_uv_##var[1][off], n); \
} while (0)

Referenced by decode_b().

Enumeration Type Documentation

Enumerator:
PRED_SINGLEREF 
PRED_COMPREF 
PRED_SWITCHABLE 

Definition at line 37 of file vp9.c.

enum BlockLevel
Enumerator:
BL_64X64 
BL_32X32 
BL_16X16 
BL_8X8 

Definition at line 43 of file vp9.c.

enum BlockSize
Enumerator:
BS_64x64 
BS_64x32 
BS_32x64 
BS_32x32 
BS_32x16 
BS_16x32 
BS_16x16 
BS_16x8 
BS_8x16 
BS_8x8 
BS_8x4 
BS_4x8 
BS_4x4 
N_BS_SIZES 

Definition at line 50 of file vp9.c.

Function Documentation

static int vp9_alloc_frame ( AVCodecContext ctx,
VP9Frame f 
)
static

Definition at line 264 of file vp9.c.

Referenced by vp9_decode_frame().

static void vp9_unref_frame ( AVCodecContext ctx,
VP9Frame f 
)
static
static int vp9_ref_frame ( AVCodecContext ctx,
VP9Frame dst,
VP9Frame src 
)
static

Definition at line 295 of file vp9.c.

Referenced by vp9_decode_frame(), and vp9_decode_update_thread_context().

static int update_size ( AVCodecContext ctx,
int  w,
int  h 
)
static

Definition at line 312 of file vp9.c.

Referenced by decode_frame_header().

static int update_block_buffers ( AVCodecContext ctx)
static

Definition at line 360 of file vp9.c.

Referenced by vp9_decode_frame().

static av_always_inline int get_sbits_inv ( GetBitContext gb,
int  n 
)
static

Definition at line 398 of file vp9.c.

Referenced by decode_frame_header().

static av_always_inline int inv_recenter_nonneg ( int  v,
int  m 
)
static

Definition at line 404 of file vp9.c.

Referenced by update_prob().

static int update_prob ( VP56RangeCoder c,
int  p 
)
static

Definition at line 410 of file vp9.c.

Referenced by decode_frame_header().

static int decode_frame_header ( AVCodecContext ctx,
const uint8_t data,
int  size,
int *  ref 
)
static

Definition at line 467 of file vp9.c.

Referenced by vp9_decode_frame().

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

Definition at line 948 of file vp9.c.

static void find_ref_mvs ( VP9Context s,
VP56mv pmv,
int  ref,
int  z,
int  idx,
int  sb 
)
static

Definition at line 955 of file vp9.c.

Referenced by fill_mv().

static av_always_inline int read_mv_component ( VP9Context s,
int  idx,
int  hp 
)
static

Definition at line 1146 of file vp9.c.

Referenced by fill_mv().

static void fill_mv ( VP9Context s,
VP56mv mv,
int  mode,
int  sb 
)
static

Definition at line 1199 of file vp9.c.

Referenced by decode_mode().

static av_always_inline void setctx_2d ( uint8_t ptr,
int  w,
int  h,
ptrdiff_t  stride,
int  v 
)
static

Definition at line 1272 of file vp9.c.

Referenced by decode_b(), and decode_mode().

static void decode_mode ( AVCodecContext ctx)
static

Definition at line 1318 of file vp9.c.

Referenced by decode_b().

static av_always_inline int decode_coeffs_b_generic ( VP56RangeCoder c,
int16_t *  coef,
int  n_coeffs,
int  is_tx32x32,
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

Definition at line 2021 of file vp9.c.

Referenced by decode_coeffs_b(), and decode_coeffs_b32().

static int decode_coeffs_b ( VP56RangeCoder c,
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

Definition at line 2128 of file vp9.c.

static int decode_coeffs_b32 ( VP56RangeCoder c,
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

Definition at line 2138 of file vp9.c.

Referenced by decode_coeffs().

static void decode_coeffs ( AVCodecContext ctx)
static

Definition at line 2148 of file vp9.c.

Referenced by decode_b().

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 
)
static

Definition at line 2313 of file vp9.c.

Referenced by intra_recon().

static void intra_recon ( AVCodecContext ctx,
ptrdiff_t  y_off,
ptrdiff_t  uv_off 
)
static

Definition at line 2448 of file vp9.c.

Referenced by decode_b().

static av_always_inline void mc_luma_dir ( 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 
)
static

Definition at line 2517 of file vp9.c.

Referenced by inter_recon().

static av_always_inline void mc_chroma_dir ( 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 
)
static

Definition at line 2549 of file vp9.c.

Referenced by inter_recon().

static void inter_recon ( AVCodecContext ctx)
static

Definition at line 2594 of file vp9.c.

Referenced by decode_b().

static av_always_inline void mask_edges ( struct VP9Filter lflvl,
int  is_uv,
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

Definition at line 2787 of file vp9.c.

Referenced by decode_b().

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

Definition at line 2920 of file vp9.c.

Referenced by decode_sb(), and decode_sb_mem().

static void decode_sb ( AVCodecContext ctx,
int  row,
int  col,
struct VP9Filter lflvl,
ptrdiff_t  yoff,
ptrdiff_t  uvoff,
enum BlockLevel  bl 
)
static

Definition at line 3091 of file vp9.c.

Referenced by vp9_decode_frame().

static void decode_sb_mem ( AVCodecContext ctx,
int  row,
int  col,
struct VP9Filter lflvl,
ptrdiff_t  yoff,
ptrdiff_t  uvoff,
enum BlockLevel  bl 
)
static

Definition at line 3166 of file vp9.c.

Referenced by vp9_decode_frame().

static void loopfilter_sb ( AVCodecContext ctx,
struct VP9Filter lflvl,
int  row,
int  col,
ptrdiff_t  yoff,
ptrdiff_t  uvoff 
)
static

Definition at line 3213 of file vp9.c.

Referenced by vp9_decode_frame().

static void set_tile_offset ( int *  start,
int *  end,
int  idx,
int  log2_n,
int  n 
)
static

Definition at line 3450 of file vp9.c.

Referenced by vp9_decode_frame().

static av_always_inline void adapt_prob ( uint8_t p,
unsigned  ct0,
unsigned  ct1,
int  max_count,
int  update_factor 
)
static

Definition at line 3458 of file vp9.c.

Referenced by adapt_probs().

static void adapt_probs ( VP9Context s)
static

Definition at line 3476 of file vp9.c.

Referenced by vp9_decode_frame().

static void free_buffers ( VP9Context s)
static

Definition at line 3698 of file vp9.c.

Referenced by vp9_decode_free(), and vp9_decode_update_thread_context().

static av_cold int vp9_decode_free ( AVCodecContext ctx)
static

Definition at line 3705 of file vp9.c.

Referenced by init_frames().

static int vp9_decode_frame ( AVCodecContext ctx,
void frame,
int *  got_frame,
AVPacket pkt 
)
static

Definition at line 3731 of file vp9.c.

static void vp9_decode_flush ( AVCodecContext ctx)
static

Definition at line 3978 of file vp9.c.

static int init_frames ( AVCodecContext ctx)
static

Definition at line 3989 of file vp9.c.

Referenced by vp9_decode_init(), and vp9_decode_init_thread_copy().

static av_cold int vp9_decode_init ( AVCodecContext ctx)
static

Definition at line 4015 of file vp9.c.

static av_cold int vp9_decode_init_thread_copy ( AVCodecContext avctx)
static

Definition at line 4028 of file vp9.c.

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

Definition at line 4033 of file vp9.c.

Variable Documentation

const uint8_t bwh_tab[2][N_BS_SIZES][2]
static
Initial value:
= {
{
{ 16, 16 }, { 16, 8 }, { 8, 16 }, { 8, 8 }, { 8, 4 }, { 4, 8 },
{ 4, 4 }, { 4, 2 }, { 2, 4 }, { 2, 2 }, { 2, 1 }, { 1, 2 }, { 1, 1 },
}, {
{ 8, 8 }, { 8, 4 }, { 4, 8 }, { 4, 4 }, { 4, 2 }, { 2, 4 },
{ 2, 2 }, { 2, 1 }, { 1, 2 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 },
}
}

Definition at line 254 of file vp9.c.

Referenced by decode_b(), decode_coeffs(), decode_mode(), inter_recon(), and intra_recon().

AVCodec ff_vp9_decoder
Initial value:

Definition at line 4074 of file vp9.c.