aboutsummaryrefslogtreecommitdiff
path: root/pc/channel.cc
diff options
context:
space:
mode:
Diffstat (limited to 'pc/channel.cc')
-rw-r--r--pc/channel.cc234
1 files changed, 152 insertions, 82 deletions
diff --git a/pc/channel.cc b/pc/channel.cc
index f83f5cdd9a..e7f62c6aa6 100644
--- a/pc/channel.cc
+++ b/pc/channel.cc
@@ -16,7 +16,6 @@
#include "absl/algorithm/container.h"
#include "absl/memory/memory.h"
#include "api/call/audio_sink.h"
-#include "api/transport/media/media_transport_config.h"
#include "media/base/media_constants.h"
#include "media/base/rtp_utils.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
@@ -142,7 +141,7 @@ BaseChannel::BaseChannel(rtc::Thread* worker_thread,
RTC_DCHECK_RUN_ON(worker_thread_);
RTC_DCHECK(ssrc_generator_);
demuxer_criteria_.mid = content_name;
- RTC_LOG(LS_INFO) << "Created channel for " << content_name;
+ RTC_LOG(LS_INFO) << "Created channel: " << ToString();
}
BaseChannel::~BaseChannel() {
@@ -156,12 +155,23 @@ BaseChannel::~BaseChannel() {
// the media channel may try to send on the dead transport channel. NULLing
// is not an effective strategy since the sends will come on another thread.
media_channel_.reset();
- RTC_LOG(LS_INFO) << "Destroyed channel: " << content_name_;
+ RTC_LOG(LS_INFO) << "Destroyed channel: " << ToString();
+}
+
+std::string BaseChannel::ToString() const {
+ rtc::StringBuilder sb;
+ sb << "{mid: " << content_name_;
+ if (media_channel_) {
+ sb << ", media_type: " << MediaTypeToString(media_channel_->media_type());
+ }
+ sb << "}";
+ return sb.Release();
}
bool BaseChannel::ConnectToRtpTransport() {
RTC_DCHECK(rtp_transport_);
if (!RegisterRtpDemuxerSink()) {
+ RTC_LOG(LS_ERROR) << "Failed to set up demuxing for " << ToString();
return false;
}
rtp_transport_->SignalReadyToSend.connect(
@@ -184,24 +194,20 @@ void BaseChannel::DisconnectFromRtpTransport() {
rtp_transport_->SignalSentPacket.disconnect(this);
}
-void BaseChannel::Init_w(
- webrtc::RtpTransportInternal* rtp_transport,
- const webrtc::MediaTransportConfig& media_transport_config) {
+void BaseChannel::Init_w(webrtc::RtpTransportInternal* rtp_transport) {
RTC_DCHECK_RUN_ON(worker_thread_);
- media_transport_config_ = media_transport_config;
network_thread_->Invoke<void>(
RTC_FROM_HERE, [this, rtp_transport] { SetRtpTransport(rtp_transport); });
// Both RTP and RTCP channels should be set, we can call SetInterface on
// the media channel and it can set network options.
- media_channel_->SetInterface(this, media_transport_config);
+ media_channel_->SetInterface(this);
}
void BaseChannel::Deinit() {
RTC_DCHECK(worker_thread_->IsCurrent());
- media_channel_->SetInterface(/*iface=*/nullptr,
- webrtc::MediaTransportConfig());
+ media_channel_->SetInterface(/*iface=*/nullptr);
// Packets arrive on the network thread, processing packets calls virtual
// functions, so need to stop this process in Deinit that is called in
// derived classes destructor.
@@ -237,7 +243,8 @@ bool BaseChannel::SetRtpTransport(webrtc::RtpTransportInternal* rtp_transport) {
transport_name_ = rtp_transport_->transport_name();
if (!ConnectToRtpTransport()) {
- RTC_LOG(LS_ERROR) << "Failed to connect to the new RtpTransport.";
+ RTC_LOG(LS_ERROR) << "Failed to connect to the new RtpTransport for "
+ << ToString() << ".";
return false;
}
OnTransportReadyToSend(rtp_transport_->IsReadyToSend());
@@ -349,7 +356,7 @@ void BaseChannel::OnWritableState(bool writable) {
void BaseChannel::OnNetworkRouteChanged(
absl::optional<rtc::NetworkRoute> network_route) {
- RTC_LOG(LS_INFO) << "Network route was changed.";
+ RTC_LOG(LS_INFO) << "Network route for " << ToString() << " was changed.";
RTC_DCHECK(network_thread_->IsCurrent());
rtc::NetworkRoute new_route;
@@ -404,7 +411,7 @@ bool BaseChannel::SendPacket(bool rtcp,
// Protect ourselves against crazy data.
if (!IsValidRtpPacketSize(packet_type, packet->size())) {
- RTC_LOG(LS_ERROR) << "Dropping outgoing " << content_name_ << " "
+ RTC_LOG(LS_ERROR) << "Dropping outgoing " << ToString() << " "
<< RtpPacketTypeToString(packet_type)
<< " packet: wrong size=" << packet->size();
return false;
@@ -420,16 +427,16 @@ bool BaseChannel::SendPacket(bool rtcp,
}
// However, there shouldn't be any RTP packets sent before SRTP is set up
// (and SetSend(true) is called).
- RTC_LOG(LS_ERROR)
- << "Can't send outgoing RTP packet when SRTP is inactive"
- " and crypto is required";
+ RTC_LOG(LS_ERROR) << "Can't send outgoing RTP packet for " << ToString()
+ << " when SRTP is inactive and crypto is required";
RTC_NOTREACHED();
return false;
}
std::string packet_type = rtcp ? "RTCP" : "RTP";
RTC_LOG(LS_WARNING) << "Sending an " << packet_type
- << " packet without encryption.";
+ << " packet without encryption for " << ToString()
+ << ".";
}
// Bon voyage.
@@ -463,7 +470,8 @@ void BaseChannel::OnRtpPacket(const webrtc::RtpPacketReceived& parsed_packet) {
// for us to just eat packets here. This is all sidestepped if RTCP mux
// is used anyway.
RTC_LOG(LS_WARNING) << "Can't process incoming RTP packet when "
- "SRTP is inactive and crypto is required";
+ "SRTP is inactive and crypto is required "
+ << ToString();
return;
}
@@ -504,7 +512,7 @@ void BaseChannel::EnableMedia_w() {
if (enabled_)
return;
- RTC_LOG(LS_INFO) << "Channel enabled";
+ RTC_LOG(LS_INFO) << "Channel enabled: " << ToString();
enabled_ = true;
UpdateMediaSendRecvState_w();
}
@@ -514,7 +522,7 @@ void BaseChannel::DisableMedia_w() {
if (!enabled_)
return;
- RTC_LOG(LS_INFO) << "Channel disabled";
+ RTC_LOG(LS_INFO) << "Channel disabled: " << ToString();
enabled_ = false;
UpdateMediaSendRecvState_w();
}
@@ -534,7 +542,7 @@ void BaseChannel::ChannelWritable_n() {
return;
}
- RTC_LOG(LS_INFO) << "Channel writable (" << content_name_ << ")"
+ RTC_LOG(LS_INFO) << "Channel writable (" << ToString() << ")"
<< (was_ever_writable_ ? "" : " for the first time");
was_ever_writable_ = true;
@@ -547,7 +555,7 @@ void BaseChannel::ChannelNotWritable_n() {
if (!writable_)
return;
- RTC_LOG(LS_INFO) << "Channel not writable (" << content_name_ << ")";
+ RTC_LOG(LS_INFO) << "Channel not writable (" << ToString() << ")";
writable_ = false;
UpdateMediaSendRecvState();
}
@@ -591,7 +599,8 @@ bool BaseChannel::UpdateLocalStreams_w(const std::vector<StreamParams>& streams,
if (!media_channel()->RemoveSendStream(old_stream.first_ssrc())) {
rtc::StringBuilder desc;
desc << "Failed to remove send stream with ssrc "
- << old_stream.first_ssrc() << ".";
+ << old_stream.first_ssrc() << " from m-section with mid='"
+ << content_name() << "'.";
SafeSetError(desc.str(), error_desc);
ret = false;
}
@@ -617,7 +626,8 @@ bool BaseChannel::UpdateLocalStreams_w(const std::vector<StreamParams>& streams,
if (new_stream.has_ssrcs() && new_stream.has_rids()) {
rtc::StringBuilder desc;
desc << "Failed to add send stream: " << new_stream.first_ssrc()
- << ". Stream has both SSRCs and RIDs.";
+ << " into m-section with mid='" << content_name()
+ << "'. Stream has both SSRCs and RIDs.";
SafeSetError(desc.str(), error_desc);
ret = false;
continue;
@@ -632,10 +642,12 @@ bool BaseChannel::UpdateLocalStreams_w(const std::vector<StreamParams>& streams,
}
if (media_channel()->AddSendStream(new_stream)) {
- RTC_LOG(LS_INFO) << "Add send stream ssrc: " << new_stream.ssrcs[0];
+ RTC_LOG(LS_INFO) << "Add send stream ssrc: " << new_stream.ssrcs[0]
+ << " into " << ToString();
} else {
rtc::StringBuilder desc;
- desc << "Failed to add send stream ssrc: " << new_stream.first_ssrc();
+ desc << "Failed to add send stream ssrc: " << new_stream.first_ssrc()
+ << " into m-section with mid='" << content_name() << "'";
SafeSetError(desc.str(), error_desc);
ret = false;
}
@@ -655,15 +667,18 @@ bool BaseChannel::UpdateRemoteStreams_w(
// the unsignaled stream params that are cached.
if (!old_stream.has_ssrcs() && !HasStreamWithNoSsrcs(streams)) {
ResetUnsignaledRecvStream_w();
- RTC_LOG(LS_INFO) << "Reset unsignaled remote stream.";
+ RTC_LOG(LS_INFO) << "Reset unsignaled remote stream for " << ToString()
+ << ".";
} else if (old_stream.has_ssrcs() &&
!GetStreamBySsrc(streams, old_stream.first_ssrc())) {
if (RemoveRecvStream_w(old_stream.first_ssrc())) {
- RTC_LOG(LS_INFO) << "Remove remote ssrc: " << old_stream.first_ssrc();
+ RTC_LOG(LS_INFO) << "Remove remote ssrc: " << old_stream.first_ssrc()
+ << " from " << ToString() << ".";
} else {
rtc::StringBuilder desc;
desc << "Failed to remove remote stream with ssrc "
- << old_stream.first_ssrc() << ".";
+ << old_stream.first_ssrc() << " from m-section with mid='"
+ << content_name() << "'.";
SafeSetError(desc.str(), error_desc);
ret = false;
}
@@ -681,13 +696,15 @@ bool BaseChannel::UpdateRemoteStreams_w(
RTC_LOG(LS_INFO) << "Add remote ssrc: "
<< (new_stream.has_ssrcs()
? std::to_string(new_stream.first_ssrc())
- : "unsignaled");
+ : "unsignaled")
+ << " to " << ToString();
} else {
rtc::StringBuilder desc;
desc << "Failed to add remote stream ssrc: "
<< (new_stream.has_ssrcs()
? std::to_string(new_stream.first_ssrc())
- : "unsignaled");
+ : "unsignaled")
+ << " to " << ToString();
SafeSetError(desc.str(), error_desc);
ret = false;
}
@@ -697,7 +714,9 @@ bool BaseChannel::UpdateRemoteStreams_w(
new_stream.ssrcs.end());
}
// Re-register the sink to update the receiving ssrcs.
- RegisterRtpDemuxerSink();
+ if (!RegisterRtpDemuxerSink()) {
+ RTC_LOG(LS_ERROR) << "Failed to set up demuxing for " << ToString();
+ }
remote_streams_ = streams;
return ret;
}
@@ -796,10 +815,8 @@ void BaseChannel::UpdateMediaSendRecvState() {
[this] { UpdateMediaSendRecvState_w(); });
}
-void VoiceChannel::Init_w(
- webrtc::RtpTransportInternal* rtp_transport,
- const webrtc::MediaTransportConfig& media_transport_config) {
- BaseChannel::Init_w(rtp_transport, media_transport_config);
+void VoiceChannel::Init_w(webrtc::RtpTransportInternal* rtp_transport) {
+ BaseChannel::Init_w(rtp_transport);
}
void VoiceChannel::UpdateMediaSendRecvState_w() {
@@ -813,7 +830,8 @@ void VoiceChannel::UpdateMediaSendRecvState_w() {
bool send = IsReadyToSendMedia_w();
media_channel()->SetSend(send);
- RTC_LOG(LS_INFO) << "Changing voice state, recv=" << recv << " send=" << send;
+ RTC_LOG(LS_INFO) << "Changing voice state, recv=" << recv << " send=" << send
+ << " for " << ToString();
}
bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content,
@@ -821,7 +839,7 @@ bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content,
std::string* error_desc) {
TRACE_EVENT0("webrtc", "VoiceChannel::SetLocalContent_w");
RTC_DCHECK_RUN_ON(worker_thread());
- RTC_LOG(LS_INFO) << "Setting local voice description";
+ RTC_LOG(LS_INFO) << "Setting local voice description for " << ToString();
RTC_DCHECK(content);
if (!content) {
@@ -841,8 +859,11 @@ bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content,
audio, rtp_header_extensions,
webrtc::RtpTransceiverDirectionHasRecv(audio->direction()), &recv_params);
if (!media_channel()->SetRecvParameters(recv_params)) {
- SafeSetError("Failed to set local audio description recv parameters.",
- error_desc);
+ SafeSetError(
+ "Failed to set local audio description recv parameters for m-section "
+ "with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -852,7 +873,7 @@ bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content,
}
// Need to re-register the sink to update the handled payload.
if (!RegisterRtpDemuxerSink()) {
- RTC_LOG(LS_ERROR) << "Failed to set up audio demuxing.";
+ RTC_LOG(LS_ERROR) << "Failed to set up audio demuxing for " << ToString();
return false;
}
}
@@ -864,7 +885,11 @@ bool VoiceChannel::SetLocalContent_w(const MediaContentDescription* content,
// description too (without a remote description, we won't be able
// to send them anyway).
if (!UpdateLocalStreams_w(audio->streams(), type, error_desc)) {
- SafeSetError("Failed to set local audio description streams.", error_desc);
+ SafeSetError(
+ "Failed to set local audio description streams for m-section with "
+ "mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -878,7 +903,7 @@ bool VoiceChannel::SetRemoteContent_w(const MediaContentDescription* content,
std::string* error_desc) {
TRACE_EVENT0("webrtc", "VoiceChannel::SetRemoteContent_w");
RTC_DCHECK_RUN_ON(worker_thread());
- RTC_LOG(LS_INFO) << "Setting remote voice description";
+ RTC_LOG(LS_INFO) << "Setting remote voice description for " << ToString();
RTC_DCHECK(content);
if (!content) {
@@ -899,18 +924,22 @@ bool VoiceChannel::SetRemoteContent_w(const MediaContentDescription* content,
bool parameters_applied = media_channel()->SetSendParameters(send_params);
if (!parameters_applied) {
- SafeSetError("Failed to set remote audio description send parameters.",
- error_desc);
+ SafeSetError(
+ "Failed to set remote audio description send parameters for m-section "
+ "with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
last_send_params_ = send_params;
if (!webrtc::RtpTransceiverDirectionHasSend(content->direction())) {
RTC_DLOG(LS_VERBOSE) << "SetRemoteContent_w: remote side will not send - "
- "disable payload type demuxing";
+ "disable payload type demuxing for "
+ << ToString();
ClearHandledPayloadTypes();
if (!RegisterRtpDemuxerSink()) {
- RTC_LOG(LS_ERROR) << "Failed to update audio demuxing.";
+ RTC_LOG(LS_ERROR) << "Failed to update audio demuxing for " << ToString();
return false;
}
}
@@ -920,7 +949,11 @@ bool VoiceChannel::SetRemoteContent_w(const MediaContentDescription* content,
// description too (without a local description, we won't be able to
// recv them anyway).
if (!UpdateRemoteStreams_w(audio->streams(), type, error_desc)) {
- SafeSetError("Failed to set remote audio description streams.", error_desc);
+ SafeSetError(
+ "Failed to set remote audio description streams for m-section with "
+ "mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -958,11 +991,12 @@ void VideoChannel::UpdateMediaSendRecvState_w() {
// and we have had some form of connectivity.
bool send = IsReadyToSendMedia_w();
if (!media_channel()->SetSend(send)) {
- RTC_LOG(LS_ERROR) << "Failed to SetSend on video channel";
+ RTC_LOG(LS_ERROR) << "Failed to SetSend on video channel: " + ToString();
// TODO(gangji): Report error back to server.
}
- RTC_LOG(LS_INFO) << "Changing video state, send=" << send;
+ RTC_LOG(LS_INFO) << "Changing video state, send=" << send << " for "
+ << ToString();
}
void VideoChannel::FillBitrateInfo(BandwidthEstimationInfo* bwe_info) {
@@ -975,7 +1009,7 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content,
std::string* error_desc) {
TRACE_EVENT0("webrtc", "VideoChannel::SetLocalContent_w");
RTC_DCHECK_RUN_ON(worker_thread());
- RTC_LOG(LS_INFO) << "Setting local video description";
+ RTC_LOG(LS_INFO) << "Setting local video description for " << ToString();
RTC_DCHECK(content);
if (!content) {
@@ -1007,7 +1041,9 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content,
needs_send_params_update = true;
} else if (recv_codec->packetization != send_codec.packetization) {
SafeSetError(
- "Failed to set local answer due to invalid codec packetization.",
+ "Failed to set local answer due to invalid codec packetization "
+ "specified in m-section with mid='" +
+ content_name() + "'.",
error_desc);
return false;
}
@@ -1016,8 +1052,11 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content,
}
if (!media_channel()->SetRecvParameters(recv_params)) {
- SafeSetError("Failed to set local video description recv parameters.",
- error_desc);
+ SafeSetError(
+ "Failed to set local video description recv parameters for m-section "
+ "with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -1027,7 +1066,7 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content,
}
// Need to re-register the sink to update the handled payload.
if (!RegisterRtpDemuxerSink()) {
- RTC_LOG(LS_ERROR) << "Failed to set up video demuxing.";
+ RTC_LOG(LS_ERROR) << "Failed to set up video demuxing for " << ToString();
return false;
}
}
@@ -1036,7 +1075,9 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content,
if (needs_send_params_update) {
if (!media_channel()->SetSendParameters(send_params)) {
- SafeSetError("Failed to set send parameters.", error_desc);
+ SafeSetError("Failed to set send parameters for m-section with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
last_send_params_ = send_params;
@@ -1047,7 +1088,11 @@ bool VideoChannel::SetLocalContent_w(const MediaContentDescription* content,
// description too (without a remote description, we won't be able
// to send them anyway).
if (!UpdateLocalStreams_w(video->streams(), type, error_desc)) {
- SafeSetError("Failed to set local video description streams.", error_desc);
+ SafeSetError(
+ "Failed to set local video description streams for m-section with "
+ "mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -1061,7 +1106,7 @@ bool VideoChannel::SetRemoteContent_w(const MediaContentDescription* content,
std::string* error_desc) {
TRACE_EVENT0("webrtc", "VideoChannel::SetRemoteContent_w");
RTC_DCHECK_RUN_ON(worker_thread());
- RTC_LOG(LS_INFO) << "Setting remote video description";
+ RTC_LOG(LS_INFO) << "Setting remote video description for " << ToString();
RTC_DCHECK(content);
if (!content) {
@@ -1095,7 +1140,9 @@ bool VideoChannel::SetRemoteContent_w(const MediaContentDescription* content,
needs_recv_params_update = true;
} else if (send_codec->packetization != recv_codec.packetization) {
SafeSetError(
- "Failed to set remote answer due to invalid codec packetization.",
+ "Failed to set remote answer due to invalid codec packetization "
+ "specifid in m-section with mid='" +
+ content_name() + "'.",
error_desc);
return false;
}
@@ -1104,15 +1151,20 @@ bool VideoChannel::SetRemoteContent_w(const MediaContentDescription* content,
}
if (!media_channel()->SetSendParameters(send_params)) {
- SafeSetError("Failed to set remote video description send parameters.",
- error_desc);
+ SafeSetError(
+ "Failed to set remote video description send parameters for m-section "
+ "with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
last_send_params_ = send_params;
if (needs_recv_params_update) {
if (!media_channel()->SetRecvParameters(recv_params)) {
- SafeSetError("Failed to set recv parameters.", error_desc);
+ SafeSetError("Failed to set recv parameters for m-section with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
last_recv_params_ = recv_params;
@@ -1120,10 +1172,11 @@ bool VideoChannel::SetRemoteContent_w(const MediaContentDescription* content,
if (!webrtc::RtpTransceiverDirectionHasSend(content->direction())) {
RTC_DLOG(LS_VERBOSE) << "SetRemoteContent_w: remote side will not send - "
- "disable payload type demuxing";
+ "disable payload type demuxing for "
+ << ToString();
ClearHandledPayloadTypes();
if (!RegisterRtpDemuxerSink()) {
- RTC_LOG(LS_ERROR) << "Failed to update video demuxing.";
+ RTC_LOG(LS_ERROR) << "Failed to update video demuxing for " << ToString();
return false;
}
}
@@ -1133,7 +1186,11 @@ bool VideoChannel::SetRemoteContent_w(const MediaContentDescription* content,
// description too (without a local description, we won't be able to
// recv them anyway).
if (!UpdateRemoteStreams_w(video->streams(), type, error_desc)) {
- SafeSetError("Failed to set remote video description streams.", error_desc);
+ SafeSetError(
+ "Failed to set remote video description streams for m-section with "
+ "mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
set_remote_content_direction(content->direction());
@@ -1165,10 +1222,8 @@ RtpDataChannel::~RtpDataChannel() {
Deinit();
}
-void RtpDataChannel::Init_w(
- webrtc::RtpTransportInternal* rtp_transport,
- const webrtc::MediaTransportConfig& media_transport_config) {
- BaseChannel::Init_w(rtp_transport, media_transport_config);
+void RtpDataChannel::Init_w(webrtc::RtpTransportInternal* rtp_transport) {
+ BaseChannel::Init_w(rtp_transport);
media_channel()->SignalDataReceived.connect(this,
&RtpDataChannel::OnDataReceived);
media_channel()->SignalReadyToSend.connect(
@@ -1203,7 +1258,7 @@ bool RtpDataChannel::SetLocalContent_w(const MediaContentDescription* content,
std::string* error_desc) {
TRACE_EVENT0("webrtc", "RtpDataChannel::SetLocalContent_w");
RTC_DCHECK_RUN_ON(worker_thread());
- RTC_LOG(LS_INFO) << "Setting local data description";
+ RTC_LOG(LS_INFO) << "Setting local data description for " << ToString();
RTC_DCHECK(content);
if (!content) {
@@ -1224,8 +1279,11 @@ bool RtpDataChannel::SetLocalContent_w(const MediaContentDescription* content,
data, rtp_header_extensions,
webrtc::RtpTransceiverDirectionHasRecv(data->direction()), &recv_params);
if (!media_channel()->SetRecvParameters(recv_params)) {
- SafeSetError("Failed to set remote data description recv parameters.",
- error_desc);
+ SafeSetError(
+ "Failed to set remote data description recv parameters for m-section "
+ "with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
for (const DataCodec& codec : data->codecs()) {
@@ -1233,7 +1291,7 @@ bool RtpDataChannel::SetLocalContent_w(const MediaContentDescription* content,
}
// Need to re-register the sink to update the handled payload.
if (!RegisterRtpDemuxerSink()) {
- RTC_LOG(LS_ERROR) << "Failed to set up data demuxing.";
+ RTC_LOG(LS_ERROR) << "Failed to set up data demuxing for " << ToString();
return false;
}
@@ -1244,7 +1302,11 @@ bool RtpDataChannel::SetLocalContent_w(const MediaContentDescription* content,
// description too (without a remote description, we won't be able
// to send them anyway).
if (!UpdateLocalStreams_w(data->streams(), type, error_desc)) {
- SafeSetError("Failed to set local data description streams.", error_desc);
+ SafeSetError(
+ "Failed to set local data description streams for m-section with "
+ "mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -1258,7 +1320,7 @@ bool RtpDataChannel::SetRemoteContent_w(const MediaContentDescription* content,
std::string* error_desc) {
TRACE_EVENT0("webrtc", "RtpDataChannel::SetRemoteContent_w");
RTC_DCHECK_RUN_ON(worker_thread());
- RTC_LOG(LS_INFO) << "Setting remote data description";
+ RTC_LOG(LS_INFO) << "Setting remote data description for " << ToString();
RTC_DCHECK(content);
if (!content) {
@@ -1280,14 +1342,17 @@ bool RtpDataChannel::SetRemoteContent_w(const MediaContentDescription* content,
RtpHeaderExtensions rtp_header_extensions =
GetFilteredRtpHeaderExtensions(data->rtp_header_extensions());
- RTC_LOG(LS_INFO) << "Setting remote data description";
+ RTC_LOG(LS_INFO) << "Setting remote data description for " << ToString();
DataSendParameters send_params = last_send_params_;
RtpSendParametersFromMediaDescription<DataCodec>(
data, rtp_header_extensions,
webrtc::RtpTransceiverDirectionHasRecv(data->direction()), &send_params);
if (!media_channel()->SetSendParameters(send_params)) {
- SafeSetError("Failed to set remote data description send parameters.",
- error_desc);
+ SafeSetError(
+ "Failed to set remote data description send parameters for m-section "
+ "with mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
last_send_params_ = send_params;
@@ -1297,7 +1362,11 @@ bool RtpDataChannel::SetRemoteContent_w(const MediaContentDescription* content,
// description too (without a local description, we won't be able to
// recv them anyway).
if (!UpdateRemoteStreams_w(data->streams(), type, error_desc)) {
- SafeSetError("Failed to set remote data description streams.", error_desc);
+ SafeSetError(
+ "Failed to set remote data description streams for m-section with "
+ "mid='" +
+ content_name() + "'.",
+ error_desc);
return false;
}
@@ -1311,20 +1380,21 @@ void RtpDataChannel::UpdateMediaSendRecvState_w() {
// content. We receive data on the default channel and multiplexed streams.
bool recv = IsReadyToReceiveMedia_w();
if (!media_channel()->SetReceive(recv)) {
- RTC_LOG(LS_ERROR) << "Failed to SetReceive on data channel";
+ RTC_LOG(LS_ERROR) << "Failed to SetReceive on data channel: " << ToString();
}
// Send outgoing data if we're the active call, we have the remote content,
// and we have had some form of connectivity.
bool send = IsReadyToSendMedia_w();
if (!media_channel()->SetSend(send)) {
- RTC_LOG(LS_ERROR) << "Failed to SetSend on data channel";
+ RTC_LOG(LS_ERROR) << "Failed to SetSend on data channel: " << ToString();
}
// Trigger SignalReadyToSendData asynchronously.
OnDataChannelReadyToSend(send);
- RTC_LOG(LS_INFO) << "Changing data state, recv=" << recv << " send=" << send;
+ RTC_LOG(LS_INFO) << "Changing data state, recv=" << recv << " send=" << send
+ << " for " << ToString();
}
void RtpDataChannel::OnMessage(rtc::Message* pmsg) {