avfilter/lut3d: move the scale calc out of the inner loop.
authorClément Bœsch <u@pkh.me>
Wed, 14 May 2014 05:47:21 +0000 (07:47 +0200)
committerClément Bœsch <u@pkh.me>
Wed, 14 May 2014 05:51:10 +0000 (07:51 +0200)
libavfilter/vf_lut3d.c

index 7b2f83f..7c3a7da 100644 (file)
@@ -216,12 +216,12 @@ static int interp_##nbits##_##name(AVFilterContext *ctx, void *arg, int jobnr, i
     const int slice_end   = (in->height * (jobnr+1)) / nb_jobs;                                     \
     uint8_t       *dstrow = out->data[0] + slice_start * out->linesize[0];                          \
     const uint8_t *srcrow = in ->data[0] + slice_start * in ->linesize[0];                          \
+    const float scale = (1. / ((1<<nbits) - 1)) * (lut3d->lutsize - 1);                             \
                                                                                                     \
     for (y = slice_start; y < slice_end; y++) {                                                     \
         uint##nbits##_t *dst = (uint##nbits##_t *)dstrow;                                           \
         const uint##nbits##_t *src = (const uint##nbits##_t *)srcrow;                               \
         for (x = 0; x < in->width * step; x += step) {                                              \
-            const float scale = (1. / ((1<<nbits) - 1)) * (lut3d->lutsize - 1);                     \
             const struct rgbvec scaled_rgb = {src[x + r] * scale,                                   \
                                               src[x + g] * scale,                                   \
                                               src[x + b] * scale};                                  \