mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-08-23 03:25:34 +08:00
Compare commits
16
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1eda6cc183 | ||
|
|
8d37f8f5fb | ||
|
|
05b8aa629e | ||
|
|
2cbceba953 | ||
|
|
89d3c8b53f | ||
|
|
51a4190e97 | ||
|
|
3737cd0dd5 | ||
|
|
00957d6740 | ||
|
|
6ec86322b2 | ||
|
|
ecc131b5ee | ||
|
|
1aa50e9ffa | ||
|
|
d49f5bc520 | ||
|
|
8818b9b8be | ||
|
|
3be283238c | ||
|
|
5d0453fff3 | ||
|
|
8a9775a571 |
@@ -29,7 +29,11 @@ int ConfigCenter::Load() {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool persist_turn_mode_migration = false;
|
bool persist_config_migration = false;
|
||||||
|
persist_config_migration |= ini_.Delete(section_, "video_content_type");
|
||||||
|
persist_config_migration |= ini_.Delete(section_, "screen_content");
|
||||||
|
persist_config_migration |=
|
||||||
|
ini_.Delete(section_, "enable_desktop_quality_optimization");
|
||||||
|
|
||||||
const long language_value =
|
const long language_value =
|
||||||
ini_.GetLongValue(section_, "language", static_cast<long>(language_));
|
ini_.GetLongValue(section_, "language", static_cast<long>(language_));
|
||||||
@@ -52,7 +56,6 @@ int ConfigCenter::Load() {
|
|||||||
|
|
||||||
hardware_video_codec_ = ini_.GetBoolValue(section_, "hardware_video_codec",
|
hardware_video_codec_ = ini_.GetBoolValue(section_, "hardware_video_codec",
|
||||||
hardware_video_codec_);
|
hardware_video_codec_);
|
||||||
|
|
||||||
const char* turn_mode_value = ini_.GetValue(section_, "turn_mode", nullptr);
|
const char* turn_mode_value = ini_.GetValue(section_, "turn_mode", nullptr);
|
||||||
if (turn_mode_value != nullptr && strlen(turn_mode_value) > 0) {
|
if (turn_mode_value != nullptr && strlen(turn_mode_value) > 0) {
|
||||||
const long parsed_turn_mode = ini_.GetLongValue(
|
const long parsed_turn_mode = ini_.GetLongValue(
|
||||||
@@ -70,7 +73,7 @@ int ConfigCenter::Load() {
|
|||||||
turn_mode_ = legacy_enable_turn ? TURN_MODE::AUTO_UDP_TCP
|
turn_mode_ = legacy_enable_turn ? TURN_MODE::AUTO_UDP_TCP
|
||||||
: TURN_MODE::DISABLED;
|
: TURN_MODE::DISABLED;
|
||||||
ini_.SetLongValue(section_, "turn_mode", static_cast<long>(turn_mode_));
|
ini_.SetLongValue(section_, "turn_mode", static_cast<long>(turn_mode_));
|
||||||
persist_turn_mode_migration = true;
|
persist_config_migration = true;
|
||||||
}
|
}
|
||||||
enable_srtp_ = ini_.GetBoolValue(section_, "enable_srtp", enable_srtp_);
|
enable_srtp_ = ini_.GetBoolValue(section_, "enable_srtp", enable_srtp_);
|
||||||
enable_self_hosted_ =
|
enable_self_hosted_ =
|
||||||
@@ -121,8 +124,7 @@ int ConfigCenter::Load() {
|
|||||||
file_transfer_save_path_ = "";
|
file_transfer_save_path_ = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (persist_turn_mode_migration &&
|
if (persist_config_migration && ini_.SaveFile(config_path_.c_str()) < 0) {
|
||||||
ini_.SaveFile(config_path_.c_str()) < 0) {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,26 @@ int SessionDeviceManager::InitializeScreenCapturer() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> connected_remote_ids;
|
||||||
|
{
|
||||||
|
std::shared_lock lock(owner_.connection_status_mutex_);
|
||||||
|
connected_remote_ids.reserve(owner_.connection_status_.size());
|
||||||
|
for (const auto &[remote_id, status] : owner_.connection_status_) {
|
||||||
|
if (status == ConnectionStatus::Connected) {
|
||||||
|
connected_remote_ids.push_back(remote_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Capture can still deliver frames while ICE is gathering or after
|
||||||
|
// the final controller disconnects. Do not broadcast those frames to
|
||||||
|
// MiniRTC: a broadcast also reaches newly joining peers whose ICE
|
||||||
|
// transport is not ready yet.
|
||||||
|
if (connected_remote_ids.empty()) {
|
||||||
|
last_frame_time_ = now_time;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const std::string stream_id = display_name ? display_name : "";
|
const std::string stream_id = display_name ? display_name : "";
|
||||||
const bool resumed_after_gap =
|
const bool resumed_after_gap =
|
||||||
last_frame_time_ != 0 && duration >= kCaptureResumeKeyFrameGapMs;
|
last_frame_time_ != 0 && duration >= kCaptureResumeKeyFrameGapMs;
|
||||||
@@ -79,7 +99,10 @@ int SessionDeviceManager::InitializeScreenCapturer() {
|
|||||||
frame.width = width;
|
frame.width = width;
|
||||||
frame.height = height;
|
frame.height = height;
|
||||||
frame.captured_timestamp = GetSystemTimeMicros(owner_.peer_);
|
frame.captured_timestamp = GetSystemTimeMicros(owner_.peer_);
|
||||||
SendVideoFrame(owner_.peer_, &frame, stream_id.c_str());
|
for (const std::string &remote_id : connected_remote_ids) {
|
||||||
|
SendVideoFrameToPeer(owner_.peer_, &frame, stream_id.c_str(),
|
||||||
|
remote_id.data(), remote_id.size());
|
||||||
|
}
|
||||||
last_video_frame_stream_id_ = stream_id;
|
last_video_frame_stream_id_ = stream_id;
|
||||||
last_frame_time_ = now_time;
|
last_frame_time_ = now_time;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -111,8 +111,14 @@ int GuiRuntime::CreateConnectionPeer() {
|
|||||||
: false;
|
: false;
|
||||||
params_.turn_mode = static_cast<TurnMode>(config_center_->GetTurnMode());
|
params_.turn_mode = static_cast<TurnMode>(config_center_->GetTurnMode());
|
||||||
params_.enable_srtp = config_center_->IsEnableSrtp();
|
params_.enable_srtp = config_center_->IsEnableSrtp();
|
||||||
|
params_.video_content_type = VideoContentType::ScreenContent;
|
||||||
params_.video_quality =
|
params_.video_quality =
|
||||||
static_cast<VideoQuality>(config_center_->GetVideoQuality());
|
static_cast<VideoQuality>(config_center_->GetVideoQuality());
|
||||||
|
params_.video_frame_rate =
|
||||||
|
config_center_->GetVideoFrameRate() ==
|
||||||
|
ConfigCenter::VIDEO_FRAME_RATE::FPS_30
|
||||||
|
? 30
|
||||||
|
: 60;
|
||||||
params_.on_receive_video_buffer = nullptr;
|
params_.on_receive_video_buffer = nullptr;
|
||||||
params_.on_receive_audio_buffer = PeerEventHandler::OnReceiveAudioBuffer;
|
params_.on_receive_audio_buffer = PeerEventHandler::OnReceiveAudioBuffer;
|
||||||
params_.on_receive_data_buffer = PeerEventHandler::OnReceiveDataBuffer;
|
params_.on_receive_data_buffer = PeerEventHandler::OnReceiveDataBuffer;
|
||||||
|
|||||||
@@ -335,7 +335,7 @@ int ScreenCapturerSckImpl::SwitchTo(int monitor_index) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ScreenCapturerSckImpl::ResetToInitialMonitor() {
|
int ScreenCapturerSckImpl::ResetToInitialMonitor() {
|
||||||
int target = initial_monitor_index_;
|
const int target = initial_monitor_index_;
|
||||||
if (display_info_list_.empty()) return -1;
|
if (display_info_list_.empty()) return -1;
|
||||||
auto display_it = display_id_map_.find(target);
|
auto display_it = display_id_map_.find(target);
|
||||||
if (display_it == display_id_map_.end()) {
|
if (display_it == display_id_map_.end()) {
|
||||||
@@ -343,13 +343,20 @@ int ScreenCapturerSckImpl::ResetToInitialMonitor() {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGDirectDisplayID target_display = display_it->second;
|
const CGDirectDisplayID target_display = display_it->second;
|
||||||
if (current_display_ == target_display) return 0;
|
bool should_reconfigure = false;
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(lock_);
|
std::lock_guard<std::mutex> lock(lock_);
|
||||||
|
if (current_display_ == target_display) return 0;
|
||||||
current_display_ = target_display;
|
current_display_ = target_display;
|
||||||
|
should_reconfigure = stream_ != nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resetting session state must not create a capture stream. Preserve the
|
||||||
|
// selected monitor for the next Start(), and only reconfigure an active one.
|
||||||
|
if (should_reconfigure) {
|
||||||
StartOrReconfigureCapturer();
|
StartOrReconfigureCapturer();
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
Submodule submodules/minirtc updated: f49cd83129...12099c4468
Reference in New Issue
Block a user