diff --git a/libavutil/frame.c b/libavutil/frame.c index 24ad0dd224a11b4ff07562904f1152ac52a4e228..7584ae3587336caf8cdd809ff45b1beb6177e709 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);