From e1447c22db4f168fcf641bfaa994e9af6bdfc172 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Wed, 23 Sep 2020 14:47:30 -0700 Subject: [PATCH] libobs: Check if output active when setting encoders This fixes an issue where someone might mistakenly try to change an audio/video encoder before the output is complete. --- libobs/obs-output.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libobs/obs-output.c b/libobs/obs-output.c index 6176ac542..c37fd12e8 100644 --- a/libobs/obs-output.c +++ b/libobs/obs-output.c @@ -807,6 +807,13 @@ void obs_output_set_video_encoder(obs_output_t *output, obs_encoder_t *encoder) "encoder passed is not a video encoder"); return; } + if (active(output)) { + blog(LOG_WARNING, + "%s: tried to set video encoder on output \"%s\" " + "while the output is still active!", + __FUNCTION__, output->context.name); + return; + } if (output->video_encoder == encoder) return; @@ -832,6 +839,13 @@ void obs_output_set_audio_encoder(obs_output_t *output, obs_encoder_t *encoder, "encoder passed is not an audio encoder"); return; } + if (active(output)) { + blog(LOG_WARNING, + "%s: tried to set audio encoder %d on output \"%s\" " + "while the output is still active!", + __FUNCTION__, (int)idx, output->context.name); + return; + } if ((output->info.flags & OBS_OUTPUT_MULTI_TRACK) != 0) { if (idx >= MAX_AUDIO_MIXES) {