浏览代码

libobs: Initialize service before starting output

This fixes the case where initialize is not called on a service if the
output is not encoded.
Matthew Orlando 7 年之前
父节点
当前提交
09d77878fd
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      libobs/obs-output.c

+ 5 - 3
libobs/obs-output.c

@@ -255,13 +255,17 @@ bool obs_output_actual_start(obs_output_t *output)
 bool obs_output_start(obs_output_t *output)
 {
 	bool encoded;
+	bool has_service;
 	if (!obs_output_valid(output, "obs_output_start"))
 		return false;
 	if (!output->context.data)
 		return false;
 
-	encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
+	has_service = (output->info.flags & OBS_OUTPUT_SERVICE) != 0;
+	if (has_service && !obs_service_initialize(output->service, output))
+		return false;
 
+	encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
 	if (encoded && output->delay_sec) {
 		return obs_output_delay_start(output);
 	} else {
@@ -1746,8 +1750,6 @@ bool obs_output_initialize_encoders(obs_output_t *output, uint32_t flags)
 
 	if (!encoded)
 		return false;
-	if (has_service && !obs_service_initialize(output->service, output))
-		return false;
 	if (has_video && !obs_encoder_initialize(output->video_encoder))
 		return false;
 	if (has_audio && !initialize_audio_encoders(output, num_mixes))