diff --git a/src/interface/x.h b/src/interface/x.h index 3157736..a9aa73f 100644 --- a/src/interface/x.h +++ b/src/interface/x.h @@ -48,7 +48,20 @@ typedef void (*NetStatusReport)(const unsigned short, const unsigned short, void*); typedef struct { + bool use_cfg_file; const char* cfg_path; + + const char* signal_server_ip; + int signal_server_port; + const char* stun_server_ip; + int stun_server_port; + const char* turn_server_ip; + int turn_server_port; + const char* turn_server_username; + const char* turn_server_password; + bool hardware_acceleration; + bool av1_encoding; + OnReceiveBuffer on_receive_video_buffer; OnReceiveBuffer on_receive_audio_buffer; OnReceiveBuffer on_receive_data_buffer; diff --git a/src/pc/peer_connection.cpp b/src/pc/peer_connection.cpp index 396d04e..720df7f 100644 --- a/src/pc/peer_connection.cpp +++ b/src/pc/peer_connection.cpp @@ -27,44 +27,66 @@ int PeerConnection::Init(PeerConnectionParams params, // Todo: checkout user_id unique or not user_id_ = user_id; - INIReader reader(params.cfg_path); - cfg_signal_server_ip_ = reader.Get("signal server", "ip", "-1"); - cfg_signal_server_port_ = reader.Get("signal server", "port", "-1"); - cfg_stun_server_ip_ = reader.Get("stun server", "ip", "-1"); - cfg_stun_server_port_ = reader.Get("stun server", "port", "-1"); - cfg_turn_server_ip_ = reader.Get("turn server", "ip", ""); - cfg_turn_server_port_ = reader.Get("turn server", "port", "-1"); - cfg_turn_server_username_ = reader.Get("turn server", "username", ""); - cfg_turn_server_password_ = reader.Get("turn server", "password", ""); - cfg_hardware_acceleration_ = - reader.Get("hardware acceleration", "turn_on", "false"); - cfg_av1_encoding_ = reader.Get("av1 encoding", "turn_on", "false"); + if (params.use_cfg_file) { + INIReader reader(params.cfg_path); + cfg_signal_server_ip_ = reader.Get("signal server", "ip", "-1"); + cfg_signal_server_port_ = reader.Get("signal server", "port", "-1"); + cfg_stun_server_ip_ = reader.Get("stun server", "ip", "-1"); + cfg_stun_server_port_ = reader.Get("stun server", "port", "-1"); + cfg_turn_server_ip_ = reader.Get("turn server", "ip", ""); + cfg_turn_server_port_ = reader.Get("turn server", "port", "-1"); + cfg_turn_server_username_ = reader.Get("turn server", "username", ""); + cfg_turn_server_password_ = reader.Get("turn server", "password", ""); + cfg_hardware_acceleration_ = + reader.Get("hardware acceleration", "turn_on", "false"); + cfg_av1_encoding_ = reader.Get("av1 encoding", "turn_on", "false"); - std::regex regex("\n"); + std::regex regex("\n"); - LOG_INFO("Read config success"); + signal_server_port_ = stoi(cfg_signal_server_port_); + stun_server_port_ = stoi(cfg_stun_server_port_); + turn_server_port_ = stoi(cfg_turn_server_port_); - signal_server_port_ = stoi(cfg_signal_server_port_); - stun_server_port_ = stoi(cfg_stun_server_port_); - turn_server_port_ = stoi(cfg_turn_server_port_); + hardware_acceleration_ = + cfg_hardware_acceleration_ == "true" ? true : false; + av1_encoding_ = cfg_av1_encoding_ == "true" ? true : false; - LOG_INFO("stun server ip [{}] port [{}]", cfg_stun_server_ip_, - stun_server_port_); + } else { + cfg_signal_server_ip_ = params.signal_server_ip; + signal_server_port_ = params.signal_server_port; + cfg_stun_server_ip_ = params.stun_server_ip; + stun_server_port_ = params.stun_server_port; + cfg_turn_server_ip_ = params.turn_server_ip; + turn_server_port_ = params.turn_server_port; + cfg_turn_server_username_ = params.turn_server_username; + cfg_turn_server_password_ = params.turn_server_password; + hardware_acceleration_ = params.hardware_acceleration; + av1_encoding_ = params.av1_encoding; + + cfg_signal_server_port_ = std::to_string(signal_server_port_); + cfg_stun_server_port_ = std::to_string(stun_server_port_); + cfg_turn_server_port_ = std::to_string(turn_server_port_); + } + + LOG_INFO("Read config success, use configure file [{}]", params.use_cfg_file); + + LOG_INFO("Signal server ip [{}] port [{}]", cfg_signal_server_ip_, + cfg_signal_server_port_); + + LOG_INFO("Stun server ip [{}] port [{}]", cfg_stun_server_ip_, + cfg_stun_server_port_); if (!cfg_turn_server_ip_.empty() && 0 != turn_server_port_ && !cfg_turn_server_username_.empty() && !cfg_turn_server_password_.empty()) { - LOG_INFO("turn server ip [{}] port [{}] username [{}] password [{}]", + LOG_INFO("Turn server ip [{}] port [{}] username [{}] password [{}]", cfg_turn_server_ip_, turn_server_port_, cfg_turn_server_username_, cfg_turn_server_password_); } - hardware_acceleration_ = cfg_hardware_acceleration_ == "true" ? true : false; LOG_INFO("Hardware accelerated codec [{}]", hardware_acceleration_ ? "ON" : "OFF"); - - av1_encoding_ = cfg_av1_encoding_ == "true" ? true : false; - LOG_INFO("av1 encoding [{}]", av1_encoding_ ? "ON" : "OFF"); + LOG_INFO("AV1 encoding [{}]", av1_encoding_ ? "ON" : "OFF"); on_receive_video_buffer_ = params.on_receive_video_buffer; on_receive_audio_buffer_ = params.on_receive_audio_buffer; diff --git a/src/pc/peer_connection.h b/src/pc/peer_connection.h index 56ab294..e2a3d7c 100644 --- a/src/pc/peer_connection.h +++ b/src/pc/peer_connection.h @@ -24,7 +24,20 @@ typedef void (*NetStatusReport)(const unsigned short, const unsigned short, void *); typedef struct { + bool use_cfg_file; const char *cfg_path; + + const char *signal_server_ip; + int signal_server_port; + const char *stun_server_ip; + int stun_server_port; + const char *turn_server_ip; + int turn_server_port; + const char *turn_server_username; + const char *turn_server_password; + bool hardware_acceleration; + bool av1_encoding; + OnReceiveBuffer on_receive_video_buffer; OnReceiveBuffer on_receive_audio_buffer; OnReceiveBuffer on_receive_data_buffer; diff --git a/src/rtc/x_inner.cpp b/src/rtc/x_inner.cpp index 11e1b91..a7bd350 100644 --- a/src/rtc/x_inner.cpp +++ b/src/rtc/x_inner.cpp @@ -13,7 +13,21 @@ using nlohmann::json; PeerPtr *CreatePeer(const Params *params) { PeerPtr *peer_ptr = new PeerPtr; peer_ptr->peer_connection = new PeerConnection(); - peer_ptr->pc_params.cfg_path = params->cfg_path; + peer_ptr->pc_params.use_cfg_file = params->use_cfg_file; + if (params->use_cfg_file) { + peer_ptr->pc_params.cfg_path = params->cfg_path; + } else { + peer_ptr->pc_params.signal_server_ip = params->signal_server_ip; + peer_ptr->pc_params.signal_server_port = params->signal_server_port; + peer_ptr->pc_params.stun_server_ip = params->stun_server_ip; + peer_ptr->pc_params.stun_server_port = params->stun_server_port; + peer_ptr->pc_params.turn_server_ip = params->turn_server_ip; + peer_ptr->pc_params.turn_server_port = params->turn_server_port; + peer_ptr->pc_params.turn_server_username = params->turn_server_username; + peer_ptr->pc_params.turn_server_password = params->turn_server_password; + peer_ptr->pc_params.hardware_acceleration = params->hardware_acceleration; + peer_ptr->pc_params.av1_encoding = params->av1_encoding; + } peer_ptr->pc_params.on_receive_video_buffer = params->on_receive_video_buffer; peer_ptr->pc_params.on_receive_audio_buffer = params->on_receive_audio_buffer; peer_ptr->pc_params.on_receive_data_buffer = params->on_receive_data_buffer;