From 9626d0e906f698504efb8652bac143b98d66b088 Mon Sep 17 00:00:00 2001
From: Michael Niedermayer <michaelni@gmx.at>
Date: Tue, 18 Jun 2013 16:39:23 +0200
Subject: [PATCH] avutil/frame: Try to align width to achive linesize[0]
 alignment

This results in more alignment for pixel formats that have "odd" pixel
sizes like RGB24. It makes access through SIMD easier

Works around Issue described in Ticket1031

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
---
 libavutil/frame.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/libavutil/frame.c b/libavutil/frame.c
index 24ad0dd224a..7584ae35873 100644
--- a/libavutil/frame.c
+++ b/libavutil/frame.c
@@ -126,10 +126,14 @@ static int get_video_buffer(AVFrame *frame, int align)
         return ret;
 
     if (!frame->linesize[0]) {
-        ret = av_image_fill_linesizes(frame->linesize, frame->format,
-                                      frame->width);
-        if (ret < 0)
-            return ret;
+        for(i=1; i<=align; i+=i) {
+            ret = av_image_fill_linesizes(frame->linesize, frame->format,
+                                          FFALIGN(frame->width, i));
+            if (ret < 0)
+                return ret;
+            if (!(frame->linesize[0] & (align-1)))
+                break;
+        }
 
         for (i = 0; i < 4 && frame->linesize[i]; i++)
             frame->linesize[i] = FFALIGN(frame->linesize[i], align);
-- 
GitLab