FFmpeg
Loading...
Searching...
No Matches
vp9recon.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/frame.h"
#include "libavutil/mem_internal.h"
#include "progressframe.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)
 
#define BYTES_PER_PIXEL   1
 
#define FN(x)
 
#define BYTES_PER_PIXEL   2
 
#define scale_mv(n, dim)
 
#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)
 
#define BYTES_PER_PIXEL   1
 
#define FN(x)
 
#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, const vp9_mc_func(*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *ref, ptrdiff_t ref_stride, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *mv, int bw, int bh, int w, int h, int bytesperpixel)
 
static av_always_inline void mc_chroma_unscaled (VP9TileData *td, const 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, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *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, const vp9_mc_func(*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *ref, ptrdiff_t ref_stride, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *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, const 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, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *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)
static double val(void *priv, double ch)
Definition aeval.c:77
#define AV_RN16A(p)
static double c[64]

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)

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)

Referenced by check_intra_mode().

◆ assign_val

#define assign_val ( c,
i,
v )
Value:
do { \
if (bytesperpixel == 1) { \
(c)[(i)] = (v); \
} else { \
AV_WN16A(&(c)[(i) * 2], (v)); \
} \
} while (0)
#define i(width, name, range_min, range_max)
Definition cbs_h264.c:63

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,
i )
Value:
mc_luma_unscaled(td, s->dsp.mc, dst, dst_ls, src, src_ls, tref, row, col, \
mv, bw, bh, w, h, bytesperpixel)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
#define s(width, name)
Definition cbs_vp9.c:198
static const int8_t mv[256][2]
Definition 4xm.c:81
uint8_t w
Definition llvidencdsp.c:39
#define src
Definition vp8dsp.c:248
static av_always_inline void mc_luma_unscaled(VP9TileData *td, const vp9_mc_func(*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *ref, ptrdiff_t ref_stride, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *mv, int bw, int bh, int w, int h, int bytesperpixel)
Definition vp9recon.c:299

Definition at line 392 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,
i )
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)
static av_always_inline void mc_chroma_unscaled(VP9TileData *td, const 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, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *mv, int bw, int bh, int w, int h, int bytesperpixel)
Definition vp9recon.c:339

Definition at line 396 of file vp9recon.c.

Referenced by inter_pred().

◆ SCALED [1/2]

#define SCALED   0

Definition at line 400 of file vp9recon.c.

◆ FN [1/4]

#define FN ( x)
Value:
x##_8bpp

Definition at line 401 of file vp9recon.c.

◆ BYTES_PER_PIXEL [1/4]

#define BYTES_PER_PIXEL   1

Definition at line 402 of file vp9recon.c.

◆ FN [2/4]

#define FN ( x)
Value:
x##_16bpp

Definition at line 401 of file vp9recon.c.

◆ BYTES_PER_PIXEL [2/4]

#define BYTES_PER_PIXEL   2

Definition at line 402 of file vp9recon.c.

◆ scale_mv

#define scale_mv ( n,
dim )
Value:
(((int64_t)(n) * scale[dim]) >> 14)
long long int64_t
Definition coverity.c:34
static void scale(int *out, const int *in, const int w, const int h, const int shift)
Definition intra.c:278
int dim

Referenced by ff_vc1_pred_b_mv(), ff_vc1_pred_b_mv_intfi(), mc_chroma_scaled(), mc_luma_scaled(), mv_pred_median(), and vc1_decode_b_mb_intfr().

◆ 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,
i )
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]])
static int FUNC ph(CodedBitstreamContext *ctx, RWContext *rw, H266RawPH *current)
#define b
Definition input.c:43
#define mc
static av_always_inline void mc_luma_scaled(VP9TileData *td, vp9_scaled_mc_func smc, const vp9_mc_func(*mc)[2], uint8_t *dst, ptrdiff_t dst_stride, const uint8_t *ref, ptrdiff_t ref_stride, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *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:415

Definition at line 392 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,
i )
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]])
static av_always_inline void mc_chroma_scaled(VP9TileData *td, vp9_scaled_mc_func smc, const 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, const ProgressFrame *ref_frame, ptrdiff_t y, ptrdiff_t x, const VP9mv *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:473

Definition at line 396 of file vp9recon.c.

◆ SCALED [2/2]

#define SCALED   1

Definition at line 400 of file vp9recon.c.

◆ FN [3/4]

#define FN ( x)
Value:
x##_scaled_8bpp

Definition at line 401 of file vp9recon.c.

◆ BYTES_PER_PIXEL [3/4]

#define BYTES_PER_PIXEL   1

Definition at line 402 of file vp9recon.c.

◆ FN [4/4]

#define FN ( x)
Value:
x##_scaled_16bpp

Definition at line 401 of file vp9recon.c.

◆ BYTES_PER_PIXEL [4/4]

#define BYTES_PER_PIXEL   2

Definition at line 402 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 33 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 219 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 289 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 294 of file vp9recon.c.

Referenced by ff_vp9_decode_block().

◆ mc_luma_unscaled()

static av_always_inline void mc_luma_unscaled ( VP9TileData * td,
const vp9_mc_func(*) mc[2],
uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * ref,
ptrdiff_t ref_stride,
const ProgressFrame * ref_frame,
ptrdiff_t y,
ptrdiff_t x,
const VP9mv * mv,
int bw,
int bh,
int w,
int h,
int bytesperpixel )
static

Definition at line 299 of file vp9recon.c.

Referenced by mc_luma_scaled().

◆ mc_chroma_unscaled()

static av_always_inline void mc_chroma_unscaled ( VP9TileData * td,
const 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,
const ProgressFrame * ref_frame,
ptrdiff_t y,
ptrdiff_t x,
const VP9mv * mv,
int bw,
int bh,
int w,
int h,
int bytesperpixel )
static

Definition at line 339 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,
const vp9_mc_func(*) mc[2],
uint8_t * dst,
ptrdiff_t dst_stride,
const uint8_t * ref,
ptrdiff_t ref_stride,
const ProgressFrame * ref_frame,
ptrdiff_t y,
ptrdiff_t x,
const VP9mv * 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 415 of file vp9recon.c.

◆ mc_chroma_scaled()

static av_always_inline void mc_chroma_scaled ( VP9TileData * td,
vp9_scaled_mc_func smc,
const 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,
const ProgressFrame * ref_frame,
ptrdiff_t y,
ptrdiff_t x,
const VP9mv * 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 473 of file vp9recon.c.

◆ inter_recon()

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

Definition at line 578 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 655 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 660 of file vp9recon.c.

Referenced by ff_vp9_decode_block().