From b54d32ef4155e694ecfabd64249c56c2f8f8c796 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Sun, 13 Sep 2026 01:37:01 +0800 Subject: [PATCH] [fix] disable and uncheck hardware codec setting in unsupported builds --- .../desktop/src/config_center/config_center.cpp | 12 +++++++++++- apps/desktop/src/config_center/config_center.h | 2 ++ .../src/gui/application/gui_application.cpp | 17 +++++++---------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/apps/desktop/src/config_center/config_center.cpp b/apps/desktop/src/config_center/config_center.cpp index 2041036f..5df11de5 100644 --- a/apps/desktop/src/config_center/config_center.cpp +++ b/apps/desktop/src/config_center/config_center.cpp @@ -450,8 +450,18 @@ ConfigCenter::VIDEO_ENCODE_FORMAT ConfigCenter::GetVideoEncodeFormat() const { return video_encode_format_; } +bool ConfigCenter::IsHardwareVideoCodecAvailable() { +#if (((defined(_WIN32) || defined(__linux__)) && !defined(__aarch64__) && \ + !defined(__arm__) && USE_CUDA) || \ + defined(__APPLE__)) + return true; +#else + return false; +#endif +} + bool ConfigCenter::IsHardwareVideoCodec() const { - return hardware_video_codec_; + return IsHardwareVideoCodecAvailable() && hardware_video_codec_; } ConfigCenter::TURN_MODE ConfigCenter::GetTurnMode() const { diff --git a/apps/desktop/src/config_center/config_center.h b/apps/desktop/src/config_center/config_center.h index c7365d27..7e6fe61e 100644 --- a/apps/desktop/src/config_center/config_center.h +++ b/apps/desktop/src/config_center/config_center.h @@ -65,6 +65,8 @@ class ConfigCenter { ScreenCaptureMethod GetScreenCaptureMethod() const; VIDEO_ADAPTATION_POLICY GetVideoAdaptationPolicy() const; VIDEO_ENCODE_FORMAT GetVideoEncodeFormat() const; + // Whether this build includes a hardware video codec backend. + static bool IsHardwareVideoCodecAvailable(); bool IsHardwareVideoCodec() const; TURN_MODE GetTurnMode() const; bool IsEnableTurn() const; diff --git a/apps/desktop/src/gui/application/gui_application.cpp b/apps/desktop/src/gui/application/gui_application.cpp index 2d7d5c65..41332e4a 100644 --- a/apps/desktop/src/gui/application/gui_application.cpp +++ b/apps/desktop/src/gui/application/gui_application.cpp @@ -1224,7 +1224,11 @@ void GuiApplication::ResetSettingsUi() { ui_->main->set_adaptation_policy_index( video_adaptation_policy_button_value_); ui_->main->set_codec_index(video_encode_format_button_value_); - ui_->main->set_hardware_codec_enabled(enable_hardware_video_codec_); + const bool hardware_codec_available = + ConfigCenter::IsHardwareVideoCodecAvailable(); + ui_->main->set_hardware_codec_available(hardware_codec_available); + ui_->main->set_hardware_codec_enabled(hardware_codec_available && + enable_hardware_video_codec_); ui_->main->set_turn_enabled(enable_turn_); ui_->main->set_srtp_enabled(enable_srtp_); ui_->main->set_self_hosted_enabled(enable_self_hosted_); @@ -2151,14 +2155,6 @@ void GuiApplication::SyncMainWindow() { ui_->main->set_release_name(UiText(release_name_)); ui_->main->set_release_date(UiText(release_date_)); ui_->main->set_settings_session_active(HasActiveSession()); -#if (((defined(_WIN32) || defined(__linux__)) && !defined(__aarch64__) && \ - !defined(__arm__) && USE_CUDA) || \ - defined(__APPLE__)) - ui_->main->set_hardware_codec_available(true); -#else - ui_->main->set_hardware_codec_available(false); -#endif - if (show_offline_warning_window_) { ui_->main->set_offline_warning(UiText(offline_warning_text_)); show_offline_warning_window_ = false; @@ -2988,7 +2984,8 @@ void GuiApplication::SaveSettingsFromUi() { video_adaptation_policy_button_value_ = std::clamp(main->get_adaptation_policy_index(), 0, 2); video_encode_format_button_value_ = std::clamp(main->get_codec_index(), 0, 1); - enable_hardware_video_codec_ = main->get_hardware_codec_enabled(); + enable_hardware_video_codec_ = ConfigCenter::IsHardwareVideoCodecAvailable() && + main->get_hardware_codec_enabled(); enable_turn_ = main->get_turn_enabled(); enable_srtp_ = main->get_srtp_enabled(); enable_self_hosted_ = main->get_self_hosted_enabled();