Pārlūkot izejas kodu

UI: When upgrading encoders, always replace "cbr"

Previously it wouldn't necessarily remove the "cbr" setting when
switching the program to use "rate_control".
jp9000 9 gadi atpakaļ
vecāks
revīzija
5329542434
1 mainītis faili ar 16 papildinājumiem un 10 dzēšanām
  1. 16 10
      obs/obs-app.cpp

+ 16 - 10
obs/obs-app.cpp

@@ -1643,24 +1643,30 @@ static void convert_14_2_encoder_setting(const char *encoder, const char *file)
 	obs_data_t *data = obs_data_create_from_json_file_safe(file, "bak");
 	obs_data_t *data = obs_data_create_from_json_file_safe(file, "bak");
 	obs_data_item_t *cbr_item = obs_data_item_byname(data, "cbr");
 	obs_data_item_t *cbr_item = obs_data_item_byname(data, "cbr");
 	obs_data_item_t *rc_item = obs_data_item_byname(data, "rate_control");
 	obs_data_item_t *rc_item = obs_data_item_byname(data, "rate_control");
+	bool modified = false;
+	bool cbr = true;
 
 
-	if (!rc_item) {
-		bool cbr = false;
+	if (cbr_item) {
+		cbr = obs_data_item_get_bool(cbr_item);
+		obs_data_item_unset_user_value(cbr_item);
 
 
-		if (cbr_item) {
-			cbr = obs_data_item_get_bool(cbr_item);
-			obs_data_item_unset_user_value(cbr_item);
-		}
+		obs_data_set_string(data, "rate_control", cbr ? "CBR" : "VBR");
+
+		modified = true;
+	}
 
 
-		if (cbr) {
+	if (!rc_item && astrcmpi(encoder, "obs_x264") == 0) {
+		if (!cbr_item)
 			obs_data_set_string(data, "rate_control", "CBR");
 			obs_data_set_string(data, "rate_control", "CBR");
-		} else if (astrcmpi(encoder, "obs_x264") == 0) {
+		else if (!cbr)
 			convert_x264_settings(data);
 			convert_x264_settings(data);
-		}
 
 
-		obs_data_save_json_safe(data, file, "tmp", "bak");
+		modified = true;
 	}
 	}
 
 
+	if (modified)
+		obs_data_save_json_safe(data, file, "tmp", "bak");
+
 	obs_data_item_release(&rc_item);
 	obs_data_item_release(&rc_item);
 	obs_data_item_release(&cbr_item);
 	obs_data_item_release(&cbr_item);
 	obs_data_release(data);
 	obs_data_release(data);