Fixes assertion failure with imgsrc001-lzma.tiff
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -490,7 +490,9 @@ static int tiff_unpack_strip(TiffContext *s, AVFrame *p, uint8_t *dst, int strid |
490 | 490 |
const uint8_t *ssrc = src; |
491 | 491 |
int width = ((s->width * s->bpp) + 7) >> 3; |
492 | 492 |
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(p->format); |
493 |
- int is_yuv = !(desc->flags & AV_PIX_FMT_FLAG_RGB) && desc->nb_components >= 2; |
|
493 |
+ int is_yuv = !(desc->flags & AV_PIX_FMT_FLAG_RGB) && |
|
494 |
+ (desc->flags & AV_PIX_FMT_FLAG_PLANAR) && |
|
495 |
+ desc->nb_components >= 3; |
|
494 | 496 |
|
495 | 497 |
if (s->planar) |
496 | 498 |
width /= s->bppcount; |
... | ... |
@@ -723,7 +725,9 @@ static int init_image(TiffContext *s, ThreadFrame *frame) |
723 | 723 |
|
724 | 724 |
if (s->photometric == TIFF_PHOTOMETRIC_YCBCR) { |
725 | 725 |
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(s->avctx->pix_fmt); |
726 |
- if((desc->flags & AV_PIX_FMT_FLAG_RGB) || desc->nb_components < 3) { |
|
726 |
+ if((desc->flags & AV_PIX_FMT_FLAG_RGB) || |
|
727 |
+ !(desc->flags & AV_PIX_FMT_FLAG_PLANAR) || |
|
728 |
+ desc->nb_components < 3) { |
|
727 | 729 |
av_log(s->avctx, AV_LOG_ERROR, "Unsupported YCbCr variant\n"); |
728 | 730 |
return AVERROR_INVALIDDATA; |
729 | 731 |
} |