From 060ec0a8294d912f694cf48546f1543805f83a48 Mon Sep 17 00:00:00 2001 From: Anssi Hannula Date: Fri, 7 Jan 2011 22:27:26 +0000 Subject: [PATCH] Add av_get_profile_name() to get profile names. Patch by Anssi Hannula, anssi d hannula a iki d fi Originally committed as revision 26259 to svn://svn.ffmpeg.org/ffmpeg/trunk --- doc/APIchanges | 3 +++ libavcodec/avcodec.h | 22 ++++++++++++++++++++-- libavcodec/utils.c | 13 +++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index bf9d11d..f1722c7 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2009-03-08 API changes, most recent first: +2011-01-XX - r26XXX - lavc 52.104.0 - av_get_profile_name() + Add av_get_profile_name to libavcodec/avcodec.h. + 2010-12-27 - r26108 - lavfi 1.71.0 - AV_PERM_NEG_LINESIZES Add AV_PERM_NEG_LINESIZES in avfilter.h. diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 7850e1d..309edae 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -32,8 +32,8 @@ #include "libavutil/cpu.h" #define LIBAVCODEC_VERSION_MAJOR 52 -#define LIBAVCODEC_VERSION_MINOR 103 -#define LIBAVCODEC_VERSION_MICRO 1 +#define LIBAVCODEC_VERSION_MINOR 104 +#define LIBAVCODEC_VERSION_MICRO 0 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ @@ -2794,6 +2794,14 @@ typedef struct AVCodecContext { } AVCodecContext; /** + * AVProfile. + */ +typedef struct AVProfile { + int profile; + const char *name; ///< short name for the profile +} AVProfile; + +/** * AVCodec. */ typedef struct AVCodec { @@ -2834,6 +2842,7 @@ typedef struct AVCodec { const int64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0 uint8_t max_lowres; ///< maximum value for lowres supported by the decoder AVClass *priv_class; ///< AVClass for the private context + const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} } AVCodec; /** @@ -3394,6 +3403,15 @@ AVCodec *avcodec_find_decoder_by_name(const char *name); void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); /** + * Return a name for the specified profile, if available. + * + * @param codec the codec that is searched for the given profile + * @param profile the profile value for which a name is requested + * @return A name for the profile if found, NULL otherwise. + */ +const char *av_get_profile_name(const AVCodec *codec, int profile); + +/** * Set the fields of the given AVCodecContext to default values. * * @param s The AVCodecContext of which the fields should be set to default values. diff --git a/libavcodec/utils.c b/libavcodec/utils.c index ce74735..c11e4f5 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -966,6 +966,19 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) } } +const char *av_get_profile_name(const AVCodec *codec, int profile) +{ + const AVProfile *p; + if (profile == FF_PROFILE_UNKNOWN || !codec->profiles) + return NULL; + + for (p = codec->profiles; p->profile != FF_PROFILE_UNKNOWN; p++) + if (p->profile == profile) + return p->name; + + return NULL; +} + unsigned avcodec_version( void ) { return LIBAVCODEC_VERSION_INT; -- 2.7.4