mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 12:15:34 +08:00
Fix settings button value mismatch
This commit is contained in:
@@ -20,6 +20,11 @@ int ConfigCenter::SetVideoEncodeFormat(
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ConfigCenter::SetHardwareVideoCodec(bool hardware_video_codec) {
|
||||
hardware_video_codec_ = hardware_video_codec;
|
||||
return 0;
|
||||
}
|
||||
|
||||
ConfigCenter::LANGUAGE ConfigCenter::GetLanguage() { return language_; }
|
||||
|
||||
ConfigCenter::VIDEO_QUALITY ConfigCenter::GetVideoQuality() {
|
||||
@@ -29,3 +34,5 @@ ConfigCenter::VIDEO_QUALITY ConfigCenter::GetVideoQuality() {
|
||||
ConfigCenter::VIDEO_ENCODE_FORMAT ConfigCenter::GetVideoEncodeFormat() {
|
||||
return video_encode_format_;
|
||||
}
|
||||
|
||||
bool ConfigCenter::IsHardwareVideoCodec() { return hardware_video_codec_; }
|
||||
@@ -21,16 +21,20 @@ class ConfigCenter {
|
||||
int SetLanguage(LANGUAGE language);
|
||||
int SetVideoQuality(VIDEO_QUALITY video_quality);
|
||||
int SetVideoEncodeFormat(VIDEO_ENCODE_FORMAT video_encode_format);
|
||||
int SetHardwareVideoCodec(bool hardware_video_codec);
|
||||
|
||||
public:
|
||||
LANGUAGE GetLanguage();
|
||||
VIDEO_QUALITY GetVideoQuality();
|
||||
VIDEO_ENCODE_FORMAT GetVideoEncodeFormat();
|
||||
bool IsHardwareVideoCodec();
|
||||
|
||||
private:
|
||||
// Default value should be same with parameters in localization.h
|
||||
LANGUAGE language_ = LANGUAGE::CHINESE;
|
||||
VIDEO_QUALITY video_quality_ = VIDEO_QUALITY::MEDIUM;
|
||||
VIDEO_ENCODE_FORMAT video_encode_format_ = VIDEO_ENCODE_FORMAT::AV1;
|
||||
bool hardware_video_codec_ = false;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -45,9 +45,10 @@ int MainWindow::SaveSettingsIntoCacheFile() {
|
||||
sizeof(language_button_value_));
|
||||
memcpy(&cd_cache_.video_quality, &video_quality_button_value_,
|
||||
sizeof(video_quality_button_value_));
|
||||
memcpy(&cd_cache_.video_encode_format,
|
||||
&video_video_encode_format_button_value_,
|
||||
sizeof(video_video_encode_format_button_value_));
|
||||
memcpy(&cd_cache_.video_encode_format, &video_encode_format_button_value_,
|
||||
sizeof(video_encode_format_button_value_));
|
||||
memcpy(&cd_cache_.enable_hardware_video_codec, &enable_hardware_video_codec_,
|
||||
sizeof(enable_hardware_video_codec_));
|
||||
memcpy(&cd_cache_.settings_language_pos, &settings_language_pos_,
|
||||
sizeof(settings_language_pos_));
|
||||
memcpy(&cd_cache_.settings_video_quality_pos, &settings_video_quality_pos_,
|
||||
@@ -55,6 +56,9 @@ int MainWindow::SaveSettingsIntoCacheFile() {
|
||||
memcpy(&cd_cache_.settings_video_encode_format_pos,
|
||||
&settings_video_encode_format_pos_,
|
||||
sizeof(settings_video_encode_format_pos_));
|
||||
memcpy(&cd_cache_.settings_enable_hardware_video_codec_pos,
|
||||
&settings_enable_hardware_video_codec_pos_,
|
||||
sizeof(settings_enable_hardware_video_codec_pos_));
|
||||
fwrite(&cd_cache_, sizeof(cd_cache_), 1, cd_cache_file_);
|
||||
fclose(cd_cache_file_);
|
||||
|
||||
@@ -73,11 +77,14 @@ int MainWindow::LoadSettingsIntoCacheFile() {
|
||||
strncpy(input_password_, cd_cache_.password, sizeof(cd_cache_.password));
|
||||
language_button_value_ = cd_cache_.language;
|
||||
video_quality_button_value_ = cd_cache_.video_quality;
|
||||
video_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;
|
||||
settings_language_pos_ = cd_cache_.settings_language_pos;
|
||||
settings_video_quality_pos_ = cd_cache_.settings_video_quality_pos;
|
||||
settings_video_encode_format_pos_ =
|
||||
cd_cache_.settings_video_encode_format_pos;
|
||||
settings_enable_hardware_video_codec_pos_ =
|
||||
cd_cache_.settings_enable_hardware_video_codec_pos;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -264,8 +271,11 @@ int MainWindow::Run() {
|
||||
params_.turn_server_port = 3478;
|
||||
params_.turn_server_username = "dijunkun";
|
||||
params_.turn_server_password = "dijunkunpw";
|
||||
params_.hardware_acceleration = false;
|
||||
params_.av1_encoding = true;
|
||||
params_.hardware_acceleration = config_center_.IsHardwareVideoCodec();
|
||||
params_.av1_encoding = config_center_.GetVideoEncodeFormat() ==
|
||||
ConfigCenter::VIDEO_ENCODE_FORMAT::AV1
|
||||
? true
|
||||
: false;
|
||||
#endif
|
||||
params_.on_receive_video_buffer = OnReceiveVideoBufferCb;
|
||||
params_.on_receive_audio_buffer = OnReceiveAudioBufferCb;
|
||||
@@ -594,7 +604,8 @@ int MainWindow::Run() {
|
||||
ImGui::SetCursorPosX(settings_video_encode_format_pos_);
|
||||
ImGui::SetCursorPosY(90);
|
||||
ImGui::SetNextItemWidth(80);
|
||||
ImGui::Combo("##video_encode_format", &language_button_value_,
|
||||
ImGui::Combo("##video_encode_format",
|
||||
&video_encode_format_button_value_,
|
||||
video_encode_format_items,
|
||||
IM_ARRAYSIZE(video_encode_format_items));
|
||||
}
|
||||
@@ -606,10 +617,10 @@ int MainWindow::Run() {
|
||||
ImGui::Text(localization::enable_hardware_video_codec
|
||||
[localization_language_index_]
|
||||
.c_str());
|
||||
ImGui::SetCursorPosX(settings_enable_video_codec_pos_);
|
||||
ImGui::SetCursorPosX(settings_enable_hardware_video_codec_pos_);
|
||||
ImGui::SetCursorPosY(120);
|
||||
ImGui::Checkbox("##enable_hardware_video_codec",
|
||||
&enable_video_codec_);
|
||||
&enable_hardware_video_codec_);
|
||||
}
|
||||
|
||||
ImGui::SetCursorPosX(60.0f);
|
||||
@@ -627,14 +638,14 @@ int MainWindow::Run() {
|
||||
settings_video_quality_pos_ = settings_video_quality_pos_default_;
|
||||
settings_video_encode_format_pos_ =
|
||||
settings_video_encode_format_pos_default_;
|
||||
settings_enable_video_codec_pos_ =
|
||||
settings_enable_video_codec_pos_default_;
|
||||
settings_enable_hardware_video_codec_pos_ =
|
||||
settings_enable_hardware_video_codec_pos_default_;
|
||||
} else {
|
||||
config_center_.SetLanguage(ConfigCenter::LANGUAGE::ENGLISH);
|
||||
settings_language_pos_ = 140.0f;
|
||||
settings_video_quality_pos_ = 140.0f;
|
||||
settings_video_encode_format_pos_ = 140.0f;
|
||||
settings_enable_video_codec_pos_ = 201.0f;
|
||||
settings_enable_hardware_video_codec_pos_ = 201.0f;
|
||||
}
|
||||
language_button_value_last_ = language_button_value_;
|
||||
localization_language_ =
|
||||
@@ -659,15 +670,23 @@ int MainWindow::Run() {
|
||||
video_quality_button_value_last_ = video_quality_button_value_;
|
||||
|
||||
// Video encode format
|
||||
if (video_video_encode_format_button_value_ == 0) {
|
||||
if (video_encode_format_button_value_ == 0) {
|
||||
config_center_.SetVideoEncodeFormat(
|
||||
ConfigCenter::VIDEO_ENCODE_FORMAT::AV1);
|
||||
} else if (video_quality_button_value_ == 1) {
|
||||
config_center_.SetVideoEncodeFormat(
|
||||
ConfigCenter::VIDEO_ENCODE_FORMAT::H264);
|
||||
}
|
||||
video_video_encode_format_button_value_last_ =
|
||||
video_video_encode_format_button_value_;
|
||||
video_encode_format_button_value_last_ =
|
||||
video_encode_format_button_value_;
|
||||
|
||||
// Hardware video codec
|
||||
if (enable_hardware_video_codec_) {
|
||||
config_center_.SetHardwareVideoCodec(true);
|
||||
} else {
|
||||
config_center_.SetHardwareVideoCodec(false);
|
||||
}
|
||||
enable_hardware_video_codec_last_ = enable_hardware_video_codec_;
|
||||
|
||||
SaveSettingsIntoCacheFile();
|
||||
// To do: set encode resolution
|
||||
@@ -686,11 +705,17 @@ int MainWindow::Run() {
|
||||
video_quality_button_value_ = video_quality_button_value_last_;
|
||||
}
|
||||
|
||||
if (video_video_encode_format_button_value_ !=
|
||||
video_video_encode_format_button_value_last_) {
|
||||
video_video_encode_format_button_value_ =
|
||||
video_video_encode_format_button_value_last_;
|
||||
if (video_encode_format_button_value_ !=
|
||||
video_encode_format_button_value_last_) {
|
||||
video_encode_format_button_value_ =
|
||||
video_encode_format_button_value_last_;
|
||||
}
|
||||
|
||||
if (enable_hardware_video_codec_ !=
|
||||
enable_hardware_video_codec_last_) {
|
||||
enable_hardware_video_codec_ = enable_hardware_video_codec_last_;
|
||||
}
|
||||
|
||||
settings_window_pos_reset_ = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,9 +67,11 @@ class MainWindow {
|
||||
int language;
|
||||
int video_quality;
|
||||
int video_encode_format;
|
||||
bool enable_hardware_video_codec;
|
||||
float settings_language_pos;
|
||||
float settings_video_quality_pos;
|
||||
float settings_video_encode_format_pos;
|
||||
float settings_enable_hardware_video_codec_pos;
|
||||
} CDCache;
|
||||
|
||||
private:
|
||||
@@ -162,23 +164,24 @@ class MainWindow {
|
||||
float settings_language_pos_default_ = 100.0f;
|
||||
float settings_video_quality_pos_default_ = 100.0f;
|
||||
float settings_video_encode_format_pos_default_ = 100.0f;
|
||||
float settings_enable_video_codec_pos_default_ = 161.0f;
|
||||
float settings_enable_hardware_video_codec_pos_default_ = 161.0f;
|
||||
|
||||
float settings_language_pos_ = settings_language_pos_default_;
|
||||
float settings_video_quality_pos_ = settings_video_quality_pos_default_;
|
||||
float settings_video_encode_format_pos_ =
|
||||
settings_video_encode_format_pos_default_;
|
||||
float settings_enable_video_codec_pos_ =
|
||||
settings_enable_video_codec_pos_default_;
|
||||
float settings_enable_hardware_video_codec_pos_ =
|
||||
settings_enable_hardware_video_codec_pos_default_;
|
||||
|
||||
int language_button_value_ = 0;
|
||||
int video_quality_button_value_ = 0;
|
||||
int video_video_encode_format_button_value_ = 0;
|
||||
int video_encode_format_button_value_ = 0;
|
||||
bool enable_hardware_video_codec_ = false;
|
||||
|
||||
int language_button_value_last_ = 0;
|
||||
int video_quality_button_value_last_ = 0;
|
||||
int video_video_encode_format_button_value_last_ = 0;
|
||||
bool enable_video_codec_ = false;
|
||||
bool enable_video_codec_last_ = false;
|
||||
int video_encode_format_button_value_last_ = 0;
|
||||
bool enable_hardware_video_codec_last_ = false;
|
||||
|
||||
private:
|
||||
std::atomic<bool> start_screen_capture_{false};
|
||||
|
||||
Reference in New Issue
Block a user