diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-11-25 20:23:32 +0100 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-11-25 23:23:24 +0100 |
commit | b473c9937ebe9aafef9d2e07f080fb12ecc53ef4 (patch) | |
tree | 98ff7ca2cd36d57b928ddc0ff45d3801494b9e8b | |
parent | 329b8f85b0489fad819c52866dcc66170eef5d32 (diff) | |
download | ffmpeg-b473c9937ebe9aafef9d2e07f080fb12ecc53ef4.tar.gz |
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.h | 4 | ||||
-rw-r--r-- | libavutil/samplefmt.c | 8 | ||||
-rw-r--r-- | libavutil/samplefmt.h | 7 | ||||
-rw-r--r-- | libavutil/version.h | 3 |
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 /** * @} |