diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2018-10-06 00:44:18 +0300 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2018-10-08 15:44:21 +0300 |
commit | 36647aaa1aec66983d2d470c3346e0102a5a240b (patch) | |
tree | a851faa8e5283557292dc9359a32b3f1bb5f49e7 /src/loopfilter.h | |
parent | 76646c7d94199f4e15dddd4c7e6151dc51103ed7 (diff) |
Vertical loopfilter simplifications
- remove edge condition in maxifzero(), since it's always true;
- make subsampled level array packed;
- handle a SB worth of 4px blocks per DSP function call, so that
SIMD will be more efficient.
Diffstat (limited to 'src/loopfilter.h')
-rw-r--r-- | src/loopfilter.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/loopfilter.h b/src/loopfilter.h index 4b8401b..d4437a2 100644 --- a/src/loopfilter.h +++ b/src/loopfilter.h @@ -34,11 +34,18 @@ #include "common/bitdepth.h" #include "src/levels.h" +#include "src/lf_mask.h" #define decl_loopfilter_fn(name) \ void (name)(pixel *dst, ptrdiff_t stride, int mb_lim, int lim, int hev_thr) typedef decl_loopfilter_fn(*loopfilter_fn); +#define decl_loopfilter_sb_fn(name) \ +void (name)(pixel *dst, ptrdiff_t stride, const uint32_t *mask, \ + const uint8_t (*lvl)[4], ptrdiff_t lvl_stride, \ + const Av1FilterLUT *lut, int w) +typedef decl_loopfilter_sb_fn(*loopfilter_sb_fn); + typedef struct Dav1dLoopFilterDSPContext { /* * dimension 1: filter taps (0=4, 1=8, 2=16 for luma; 0=4, 1=6 for chroma) @@ -48,6 +55,8 @@ typedef struct Dav1dLoopFilterDSPContext { */ loopfilter_fn loop_filter[3][2]; loopfilter_fn loop_filter_uv[2][2]; + loopfilter_sb_fn loop_filter_sb128y; + loopfilter_sb_fn loop_filter_sb128uv; } Dav1dLoopFilterDSPContext; void dav1d_loop_filter_dsp_init_8bpc(Dav1dLoopFilterDSPContext *c); |