diff options
author | Nathan Caldwell <saintdev@gmail.com> | 2012-10-19 00:47:38 +0400 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2012-10-22 00:27:58 +0400 |
commit | a4aa20fbdbe8a092fa0a2707cd702531865d957f (patch) | |
tree | d947ed2ef5c80bc34d1c870bd280f01b9188d69d /libavcodec/utils.c | |
parent | 620345f930d1775e06f38e20a8e7748dd919af2c (diff) |
avcodec: prefer decoders without CODEC_CAP_EXPERIMENTAL
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r-- | libavcodec/utils.c | 19 |
1 files 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) |