]> git.sesse.net Git - ffmpeg/commitdiff
lavfi/kerndeint: use aligned linesizes for the temporary buffer.
authorClément Bœsch <ubitux@gmail.com>
Sun, 6 Jan 2013 18:34:16 +0000 (19:34 +0100)
committerStefano Sabatini <stefasab@gmail.com>
Fri, 15 Feb 2013 23:08:31 +0000 (00:08 +0100)
This improves the performances just enough to match mp=kerndeint.

Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
libavfilter/vf_kerndeint.c

index 12eb969b22bbcfd1a771de191f618bda19941a08..8449d00e621c901e6e0a6cee18bbf9361b9d62cb 100644 (file)
@@ -40,8 +40,9 @@ typedef struct {
     int           frame; ///< frame count, starting from 0
     int           thresh, map, order, sharp, twoway;
     int           vsub;
-    uint8_t       *tmp_data [4];  ///< temporary plane data buffer
-    int           tmp_bwidth[4];  ///< temporary plane byte width
+    uint8_t       *tmp_data    [4];  ///< temporary plane data buffer
+    int            tmp_linesize[4];  ///< temporary plane byte linesize
+    int            tmp_bwidth  [4];  ///< temporary plane byte width
 } KerndeintContext;
 
 #define OFFSET(x) offsetof(KerndeintContext, x)
@@ -101,11 +102,15 @@ static int config_props(AVFilterLink *inlink)
 
     kerndeint->vsub = desc->log2_chroma_h;
 
-    ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_bwidth,
-                          inlink->w, inlink->h, inlink->format, 1);
+    ret = av_image_alloc(kerndeint->tmp_data, kerndeint->tmp_linesize,
+                         inlink->w, inlink->h, inlink->format, 16);
     if (ret < 0)
         return ret;
     memset(kerndeint->tmp_data[0], 0, ret);
+
+    if ((ret = av_image_fill_linesizes(kerndeint->tmp_bwidth, inlink->format, inlink->w)) < 0)
+        return ret;
+
     return 0;
 }
 
@@ -161,7 +166,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic)
 
         srcp = srcp_saved = inpic->data[plane];
         src_linesize      = inpic->linesize[plane];
-        psrc_linesize     = kerndeint->tmp_bwidth[plane];
+        psrc_linesize     = kerndeint->tmp_linesize[plane];
         dstp = dstp_saved = outpic->data[plane];
         dst_linesize      = outpic->linesize[plane];
         srcp              = srcp_saved + (1 - order) * src_linesize;