diff --git a/UI/goliveapi-postdata.cpp b/UI/goliveapi-postdata.cpp index 22491c1ff..e67d2dbde 100644 --- a/UI/goliveapi-postdata.cpp +++ b/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; diff --git a/UI/models/multitrack-video.hpp b/UI/models/multitrack-video.hpp index b353ad19f..30b2218da 100644 --- a/UI/models/multitrack-video.hpp +++ b/UI/models/multitrack-video.hpp @@ -109,8 +109,9 @@ using json = nlohmann::json; struct Client { string name = "obs-studio"; string version; + std::vector supported_codecs; - NLOHMANN_DEFINE_TYPE_INTRUSIVE(Client, name, version) + NLOHMANN_DEFINE_TYPE_INTRUSIVE(Client, name, version, supported_codecs) }; struct Cpu {