فهرست منبع

UI: Add supported codecs to GetClientConfiguration request

Ruwen Hahn 1 سال پیش
والد
کامیت
9d1ac8816e
2فایلهای تغییر یافته به همراه28 افزوده شده و 1 حذف شده
  1. 26 0
      UI/goliveapi-postdata.cpp
  2. 2 1
      UI/models/multitrack-video.hpp

+ 26 - 0
UI/goliveapi-postdata.cpp

@@ -24,6 +24,32 @@ constructGoLivePost(QString streamKey,
 	client.name = "obs-studio";
 	client.version = obs_get_version_string();
 
+	auto add_codec = [&](const char *codec) {
+		auto it = std::find(std::begin(client.supported_codecs),
+				    std::end(client.supported_codecs), codec);
+		if (it != std::end(client.supported_codecs))
+			return;
+
+		client.supported_codecs.push_back(codec);
+	};
+
+	const char *encoder_id = nullptr;
+	for (size_t i = 0; obs_enum_encoder_types(i, &encoder_id); i++) {
+		auto codec = obs_get_encoder_codec(encoder_id);
+		if (!codec)
+			continue;
+
+		if (qstricmp(codec, "h264") == 0) {
+			add_codec("h264");
+#ifdef ENABLE_HEVC
+		} else if (qstricmp(codec, "hevc")) {
+			add_codec("h265");
+#endif
+		} else if (qstricmp(codec, "av1")) {
+			add_codec("av1");
+		}
+	}
+
 	auto &preferences = post_data.preferences;
 	preferences.vod_track_audio = vod_track_enabled;
 

+ 2 - 1
UI/models/multitrack-video.hpp

@@ -109,8 +109,9 @@ using json = nlohmann::json;
 struct Client {
 	string name = "obs-studio";
 	string version;
+	std::vector<string> supported_codecs;
 
-	NLOHMANN_DEFINE_TYPE_INTRUSIVE(Client, name, version)
+	NLOHMANN_DEFINE_TYPE_INTRUSIVE(Client, name, version, supported_codecs)
 };
 
 struct Cpu {