From b2d45654220503224aa94e78cdff19ec624e9342 Mon Sep 17 00:00:00 2001 From: Luca Barbato Date: Wed, 30 Apr 2014 19:56:05 +0200 Subject: avresample: Add avresample_get_out_samples Utility function to get the upper bound on the number of samples the resampler would output. --- libavresample/utils.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'libavresample/utils.c') diff --git a/libavresample/utils.c b/libavresample/utils.c index 35bee42b50..8c5a9e2ec2 100644 --- a/libavresample/utils.c +++ b/libavresample/utils.c @@ -622,6 +622,25 @@ int avresample_available(AVAudioResampleContext *avr) return av_audio_fifo_size(avr->out_fifo); } +int avresample_get_out_samples(AVAudioResampleContext *avr, int in_nb_samples) +{ + int64_t samples = avresample_get_delay(avr) + (int64_t)in_nb_samples; + + if (avr->resample_needed) { + samples = av_rescale_rnd(samples, + avr->out_sample_rate, + avr->in_sample_rate, + AV_ROUND_UP); + } + + samples += avresample_available(avr); + + if (samples > INT_MAX) + return AVERROR(EINVAL); + + return samples; +} + int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_samples) { if (!output) -- cgit v1.2.3