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-05 23:30:50 +0300
committerRonald S. Bultje <rsbultje@gmail.com>2018-10-08 15:57:48 +0300
commitbf7a4786bf0d097ca7e36e133d17d825ac4552be (patch)
tree3633f5c9b8f714106db0e10ca60103b70f0f8dad /src/loopfilter.h
parent04b70ea56d3258bedef3002ea877cc90277e5ab2 (diff)
Rewrite horizontal loopfilter
Loop inside SIMD (instead of in the caller) so that we can handle multiple 4px blocks per iteration, allowing for more efficient SIMD. To make this easier, also transpose the masks for the hor filter.
Diffstat (limited to 'src/loopfilter.h')
-rw-r--r--src/loopfilter.h13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/loopfilter.h b/src/loopfilter.h
index 11a1c0e..d53bda8 100644
--- a/src/loopfilter.h
+++ b/src/loopfilter.h
@@ -36,10 +36,6 @@
#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, \
@@ -48,15 +44,12 @@ 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)
+ * dimension 1: plane (0=luma, 1=chroma)
* dimension 2: 0=col-edge filter (h), 1=row-edge filter (v)
*
- * dst/stride are aligned by 4
+ * dst/stride are aligned by 32
*/
- 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;
+ loopfilter_sb_fn loop_filter_sb[2][2];
} Dav1dLoopFilterDSPContext;
void dav1d_loop_filter_dsp_init_8bpc(Dav1dLoopFilterDSPContext *c);