Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2018-10-06 00:44:18 +0300
committerRonald S. Bultje <rsbultje@gmail.com>2018-10-08 15:44:21 +0300
commit36647aaa1aec66983d2d470c3346e0102a5a240b (patch)
treea851faa8e5283557292dc9359a32b3f1bb5f49e7 /src/loopfilter.h
parent76646c7d94199f4e15dddd4c7e6151dc51103ed7 (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.h9
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);