Răsfoiți Sursa

libobs: Prevent encoder reconfiguration after initialization

derrod 1 an în urmă
părinte
comite
20d8779d30
1 a modificat fișierele cu 29 adăugiri și 0 ștergeri
  1. 29 0
      libobs/obs-encoder.c

+ 29 - 0
libobs/obs-encoder.c

@@ -859,6 +859,13 @@ void obs_encoder_set_scaled_size(obs_encoder_t *encoder, uint32_t width,
 		     obs_encoder_get_name(encoder));
 		return;
 	}
+	if (encoder->initialized) {
+		blog(LOG_WARNING,
+		     "encoder '%s': Cannot set the scaled resolution "
+		     "after the encoder has been initialized",
+		     obs_encoder_get_name(encoder));
+		return;
+	}
 
 	const struct video_output_info *voi;
 	voi = video_output_get_info(encoder->media);
@@ -895,6 +902,13 @@ void obs_encoder_set_gpu_scale_type(obs_encoder_t *encoder,
 		     obs_encoder_get_name(encoder));
 		return;
 	}
+	if (encoder->initialized) {
+		blog(LOG_WARNING,
+		     "encoder '%s': Cannot enable GPU scaling "
+		     "after the encoder has been initialized",
+		     obs_encoder_get_name(encoder));
+		return;
+	}
 
 	encoder->gpu_scale_type = gpu_scale_type;
 }
@@ -921,6 +935,14 @@ bool obs_encoder_set_frame_rate_divisor(obs_encoder_t *encoder,
 		return false;
 	}
 
+	if (encoder->initialized) {
+		blog(LOG_WARNING,
+		     "encoder '%s': Cannot set frame rate divisor "
+		     "after the encoder has been initialized",
+		     obs_encoder_get_name(encoder));
+		return false;
+	}
+
 	if (frame_rate_divisor == 0) {
 		blog(LOG_WARNING,
 		     "encoder '%s': Cannot set frame "
@@ -1090,6 +1112,13 @@ void obs_encoder_set_video(obs_encoder_t *encoder, video_t *video)
 		     obs_encoder_get_name(encoder));
 		return;
 	}
+	if (encoder->initialized) {
+		blog(LOG_WARNING,
+		     "encoder '%s': Cannot apply a new video_t object "
+		     "after the encoder has been initialized",
+		     obs_encoder_get_name(encoder));
+		return;
+	}
 
 	encoder_set_video(encoder, video);
 }