From 2e12c3f36dbbf65822bea82ec6338e95c8d4dffa Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 30 Jan 2010 15:31:31 +0200 Subject: [PATCH] ugly resampler: no need to allocate a buffer when down-sampling --- modules/audio_filter/resampler/ugly.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/audio_filter/resampler/ugly.c b/modules/audio_filter/resampler/ugly.c index fbc0772dd5..e3a33f4788 100644 --- a/modules/audio_filter/resampler/ugly.c +++ b/modules/audio_filter/resampler/ugly.c @@ -90,9 +90,12 @@ static block_t *DoWork( filter_t * p_filter, block_t * p_in_buf ) / p_filter->fmt_in.audio.i_rate; unsigned int i_sample_bytes = i_nb_channels * sizeof(int32_t); - block_t *p_out_buf = block_Alloc( i_out_nb * i_sample_bytes ); - if( !p_out_buf ) - goto out; + if( p_filter->fmt_out.audio.i_rate > p_filter->fmt_in.audio.i_rate ) + { + p_out_buf = block_Alloc( i_out_nb * i_sample_bytes ); + if( !p_out_buf ) + goto out; + } int32_t *p_out = (int32_t*)p_out_buf->p_buffer; const int32_t *p_in = (int32_t*)p_in_buf->p_buffer; @@ -120,7 +123,9 @@ static block_t *DoWork( filter_t * p_filter, block_t * p_in_buf ) p_out_buf->i_pts = p_in_buf->i_pts; p_out_buf->i_length = p_out_buf->i_nb_samples * 1000000 / p_filter->fmt_out.audio.i_rate; + + if( p_in_buf != p_out_buf ) out: - block_Release( p_in_buf ); + block_Release( p_in_buf ); return p_out_buf; } -- 2.39.2