From d5c90ff23bdbb961f8f204a0dbaf3e45627f5f91 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 11 Aug 2012 16:09:44 +0200 Subject: [PATCH] lavf: reimplement is_intra_only() by using the AVCodecContext codec descriptor This also changes behavior as the descriptor table is more complete than the switch/case it replaces. As well as considering all non video as intra only Signed-off-by: Michael Niedermayer --- libavformat/utils.c | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 55826bea53..7b45944948 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -874,30 +874,18 @@ static void compute_frame_duration(int *pnum, int *pden, AVStream *st, } static int is_intra_only(AVCodecContext *enc){ - if(enc->codec_type == AVMEDIA_TYPE_AUDIO){ + AVCodecDescriptor *desc; + + if(enc->codec_type != AVMEDIA_TYPE_VIDEO) return 1; - }else if(enc->codec_type == AVMEDIA_TYPE_VIDEO){ - switch(enc->codec_id){ - case AV_CODEC_ID_MJPEG: - case AV_CODEC_ID_MJPEGB: - case AV_CODEC_ID_LJPEG: - case AV_CODEC_ID_PRORES: - case AV_CODEC_ID_RAWVIDEO: - case AV_CODEC_ID_V210: - case AV_CODEC_ID_DVVIDEO: - case AV_CODEC_ID_HUFFYUV: - case AV_CODEC_ID_FFVHUFF: - case AV_CODEC_ID_ASV1: - case AV_CODEC_ID_ASV2: - case AV_CODEC_ID_VCR1: - case AV_CODEC_ID_DNXHD: - case AV_CODEC_ID_JPEG2000: - case AV_CODEC_ID_MDEC: - case AV_CODEC_ID_UTVIDEO: - return 1; - default: break; - } + + desc = av_codec_get_codec_descriptor(enc); + if (!desc) { + desc = avcodec_descriptor_get(enc->codec_id); + av_codec_set_codec_descriptor(enc, desc); } + if (desc) + return !!(desc->props & AV_CODEC_PROP_INTRA_ONLY); return 0; }