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