From 4def5d2b64d78a6f15c6c8869c28ece1f823626e Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 18 May 2012 23:02:10 +0200 Subject: swr: add swr_get_delay() to find the exact delay the swresampler introduces. Signed-off-by: Michael Niedermayer --- libswresample/resample.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libswresample/resample.c') diff --git a/libswresample/resample.c b/libswresample/resample.c index 868f3eb949..558401c459 100644 --- a/libswresample/resample.c +++ b/libswresample/resample.c @@ -367,3 +367,18 @@ int swri_multiple_resample(ResampleContext *c, AudioData *dst, int dst_size, Aud return ret; } + +int64_t swr_get_delay(struct SwrContext *s, int64_t base){ + ResampleContext *c = s->resample; + if(c){ + int64_t num = s->in_buffer_count - (c->filter_length-1)/2; + num <<= c->phase_shift; + num -= c->index; + num *= c->src_incr; + num -= c->frac; + + return av_rescale(num, base, s->in_sample_rate*(int64_t)c->src_incr << c->phase_shift); + }else{ + return (s->in_buffer_count*base + (s->in_sample_rate>>1))/ s->in_sample_rate; + } +} -- cgit v1.2.3