From 85e5b866dca776ba259113604c56136c2c8531b3 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Thu, 3 May 2012 18:57:02 -0400 Subject: [PATCH] avplay: properly close/reopen AVAudioResampleContext on channel layout change fixes Bug#280 --- avplay.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/avplay.c b/avplay.c index e18b2e46f2..9bd83f381e 100644 --- a/avplay.c +++ b/avplay.c @@ -2060,15 +2060,17 @@ static int audio_decode_frame(VideoState *is, double *pts_ptr) dec->channel_layout != is->resample_channel_layout; if ((!is->avr && audio_resample) || resample_changed) { + int ret; if (is->avr) avresample_close(is->avr); else if (audio_resample) { - int ret; is->avr = avresample_alloc_context(); if (!is->avr) { fprintf(stderr, "error allocating AVAudioResampleContext\n"); break; } + } + if (audio_resample) { av_opt_set_int(is->avr, "in_channel_layout", dec->channel_layout, 0); av_opt_set_int(is->avr, "in_sample_fmt", dec->sample_fmt, 0); av_opt_set_int(is->avr, "in_sample_rate", dec->sample_rate, 0);