[FFmpeg-cvslog] lavu/samplefmt: add av_samples_alloc_array_and_pointers()

Stefano Sabatini git at videolan.org
Sun Mar 31 18:06:20 CEST 2013


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Thu Mar 21 11:48:28 2013 +0100| [5c73645d91e6a91c849e08e0fc58bdeab9b7b76f] | committer: Stefano Sabatini

lavu/samplefmt: add av_samples_alloc_array_and_pointers()

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5c73645d91e6a91c849e08e0fc58bdeab9b7b76f
---

 doc/APIchanges        |    3 +++
 libavutil/samplefmt.c |   15 +++++++++++++++
 libavutil/samplefmt.h |   13 +++++++++++++
 libavutil/version.h   |    2 +-
 4 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index bc4d4fe..01f7825 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -15,6 +15,9 @@ libavutil:     2012-10-22
 
 API changes, most recent first:
 
+2013-03-30 - xxxxxxx - lavu 52.24.100 - samplefmt.h
+  Add av_samples_alloc_array_and_samples().
+
 2013-03-29 - xxxxxxx - lavf 55.1.100 - avformat.h
   Add av_guess_frame_rate()
 
diff --git a/libavutil/samplefmt.c b/libavutil/samplefmt.c
index 6f762df..4450097 100644
--- a/libavutil/samplefmt.c
+++ b/libavutil/samplefmt.c
@@ -207,6 +207,21 @@ int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
 #endif
 }
 
+int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels,
+                                       int nb_samples, enum AVSampleFormat sample_fmt, int align)
+{
+    int ret, nb_planes = av_sample_fmt_is_planar(sample_fmt) ? nb_channels : 1;
+
+    *audio_data = av_calloc(nb_planes, sizeof(*audio_data));
+    if (!*audio_data)
+        return AVERROR(ENOMEM);
+    ret = av_samples_alloc(*audio_data, linesize, nb_channels,
+                           nb_samples, sample_fmt, align);
+    if (ret < 0)
+        av_freep(audio_data);
+    return ret;
+}
+
 int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
                     int src_offset, int nb_samples, int nb_channels,
                     enum AVSampleFormat sample_fmt)
diff --git a/libavutil/samplefmt.h b/libavutil/samplefmt.h
index 529711f..db17d43 100644
--- a/libavutil/samplefmt.h
+++ b/libavutil/samplefmt.h
@@ -209,11 +209,24 @@ int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
  * @return                 >=0 on success or a negative error code on failure
  * @todo return the size of the allocated buffer in case of success at the next bump
  * @see av_samples_fill_arrays()
+ * @see av_samples_alloc_array_and_samples()
  */
 int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
                      int nb_samples, enum AVSampleFormat sample_fmt, int align);
 
 /**
+ * Allocate a data pointers array, samples buffer for nb_samples
+ * samples, and fill data pointers and linesize accordingly.
+ *
+ * This is the same as av_samples_alloc(), but also allocates the data
+ * pointers array.
+ *
+ * @see av_samples_alloc()
+ */
+int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels,
+                                       int nb_samples, enum AVSampleFormat sample_fmt, int align);
+
+/**
  * Copy samples from src to dst.
  *
  * @param dst destination array of pointers to data planes
diff --git a/libavutil/version.h b/libavutil/version.h
index 5bb3d07..af2540d 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -75,7 +75,7 @@
  */
 
 #define LIBAVUTIL_VERSION_MAJOR  52
-#define LIBAVUTIL_VERSION_MINOR  23
+#define LIBAVUTIL_VERSION_MINOR  24
 #define LIBAVUTIL_VERSION_MICRO 100
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \



More information about the ffmpeg-cvslog mailing list