From 0047b4ecc5b851fa4f34a8d83714d0149cf41f37 Mon Sep 17 00:00:00 2001 From: dijunkun Date: Thu, 6 Jun 2024 15:11:02 +0800 Subject: [PATCH] Recreate peer instance after settings changed --- src/main_window/main_window.cpp | 47 ++++++++++++++++++++++++++++++--- thirdparty/projectx | 2 +- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/main_window/main_window.cpp b/src/main_window/main_window.cpp index 6ef439a..67cb046 100644 --- a/src/main_window/main_window.cpp +++ b/src/main_window/main_window.cpp @@ -284,8 +284,6 @@ int MainWindow::Run() { params_.on_connection_status = OnConnectionStatusCb; params_.user_data = this; - std::string transmission_id = "000001"; - peer_ = CreatePeer(¶ms_); LOG_INFO("Create peer"); std::string user_id = "S-" + mac_addr_str_; @@ -673,7 +671,7 @@ int MainWindow::Run() { if (video_encode_format_button_value_ == 0) { config_center_.SetVideoEncodeFormat( ConfigCenter::VIDEO_ENCODE_FORMAT::AV1); - } else if (video_quality_button_value_ == 1) { + } else if (video_encode_format_button_value_ == 1) { config_center_.SetVideoEncodeFormat( ConfigCenter::VIDEO_ENCODE_FORMAT::H264); } @@ -689,8 +687,45 @@ int MainWindow::Run() { enable_hardware_video_codec_last_ = enable_hardware_video_codec_; SaveSettingsIntoCacheFile(); - // To do: set encode resolution settings_window_pos_reset_ = true; + + // Recreate peer instance + LoadSettingsIntoCacheFile(); + + // Recreate peer instance + { + DestroyPeer(peer_); + + params_.use_cfg_file = false; + params_.signal_server_ip = "150.158.81.30"; + params_.signal_server_port = 9099; + params_.stun_server_ip = "150.158.81.30"; + params_.stun_server_port = 3478; + params_.turn_server_ip = "150.158.81.30"; + params_.turn_server_port = 3478; + params_.turn_server_username = "dijunkun"; + params_.turn_server_password = "dijunkunpw"; + params_.hardware_acceleration = + config_center_.IsHardwareVideoCodec(); + params_.av1_encoding = + config_center_.GetVideoEncodeFormat() == + ConfigCenter::VIDEO_ENCODE_FORMAT::AV1 + ? true + : false; + + params_.on_receive_video_buffer = OnReceiveVideoBufferCb; + params_.on_receive_audio_buffer = OnReceiveAudioBufferCb; + params_.on_receive_data_buffer = OnReceiveDataBufferCb; + params_.on_signal_status = OnSignalStatusCb; + params_.on_connection_status = OnConnectionStatusCb; + params_.user_data = this; + + peer_ = CreatePeer(¶ms_); + LOG_INFO("Rereate peer"); + std::string user_id = "S-" + mac_addr_str_; + Init(peer_, user_id.c_str()); + LOG_INFO("Peer init finish"); + } } ImGui::SameLine(); // Cancel @@ -806,6 +841,10 @@ int MainWindow::Run() { LeaveConnection(peer_); } + if (peer_) { + DestroyPeer(peer_); + } + // rtc_thread.join(); SDL_CloseAudioDevice(output_dev_); SDL_CloseAudioDevice(input_dev_); diff --git a/thirdparty/projectx b/thirdparty/projectx index 460d644..5e80434 160000 --- a/thirdparty/projectx +++ b/thirdparty/projectx @@ -1 +1 @@ -Subproject commit 460d644d649604accf1b067b5e86803cc5b6d5d8 +Subproject commit 5e804349d9195c152f40e47213cce5024d067097