[FFmpeg-cvslog] avutil/frame: Try to align width to achive linesize[0] alignment
Michael Niedermayer
git at videolan.org
Tue Jun 18 16:58:07 CEST 2013
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Jun 18 16:39:23 2013 +0200| [9626d0e906f698504efb8652bac143b98d66b088] | committer: Michael Niedermayer
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 at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9626d0e906f698504efb8652bac143b98d66b088
---
libavutil/frame.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/libavutil/frame.c b/libavutil/frame.c
index 24ad0dd..7584ae3 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);
More information about the ffmpeg-cvslog
mailing list