summaryrefslogtreecommitdiff
path: root/libavfilter/vf_nlmeans.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2018-05-06 00:06:19 +0200
committerClément Bœsch <u@pkh.me>2018-05-08 10:28:06 +0200
commitf1248b7795857e14ee31a15ad79583bdda7c4a90 (patch)
tree8546971cc74bcfa29eb21c2c92cc6209df47a02b /libavfilter/vf_nlmeans.c
parent0683ad709b0eafc6e863612e5f80784efaf0e04e (diff)
lavfi/nlmeans: random code shuffling to help compiler
This makes nlmeans_slice() slightly faster at least on GCC 7.3.
Diffstat (limited to 'libavfilter/vf_nlmeans.c')
-rw-r--r--libavfilter/vf_nlmeans.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/libavfilter/vf_nlmeans.c b/libavfilter/vf_nlmeans.c
index e4952e187e..d222d3913e 100644
--- a/libavfilter/vf_nlmeans.c
+++ b/libavfilter/vf_nlmeans.c
@@ -368,7 +368,6 @@ static int nlmeans_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs
int x, y;
NLMeansContext *s = ctx->priv;
const struct thread_data *td = arg;
- const uint8_t *src = td->src;
const int src_linesize = td->src_linesize;
const int process_h = td->endy - td->starty;
const int slice_start = (process_h * jobnr ) / nb_jobs;
@@ -377,14 +376,15 @@ static int nlmeans_slice(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs
const int endy = td->starty + slice_end;
for (y = starty; y < endy; y++) {
+ const uint8_t *src = td->src + y*src_linesize;
+ struct weighted_avg *wa = s->wa + y*s->wa_linesize;
for (x = td->startx; x < td->endx; x++) {
const int patch_diff_sq = get_integral_patch_value(td->ii_start, s->ii_lz_32, x, y, td->p);
if (patch_diff_sq < s->max_meaningful_diff) {
- struct weighted_avg *wa = &s->wa[y*s->wa_linesize + x];
const int weight_lut_idx = patch_diff_sq * s->pdiff_lut_scale;
const double weight = s->weight_lut[weight_lut_idx]; // exp(-patch_diff_sq * s->pdiff_scale)
- wa->total_weight += weight;
- wa->sum += weight * src[y*src_linesize + x];
+ wa[x].total_weight += weight;
+ wa[x].sum += weight * src[x];
}
}
}