From a80f74c584296971c6e6b7e0c10d9b5ec0440857 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sun, 15 May 2011 22:37:02 +0200 Subject: [PATCH] av_picture_crop(): Support simple cases with packed pixels too. This fixes a regression when linked to old ffmpeg. Signed-off-by: Michael Niedermayer --- libavcodec/imgconvert.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c index 59630dfb09..a86d2bd027 100644 --- a/libavcodec/imgconvert.c +++ b/libavcodec/imgconvert.c @@ -790,15 +790,23 @@ int av_picture_crop(AVPicture *dst, const AVPicture *src, int y_shift; int x_shift; - if (pix_fmt < 0 || pix_fmt >= PIX_FMT_NB || !is_yuv_planar(&pix_fmt_info[pix_fmt])) + if (pix_fmt < 0 || pix_fmt >= PIX_FMT_NB) return -1; y_shift = av_pix_fmt_descriptors[pix_fmt].log2_chroma_h; x_shift = av_pix_fmt_descriptors[pix_fmt].log2_chroma_w; + if (is_yuv_planar(&pix_fmt_info[pix_fmt])) { dst->data[0] = src->data[0] + (top_band * src->linesize[0]) + left_band; dst->data[1] = src->data[1] + ((top_band >> y_shift) * src->linesize[1]) + (left_band >> x_shift); dst->data[2] = src->data[2] + ((top_band >> y_shift) * src->linesize[2]) + (left_band >> x_shift); + } else{ + if(top_band % (1<data[0] = src->data[0] + (top_band * src->linesize[0]) + left_band; + } dst->linesize[0] = src->linesize[0]; dst->linesize[1] = src->linesize[1];