mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-27 04:35:34 +08:00
[fix] fix send error when ice state change from ready to connected
This commit is contained in:
@@ -51,8 +51,8 @@ int IceAgent::CreateIceAgent(nice_cb_state_changed_t on_state_changed,
|
|||||||
agent_ = nice_agent_new_full(
|
agent_ = nice_agent_new_full(
|
||||||
g_main_loop_get_context(gloop_), NICE_COMPATIBILITY_RFC5245,
|
g_main_loop_get_context(gloop_), NICE_COMPATIBILITY_RFC5245,
|
||||||
(NiceAgentOption)(trickle_ice_ ? NICE_AGENT_OPTION_ICE_TRICKLE |
|
(NiceAgentOption)(trickle_ice_ ? NICE_AGENT_OPTION_ICE_TRICKLE |
|
||||||
NICE_AGENT_OPTION_RELIABLE
|
NICE_AGENT_OPTION_NONE
|
||||||
: NICE_AGENT_OPTION_RELIABLE));
|
: NICE_AGENT_OPTION_NONE));
|
||||||
|
|
||||||
if (agent_ == nullptr) {
|
if (agent_ == nullptr) {
|
||||||
LOG_ERROR("Failed to create agent_");
|
LOG_ERROR("Failed to create agent_");
|
||||||
@@ -250,6 +250,6 @@ int IceAgent::Send(const char *data, size_t size) {
|
|||||||
// return -1;
|
// return -1;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
nice_agent_send(agent_, stream_id_, 1, size, data);
|
int ret = nice_agent_send(agent_, stream_id_, 1, size, data);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -54,7 +54,10 @@ int IceTransmission::InitIceTransmission(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state_ != NICE_COMPONENT_STATE_READY) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
|
nice_component_state_to_string(state_));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,8 +81,10 @@ int IceTransmission::InitIceTransmission(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state_ != NICE_COMPONENT_STATE_READY) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
LOG_ERROR("Ice is not ready");
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
|
nice_component_state_to_string(state_));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +108,10 @@ int IceTransmission::InitIceTransmission(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state_ != NICE_COMPONENT_STATE_READY) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
|
nice_component_state_to_string(state_));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +128,10 @@ int IceTransmission::InitIceTransmission(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state_ != NICE_COMPONENT_STATE_READY) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
|
nice_component_state_to_string(state_));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +148,10 @@ int IceTransmission::InitIceTransmission(
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state_ != NICE_COMPONENT_STATE_READY) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
|
nice_component_state_to_string(state_));
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,49 +359,61 @@ int IceTransmission::SendAnswer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int IceTransmission::SendData(DATA_TYPE type, const char *data, size_t size) {
|
int IceTransmission::SendData(DATA_TYPE type, const char *data, size_t size) {
|
||||||
if (NiceComponentState::NICE_COMPONENT_STATE_READY == state_) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
std::vector<RtpPacket> packets;
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
|
nice_component_state_to_string(state_));
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
if (DATA_TYPE::VIDEO == type) {
|
std::vector<RtpPacket> packets;
|
||||||
if (rtp_video_sender_) {
|
|
||||||
if (video_rtp_codec_) {
|
if (DATA_TYPE::VIDEO == type) {
|
||||||
video_rtp_codec_->Encode((uint8_t *)data, size, packets);
|
if (rtp_video_sender_) {
|
||||||
}
|
if (video_rtp_codec_) {
|
||||||
rtp_video_sender_->Enqueue(packets);
|
video_rtp_codec_->Encode((uint8_t *)data, size, packets);
|
||||||
}
|
}
|
||||||
} else if (DATA_TYPE::AUDIO == type) {
|
rtp_video_sender_->Enqueue(packets);
|
||||||
if (rtp_audio_sender_) {
|
}
|
||||||
if (audio_rtp_codec_) {
|
} else if (DATA_TYPE::AUDIO == type) {
|
||||||
audio_rtp_codec_->Encode((uint8_t *)data, size, packets);
|
if (rtp_audio_sender_) {
|
||||||
rtp_audio_sender_->Enqueue(packets);
|
if (audio_rtp_codec_) {
|
||||||
}
|
audio_rtp_codec_->Encode((uint8_t *)data, size, packets);
|
||||||
|
rtp_audio_sender_->Enqueue(packets);
|
||||||
}
|
}
|
||||||
} else if (DATA_TYPE::DATA == type) {
|
}
|
||||||
if (rtp_data_sender_) {
|
} else if (DATA_TYPE::DATA == type) {
|
||||||
if (data_rtp_codec_) {
|
if (rtp_data_sender_) {
|
||||||
data_rtp_codec_->Encode((uint8_t *)data, size, packets);
|
if (data_rtp_codec_) {
|
||||||
rtp_data_sender_->Enqueue(packets);
|
data_rtp_codec_->Encode((uint8_t *)data, size, packets);
|
||||||
}
|
rtp_data_sender_->Enqueue(packets);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int IceTransmission::SendVideoData(VideoFrameType frame_type, const char *data,
|
int IceTransmission::SendVideoData(VideoFrameType frame_type, const char *data,
|
||||||
size_t size) {
|
size_t size) {
|
||||||
if (NiceComponentState::NICE_COMPONENT_STATE_READY == state_) {
|
if (state_ != NICE_COMPONENT_STATE_CONNECTED &&
|
||||||
std::vector<RtpPacket> packets;
|
state_ != NICE_COMPONENT_STATE_READY) {
|
||||||
|
LOG_ERROR("Ice is not connected, state = [{}]",
|
||||||
if (rtp_video_sender_) {
|
nice_component_state_to_string(state_));
|
||||||
if (video_rtp_codec_) {
|
return -2;
|
||||||
video_rtp_codec_->Encode(
|
|
||||||
static_cast<RtpCodec::VideoFrameType>(frame_type), (uint8_t *)data,
|
|
||||||
size, packets);
|
|
||||||
}
|
|
||||||
rtp_video_sender_->Enqueue(packets);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<RtpPacket> packets;
|
||||||
|
|
||||||
|
if (rtp_video_sender_) {
|
||||||
|
if (video_rtp_codec_) {
|
||||||
|
video_rtp_codec_->Encode(
|
||||||
|
static_cast<RtpCodec::VideoFrameType>(frame_type), (uint8_t *)data,
|
||||||
|
size, packets);
|
||||||
|
}
|
||||||
|
rtp_video_sender_->Enqueue(packets);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user