diff options
Diffstat (limited to 'audio')
-rw-r--r-- | audio/decode/ad_lavc.c | 3 | ||||
-rw-r--r-- | audio/filter/af_lavrresample.c | 16 | ||||
-rw-r--r-- | audio/out/ao_alsa.c | 5 |
3 files changed, 12 insertions, 12 deletions
diff --git a/audio/decode/ad_lavc.c b/audio/decode/ad_lavc.c index f02f9213ab..5a2392e05a 100644 --- a/audio/decode/ad_lavc.c +++ b/audio/decode/ad_lavc.c @@ -144,9 +144,6 @@ static int init(struct dec_audio *da, const char *decoder) return 0; } - if (lavc_context->bit_rate != 0) - da->bitrate = lavc_context->bit_rate; - return 1; } diff --git a/audio/filter/af_lavrresample.c b/audio/filter/af_lavrresample.c index 41d5a8bdf4..412846a78e 100644 --- a/audio/filter/af_lavrresample.c +++ b/audio/filter/af_lavrresample.c @@ -318,17 +318,17 @@ static int control(struct af_instance *af, int cmd, void *arg) if (new_rate != s->ctx.in_rate && s->avrctx_ok && af->fmt_out.format) { // Before reconfiguring, drain the audio that is still buffered // in the resampler. - talloc_free(s->pending); - s->pending = talloc_zero(NULL, struct mp_audio); - mp_audio_copy_config(s->pending, &af->fmt_out); - s->pending->samples = get_drain_samples(s); - if (s->pending->samples > 0) { - mp_audio_realloc_min(s->pending, s->pending->samples); - int r = resample_frame(s->avrctx, s->pending, NULL); - s->pending->samples = MPMAX(r, 0); + struct mp_audio *pending = talloc_zero(NULL, struct mp_audio); + mp_audio_copy_config(pending, &af->fmt_out); + pending->samples = get_drain_samples(s); + if (pending->samples > 0) { + mp_audio_realloc_min(pending, pending->samples); + int r = resample_frame(s->avrctx, pending, NULL); + pending->samples = MPMAX(r, 0); } // Reinitialize resampler. configure_lavrr(af, &af->fmt_in, &af->fmt_out); + s->pending = pending; } return AF_OK; } diff --git a/audio/out/ao_alsa.c b/audio/out/ao_alsa.c index f26c4cedb0..f4565da0dc 100644 --- a/audio/out/ao_alsa.c +++ b/audio/out/ao_alsa.c @@ -492,8 +492,11 @@ static int init_device(struct ao *ao) } if (num_channels != ao->channels.num) { - MP_ERR(ao, "Couldn't get requested number of channels.\n"); mp_chmap_from_channels_alsa(&ao->channels, num_channels); + if (!mp_chmap_is_valid(&ao->channels)) + mp_chmap_from_channels(&ao->channels, 2); + MP_ERR(ao, "Couldn't get requested number of channels, fallback to %s.\n", + mp_chmap_to_str(&ao->channels)); } // Some ALSA drivers have broken delay reporting, so disable the ALSA |