[FFmpeg-cvslog] vf_lut: fix draw_slice() in case of non packed image data for packed RGB

Stefano Sabatini git at videolan.org
Mon Jun 27 11:51:13 CEST 2011


ffmpeg | branch: master | Stefano Sabatini <stefano.sabatini-lala at poste.it> | Sun Jun 26 18:49:00 2011 +0200| [cdeb803e2fe1239e0217186c7441c94adb0d9895] | committer: Stefano Sabatini

vf_lut: fix draw_slice() in case of non packed image data for packed RGB

The previous code was erroneously assuming that the linesize was
equivalent to width*pixel_step, which is not always true.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cdeb803e2fe1239e0217186c7441c94adb0d9895
---

 libavfilter/vf_lut.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/libavfilter/vf_lut.c b/libavfilter/vf_lut.c
index c457972..fdab694 100644
--- a/libavfilter/vf_lut.c
+++ b/libavfilter/vf_lut.c
@@ -306,21 +306,25 @@ static void draw_slice(AVFilterLink *inlink, int y, int h, int slice_dir)
     AVFilterLink *outlink = ctx->outputs[0];
     AVFilterBufferRef *inpic  = inlink ->cur_buf;
     AVFilterBufferRef *outpic = outlink->out_buf;
-    uint8_t *inrow, *outrow;
+    uint8_t *inrow, *outrow, *inrow0, *outrow0;
     int i, j, k, plane;
 
     if (lut->is_rgb) {
         /* packed */
-        inrow  = inpic ->data[0] + y * inpic ->linesize[0];
-        outrow = outpic->data[0] + y * outpic->linesize[0];
+        inrow0  = inpic ->data[0] + y * inpic ->linesize[0];
+        outrow0 = outpic->data[0] + y * outpic->linesize[0];
 
         for (i = 0; i < h; i ++) {
+            inrow  = inrow0;
+            outrow = outrow0;
             for (j = 0; j < inlink->w; j++) {
                 for (k = 0; k < lut->step; k++)
                     outrow[k] = lut->lut[lut->rgba_map[k]][inrow[k]];
                 outrow += lut->step;
                 inrow  += lut->step;
             }
+            inrow0  += inpic ->linesize[0];
+            outrow0 += outpic->linesize[0];
         }
     } else {
         /* planar */



More information about the ffmpeg-cvslog mailing list