Add destroy method for peer instance

This commit is contained in:
dijunkun
2024-06-06 15:09:25 +08:00
parent 460d644d64
commit 5e804349d9
3 changed files with 40 additions and 9 deletions

View File

@@ -73,6 +73,8 @@ typedef struct {
DLLAPI PeerPtr* CreatePeer(const Params* params); DLLAPI PeerPtr* CreatePeer(const Params* params);
DLLAPI void DestroyPeer(PeerPtr* peer_ptr);
DLLAPI int Init(PeerPtr* peer_ptr, const char* user_id); DLLAPI int Init(PeerPtr* peer_ptr, const char* user_id);
DLLAPI int CreateConnection(PeerPtr* peer_ptr, const char* transmission_id, DLLAPI int CreateConnection(PeerPtr* peer_ptr, const char* transmission_id,

View File

@@ -179,15 +179,15 @@ int PeerConnection::Init(PeerConnectionParams params,
nv12_data_ = new char[1280 * 720 * 3 / 2]; nv12_data_ = new char[1280 * 720 * 3 / 2];
if (0 != CreateVideoCodec(hardware_acceleration_)) { // if (0 != CreateVideoCodec(hardware_acceleration_)) {
LOG_ERROR("Create video codec failed"); // LOG_ERROR("Create video codec failed");
return -1; // return -1;
} // }
if (0 != CreateAudioCodec()) { // if (0 != CreateAudioCodec()) {
LOG_ERROR("Create audio codec failed"); // LOG_ERROR("Create audio codec failed");
return -1; // return -1;
} // }
inited_ = true; inited_ = true;
return 0; return 0;
@@ -396,6 +396,14 @@ void PeerConnection::ProcessSignal(const std::string &signal) {
} }
LOG_INFO("]"); LOG_INFO("]");
if (0 != CreateVideoCodec(hardware_acceleration_)) {
LOG_ERROR("Create video codec failed");
}
if (0 != CreateAudioCodec()) {
LOG_ERROR("Create audio codec failed");
}
for (auto &remote_user_id : user_id_list_) { for (auto &remote_user_id : user_id_list_) {
// if (remote_user_id == user_id_) { // if (remote_user_id == user_id_) {
// continue; // continue;
@@ -455,6 +463,14 @@ void PeerConnection::ProcessSignal(const std::string &signal) {
std::string remote_user_id = j["remote_user_id"].get<std::string>(); std::string remote_user_id = j["remote_user_id"].get<std::string>();
LOG_INFO("[{}] receive offer from [{}]", user_id_, remote_user_id); LOG_INFO("[{}] receive offer from [{}]", user_id_, remote_user_id);
if (0 != CreateVideoCodec(hardware_acceleration_)) {
LOG_ERROR("Create video codec failed");
}
if (0 != CreateAudioCodec()) {
LOG_ERROR("Create audio codec failed");
}
ice_transmission_list_[remote_user_id] = ice_transmission_list_[remote_user_id] =
std::make_unique<IceTransmission>(false, transmission_id, user_id_, std::make_unique<IceTransmission>(false, transmission_id, user_id_,
remote_user_id, ws_transport_, remote_user_id, ws_transport_,
@@ -529,7 +545,14 @@ int PeerConnection::RequestTransmissionMemberList(
return 0; return 0;
} }
int PeerConnection::Destroy() { return 0; } int PeerConnection::Destroy() {
ice_transmission_list_.clear();
if (nv12_data_) {
delete nv12_data_;
nv12_data_ = nullptr;
}
return 0;
}
SignalStatus PeerConnection::GetSignalStatus() { SignalStatus PeerConnection::GetSignalStatus() {
std::lock_guard<std::mutex> l(signal_status_mutex_); std::lock_guard<std::mutex> l(signal_status_mutex_);

View File

@@ -39,6 +39,12 @@ PeerPtr *CreatePeer(const Params *params) {
return peer_ptr; return peer_ptr;
} }
void DestroyPeer(PeerPtr *peer_ptr) {
peer_ptr->peer_connection->Destroy();
delete peer_ptr;
peer_ptr = nullptr;
}
int Init(PeerPtr *peer_ptr, const char *user_id) { int Init(PeerPtr *peer_ptr, const char *user_id) {
if (!peer_ptr) { if (!peer_ptr) {
LOG_ERROR("peer_ptr not created"); LOG_ERROR("peer_ptr not created");