diff --git a/libavcodec/utils.c b/libavcodec/utils.c index e46e907c3a..887f6b143b 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -757,11 +757,11 @@ do { \ if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) { const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); - if (!desc) { + planes = av_pix_fmt_count_planes(frame->format); + if (!desc || planes <= 0) { ret = AVERROR(EINVAL); goto fail; } - planes = (desc->flags & PIX_FMT_PLANAR) ? desc->nb_components : 1; for (i = 0; i < planes; i++) { int v_shift = (i == 1 || i == 2) ? desc->log2_chroma_h : 0; diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index 1d4501a93d..cc650ff4f8 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -234,11 +234,11 @@ do { \ if (ctx->outputs[0]->type == AVMEDIA_TYPE_VIDEO) { const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(frame->format); - if (!desc) { + planes = av_pix_fmt_count_planes(frame->format); + if (!desc || planes <= 0) { ret = AVERROR(EINVAL); goto fail; } - planes = (desc->flags & PIX_FMT_PLANAR) ? desc->nb_components : 1; for (i = 0; i < planes; i++) { int v_shift = (i == 1 || i == 2) ? desc->log2_chroma_h : 0;