summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefano Sabatini <stefasab@gmail.com>2012-11-25 20:23:32 +0100
committerStefano Sabatini <stefasab@gmail.com>2012-11-25 23:23:24 +0100
commitb473c9937ebe9aafef9d2e07f080fb12ecc53ef4 (patch)
tree98ff7ca2cd36d57b928ddc0ff45d3801494b9e8b
parent329b8f85b0489fad819c52866dcc66170eef5d32 (diff)
lavu/samplefmt: return the size of the allocated samples buffer at the next bump
Make the functions av_samples_fill_arrays, av_samples_alloc, and avcodec_fill_audio_frame return a buffer size rather than 0 in case of success. This will be enabled at the next libavutil major bump, in order to preserve backward compatibility. Returning the size allows to simplify the code, avoiding a few function calls.
-rw-r--r--libavcodec/avcodec.h4
-rw-r--r--libavutil/samplefmt.c8
-rw-r--r--libavutil/samplefmt.h7
-rw-r--r--libavutil/version.h3
4 files changed, 19 insertions, 3 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index d5fd38768c..5ebad92604 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -4780,7 +4780,9 @@ int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2,
* @param buf buffer to use for frame data
* @param buf_size size of buffer
* @param align plane size sample alignment (0 = default)
- * @return 0 on success, negative error code on failure
+ * @return >=0 on success, negative error code on failure
+ * @todo return the size of the allocated frame size in case of
+ * success, at the next libavutil bump
*/
int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels,
enum AVSampleFormat sample_fmt, const uint8_t *buf,
diff --git a/libavutil/samplefmt.c b/libavutil/samplefmt.c
index 96cc5fb24c..6f762df9b4 100644
--- a/libavutil/samplefmt.c
+++ b/libavutil/samplefmt.c
@@ -171,7 +171,11 @@ int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
if (linesize)
*linesize = line_size;
+#if FF_API_SAMPLES_UTILS_RETURN_ZERO
return 0;
+#else
+ return buf_size;
+#endif
}
int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
@@ -196,7 +200,11 @@ int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
av_samples_set_silence(audio_data, 0, nb_samples, nb_channels, sample_fmt);
+#if FF_API_SAMPLES_UTILS_RETURN_ZERO
return 0;
+#else
+ return size;
+#endif
}
int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
diff --git a/libavutil/samplefmt.h b/libavutil/samplefmt.h
index 17300d1e95..e222ba2ad9 100644
--- a/libavutil/samplefmt.h
+++ b/libavutil/samplefmt.h
@@ -183,7 +183,9 @@ int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples,
* @param nb_samples the number of samples in a single channel
* @param sample_fmt the sample format
* @param align buffer size alignment (0 = default, 1 = no alignment)
- * @return 0 on success or a negative error code on failure
+ * @return >=0 on success or a negative error code on failure
+ * @todo return minimum size in bytes required for the buffer in case
+ * of success at the next bump
*/
int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
const uint8_t *buf,
@@ -204,7 +206,8 @@ int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
* @param nb_channels number of audio channels
* @param nb_samples number of samples per channel
* @param align buffer size alignment (0 = default, 1 = no alignment)
- * @return 0 on success or a negative error code on failure
+ * @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()
*/
int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
diff --git a/libavutil/version.h b/libavutil/version.h
index 8b9c813038..af60f71986 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -126,6 +126,9 @@
#ifndef FF_API_CPU_FLAG_MMX2
#define FF_API_CPU_FLAG_MMX2 (LIBAVUTIL_VERSION_MAJOR < 53)
#endif
+#ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO
+#define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53)
+#endif
/**
* @}