[FFmpeg-devel] [PATCH 1/2] lavc: introduce av_get_pcm_codec.
Nicolas George
nicolas.george at normalesup.org
Thu Feb 16 15:01:41 CET 2012
Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
---
doc/APIchanges | 3 +++
libavcodec/avcodec.h | 8 ++++++++
libavcodec/utils.c | 21 +++++++++++++++++++++
libavcodec/version.h | 2 +-
4 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/doc/APIchanges b/doc/APIchanges
index 87e1aab..985175a 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,6 +13,9 @@ libavutil: 2011-04-18
API changes, most recent first:
+2012-02-16 - xxxxxxx - lavc 54.4.100
+ Add av_get_pcm_codec() function.
+
2012-02-09 - xxxxxxx - lavu 51.39.100
Add a new installed header libavutil/timestamp.h with timestamp
utilities.
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index c9e1e1d..1bb14eb 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -4055,6 +4055,14 @@ void avcodec_default_free_buffers(AVCodecContext *s);
*/
int av_get_bits_per_sample(enum CodecID codec_id);
+/**
+ * Return the PCM codec associated with a sample format.
+ * @param be endianness, 0 for little, 1 for big,
+ * -1 (or anything else) for native
+ * @return CODEC_ID_PCM_* or CODEC_ID_NONE
+ */
+enum CodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be);
+
/* frame parsing */
typedef struct AVCodecParserContext {
void *priv_data;
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index de1274c..a5a1c2d 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1900,6 +1900,27 @@ int av_get_bits_per_sample(enum CodecID codec_id){
}
}
+enum CodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be)
+{
+ static const enum CodecID map[AV_SAMPLE_FMT_NB][2] = {
+ [AV_SAMPLE_FMT_U8 ] = { CODEC_ID_PCM_U8, CODEC_ID_PCM_U8 },
+ [AV_SAMPLE_FMT_S16 ] = { CODEC_ID_PCM_S16LE, CODEC_ID_PCM_S16BE },
+ [AV_SAMPLE_FMT_S32 ] = { CODEC_ID_PCM_S32LE, CODEC_ID_PCM_S32BE },
+ [AV_SAMPLE_FMT_FLT ] = { CODEC_ID_PCM_F32LE, CODEC_ID_PCM_F32BE },
+ [AV_SAMPLE_FMT_DBL ] = { CODEC_ID_PCM_F64LE, CODEC_ID_PCM_F64BE },
+ [AV_SAMPLE_FMT_U8P ] = { CODEC_ID_PCM_U8, CODEC_ID_PCM_U8 },
+ [AV_SAMPLE_FMT_S16P] = { CODEC_ID_PCM_S16LE, CODEC_ID_PCM_S16BE },
+ [AV_SAMPLE_FMT_S32P] = { CODEC_ID_PCM_S32LE, CODEC_ID_PCM_S32BE },
+ [AV_SAMPLE_FMT_FLTP] = { CODEC_ID_PCM_F32LE, CODEC_ID_PCM_F32BE },
+ [AV_SAMPLE_FMT_DBLP] = { CODEC_ID_PCM_F64LE, CODEC_ID_PCM_F64BE },
+ };
+ if (fmt < 0 || fmt >= AV_SAMPLE_FMT_NB)
+ return CODEC_ID_NONE;
+ if (be < 0 || be > 1)
+ be = AV_NE(1, 0);
+ return map[fmt][be];
+}
+
#if !HAVE_THREADS
int ff_thread_init(AVCodecContext *s){
return -1;
diff --git a/libavcodec/version.h b/libavcodec/version.h
index 7694cb7..ca0efb4 100644
--- a/libavcodec/version.h
+++ b/libavcodec/version.h
@@ -21,7 +21,7 @@
#define AVCODEC_VERSION_H
#define LIBAVCODEC_VERSION_MAJOR 54
-#define LIBAVCODEC_VERSION_MINOR 3
+#define LIBAVCODEC_VERSION_MINOR 4
#define LIBAVCODEC_VERSION_MICRO 100
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
--
1.7.9
More information about the ffmpeg-devel
mailing list