diff options
-rw-r--r-- | libavresample/audio_convert.c | 3 | ||||
-rw-r--r-- | libavresample/audio_convert.h | 7 | ||||
-rw-r--r-- | libavresample/utils.c | 9 |
3 files changed, 11 insertions, 8 deletions
diff --git a/libavresample/audio_convert.c b/libavresample/audio_convert.c index e9835c8e8b..dcf8a39b06 100644 --- a/libavresample/audio_convert.c +++ b/libavresample/audio_convert.c @@ -284,9 +284,10 @@ AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, return ac; } -int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in, int len) +int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) { int use_generic = 1; + int len = in->nb_samples; /* determine whether to use the optimized function based on pointer and samples alignment in both the input and output */ diff --git a/libavresample/audio_convert.h b/libavresample/audio_convert.h index 2b8bface7d..bc27223140 100644 --- a/libavresample/audio_convert.h +++ b/libavresample/audio_convert.h @@ -72,13 +72,16 @@ AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, * examined to determine whether to use the generic or optimized conversion * function (when available). * + * The number of samples to convert is determined by in->nb_samples. The output + * buffer must be large enough to handle this many samples. out->nb_samples is + * set by this function before a successful return. + * * @param ac AudioConvert context * @param out output audio data * @param in input audio data - * @param len number of samples to convert * @return 0 on success, negative AVERROR code on failure */ -int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in, int len); +int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in); /* arch-specific initialization functions */ diff --git a/libavresample/utils.c b/libavresample/utils.c index 2d15e37c4b..20b5fb1eea 100644 --- a/libavresample/utils.c +++ b/libavresample/utils.c @@ -313,8 +313,8 @@ int attribute_align_arg avresample_convert(AVAudioResampleContext *avr, if (ret < 0) return ret; av_dlog(avr, "[convert] %s to in_buffer\n", current_buffer->name); - ret = ff_audio_convert(avr->ac_in, avr->in_buffer, current_buffer, - current_buffer->nb_samples); + ret = ff_audio_convert(avr->ac_in, avr->in_buffer, + current_buffer); if (ret < 0) return ret; } else { @@ -381,8 +381,7 @@ int attribute_align_arg avresample_convert(AVAudioResampleContext *avr, if (direct_output && out_samples >= current_buffer->nb_samples) { /* convert directly to output */ av_dlog(avr, "[convert] %s to output\n", current_buffer->name); - ret = ff_audio_convert(avr->ac_out, &output_buffer, current_buffer, - current_buffer->nb_samples); + ret = ff_audio_convert(avr->ac_out, &output_buffer, current_buffer); if (ret < 0) return ret; @@ -395,7 +394,7 @@ int attribute_align_arg avresample_convert(AVAudioResampleContext *avr, return ret; av_dlog(avr, "[convert] %s to out_buffer\n", current_buffer->name); ret = ff_audio_convert(avr->ac_out, avr->out_buffer, - current_buffer, current_buffer->nb_samples); + current_buffer); if (ret < 0) return ret; current_buffer = avr->out_buffer; |