From 09e10a46ffe650bfc664833c6698fd68ddf40b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lepin?= Date: Fri, 23 Aug 2019 18:40:52 +0200 Subject: [PATCH] libobs: add pointer check in reset_raw_output --- libobs/obs-output.c | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/libobs/obs-output.c b/libobs/obs-output.c index 03f11bfe1..9790c814e 100644 --- a/libobs/obs-output.c +++ b/libobs/obs-output.c @@ -2035,32 +2035,36 @@ static bool begin_delayed_capture(obs_output_t *output) static void reset_raw_output(obs_output_t *output) { - const struct audio_output_info *aoi = - audio_output_get_info(output->audio); - struct audio_convert_info conv = output->audio_conversion; - struct audio_convert_info info = { - aoi->samples_per_sec, - aoi->format, - aoi->speakers, - }; - clear_audio_buffers(output); - if (output->audio_conversion_set) { - if (conv.samples_per_sec) - info.samples_per_sec = conv.samples_per_sec; - if (conv.format != AUDIO_FORMAT_UNKNOWN) - info.format = conv.format; - if (conv.speakers != SPEAKERS_UNKNOWN) - info.speakers = conv.speakers; + if (output->audio) { + const struct audio_output_info *aoi = + audio_output_get_info(output->audio); + struct audio_convert_info conv = output->audio_conversion; + struct audio_convert_info info = { + aoi->samples_per_sec, + aoi->format, + aoi->speakers, + }; + + if (output->audio_conversion_set) { + if (conv.samples_per_sec) + info.samples_per_sec = conv.samples_per_sec; + if (conv.format != AUDIO_FORMAT_UNKNOWN) + info.format = conv.format; + if (conv.speakers != SPEAKERS_UNKNOWN) + info.speakers = conv.speakers; + } + + output->sample_rate = info.samples_per_sec; + output->planes = get_audio_planes(info.format, info.speakers); + output->total_audio_frames = 0; + output->audio_size = + get_audio_size(info.format, info.speakers, 1); } output->audio_start_ts = 0; output->video_start_ts = 0; - output->sample_rate = info.samples_per_sec; - output->planes = get_audio_planes(info.format, info.speakers); - output->total_audio_frames = 0; - output->audio_size = get_audio_size(info.format, info.speakers, 1); pause_reset(&output->pause); }