aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@iki.fi>2011-01-07 22:27:26 +0000
committerCarl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at>2011-01-07 22:27:26 +0000
commit060ec0a8294d912f694cf48546f1543805f83a48 (patch)
tree99ce4f4ec8cd7f90b6d6f557b49727af957c1225
parentf2953365d1c1da8c1e586270c6eb2c7437c77a9f (diff)
downloadffmpeg-060ec0a8294d912f694cf48546f1543805f83a48.tar.gz
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
-rw-r--r--doc/APIchanges3
-rw-r--r--libavcodec/avcodec.h22
-rw-r--r--libavcodec/utils.c13
3 files changed, 36 insertions, 2 deletions
diff --git a/doc/APIchanges b/doc/APIchanges
index bf9d11dca7..f1722c7d20 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 7850e1da07..309edae365 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 ce7473587e..c11e4f56d3 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;