You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	avfilter/af_aresample: Calculate output buffer size more precisely.
Fixes accumulation of data in case of significant silence injections Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -170,11 +170,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamplesref) | |||||||
| { | { | ||||||
|     AResampleContext *aresample = inlink->dst->priv; |     AResampleContext *aresample = inlink->dst->priv; | ||||||
|     const int n_in  = insamplesref->nb_samples; |     const int n_in  = insamplesref->nb_samples; | ||||||
|     int n_out       = n_in * aresample->ratio * 2 + 256; |     int64_t delay; | ||||||
|  |     int n_out       = n_in * aresample->ratio + 32; | ||||||
|     AVFilterLink *const outlink = inlink->dst->outputs[0]; |     AVFilterLink *const outlink = inlink->dst->outputs[0]; | ||||||
|     AVFrame *outsamplesref = ff_get_audio_buffer(outlink, n_out); |     AVFrame *outsamplesref; | ||||||
|     int ret; |     int ret; | ||||||
|  |  | ||||||
|  |     delay = swr_get_delay(aresample->swr, outlink->sample_rate); | ||||||
|  |     if (delay > 0) | ||||||
|  |         n_out += delay; | ||||||
|  |  | ||||||
|  |     outsamplesref = ff_get_audio_buffer(outlink, n_out); | ||||||
|  |  | ||||||
|     if(!outsamplesref) |     if(!outsamplesref) | ||||||
|         return AVERROR(ENOMEM); |         return AVERROR(ENOMEM); | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user