summaryrefslogtreecommitdiff
path: root/libavcodec/utils.c
diff options
context:
space:
mode:
authorNathan Caldwell <saintdev@gmail.com>2012-10-18 14:47:38 -0600
committerLuca Barbato <lu_zero@gentoo.org>2012-10-21 22:27:58 +0200
commita4aa20fbdbe8a092fa0a2707cd702531865d957f (patch)
treed947ed2ef5c80bc34d1c870bd280f01b9188d69d /libavcodec/utils.c
parent620345f930d1775e06f38e20a8e7748dd919af2c (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.c19
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)