FFmpeg  4.0
Macros | Functions
vp9recon.c File Reference
#include "libavutil/avassert.h"
#include "avcodec.h"
#include "internal.h"
#include "videodsp.h"
#include "vp9data.h"
#include "vp9dec.h"
#include "vp9_mc_template.c"

Go to the source code of this file.

Macros

#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(td, mc, dst, dst_ls, src, src_ls, tref, row, col, mv, px, py, pw, ph, bw, bh, w, h, i)
 
#define mc_chroma_dir(td, 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(td, mc, dst, dst_ls, src, src_ls, tref, row, col, mv, px, py, pw, ph, bw, bh, w, h, i)
 
#define mc_chroma_dir(td, 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
 

Functions

static av_always_inline int check_intra_mode (VP9TileData *td, 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 (VP9TileData *td, ptrdiff_t y_off, ptrdiff_t uv_off, int bytesperpixel)
 
void ff_vp9_intra_recon_8bpp (VP9TileData *td, ptrdiff_t y_off, ptrdiff_t uv_off)
 
void ff_vp9_intra_recon_16bpp (VP9TileData *td, ptrdiff_t y_off, ptrdiff_t uv_off)
 
static av_always_inline void mc_luma_unscaled (VP9TileData *td, 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 (VP9TileData *td, 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 (VP9TileData *td, 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 (VP9TileData *td, 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 (VP9TileData *td, int bytesperpixel)
 
void ff_vp9_inter_recon_8bpp (VP9TileData *td)
 
void ff_vp9_inter_recon_16bpp (VP9TileData *td)
 

Macro Definition Documentation

◆ memset_bpp

#define memset_bpp (   c,
  i1,
  v,
  i2,
  num 
)
Value:
do { \
if (bytesperpixel == 1) { \
memset(&(c)[(i1)], (v)[(i2)], (num)); \
} else { \
int n, val = AV_RN16A(&(v)[(i2) * 2]); \
for (n = 0; n < (num); n++) { \
AV_WN16A(&(c)[((i1) + n) * 2], val); \
} \
} \
} while (0)
const char const char void * val
Definition: avisynth_c.h:771
int n
Definition: avisynth_c.h:684
static double c[64]
#define AV_RN16A(p)
Definition: intreadwrite.h:522

Referenced by check_intra_mode().

◆ memset_val

#define memset_val (   c,
  val,
  num 
)
Value:
do { \
if (bytesperpixel == 1) { \
memset((c), (val), (num)); \
} else { \
int n; \
for (n = 0; n < (num); n++) { \
AV_WN16A(&(c)[n * 2], (val)); \
} \
} \
} while (0)
const char const char void * val
Definition: avisynth_c.h:771
int n
Definition: avisynth_c.h:684
static double c[64]

Referenced by check_intra_mode().

◆ assign_bpp

#define assign_bpp (   c,
  i1,
  v,
  i2 
)
Value:
do { \
if (bytesperpixel == 1) { \
(c)[(i1)] = (v)[(i2)]; \
} else { \
AV_COPY16(&(c)[(i1) * 2], &(v)[(i2) * 2]); \
} \
} while (0)
static double c[64]

Referenced by check_intra_mode().

◆ assign_val

#define assign_val (   c,
  i,
 
)
Value:
do { \
if (bytesperpixel == 1) { \
(c)[(i)] = (v); \
} else { \
AV_WN16A(&(c)[(i) * 2], (v)); \
} \
} while (0)
static double c[64]

Referenced by check_intra_mode().

◆ mc_luma_dir [1/2]

#define mc_luma_dir (   td,
  mc,
  dst,
  dst_ls,
  src,
  src_ls,
  tref,
  row,
  col,
  mv,
  px,
  py,
  pw,
  ph,
  bw,
  bh,
  w,
  h,
 
)
Value:
mc_luma_unscaled(td, s->dsp.mc, dst, dst_ls, src, src_ls, tref, row, col, \
mv, bw, bh, w, h, bytesperpixel)
const char * s
Definition: avisynth_c.h:768
#define src
Definition: vp8dsp.c:254
static av_always_inline void mc_luma_unscaled(VP9TileData *td, 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)
Definition: vp9recon.c:298
#define td
Definition: regdef.h:70
uint8_t w
Definition: llviddspenc.c:38
static const int8_t mv[256][2]
Definition: 4xm.c:77

Definition at line 544 of file vp9recon.c.

Referenced by inter_pred().

◆ mc_chroma_dir [1/2]

#define mc_chroma_dir (   td,
  mc,
  dstu,
  dstv,
  dst_ls,
  srcu,
  srcu_ls,
  srcv,
  srcv_ls,
  tref,
  row,
  col,
  mv,
  px,
  py,
  pw,
  ph,
  bw,
  bh,
  w,
  h,
 
)
Value:
mc_chroma_unscaled(td, s->dsp.mc, dstu, dstv, dst_ls, srcu, srcu_ls, srcv, srcv_ls, tref, \
row, col, mv, bw, bh, w, h, bytesperpixel)
const char * s
Definition: avisynth_c.h:768
#define td
Definition: regdef.h:70
uint8_t w
Definition: llviddspenc.c:38
static const int8_t mv[256][2]
Definition: 4xm.c:77
static av_always_inline void mc_chroma_unscaled(VP9TileData *td, 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)
Definition: vp9recon.c:334

Definition at line 549 of file vp9recon.c.

Referenced by inter_pred().

◆ SCALED [1/2]

#define SCALED   0

Definition at line 554 of file vp9recon.c.

◆ FN [1/4]

#define FN (   x)    x##_8bpp

Definition at line 560 of file vp9recon.c.

◆ BYTES_PER_PIXEL [1/4]

#define BYTES_PER_PIXEL   1

Definition at line 561 of file vp9recon.c.

Referenced by inter_pred().

◆ FN [2/4]

#define FN (   x)    x##_16bpp

Definition at line 560 of file vp9recon.c.

◆ BYTES_PER_PIXEL [2/4]

#define BYTES_PER_PIXEL   2

Definition at line 561 of file vp9recon.c.

◆ scale_mv

#define scale_mv (   n,
  dim 
)    (((int64_t)(n) * scale[dim]) >> 14)

◆ mc_luma_dir [2/2]

#define mc_luma_dir (   td,
  mc,
  dst,
  dst_ls,
  src,
  src_ls,
  tref,
  row,
  col,
  mv,
  px,
  py,
  pw,
  ph,
  bw,
  bh,
  w,
  h,
 
)
Value:
mc_luma_scaled(td, s->dsp.s##mc, s->dsp.mc, dst, dst_ls, src, src_ls, tref, row, col, \
mv, px, py, pw, ph, bw, bh, w, h, bytesperpixel, \
s->mvscale[b->ref[i]], s->mvstep[b->ref[i]])
const char * s
Definition: avisynth_c.h:768
const char * b
Definition: vf_curves.c:113
#define src
Definition: vp8dsp.c:254
#define td
Definition: regdef.h:70
static av_always_inline void mc_luma_scaled(VP9TileData *td, 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)
Definition: vp9recon.c:406
uint8_t w
Definition: llviddspenc.c:38
#define mc
static const int8_t mv[256][2]
Definition: 4xm.c:77

Definition at line 544 of file vp9recon.c.

◆ mc_chroma_dir [2/2]

#define mc_chroma_dir (   td,
  mc,
  dstu,
  dstv,
  dst_ls,
  srcu,
  srcu_ls,
  srcv,
  srcv_ls,
  tref,
  row,
  col,
  mv,
  px,
  py,
  pw,
  ph,
  bw,
  bh,
  w,
  h,
 
)
Value:
mc_chroma_scaled(td, s->dsp.s##mc, s->dsp.mc, dstu, dstv, dst_ls, srcu, srcu_ls, srcv, srcv_ls, tref, \
row, col, mv, px, py, pw, ph, bw, bh, w, h, bytesperpixel, \
s->mvscale[b->ref[i]], s->mvstep[b->ref[i]])
const char * s
Definition: avisynth_c.h:768
const char * b
Definition: vf_curves.c:113
#define td
Definition: regdef.h:70
uint8_t w
Definition: llviddspenc.c:38
static av_always_inline void mc_chroma_scaled(VP9TileData *td, 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)
Definition: vp9recon.c:464
#define mc
static const int8_t mv[256][2]
Definition: 4xm.c:77

Definition at line 549 of file vp9recon.c.

◆ SCALED [2/2]

#define SCALED   1

Definition at line 554 of file vp9recon.c.

◆ FN [3/4]

#define FN (   x)    x##_scaled_8bpp

Definition at line 560 of file vp9recon.c.

◆ BYTES_PER_PIXEL [3/4]

#define BYTES_PER_PIXEL   1

Definition at line 561 of file vp9recon.c.

◆ FN [4/4]

#define FN (   x)    x##_scaled_16bpp

Definition at line 560 of file vp9recon.c.

◆ BYTES_PER_PIXEL [4/4]

#define BYTES_PER_PIXEL   2

Definition at line 561 of file vp9recon.c.

Function Documentation

◆ check_intra_mode()

static av_always_inline int check_intra_mode ( VP9TileData td,
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

Definition at line 32 of file vp9recon.c.

Referenced by intra_recon().

◆ intra_recon()

static av_always_inline void intra_recon ( VP9TileData td,
ptrdiff_t  y_off,
ptrdiff_t  uv_off,
int  bytesperpixel 
)
static

Definition at line 218 of file vp9recon.c.

Referenced by ff_vp9_intra_recon_16bpp(), and ff_vp9_intra_recon_8bpp().

◆ ff_vp9_intra_recon_8bpp()

void ff_vp9_intra_recon_8bpp ( VP9TileData td,
ptrdiff_t  y_off,
ptrdiff_t  uv_off 
)

Definition at line 288 of file vp9recon.c.

Referenced by ff_vp9_decode_block().

◆ ff_vp9_intra_recon_16bpp()

void ff_vp9_intra_recon_16bpp ( VP9TileData td,
ptrdiff_t  y_off,
ptrdiff_t  uv_off 
)

Definition at line 293 of file vp9recon.c.

Referenced by ff_vp9_decode_block().

◆ mc_luma_unscaled()

static av_always_inline void mc_luma_unscaled ( VP9TileData td,
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

Definition at line 298 of file vp9recon.c.

Referenced by mc_luma_scaled().

◆ mc_chroma_unscaled()

static av_always_inline void mc_chroma_unscaled ( VP9TileData td,
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

Definition at line 334 of file vp9recon.c.

Referenced by mc_chroma_scaled().

◆ mc_luma_scaled()

static av_always_inline void mc_luma_scaled ( VP9TileData td,
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

Definition at line 406 of file vp9recon.c.

◆ mc_chroma_scaled()

static av_always_inline void mc_chroma_scaled ( VP9TileData td,
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

Definition at line 464 of file vp9recon.c.

◆ inter_recon()

static av_always_inline void inter_recon ( VP9TileData td,
int  bytesperpixel 
)
static

Definition at line 569 of file vp9recon.c.

Referenced by ff_vp9_inter_recon_16bpp(), and ff_vp9_inter_recon_8bpp().

◆ ff_vp9_inter_recon_8bpp()

void ff_vp9_inter_recon_8bpp ( VP9TileData td)

Definition at line 636 of file vp9recon.c.

Referenced by ff_vp9_decode_block().

◆ ff_vp9_inter_recon_16bpp()

void ff_vp9_inter_recon_16bpp ( VP9TileData td)

Definition at line 641 of file vp9recon.c.

Referenced by ff_vp9_decode_block().