From f284e2a58a133e96d74d4da7ae91e459d4bfa81b Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Sat, 22 Feb 2014 21:36:30 +0100 Subject: [PATCH] swresample: factorize clear_context() out Signed-off-by: Michael Niedermayer --- libswresample/swresample.c | 46 +++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/libswresample/swresample.c b/libswresample/swresample.c index c1bee00672..bc1853f23f 100644 --- a/libswresample/swresample.c +++ b/libswresample/swresample.c @@ -218,33 +218,12 @@ static void free_temp(AudioData *a){ memset(a, 0, sizeof(*a)); } -av_cold void swr_free(SwrContext **ss){ - SwrContext *s= *ss; - if(s){ - free_temp(&s->postin); - free_temp(&s->midbuf); - free_temp(&s->preout); - free_temp(&s->in_buffer); - free_temp(&s->silence); - free_temp(&s->drop_temp); - free_temp(&s->dither.noise); - free_temp(&s->dither.temp); - swri_audio_convert_free(&s-> in_convert); - swri_audio_convert_free(&s->out_convert); - swri_audio_convert_free(&s->full_convert); - if (s->resampler) - s->resampler->free(&s->resample); - swri_rematrix_free(s); - } - - av_freep(ss); -} - -av_cold int swr_init(struct SwrContext *s){ - int ret; +static void clear_context(SwrContext *s){ s->in_buffer_index= 0; s->in_buffer_count= 0; s->resample_in_constraint= 0; + memset(s->in.ch, 0, sizeof(s->in.ch)); + memset(s->out.ch, 0, sizeof(s->out.ch)); free_temp(&s->postin); free_temp(&s->midbuf); free_temp(&s->preout); @@ -253,14 +232,29 @@ av_cold int swr_init(struct SwrContext *s){ free_temp(&s->drop_temp); free_temp(&s->dither.noise); free_temp(&s->dither.temp); - memset(s->in.ch, 0, sizeof(s->in.ch)); - memset(s->out.ch, 0, sizeof(s->out.ch)); swri_audio_convert_free(&s-> in_convert); swri_audio_convert_free(&s->out_convert); swri_audio_convert_free(&s->full_convert); swri_rematrix_free(s); s->flushed = 0; +} + +av_cold void swr_free(SwrContext **ss){ + SwrContext *s= *ss; + if(s){ + clear_context(s); + if (s->resampler) + s->resampler->free(&s->resample); + } + + av_freep(ss); +} + +av_cold int swr_init(struct SwrContext *s){ + int ret; + + clear_context(s); if(s-> in_sample_fmt >= AV_SAMPLE_FMT_NB){ av_log(s, AV_LOG_ERROR, "Requested input sample format %d is invalid\n", s->in_sample_fmt);