From 9626d0e906f698504efb8652bac143b98d66b088 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer 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 --- libavutil/frame.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 24ad0dd224..7584ae3587 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);