Support read configure params from input directly

This commit is contained in:
dijunkun
2024-06-04 17:38:23 +08:00
parent 0adaf357ec
commit 460d644d64
4 changed files with 87 additions and 25 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;