summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-08-11 16:09:44 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-08-12 14:51:22 +0200
commitd5c90ff23bdbb961f8f204a0dbaf3e45627f5f91 (patch)
tree0805061bb10452484c1d3e550ee9fa3e1563df1b /libavformat
parentda74e883f14469a1aad7c07c9aa7629a554bbceb (diff)
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 <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/utils.c32
1 files 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;
}