[FFmpeg-devel] [PATCH 2/2] lavfi/lut: simplify nested lut plane stepping.
Wang Bin
wbsecg1 at gmail.com
Thu Apr 18 04:00:33 CEST 2013
2013/4/17 Clément Bœsch <ubitux at gmail.com>
> ---
> libavfilter/vf_lut.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/libavfilter/vf_lut.c b/libavfilter/vf_lut.c
> index be497ac..21309a5 100644
> --- a/libavfilter/vf_lut.c
> +++ b/libavfilter/vf_lut.c
> @@ -286,15 +286,11 @@ static int filter_frame(AVFilterLink *inlink,
> AVFrame *in)
> inrow = inrow0;
> outrow = outrow0;
> for (j = 0; j < w; j++) {
> - outrow[0] = tab[0][inrow[0]];
> - if (lut->step>1) {
> - outrow[1] = tab[1][inrow[1]];
> - if (lut->step>2) {
> - outrow[2] = tab[2][inrow[2]];
> - if (lut->step>3) {
> - outrow[3] = tab[3][inrow[3]];
> - }
> - }
> + switch (lut->step) {
> + case 3: outrow[3] = tab[3][inrow[3]]; // Fall-through
> + case 2: outrow[2] = tab[2][inrow[2]]; // Fall-through
> + case 1: outrow[1] = tab[1][inrow[1]]; // Fall-through
> + default: outrow[0] = tab[0][inrow[0]];
> }
> outrow += lut->step;
> inrow += lut->step;
>
>
I think this patch does not equals to the original code. For example, if
lut->step == 3, the original code will run
outrow[0] = tab[0][inrow[0]];
outrow[1] = tab[1][inrow[1]];
outrow[2] = tab[2][inrow[2]];
but the patch code will only run
outrow[3] = tab[3][inrow[3]];
outrow[0] = tab[0][inrow[0]];
I don't know which code is right, but i'm sure the result is different.
More information about the ffmpeg-devel
mailing list