diff options
-rw-r--r-- | filters/f_output_chain.c | 5 | ||||
-rw-r--r-- | player/audio.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/filters/f_output_chain.c b/filters/f_output_chain.c index 799f29989d..1f74a01661 100644 --- a/filters/f_output_chain.c +++ b/filters/f_output_chain.c @@ -351,7 +351,10 @@ static void process_format_change(struct mp_filter *f) p->format_change_phase = 2; mp_pin_out_request_data(p->filters_out); } else if (!p->public.failed_output_conversion) { - MP_ERR(p, "we didn't get an output frame? (broken filter?)\n"); + MP_ERR(p, "No output format - empty file or broken filter?\n"); + p->ao = NULL; + p->public.ao_needs_update = true; + p->format_change_phase = 5; } mp_filter_internal_mark_progress(f); return; diff --git a/player/audio.c b/player/audio.c index 37c5446bd9..a6b7601df2 100644 --- a/player/audio.c +++ b/player/audio.c @@ -272,6 +272,11 @@ static void reinit_audio_filters_and_output(struct MPContext *mpctx) if (!out_fmt) abort(); + if (!mp_aframe_config_is_valid(out_fmt)) { + talloc_free(out_fmt); + goto init_error; + } + if (af_fmt_is_pcm(mp_aframe_get_format(out_fmt))) { if (opts->force_srate) mp_aframe_set_rate(out_fmt, opts->force_srate); |