[feat] add SRTP switch in settings

This commit is contained in:
dijunkun
2025-09-24 20:27:56 +08:00
parent aea9505c4c
commit 88c75f94e4
8 changed files with 56 additions and 5 deletions

View File

@@ -30,6 +30,11 @@ int ConfigCenter::SetTurn(bool enable_turn) {
return 0; return 0;
} }
int ConfigCenter::SetSrtp(bool enable_srtp) {
enable_srtp_ = enable_srtp;
return 0;
}
ConfigCenter::LANGUAGE ConfigCenter::GetLanguage() { return language_; } ConfigCenter::LANGUAGE ConfigCenter::GetLanguage() { return language_; }
ConfigCenter::VIDEO_QUALITY ConfigCenter::GetVideoQuality() { ConfigCenter::VIDEO_QUALITY ConfigCenter::GetVideoQuality() {
@@ -43,3 +48,5 @@ ConfigCenter::VIDEO_ENCODE_FORMAT ConfigCenter::GetVideoEncodeFormat() {
bool ConfigCenter::IsHardwareVideoCodec() { return hardware_video_codec_; } bool ConfigCenter::IsHardwareVideoCodec() { return hardware_video_codec_; }
bool ConfigCenter::IsEnableTurn() { return enable_turn_; } bool ConfigCenter::IsEnableTurn() { return enable_turn_; }
bool ConfigCenter::IsEnableSrtp() { return enable_srtp_; }

View File

@@ -23,6 +23,7 @@ class ConfigCenter {
int SetVideoEncodeFormat(VIDEO_ENCODE_FORMAT video_encode_format); int SetVideoEncodeFormat(VIDEO_ENCODE_FORMAT video_encode_format);
int SetHardwareVideoCodec(bool hardware_video_codec); int SetHardwareVideoCodec(bool hardware_video_codec);
int SetTurn(bool enable_turn); int SetTurn(bool enable_turn);
int SetSrtp(bool enable_srtp);
public: public:
LANGUAGE GetLanguage(); LANGUAGE GetLanguage();
@@ -30,6 +31,7 @@ class ConfigCenter {
VIDEO_ENCODE_FORMAT GetVideoEncodeFormat(); VIDEO_ENCODE_FORMAT GetVideoEncodeFormat();
bool IsHardwareVideoCodec(); bool IsHardwareVideoCodec();
bool IsEnableTurn(); bool IsEnableTurn();
bool IsEnableSrtp();
private: private:
// Default value should be same with parameters in localization.h // 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; VIDEO_ENCODE_FORMAT video_encode_format_ = VIDEO_ENCODE_FORMAT::AV1;
bool hardware_video_codec_ = false; bool hardware_video_codec_ = false;
bool enable_turn_ = false; bool enable_turn_ = false;
bool enable_srtp_ = true;
}; };
#endif #endif

View File

@@ -89,6 +89,9 @@ static std::vector<std::string> enable_hardware_video_codec = {
static std::vector<std::string> enable_turn = { static std::vector<std::string> enable_turn = {
reinterpret_cast<const char*>(u8"启用中继服务:"), "Enable TURN Service:"}; reinterpret_cast<const char*>(u8"启用中继服务:"), "Enable TURN Service:"};
static std::vector<std::string> enable_srtp = {
reinterpret_cast<const char*>(u8"启用SRTP:"), "Enable SRTP:"};
static std::vector<std::string> ok = {reinterpret_cast<const char*>(u8"确认"), static std::vector<std::string> ok = {reinterpret_cast<const char*>(u8"确认"),
"OK"}; "OK"};
static std::vector<std::string> cancel = { static std::vector<std::string> cancel = {

View File

@@ -20,8 +20,8 @@
#define INPUT_WINDOW_PADDING_EN 96 #define INPUT_WINDOW_PADDING_EN 96
#define SETTINGS_WINDOW_WIDTH_CN 181 #define SETTINGS_WINDOW_WIDTH_CN 181
#define SETTINGS_WINDOW_WIDTH_EN 228 #define SETTINGS_WINDOW_WIDTH_EN 228
#define SETTINGS_WINDOW_HEIGHT_CN 220 #define SETTINGS_WINDOW_HEIGHT_CN 250
#define SETTINGS_WINDOW_HEIGHT_EN 220 #define SETTINGS_WINDOW_HEIGHT_EN 250
#define LANGUAGE_SELECT_WINDOW_PADDING_CN 100 #define LANGUAGE_SELECT_WINDOW_PADDING_CN 100
#define LANGUAGE_SELECT_WINDOW_PADDING_EN 147 #define LANGUAGE_SELECT_WINDOW_PADDING_EN 147
#define VIDEO_QUALITY_SELECT_WINDOW_PADDING_CN 100 #define VIDEO_QUALITY_SELECT_WINDOW_PADDING_CN 100
@@ -32,6 +32,8 @@
#define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN 198 #define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN 198
#define ENABLE_TURN_CHECKBOX_PADDING_CN 151 #define ENABLE_TURN_CHECKBOX_PADDING_CN 151
#define ENABLE_TURN_CHECKBOX_PADDING_EN 198 #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_SELECT_WINDOW_WIDTH 73
#define SETTINGS_OK_BUTTON_PADDING_CN 55 #define SETTINGS_OK_BUTTON_PADDING_CN 55
#define SETTINGS_OK_BUTTON_PADDING_EN 78 #define SETTINGS_OK_BUTTON_PADDING_EN 78

View File

@@ -190,6 +190,7 @@ int Render::SaveSettingsIntoCacheFile() {
memcpy(&cd_cache_.enable_hardware_video_codec, &enable_hardware_video_codec_, memcpy(&cd_cache_.enable_hardware_video_codec, &enable_hardware_video_codec_,
sizeof(enable_hardware_video_codec_)); sizeof(enable_hardware_video_codec_));
memcpy(&cd_cache_.enable_turn, &enable_turn_, sizeof(enable_turn_)); 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_.key, &aes128_key_, sizeof(aes128_key_));
memcpy(&cd_cache_.iv, &aes128_iv_, sizeof(aes128_iv_)); 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_); (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_);
config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_);
config_center_.SetTurn(enable_turn_); config_center_.SetTurn(enable_turn_);
config_center_.SetSrtp(enable_srtp_);
LOG_INFO("Save settings into cache file success"); LOG_INFO("Save settings into cache file success");
@@ -225,6 +227,7 @@ int Render::LoadSettingsFromCacheFile() {
video_encode_format_button_value_ = 1; video_encode_format_button_value_ = 1;
enable_hardware_video_codec_ = false; enable_hardware_video_codec_ = false;
enable_turn_ = false; enable_turn_ = false;
enable_srtp_ = true;
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_); config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
config_center_.SetVideoQuality( config_center_.SetVideoQuality(
@@ -233,6 +236,7 @@ int Render::LoadSettingsFromCacheFile() {
(ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_);
config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_);
config_center_.SetTurn(enable_turn_); config_center_.SetTurn(enable_turn_);
config_center_.SetSrtp(enable_srtp_);
thumbnail_.reset(); thumbnail_.reset();
thumbnail_ = std::make_unique<Thumbnail>(cache_path_ + "/thumbnails/"); thumbnail_ = std::make_unique<Thumbnail>(cache_path_ + "/thumbnails/");
@@ -284,12 +288,14 @@ int Render::LoadSettingsFromCacheFile() {
video_encode_format_button_value_ = cd_cache_.video_encode_format; video_encode_format_button_value_ = cd_cache_.video_encode_format;
enable_hardware_video_codec_ = cd_cache_.enable_hardware_video_codec; enable_hardware_video_codec_ = cd_cache_.enable_hardware_video_codec;
enable_turn_ = cd_cache_.enable_turn; enable_turn_ = cd_cache_.enable_turn;
enable_srtp_ = cd_cache_.enable_srtp;
language_button_value_last_ = language_button_value_; language_button_value_last_ = language_button_value_;
video_quality_button_value_last_ = video_quality_button_value_; video_quality_button_value_last_ = video_quality_button_value_;
video_encode_format_button_value_last_ = video_encode_format_button_value_; video_encode_format_button_value_last_ = video_encode_format_button_value_;
enable_hardware_video_codec_last_ = enable_hardware_video_codec_; enable_hardware_video_codec_last_ = enable_hardware_video_codec_;
enable_turn_last_ = enable_turn_; enable_turn_last_ = enable_turn_;
enable_srtp_last_ = enable_srtp_;
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_); config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
config_center_.SetVideoQuality( config_center_.SetVideoQuality(
@@ -298,6 +304,7 @@ int Render::LoadSettingsFromCacheFile() {
(ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_); (ConfigCenter::VIDEO_ENCODE_FORMAT)video_encode_format_button_value_);
config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_); config_center_.SetHardwareVideoCodec(enable_hardware_video_codec_);
config_center_.SetTurn(enable_turn_); config_center_.SetTurn(enable_turn_);
config_center_.SetSrtp(enable_srtp_);
LOG_INFO("Load settings from cache file"); LOG_INFO("Load settings from cache file");
@@ -476,6 +483,7 @@ int Render::CreateConnectionPeer() {
? true ? true
: false; : false;
params_.enable_turn = config_center_.IsEnableTurn(); params_.enable_turn = config_center_.IsEnableTurn();
params_.enable_srtp = config_center_.IsEnableSrtp();
params_.on_receive_video_buffer = nullptr; params_.on_receive_video_buffer = nullptr;
params_.on_receive_audio_buffer = OnReceiveAudioBufferCb; params_.on_receive_audio_buffer = OnReceiveAudioBufferCb;
params_.on_receive_data_buffer = OnReceiveDataBufferCb; params_.on_receive_data_buffer = OnReceiveDataBufferCb;

View File

@@ -248,6 +248,7 @@ class Render {
int video_encode_format; int video_encode_format;
bool enable_hardware_video_codec; bool enable_hardware_video_codec;
bool enable_turn; bool enable_turn;
bool enable_srtp;
unsigned char key[16]; unsigned char key[16];
unsigned char iv[16]; unsigned char iv[16];
@@ -426,11 +427,13 @@ class Render {
int video_encode_format_button_value_ = 0; int video_encode_format_button_value_ = 0;
bool enable_hardware_video_codec_ = false; bool enable_hardware_video_codec_ = false;
bool enable_turn_ = false; bool enable_turn_ = false;
bool enable_srtp_ = true;
int language_button_value_last_ = 0; int language_button_value_last_ = 0;
int video_quality_button_value_last_ = 0; int video_quality_button_value_last_ = 0;
int video_encode_format_button_value_last_ = 0; int video_encode_format_button_value_last_ = 0;
bool enable_hardware_video_codec_last_ = false; bool enable_hardware_video_codec_last_ = false;
bool enable_turn_last_ = false; bool enable_turn_last_ = false;
bool enable_srtp_last_ = true;
bool settings_window_pos_reset_ = true; bool settings_window_pos_reset_ = true;
/* ------ main window property end ------ */ /* ------ main window property end ------ */

View File

@@ -161,6 +161,23 @@ int Render::SettingWindow() {
ImGui::Checkbox("##enable_turn", &enable_turn_); 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_) { if (stream_window_inited_) {
ImGui::EndDisabled(); ImGui::EndDisabled();
} }
@@ -170,7 +187,7 @@ int Render::SettingWindow() {
} else { } else {
ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_EN); ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_EN);
} }
ImGui::SetCursorPosY(190.0f); ImGui::SetCursorPosY(220.0f);
ImGui::PopStyleVar(); ImGui::PopStyleVar();
// OK // OK
@@ -227,6 +244,14 @@ int Render::SettingWindow() {
} }
enable_turn_last_ = enable_turn_; enable_turn_last_ = enable_turn_;
// SRTP
if (enable_srtp_) {
config_center_.SetSrtp(true);
} else {
config_center_.SetSrtp(false);
}
enable_srtp_last_ = enable_srtp_;
SaveSettingsIntoCacheFile(); SaveSettingsIntoCacheFile();
settings_window_pos_reset_ = true; settings_window_pos_reset_ = true;