From a4aa20fbdbe8a092fa0a2707cd702531865d957f Mon Sep 17 00:00:00 2001 From: Nathan Caldwell Date: Thu, 18 Oct 2012 14:47:38 -0600 Subject: [PATCH] avcodec: prefer decoders without CODEC_CAP_EXPERIMENTAL Signed-off-by: Luca Barbato --- libavcodec/utils.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 836d95388d..cbe527e5b3 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -1490,12 +1490,13 @@ av_cold int avcodec_close(AVCodecContext *avctx) return 0; } -AVCodec *avcodec_find_encoder(enum AVCodecID id) +static AVCodec *find_encdec(enum AVCodecID id, int encoder) { AVCodec *p, *experimental = NULL; p = first_avcodec; while (p) { - if (av_codec_is_encoder(p) && p->id == id) { + if ((encoder ? av_codec_is_encoder(p) : av_codec_is_decoder(p)) && + p->id == id) { if (p->capabilities & CODEC_CAP_EXPERIMENTAL && !experimental) { experimental = p; } else @@ -1506,6 +1507,11 @@ AVCodec *avcodec_find_encoder(enum AVCodecID id) return experimental; } +AVCodec *avcodec_find_encoder(enum AVCodecID id) +{ + return find_encdec(id, 1); +} + AVCodec *avcodec_find_encoder_by_name(const char *name) { AVCodec *p; @@ -1522,14 +1528,7 @@ AVCodec *avcodec_find_encoder_by_name(const char *name) AVCodec *avcodec_find_decoder(enum AVCodecID id) { - AVCodec *p; - p = first_avcodec; - while (p) { - if (av_codec_is_decoder(p) && p->id == id) - return p; - p = p->next; - } - return NULL; + return find_encdec(id, 0); } AVCodec *avcodec_find_decoder_by_name(const char *name)