mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
[feat] add screen capture frame rate option in settings window
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,7 @@
|
|||||||
#include "config_center.h"
|
#include "config_center.h"
|
||||||
|
|
||||||
|
#include "rd_log.h"
|
||||||
|
|
||||||
ConfigCenter::ConfigCenter() {}
|
ConfigCenter::ConfigCenter() {}
|
||||||
|
|
||||||
ConfigCenter::~ConfigCenter() {}
|
ConfigCenter::~ConfigCenter() {}
|
||||||
@@ -14,6 +16,11 @@ int ConfigCenter::SetVideoQuality(VIDEO_QUALITY video_quality) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ConfigCenter::SetVideoFrameRate(VIDEO_FRAME_RATE video_frame_rate) {
|
||||||
|
video_frame_rate_ = video_frame_rate;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int ConfigCenter::SetVideoEncodeFormat(
|
int ConfigCenter::SetVideoEncodeFormat(
|
||||||
VIDEO_ENCODE_FORMAT video_encode_format) {
|
VIDEO_ENCODE_FORMAT video_encode_format) {
|
||||||
video_encode_format_ = video_encode_format;
|
video_encode_format_ = video_encode_format;
|
||||||
@@ -41,6 +48,11 @@ ConfigCenter::VIDEO_QUALITY ConfigCenter::GetVideoQuality() {
|
|||||||
return video_quality_;
|
return video_quality_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ConfigCenter::GetVideoFrameRate() {
|
||||||
|
int fps = video_frame_rate_ == VIDEO_FRAME_RATE::FPS_30 ? 30 : 60;
|
||||||
|
return fps;
|
||||||
|
}
|
||||||
|
|
||||||
ConfigCenter::VIDEO_ENCODE_FORMAT ConfigCenter::GetVideoEncodeFormat() {
|
ConfigCenter::VIDEO_ENCODE_FORMAT ConfigCenter::GetVideoEncodeFormat() {
|
||||||
return video_encode_format_;
|
return video_encode_format_;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class ConfigCenter {
|
|||||||
public:
|
public:
|
||||||
enum class LANGUAGE { CHINESE = 0, ENGLISH = 1 };
|
enum class LANGUAGE { CHINESE = 0, ENGLISH = 1 };
|
||||||
enum class VIDEO_QUALITY { LOW = 0, MEDIUM = 1, HIGH = 2 };
|
enum class VIDEO_QUALITY { LOW = 0, MEDIUM = 1, HIGH = 2 };
|
||||||
|
enum class VIDEO_FRAME_RATE { FPS_30 = 0, FPS_60 = 1 };
|
||||||
enum class VIDEO_ENCODE_FORMAT { AV1 = 0, H264 = 1 };
|
enum class VIDEO_ENCODE_FORMAT { AV1 = 0, H264 = 1 };
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -20,6 +21,7 @@ class ConfigCenter {
|
|||||||
public:
|
public:
|
||||||
int SetLanguage(LANGUAGE language);
|
int SetLanguage(LANGUAGE language);
|
||||||
int SetVideoQuality(VIDEO_QUALITY video_quality);
|
int SetVideoQuality(VIDEO_QUALITY video_quality);
|
||||||
|
int SetVideoFrameRate(VIDEO_FRAME_RATE video_frame_rate);
|
||||||
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);
|
||||||
@@ -28,6 +30,7 @@ class ConfigCenter {
|
|||||||
public:
|
public:
|
||||||
LANGUAGE GetLanguage();
|
LANGUAGE GetLanguage();
|
||||||
VIDEO_QUALITY GetVideoQuality();
|
VIDEO_QUALITY GetVideoQuality();
|
||||||
|
int GetVideoFrameRate();
|
||||||
VIDEO_ENCODE_FORMAT GetVideoEncodeFormat();
|
VIDEO_ENCODE_FORMAT GetVideoEncodeFormat();
|
||||||
bool IsHardwareVideoCodec();
|
bool IsHardwareVideoCodec();
|
||||||
bool IsEnableTurn();
|
bool IsEnableTurn();
|
||||||
@@ -37,6 +40,7 @@ class ConfigCenter {
|
|||||||
// Default value should be same with parameters in localization.h
|
// Default value should be same with parameters in localization.h
|
||||||
LANGUAGE language_ = LANGUAGE::CHINESE;
|
LANGUAGE language_ = LANGUAGE::CHINESE;
|
||||||
VIDEO_QUALITY video_quality_ = VIDEO_QUALITY::MEDIUM;
|
VIDEO_QUALITY video_quality_ = VIDEO_QUALITY::MEDIUM;
|
||||||
|
VIDEO_FRAME_RATE video_frame_rate_ = VIDEO_FRAME_RATE::FPS_30;
|
||||||
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;
|
||||||
|
|||||||
@@ -71,6 +71,9 @@ static std::vector<std::string> language_en = {
|
|||||||
reinterpret_cast<const char*>(u8"英文"), "English"};
|
reinterpret_cast<const char*>(u8"英文"), "English"};
|
||||||
static std::vector<std::string> video_quality = {
|
static std::vector<std::string> video_quality = {
|
||||||
reinterpret_cast<const char*>(u8"视频质量:"), "Video Quality:"};
|
reinterpret_cast<const char*>(u8"视频质量:"), "Video Quality:"};
|
||||||
|
static std::vector<std::string> video_frame_rate = {
|
||||||
|
reinterpret_cast<const char*>(u8"画面采集帧率:"),
|
||||||
|
"Video Capture Frame Rate:"};
|
||||||
static std::vector<std::string> video_quality_high = {
|
static std::vector<std::string> video_quality_high = {
|
||||||
reinterpret_cast<const char*>(u8"高"), "High"};
|
reinterpret_cast<const char*>(u8"高"), "High"};
|
||||||
static std::vector<std::string> video_quality_medium = {
|
static std::vector<std::string> video_quality_medium = {
|
||||||
|
|||||||
@@ -18,22 +18,24 @@
|
|||||||
#define IPUT_WINDOW_WIDTH 160
|
#define IPUT_WINDOW_WIDTH 160
|
||||||
#define INPUT_WINDOW_PADDING_CN 66
|
#define INPUT_WINDOW_PADDING_CN 66
|
||||||
#define INPUT_WINDOW_PADDING_EN 96
|
#define INPUT_WINDOW_PADDING_EN 96
|
||||||
#define SETTINGS_WINDOW_WIDTH_CN 181
|
#define SETTINGS_WINDOW_WIDTH_CN 182
|
||||||
#define SETTINGS_WINDOW_WIDTH_EN 228
|
#define SETTINGS_WINDOW_WIDTH_EN 248
|
||||||
#define SETTINGS_WINDOW_HEIGHT_CN 250
|
#define SETTINGS_WINDOW_HEIGHT_CN 275
|
||||||
#define SETTINGS_WINDOW_HEIGHT_EN 250
|
#define SETTINGS_WINDOW_HEIGHT_EN 275
|
||||||
#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 167
|
||||||
#define VIDEO_QUALITY_SELECT_WINDOW_PADDING_CN 100
|
#define VIDEO_QUALITY_SELECT_WINDOW_PADDING_CN 100
|
||||||
#define VIDEO_QUALITY_SELECT_WINDOW_PADDING_EN 147
|
#define VIDEO_QUALITY_SELECT_WINDOW_PADDING_EN 167
|
||||||
|
#define VIDEO_FRAME_RATE_SELECT_WINDOW_PADDING_CN 100
|
||||||
|
#define VIDEO_FRAME_RATE_SELECT_WINDOW_PADDING_EN 167
|
||||||
#define VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_CN 100
|
#define VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_CN 100
|
||||||
#define VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_EN 147
|
#define VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_EN 167
|
||||||
#define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_CN 151
|
#define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_CN 151
|
||||||
#define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN 198
|
#define ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN 218
|
||||||
#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 218
|
||||||
#define ENABLE_SRTP_CHECKBOX_PADDING_CN 151
|
#define ENABLE_SRTP_CHECKBOX_PADDING_CN 151
|
||||||
#define ENABLE_SRTP_CHECKBOX_PADDING_EN 198
|
#define ENABLE_SRTP_CHECKBOX_PADDING_EN 218
|
||||||
#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
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ int Render::SaveSettingsIntoCacheFile() {
|
|||||||
sizeof(language_button_value_));
|
sizeof(language_button_value_));
|
||||||
memcpy(&cd_cache_.video_quality, &video_quality_button_value_,
|
memcpy(&cd_cache_.video_quality, &video_quality_button_value_,
|
||||||
sizeof(video_quality_button_value_));
|
sizeof(video_quality_button_value_));
|
||||||
|
memcpy(&cd_cache_.video_frame_rate, &video_frame_rate_button_value_,
|
||||||
|
sizeof(video_frame_rate_button_value_));
|
||||||
memcpy(&cd_cache_.video_encode_format, &video_encode_format_button_value_,
|
memcpy(&cd_cache_.video_encode_format, &video_encode_format_button_value_,
|
||||||
sizeof(video_encode_format_button_value_));
|
sizeof(video_encode_format_button_value_));
|
||||||
memcpy(&cd_cache_.enable_hardware_video_codec, &enable_hardware_video_codec_,
|
memcpy(&cd_cache_.enable_hardware_video_codec, &enable_hardware_video_codec_,
|
||||||
@@ -201,6 +203,8 @@ int Render::SaveSettingsIntoCacheFile() {
|
|||||||
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
|
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
|
||||||
config_center_.SetVideoQuality(
|
config_center_.SetVideoQuality(
|
||||||
(ConfigCenter::VIDEO_QUALITY)video_quality_button_value_);
|
(ConfigCenter::VIDEO_QUALITY)video_quality_button_value_);
|
||||||
|
config_center_.SetVideoFrameRate(
|
||||||
|
(ConfigCenter::VIDEO_FRAME_RATE)video_frame_rate_button_value_);
|
||||||
config_center_.SetVideoEncodeFormat(
|
config_center_.SetVideoEncodeFormat(
|
||||||
(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_);
|
||||||
@@ -232,6 +236,8 @@ int Render::LoadSettingsFromCacheFile() {
|
|||||||
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
|
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
|
||||||
config_center_.SetVideoQuality(
|
config_center_.SetVideoQuality(
|
||||||
(ConfigCenter::VIDEO_QUALITY)video_quality_button_value_);
|
(ConfigCenter::VIDEO_QUALITY)video_quality_button_value_);
|
||||||
|
config_center_.SetVideoFrameRate(
|
||||||
|
(ConfigCenter::VIDEO_FRAME_RATE)video_frame_rate_button_value_);
|
||||||
config_center_.SetVideoEncodeFormat(
|
config_center_.SetVideoEncodeFormat(
|
||||||
(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_);
|
||||||
@@ -285,6 +291,7 @@ int Render::LoadSettingsFromCacheFile() {
|
|||||||
|
|
||||||
language_button_value_ = cd_cache_.language;
|
language_button_value_ = cd_cache_.language;
|
||||||
video_quality_button_value_ = cd_cache_.video_quality;
|
video_quality_button_value_ = cd_cache_.video_quality;
|
||||||
|
video_frame_rate_button_value_ = cd_cache_.video_frame_rate;
|
||||||
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;
|
||||||
@@ -300,6 +307,8 @@ int Render::LoadSettingsFromCacheFile() {
|
|||||||
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
|
config_center_.SetLanguage((ConfigCenter::LANGUAGE)language_button_value_);
|
||||||
config_center_.SetVideoQuality(
|
config_center_.SetVideoQuality(
|
||||||
(ConfigCenter::VIDEO_QUALITY)video_quality_button_value_);
|
(ConfigCenter::VIDEO_QUALITY)video_quality_button_value_);
|
||||||
|
config_center_.SetVideoFrameRate(
|
||||||
|
(ConfigCenter::VIDEO_FRAME_RATE)video_frame_rate_button_value_);
|
||||||
config_center_.SetVideoEncodeFormat(
|
config_center_.SetVideoEncodeFormat(
|
||||||
(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_);
|
||||||
@@ -312,25 +321,25 @@ int Render::LoadSettingsFromCacheFile() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int Render::ScreenCapturerInit() {
|
int Render::ScreenCapturerInit() {
|
||||||
if (screen_capturer_) {
|
if (!screen_capturer_) {
|
||||||
LOG_INFO("Screen capturer already initialized");
|
screen_capturer_ = (ScreenCapturer*)screen_capturer_factory_->Create();
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
screen_capturer_ = (ScreenCapturer*)screen_capturer_factory_->Create();
|
|
||||||
last_frame_time_ = std::chrono::duration_cast<std::chrono::milliseconds>(
|
last_frame_time_ = std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||||
std::chrono::steady_clock::now().time_since_epoch())
|
std::chrono::steady_clock::now().time_since_epoch())
|
||||||
.count();
|
.count();
|
||||||
|
int fps = config_center_.GetVideoFrameRate();
|
||||||
|
LOG_INFO("Init screen capturer with {} fps", fps);
|
||||||
|
|
||||||
int screen_capturer_init_ret = screen_capturer_->Init(
|
int screen_capturer_init_ret = screen_capturer_->Init(
|
||||||
60,
|
fps,
|
||||||
[this](unsigned char* data, int size, int width, int height,
|
[this](unsigned char* data, int size, int width, int height,
|
||||||
const char* display_name) -> void {
|
const char* display_name) -> void {
|
||||||
auto now_time = std::chrono::duration_cast<std::chrono::milliseconds>(
|
auto now_time = std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||||
std::chrono::steady_clock::now().time_since_epoch())
|
std::chrono::steady_clock::now().time_since_epoch())
|
||||||
.count();
|
.count();
|
||||||
auto duration = now_time - last_frame_time_;
|
auto duration = now_time - last_frame_time_;
|
||||||
if (duration >= 16) { // ~60 FPS
|
if (duration * config_center_.GetVideoFrameRate() >= 1000) { // ~60 FPS
|
||||||
XVideoFrame frame;
|
XVideoFrame frame;
|
||||||
frame.data = (const char*)data;
|
frame.data = (const char*)data;
|
||||||
frame.size = size;
|
frame.size = size;
|
||||||
|
|||||||
@@ -248,6 +248,7 @@ class Render {
|
|||||||
char client_id_with_password[17];
|
char client_id_with_password[17];
|
||||||
int language;
|
int language;
|
||||||
int video_quality;
|
int video_quality;
|
||||||
|
int video_frame_rate;
|
||||||
int video_encode_format;
|
int video_encode_format;
|
||||||
bool enable_hardware_video_codec;
|
bool enable_hardware_video_codec;
|
||||||
bool enable_turn;
|
bool enable_turn;
|
||||||
@@ -425,6 +426,7 @@ class Render {
|
|||||||
char password_saved_[7] = "";
|
char password_saved_[7] = "";
|
||||||
int language_button_value_ = 0;
|
int language_button_value_ = 0;
|
||||||
int video_quality_button_value_ = 0;
|
int video_quality_button_value_ = 0;
|
||||||
|
int video_frame_rate_button_value_ = 0;
|
||||||
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;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
int Render::SettingWindow() {
|
int Render::SettingWindow() {
|
||||||
if (show_settings_window_) {
|
if (show_settings_window_) {
|
||||||
if (settings_window_pos_reset_) {
|
if (settings_window_pos_reset_) {
|
||||||
const ImGuiViewport *viewport = ImGui::GetMainViewport();
|
const ImGuiViewport* viewport = ImGui::GetMainViewport();
|
||||||
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
||||||
ImGui::SetNextWindowPos(
|
ImGui::SetNextWindowPos(
|
||||||
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x -
|
ImVec2((viewport->WorkSize.x - viewport->WorkPos.x -
|
||||||
@@ -36,6 +36,9 @@ int Render::SettingWindow() {
|
|||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
{
|
{
|
||||||
|
static int settings_items_padding = 30;
|
||||||
|
int settings_items_offset = 0;
|
||||||
|
|
||||||
ImGui::SetWindowFontScale(0.5f);
|
ImGui::SetWindowFontScale(0.5f);
|
||||||
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(1.0f, 1.0f, 1.0f, 1.0f));
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 5.0f);
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 5.0f);
|
||||||
@@ -49,11 +52,12 @@ int Render::SettingWindow() {
|
|||||||
ImGui::SetWindowFontScale(0.5f);
|
ImGui::SetWindowFontScale(0.5f);
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0f);
|
||||||
{
|
{
|
||||||
const char *language_items[] = {
|
const char* language_items[] = {
|
||||||
localization::language_zh[localization_language_index_].c_str(),
|
localization::language_zh[localization_language_index_].c_str(),
|
||||||
localization::language_en[localization_language_index_].c_str()};
|
localization::language_en[localization_language_index_].c_str()};
|
||||||
|
|
||||||
ImGui::SetCursorPosY(32);
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
ImGui::Text(
|
ImGui::Text(
|
||||||
"%s", localization::language[localization_language_index_].c_str());
|
"%s", localization::language[localization_language_index_].c_str());
|
||||||
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
||||||
@@ -61,7 +65,7 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(LANGUAGE_SELECT_WINDOW_PADDING_EN);
|
ImGui::SetCursorPosX(LANGUAGE_SELECT_WINDOW_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(30);
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
||||||
|
|
||||||
ImGui::Combo("##language", &language_button_value_, language_items,
|
ImGui::Combo("##language", &language_button_value_, language_items,
|
||||||
@@ -75,7 +79,7 @@ int Render::SettingWindow() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
const char *video_quality_items[] = {
|
const char* video_quality_items[] = {
|
||||||
localization::video_quality_high[localization_language_index_]
|
localization::video_quality_high[localization_language_index_]
|
||||||
.c_str(),
|
.c_str(),
|
||||||
localization::video_quality_medium[localization_language_index_]
|
localization::video_quality_medium[localization_language_index_]
|
||||||
@@ -83,7 +87,8 @@ int Render::SettingWindow() {
|
|||||||
localization::video_quality_low[localization_language_index_]
|
localization::video_quality_low[localization_language_index_]
|
||||||
.c_str()};
|
.c_str()};
|
||||||
|
|
||||||
ImGui::SetCursorPosY(62);
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
ImGui::Text(
|
ImGui::Text(
|
||||||
"%s",
|
"%s",
|
||||||
localization::video_quality[localization_language_index_].c_str());
|
localization::video_quality[localization_language_index_].c_str());
|
||||||
@@ -93,7 +98,7 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(VIDEO_QUALITY_SELECT_WINDOW_PADDING_EN);
|
ImGui::SetCursorPosX(VIDEO_QUALITY_SELECT_WINDOW_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(60);
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
||||||
|
|
||||||
ImGui::Combo("##video_quality", &video_quality_button_value_,
|
ImGui::Combo("##video_quality", &video_quality_button_value_,
|
||||||
@@ -103,11 +108,36 @@ int Render::SettingWindow() {
|
|||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
{
|
{
|
||||||
const char *video_encode_format_items[] = {
|
const char* video_frame_rate_items[] = {"30", "60"};
|
||||||
|
|
||||||
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
|
ImGui::Text("%s",
|
||||||
|
localization::video_frame_rate[localization_language_index_]
|
||||||
|
.c_str());
|
||||||
|
|
||||||
|
if (ConfigCenter::LANGUAGE::CHINESE == localization_language_) {
|
||||||
|
ImGui::SetCursorPosX(VIDEO_FRAME_RATE_SELECT_WINDOW_PADDING_CN);
|
||||||
|
} else {
|
||||||
|
ImGui::SetCursorPosX(VIDEO_FRAME_RATE_SELECT_WINDOW_PADDING_EN);
|
||||||
|
}
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
|
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
||||||
|
|
||||||
|
ImGui::Combo("##video_frame_rate", &video_frame_rate_button_value_,
|
||||||
|
video_frame_rate_items,
|
||||||
|
IM_ARRAYSIZE(video_frame_rate_items));
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::Separator();
|
||||||
|
|
||||||
|
{
|
||||||
|
const char* video_encode_format_items[] = {
|
||||||
localization::av1[localization_language_index_].c_str(),
|
localization::av1[localization_language_index_].c_str(),
|
||||||
localization::h264[localization_language_index_].c_str()};
|
localization::h264[localization_language_index_].c_str()};
|
||||||
|
|
||||||
ImGui::SetCursorPosY(92);
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
ImGui::Text(
|
ImGui::Text(
|
||||||
"%s",
|
"%s",
|
||||||
localization::video_encode_format[localization_language_index_]
|
localization::video_encode_format[localization_language_index_]
|
||||||
@@ -118,7 +148,7 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_EN);
|
ImGui::SetCursorPosX(VIDEO_ENCODE_FORMAT_SELECT_WINDOW_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(90);
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
ImGui::SetNextItemWidth(SETTINGS_SELECT_WINDOW_WIDTH);
|
||||||
|
|
||||||
ImGui::Combo(
|
ImGui::Combo(
|
||||||
@@ -129,7 +159,8 @@ int Render::SettingWindow() {
|
|||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
{
|
{
|
||||||
ImGui::SetCursorPosY(122);
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
ImGui::Text("%s", localization::enable_hardware_video_codec
|
ImGui::Text("%s", localization::enable_hardware_video_codec
|
||||||
[localization_language_index_]
|
[localization_language_index_]
|
||||||
.c_str());
|
.c_str());
|
||||||
@@ -139,7 +170,7 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN);
|
ImGui::SetCursorPosX(ENABLE_HARDWARE_VIDEO_CODEC_CHECKBOX_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(120);
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::Checkbox("##enable_hardware_video_codec",
|
ImGui::Checkbox("##enable_hardware_video_codec",
|
||||||
&enable_hardware_video_codec_);
|
&enable_hardware_video_codec_);
|
||||||
}
|
}
|
||||||
@@ -147,7 +178,8 @@ int Render::SettingWindow() {
|
|||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
{
|
{
|
||||||
ImGui::SetCursorPosY(152);
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
ImGui::Text(
|
ImGui::Text(
|
||||||
"%s",
|
"%s",
|
||||||
localization::enable_turn[localization_language_index_].c_str());
|
localization::enable_turn[localization_language_index_].c_str());
|
||||||
@@ -157,14 +189,15 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(ENABLE_TURN_CHECKBOX_PADDING_EN);
|
ImGui::SetCursorPosX(ENABLE_TURN_CHECKBOX_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(150);
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::Checkbox("##enable_turn", &enable_turn_);
|
ImGui::Checkbox("##enable_turn", &enable_turn_);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
{
|
{
|
||||||
ImGui::SetCursorPosY(182);
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset + 2);
|
||||||
ImGui::Text(
|
ImGui::Text(
|
||||||
"%s",
|
"%s",
|
||||||
localization::enable_srtp[localization_language_index_].c_str());
|
localization::enable_srtp[localization_language_index_].c_str());
|
||||||
@@ -174,7 +207,7 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(ENABLE_SRTP_CHECKBOX_PADDING_EN);
|
ImGui::SetCursorPosX(ENABLE_SRTP_CHECKBOX_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(180);
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::Checkbox("##enable_srtp", &enable_srtp_);
|
ImGui::Checkbox("##enable_srtp", &enable_srtp_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +220,9 @@ int Render::SettingWindow() {
|
|||||||
} else {
|
} else {
|
||||||
ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_EN);
|
ImGui::SetCursorPosX(SETTINGS_OK_BUTTON_PADDING_EN);
|
||||||
}
|
}
|
||||||
ImGui::SetCursorPosY(220.0f);
|
|
||||||
|
settings_items_offset += settings_items_padding;
|
||||||
|
ImGui::SetCursorPosY(settings_items_offset);
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
|
|
||||||
// OK
|
// OK
|
||||||
|
|||||||
2
thirdparty/minirtc
vendored
2
thirdparty/minirtc
vendored
Submodule thirdparty/minirtc updated: 32359c0817...0b0416bf1b
Reference in New Issue
Block a user