diff options
author | Anton Khirnov <anton@khirnov.net> | 2013-03-16 22:36:56 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-03-19 11:12:17 +0100 |
commit | c977039e585bfff28ecc037ef827c6c3d1ed88aa (patch) | |
tree | 74aef763803811bb899c9cd856bbdb8da8476978 /libavcodec/utils.c | |
parent | 2c328a907978b61949fd20f7c991803174337855 (diff) | |
download | ffmpeg-c977039e585bfff28ecc037ef827c6c3d1ed88aa.tar.gz |
lavc, lavfi: fix counting number of planes in AVBufferRef wrappers
Number of planes is not always equal to the number of components even
for formats marked with PIX_FMT_PLANAR -- e.g. NV12 has three components
in two planes.
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r-- | libavcodec/utils.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 4d57865629..e18f42d99a 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -660,11 +660,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; |