From 84626b364babc27c5a3db454ebf6a02aeaa186fe Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 8 Jun 2011 08:27:53 +0200 Subject: lavc: add support for codec-specific defaults. --- libavcodec/avcodec.h | 7 +++++++ libavcodec/internal.h | 5 +++++ libavcodec/options.c | 11 +++++++++++ 3 files changed, 23 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 3f01680..ba6342a 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2860,6 +2860,8 @@ typedef struct AVProfile { const char *name; ///< short name for the profile } AVProfile; +typedef struct AVCodecDefault AVCodecDefault; + /** * AVCodec. */ @@ -2922,6 +2924,11 @@ typedef struct AVCodec { */ int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src); /** @} */ + + /** + * Private codec-specific defaults. + */ + const AVCodecDefault *defaults; } AVCodec; /** diff --git a/libavcodec/internal.h b/libavcodec/internal.h index fe853ab..9a444fc 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -27,6 +27,11 @@ #include #include "avcodec.h" +struct AVCodecDefault { + const uint8_t *key; + const uint8_t *value; +}; + /** * Determine whether pix_fmt is a hardware accelerated format. */ diff --git a/libavcodec/options.c b/libavcodec/options.c index 1e7fe52..4869046 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -25,6 +25,8 @@ */ #include "avcodec.h" +#include "internal.h" +#include "libavutil/avassert.h" #include "libavutil/opt.h" #include /* FLT_MIN, FLT_MAX */ @@ -524,6 +526,15 @@ int avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec){ av_opt_set_defaults(s->priv_data); } } + if (codec && codec->defaults) { + int ret; + AVCodecDefault *d = codec->defaults; + while (d->key) { + ret = av_set_string3(s, d->key, d->value, 0, NULL); + av_assert0(ret >= 0); + d++; + } + } return 0; } -- cgit v1.1