From db6a37ac1d0687b864787488a3e17fdcac67b990 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 15 Mar 2017 11:38:23 -0400 Subject: [PATCH] TT#13000 handle output avio context failure Change-Id: If5e1f71cb878d404b813e6f48430880f9753a057 --- recording-daemon/decoder.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/recording-daemon/decoder.c b/recording-daemon/decoder.c index b32c799f7..044033f4f 100644 --- a/recording-daemon/decoder.c +++ b/recording-daemon/decoder.c @@ -189,7 +189,8 @@ static int decoder_got_frame(decoder_t *dec, output_t *output, metafile_t *metaf if (G_UNLIKELY(dec->mixer_idx == (unsigned int) -1)) dec->mixer_idx = mix_get_index(metafile->mix); format_t actual_format; - output_config(metafile->mix_out, &dec->out_format, &actual_format); + if (output_config(metafile->mix_out, &dec->out_format, &actual_format)) + goto no_mix_out; mix_config(metafile->mix, &actual_format); AVFrame *dec_frame = resample_frame(&dec->mix_resample, dec->frame, &actual_format); if (!dec_frame) { @@ -200,12 +201,14 @@ static int decoder_got_frame(decoder_t *dec, output_t *output, metafile_t *metaf if (mix_add(metafile->mix, clone, dec->mixer_idx, metafile->mix_out)) ilog(LOG_ERR, "Failed to add decoded packet to mixed output"); } +no_mix_out: pthread_mutex_unlock(&metafile->mix_lock); if (output) { // XXX might be a second resampling to same format format_t actual_format; - output_config(output, &dec->out_format, &actual_format); + if (output_config(output, &dec->out_format, &actual_format)) + return -1; AVFrame *dec_frame = resample_frame(&dec->output_resample, dec->frame, &actual_format); if (!dec_frame) return -1;