mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-08 07:38:30 +00:00
av_picture_crop(): Support simple cases with packed pixels too.
This fixes a regression when linked to old ffmpeg. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
27614b1217
commit
a80f74c584
@ -790,15 +790,23 @@ int av_picture_crop(AVPicture *dst, const AVPicture *src,
|
|||||||
int y_shift;
|
int y_shift;
|
||||||
int x_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;
|
return -1;
|
||||||
|
|
||||||
y_shift = av_pix_fmt_descriptors[pix_fmt].log2_chroma_h;
|
y_shift = av_pix_fmt_descriptors[pix_fmt].log2_chroma_h;
|
||||||
x_shift = av_pix_fmt_descriptors[pix_fmt].log2_chroma_w;
|
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[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[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);
|
dst->data[2] = src->data[2] + ((top_band >> y_shift) * src->linesize[2]) + (left_band >> x_shift);
|
||||||
|
} else{
|
||||||
|
if(top_band % (1<<y_shift) || left_band % (1<<x_shift))
|
||||||
|
return -1;
|
||||||
|
if(left_band) //FIXME add support for this too
|
||||||
|
return -1;
|
||||||
|
dst->data[0] = src->data[0] + (top_band * src->linesize[0]) + left_band;
|
||||||
|
}
|
||||||
|
|
||||||
dst->linesize[0] = src->linesize[0];
|
dst->linesize[0] = src->linesize[0];
|
||||||
dst->linesize[1] = src->linesize[1];
|
dst->linesize[1] = src->linesize[1];
|
||||||
|
Loading…
Reference in New Issue
Block a user