Index: talk/session/media/channel.cc |
diff --git a/talk/session/media/channel.cc b/talk/session/media/channel.cc |
index c0f7f23f33ee576913f6b477830f0765888e60e3..91a6d8cb5abbd9c1ed462fe34ae45140f191ab61 100644 |
--- a/talk/session/media/channel.cc |
+++ b/talk/session/media/channel.cc |
@@ -67,7 +67,7 @@ static void SafeSetError(const std::string& message, std::string* error_desc) { |
struct PacketMessageData : public rtc::MessageData { |
rtc::Buffer packet; |
- rtc::DiffServCodePoint dscp; |
+ rtc::PacketOptions options; |
}; |
struct ScreencastEventMessageData : public rtc::MessageData { |
@@ -423,13 +423,13 @@ bool BaseChannel::IsReadyToSend() const { |
} |
bool BaseChannel::SendPacket(rtc::Buffer* packet, |
- rtc::DiffServCodePoint dscp) { |
- return SendPacket(false, packet, dscp); |
+ const rtc::PacketOptions& options) { |
+ return SendPacket(false, packet, options); |
} |
bool BaseChannel::SendRtcp(rtc::Buffer* packet, |
- rtc::DiffServCodePoint dscp) { |
- return SendPacket(true, packet, dscp); |
+ const rtc::PacketOptions& options) { |
+ return SendPacket(true, packet, options); |
} |
int BaseChannel::SetOption(SocketType type, rtc::Socket::Option opt, |
@@ -498,8 +498,9 @@ bool BaseChannel::PacketIsRtcp(const TransportChannel* channel, |
rtcp_mux_filter_.DemuxRtcp(data, static_cast<int>(len))); |
} |
-bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet, |
- rtc::DiffServCodePoint dscp) { |
+bool BaseChannel::SendPacket(bool rtcp, |
+ rtc::Buffer* packet, |
+ const rtc::PacketOptions& options) { |
// SendPacket gets called from MediaEngine, typically on an encoder thread. |
// If the thread is not our worker thread, we will post to our worker |
// so that the real work happens on our worker. This avoids us having to |
@@ -512,7 +513,7 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet, |
int message_id = (!rtcp) ? MSG_RTPPACKET : MSG_RTCPPACKET; |
PacketMessageData* data = new PacketMessageData; |
data->packet = packet->Pass(); |
- data->dscp = dscp; |
+ data->options = options; |
worker_thread_->Post(this, message_id, data); |
return true; |
} |
@@ -535,7 +536,8 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet, |
return false; |
} |
- rtc::PacketOptions options(dscp); |
+ rtc::PacketOptions updated_options; |
+ updated_options = options; |
// Protect if needed. |
if (srtp_filter_.IsActive()) { |
bool res; |
@@ -551,21 +553,22 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet, |
res = srtp_filter_.ProtectRtp( |
data, len, static_cast<int>(packet->capacity()), &len); |
#else |
- options.packet_time_params.rtp_sendtime_extension_id = |
+ updated_options.packet_time_params.rtp_sendtime_extension_id = |
rtp_abs_sendtime_extn_id_; |
res = srtp_filter_.ProtectRtp( |
data, len, static_cast<int>(packet->capacity()), &len, |
- &options.packet_time_params.srtp_packet_index); |
+ &updated_options.packet_time_params.srtp_packet_index); |
// If protection succeeds, let's get auth params from srtp. |
if (res) { |
uint8_t* auth_key = NULL; |
int key_len; |
res = srtp_filter_.GetRtpAuthParams( |
- &auth_key, &key_len, &options.packet_time_params.srtp_auth_tag_len); |
+ &auth_key, &key_len, |
+ &updated_options.packet_time_params.srtp_auth_tag_len); |
if (res) { |
- options.packet_time_params.srtp_auth_key.resize(key_len); |
- options.packet_time_params.srtp_auth_key.assign(auth_key, |
- auth_key + key_len); |
+ updated_options.packet_time_params.srtp_auth_key.resize(key_len); |
+ updated_options.packet_time_params.srtp_auth_key.assign( |
+ auth_key, auth_key + key_len); |
} |
} |
#endif |
@@ -605,7 +608,7 @@ bool BaseChannel::SendPacket(bool rtcp, rtc::Buffer* packet, |
// Bon voyage. |
int ret = |
- channel->SendPacket(packet->data<char>(), packet->size(), options, |
+ channel->SendPacket(packet->data<char>(), packet->size(), updated_options, |
(secure() && secure_dtls()) ? PF_SRTP_BYPASS : 0); |
if (ret != static_cast<int>(packet->size())) { |
if (channel->GetError() == EWOULDBLOCK) { |
@@ -1143,7 +1146,7 @@ bool BaseChannel::UpdateLocalStreams_w(const std::vector<StreamParams>& streams, |
it != streams.end(); ++it) { |
if (!GetStreamBySsrc(local_streams_, it->first_ssrc())) { |
if (media_channel()->AddSendStream(*it)) { |
- LOG(LS_INFO) << "Add send ssrc: " << it->ssrcs[0]; |
+ LOG(LS_INFO) << "Add send stream ssrc: " << it->ssrcs[0]; |
} else { |
std::ostringstream desc; |
desc << "Failed to add send stream ssrc: " << it->first_ssrc(); |
@@ -1244,7 +1247,8 @@ void BaseChannel::OnMessage(rtc::Message *pmsg) { |
case MSG_RTPPACKET: |
case MSG_RTCPPACKET: { |
PacketMessageData* data = static_cast<PacketMessageData*>(pmsg->pdata); |
- SendPacket(pmsg->message_id == MSG_RTCPPACKET, &data->packet, data->dscp); |
+ SendPacket(pmsg->message_id == MSG_RTCPPACKET, &data->packet, |
+ data->options); |
delete data; // because it is Posted |
break; |
} |