From 88c75f94e4f1a7488f83161dbb39e24ea78d16ed Mon Sep 17 00:00:00 2001 From: dijunkun Date: Wed, 24 Sep 2025 20:27:56 +0800 Subject: [PATCH] [feat] add SRTP switch in settings --- src/config_center/config_center.cpp | 9 ++++++++- src/config_center/config_center.h | 3 +++ src/localization/localization.h | 3 +++ src/single_window/layout_style.h | 6 ++++-- src/single_window/render.cpp | 8 ++++++++ src/single_window/render.h | 3 +++ src/single_window/setting_window.cpp | 27 ++++++++++++++++++++++++++- thirdparty/minirtc | 2 +- 8 files changed, 56 insertions(+), 5 deletions(-) diff --git a/src/config_center/config_center.cpp b/src/config_center/config_center.cpp index e0fdf86..b731a0f 100644 --- a/src/config_center/config_center.cpp +++ b/src/config_center/config_center.cpp @@ -30,6 +30,11 @@ int ConfigCenter::SetTurn(bool enable_turn) { return 0; } +int ConfigCenter::SetSrtp(bool enable_srtp) { + enable_srtp_ = enable_srtp; + return 0; +} + ConfigCenter::LANGUAGE ConfigCenter::GetLanguage() { return language_; } ConfigCenter::VIDEO_QUALITY ConfigCenter::GetVideoQuality() { @@ -42,4 +47,6 @@ ConfigCenter::VIDEO_ENCODE_FORMAT ConfigCenter::GetVideoEncodeFormat() { bool ConfigCenter::IsHardwareVideoCodec() { return hardware_video_codec_; } -bool ConfigCenter::IsEnableTurn() { return enable_turn_; } \ No newline at end of file +bool ConfigCenter::IsEnableTurn() { return enable_turn_; } + +bool ConfigCenter::IsEnableSrtp() { return enable_srtp_; } \ No newline at end of file diff --git a/src/config_center/config_center.h b/src/config_center/config_center.h index dba7d8a..cd15472 100644 --- a/src/config_center/config_center.h +++ b/src/config_center/config_center.h @@ -23,6 +23,7 @@ class ConfigCenter { int SetVideoEncodeFormat(VIDEO_ENCODE_FORMAT video_encode_format); int SetHardwareVideoCodec(bool hardware_video_codec); int SetTurn(bool enable_turn); + int SetSrtp(bool enable_srtp); public: LANGUAGE GetLanguage(); @@ -30,6 +31,7 @@ class ConfigCenter { VIDEO_ENCODE_FORMAT GetVideoEncodeFormat(); bool IsHardwareVideoCodec(); bool IsEnableTurn(); + bool IsEnableSrtp(); private: // Default value should be same with parameters in localization.h @@ -38,6 +40,7 @@ class ConfigCenter { VIDEO_ENCODE_FORMAT video_encode_format_ = VIDEO_ENCODE_FORMAT::AV1; bool hardware_video_codec_ = false; bool enable_turn_ = false; + bool enable_srtp_ = true; }; #endif \ No newline at end of file diff --git a/src/localization/localization.h b/src/localization/localization.h index 0721c7e..3842e34 100644 --- a/src/localization/localization.h +++ b/src/localization/localization.h @@ -89,6 +89,9 @@ static std::vector enable_hardware_video_codec = { static std::vector enable_turn = { reinterpret_cast(u8"启用中继服务:"), "Enable TURN Service:"}; +static std::vector enable_srtp = { + reinterpret_cast(u8"启用SRTP:"), "Enable SRTP:"}; + static std::vector ok = {reinterpret_cast(u8"确认"), "OK"}; static std::vector cancel = { diff --git a/src/single_window/layout_style.h b/src/single_window/layout_style.h index a7364f6..8509949 100644 --- a/src/single_window/layout_style.h +++ b/src/single_window/layout_style.h @@ -20,8 +20,8 @@ #define INPUT_WINDOW_PADDING_EN 96 #define SETTINGS_WINDOW_WIDTH_CN 181 #define SETTINGS_WINDOW_WIDTH_EN 228 -#define SETTINGS_WINDOW_HEIGHT_CN 220 -#define SETTINGS_WINDOW_HEIGHT_EN 220 +#define SETTINGS_WINDOW_HEIGHT_CN 250 +#define SETTINGS_WINDOW_HEIGHT_EN 250 #define LANGUAGE_SELECT_WINDOW_PADDING_CN 100 #define LANGUAGE_SELECT_WINDOW_PADDING_EN 147 #define VIDEO_QUALITY_SELECT_WINDOW_PADDING_CN 100 @@ -32,6 +32,8 @@ #define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN 198 #define ENABLE_TURN_CHECKBOX_PADDING_CN 151 #define ENABLE_TURN_CHECKBOX_PADDING_EN 198 +#define ENABLE_SRTP_CHECKBOX_PADDING_CN 151 +#define ENABLE_SRTP_CHECKBOX_PADDING_EN 198 #define SETTINGS_SELECT_WINDOW_WIDTH 73 #define SETTINGS_OK_BUTTON_PADDING_CN 55 #define SETTINGS_OK_BUTTON_PADDING_EN 78 diff --git a/src/single_window/render.cpp b/src/single_window/render.cpp index 47c919c..e964160 100644 --- a/src/single_window/render.cpp +++ b/src/single_window/render.cpp @@ -190,6 +190,7 @@ int Render::SaveSettingsIntoCacheFile() { memcpy(&cd_cache_.enable_hardware_video_codec, &enable_hardware_video_codec_, sizeof(enable_hardware_video_codec_)); memcpy(&cd_cache_.enable_turn, &enable_turn_, sizeof(enable_turn_)); + memcpy(&cd_cache_.enable_srtp, &enable_srtp_, sizeof(enable_srtp_)); memcpy(&cd_cache_.key, &aes128_key_, sizeof(aes128_key_)); memcpy(&cd_cache_.iv, &aes128_iv_, sizeof(aes128_iv_)); @@ -204,6 +205,7 @@ int Render::SaveSettingsIntoCacheFile() { (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetTurn(enable_turn_); + config_center_.SetSrtp(enable_srtp_); LOG_INFO("Save settings into cache file success"); @@ -225,6 +227,7 @@ int Render::LoadSettingsFromCacheFile() { video_encode_format_button_value_ = 1; enable_hardware_video_codec_ = false; enable_turn_ = false; + enable_srtp_ = true; config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_); config_center_.SetVideoQuality( @@ -233,6 +236,7 @@ int Render::LoadSettingsFromCacheFile() { (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetTurn(enable_turn_); + config_center_.SetSrtp(enable_srtp_); thumbnail_.reset(); thumbnail_ = std::make_unique(cache_path_ + "/thumbnails/"); @@ -284,12 +288,14 @@ int Render::LoadSettingsFromCacheFile() { video_encode_format_button_value_ = cd_cache_.video_encode_format; enable_hardware_video_codec_ = cd_cache_.enable_hardware_video_codec; enable_turn_ = cd_cache_.enable_turn; + enable_srtp_ = cd_cache_.enable_srtp; language_button_value_last_ = language_button_value_; video_quality_button_value_last_ = video_quality_button_value_; video_encode_format_button_value_last_ = video_encode_format_button_value_; enable_hardware_video_codec_last_ = enable_hardware_video_codec_; enable_turn_last_ = enable_turn_; + enable_srtp_last_ = enable_srtp_; config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_); config_center_.SetVideoQuality( @@ -298,6 +304,7 @@ int Render::LoadSettingsFromCacheFile() { (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetTurn(enable_turn_); + config_center_.SetSrtp(enable_srtp_); LOG_INFO("Load settings from cache file"); @@ -476,6 +483,7 @@ int Render::CreateConnectionPeer() { ? true : false; params_.enable_turn = config_center_.IsEnableTurn(); + params_.enable_srtp = config_center_.IsEnableSrtp(); params_.on_receive_video_buffer = nullptr; params_.on_receive_audio_buffer = OnReceiveAudioBufferCb; params_.on_receive_data_buffer = OnReceiveDataBufferCb; diff --git a/src/single_window/render.h b/src/single_window/render.h index 4d53704..8016990 100644 --- a/src/single_window/render.h +++ b/src/single_window/render.h @@ -248,6 +248,7 @@ class Render { int video_encode_format; bool enable_hardware_video_codec; bool enable_turn; + bool enable_srtp; unsigned char key[16]; unsigned char iv[16]; @@ -426,11 +427,13 @@ class Render { int video_encode_format_button_value_ = 0; bool enable_hardware_video_codec_ = false; bool enable_turn_ = false; + bool enable_srtp_ = true; int language_button_value_last_ = 0; int video_quality_button_value_last_ = 0; int video_encode_format_button_value_last_ = 0; bool enable_hardware_video_codec_last_ = false; bool enable_turn_last_ = false; + bool enable_srtp_last_ = true; bool settings_window_pos_reset_ = true; /* ------ main window property end ------ */ diff --git a/src/single_window/setting_window.cpp b/src/single_window/setting_window.cpp index 995d04f..d04cbc6 100644 --- a/src/single_window/setting_window.cpp +++ b/src/single_window/setting_window.cpp @@ -161,6 +161,23 @@ int Render::SettingWindow() { ImGui::Checkbox("##enable_turn", &enable_turn_); } + ImGui::Separator(); + + { + ImGui::SetCursorPosY(182); + ImGui::Text( + "%s", + localization::enable_srtp[localization_language_index_].c_str()); + + if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) { + ImGui::SetCursorPosX(ENABLE_SRTP_CHECKBOX_PADDING_CN); + } else { + ImGui::SetCursorPosX(ENABLE_SRTP_CHECKBOX_PADDING_EN); + } + ImGui::SetCursorPosY(180); + ImGui::Checkbox("##enable_srtp", &enable_srtp_); + } + if (stream_window_inited_) { ImGui::EndDisabled(); } @@ -170,7 +187,7 @@ int Render::SettingWindow() { } else { ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_EN); } - ImGui::SetCursorPosY(190.0f); + ImGui::SetCursorPosY(220.0f); ImGui::PopStyleVar(); // OK @@ -227,6 +244,14 @@ int Render::SettingWindow() { } enable_turn_last_ = enable_turn_; + // SRTP + if (enable_srtp_) { + config_center_.SetSrtp(true); + } else { + config_center_.SetSrtp(false); + } + enable_srtp_last_ = enable_srtp_; + SaveSettingsIntoCacheFile(); settings_window_pos_reset_ = true; diff --git a/thirdparty/minirtc b/thirdparty/minirtc index 1d3a5f6..ff1d164 160000 --- a/thirdparty/minirtc +++ b/thirdparty/minirtc @@ -1 +1 @@ -Subproject commit 1d3a5f6724e1e826d032ab88cd4327ef566e3240 +Subproject commit ff1d1649ce08e4ee374084dad57ba13e4f6e9f0f