avfilter/lut3d: move the scale calc out of the inner loop.

pull/68/head
Clément Bœsch 11 years ago
parent 6ab37221c8
commit bc2e39c4cc
  1. 2
      libavfilter/vf_lut3d.c

@ -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; \ const int slice_end = (in->height * (jobnr+1)) / nb_jobs; \
uint8_t *dstrow = out->data[0] + slice_start * out->linesize[0]; \ uint8_t *dstrow = out->data[0] + slice_start * out->linesize[0]; \
const uint8_t *srcrow = in ->data[0] + slice_start * in ->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++) { \ for (y = slice_start; y < slice_end; y++) { \
uint##nbits##_t *dst = (uint##nbits##_t *)dstrow; \ uint##nbits##_t *dst = (uint##nbits##_t *)dstrow; \
const uint##nbits##_t *src = (const uint##nbits##_t *)srcrow; \ const uint##nbits##_t *src = (const uint##nbits##_t *)srcrow; \
for (x = 0; x < in->width * step; x += step) { \ 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, \ const struct rgbvec scaled_rgb = {src[x + r] * scale, \
src[x + g] * scale, \ src[x + g] * scale, \
src[x + b] * scale}; \ src[x + b] * scale}; \

Loading…
Cancel
Save