Commit b473c993 authored by Stefano Sabatini's avatar Stefano Sabatini

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.
parent 329b8f85
......@@ -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,
......
......@@ -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,
......
......@@ -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,
......
......@@ -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
/**
* @}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment