Commit 4e8d6b31 authored by Jean Delvare's avatar Jean Delvare Committed by Michael Niedermayer

lavfi/delogo: remember left and right samples when interpolating

The left and right samples are the same for the whole line, so store
their values and don't recompute them for every iteration of "y".

This simple optimization results in a speed improvement between 15%
and 20% in my tests (depending on the logo geometry.)

Result is obviously the same.
Signed-off-by: 's avatarJean Delvare <khali@linux-fr.org>
Reviewed-by: 's avatarStefano Sabatini <stefasab@gmail.com>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 6fc8c4cc
......@@ -65,6 +65,7 @@ static void apply_delogo(uint8_t *dst, int dst_linesize,
uint8_t *xdst, *xsrc;
uint8_t *topleft, *botleft, *topright;
unsigned int left_sample, right_sample;
int xclipl, xclipr, yclipt, yclipb;
int logo_x1, logo_x2, logo_y1, logo_y2;
......@@ -89,6 +90,13 @@ static void apply_delogo(uint8_t *dst, int dst_linesize,
src += (logo_y1 + 1) * src_linesize;
for (y = logo_y1+1; y < logo_y2-1; y++) {
left_sample = topleft[src_linesize*(y-logo_y1)] +
topleft[src_linesize*(y-logo_y1-1)] +
topleft[src_linesize*(y-logo_y1+1)];
right_sample = topright[src_linesize*(y-logo_y1)] +
topright[src_linesize*(y-logo_y1-1)] +
topright[src_linesize*(y-logo_y1+1)];
for (x = logo_x1+1,
xdst = dst+logo_x1+1,
xsrc = src+logo_x1+1; x < logo_x2-1; x++, xdst++, xsrc++) {
......@@ -100,13 +108,9 @@ static void apply_delogo(uint8_t *dst, int dst_linesize,
weightb = (uint64_t)(x-logo_x1) * (logo_x2-1-x) * (y-logo_y1) * sar.num;
interp =
(topleft[src_linesize*(y-logo_y1)] +
topleft[src_linesize*(y-logo_y1-1)] +
topleft[src_linesize*(y-logo_y1+1)]) * weightl
left_sample * weightl
+
(topright[src_linesize*(y-logo_y1)] +
topright[src_linesize*(y-logo_y1-1)] +
topright[src_linesize*(y-logo_y1+1)]) * weightr
right_sample * weightr
+
(topleft[x-logo_x1] +
topleft[x-logo_x1-1] +
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment