mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-01 15:49:51 +08:00
libobs: Protect some encoder functions from being used while active
Protect `obs_encoder_set_video()` and `obs_encoder_set_audio()` from being used if the encoder is active. Changing these values while active is undefined behavior.
This commit is contained in:
+18
-2
@@ -792,6 +792,14 @@ void obs_encoder_set_video(obs_encoder_t *encoder, video_t *video)
|
||||
obs_encoder_get_name(encoder));
|
||||
return;
|
||||
}
|
||||
if (encoder_active(encoder)) {
|
||||
blog(LOG_WARNING,
|
||||
"encoder '%s': Cannot apply a new video_t "
|
||||
"object while the encoder is active",
|
||||
obs_encoder_get_name(encoder));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!video)
|
||||
return;
|
||||
|
||||
@@ -813,6 +821,14 @@ void obs_encoder_set_audio(obs_encoder_t *encoder, audio_t *audio)
|
||||
obs_encoder_get_name(encoder));
|
||||
return;
|
||||
}
|
||||
if (encoder_active(encoder)) {
|
||||
blog(LOG_WARNING,
|
||||
"encoder '%s': Cannot apply a new audio_t "
|
||||
"object while the encoder is active",
|
||||
obs_encoder_get_name(encoder));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!audio)
|
||||
return;
|
||||
|
||||
@@ -1316,7 +1332,7 @@ end:
|
||||
void obs_encoder_add_output(struct obs_encoder *encoder,
|
||||
struct obs_output *output)
|
||||
{
|
||||
if (!encoder)
|
||||
if (!encoder || !output)
|
||||
return;
|
||||
|
||||
pthread_mutex_lock(&encoder->outputs_mutex);
|
||||
@@ -1327,7 +1343,7 @@ void obs_encoder_add_output(struct obs_encoder *encoder,
|
||||
void obs_encoder_remove_output(struct obs_encoder *encoder,
|
||||
struct obs_output *output)
|
||||
{
|
||||
if (!encoder)
|
||||
if (!encoder || !output)
|
||||
return;
|
||||
|
||||
pthread_mutex_lock(&encoder->outputs_mutex);
|
||||
|
||||
Reference in New Issue
Block a user