Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
| index ba5b98148d250c90dd47a5fa876f3ece450aa80b..b2a69ff0b599ffad100b449c1838888a80dff858 100644 |
| --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
| @@ -179,7 +179,6 @@ RTPSender::RTPSender( |
| last_packet_marker_bit_(false), |
| csrcs_(), |
| rtx_(kRtxOff), |
| - rtx_payload_type_(-1), |
| target_bitrate_critsect_(CriticalSectionWrapper::CreateCriticalSection()), |
| target_bitrate_(0) { |
| memset(nack_byte_count_times_, 0, sizeof(nack_byte_count_times_)); |
| @@ -437,17 +436,6 @@ void RTPSender::SetRtxPayloadType(int payload_type, |
| } |
| rtx_payload_type_map_[associated_payload_type] = payload_type; |
| - rtx_payload_type_ = payload_type; |
| -} |
| - |
| -std::pair<int, int> RTPSender::RtxPayloadType() const { |
| - CriticalSectionScoped cs(send_critsect_.get()); |
| - for (const auto& kv : rtx_payload_type_map_) { |
| - if (kv.second == rtx_payload_type_) { |
| - return std::make_pair(rtx_payload_type_, kv.first); |
| - } |
| - } |
| - return std::make_pair(-1, -1); |
| } |
| int32_t RTPSender::CheckPayloadType(int8_t payload_type, |
| @@ -663,7 +651,7 @@ size_t RTPSender::SendPadData(size_t bytes, |
| ssrc = ssrc_rtx_; |
| sequence_number = sequence_number_rtx_; |
| ++sequence_number_rtx_; |
| - payload_type = rtx_payload_type_; |
| + payload_type = rtx_payload_type_map_.begin()->second; |
| over_rtx = true; |
| } |
| } |
| @@ -1849,11 +1837,16 @@ void RTPSender::BuildRtxPacket(uint8_t* buffer, size_t* length, |
| memcpy(data_buffer_rtx, buffer, rtp_header.headerLength); |
| // Replace payload type, if a specific type is set for RTX. |
| - if (rtx_payload_type_ != -1) { |
| - data_buffer_rtx[1] = static_cast<uint8_t>(rtx_payload_type_); |
| - if (rtp_header.markerBit) |
| - data_buffer_rtx[1] |= kRtpMarkerBitMask; |
| - } |
| + auto kv = rtx_payload_type_map_.find(rtp_header.payloadType); |
| + // Use rtx mapping associated with media codec if we can't find one, assuming |
| + // it's red. |
| + // TODO(holmer): Remove once old Chrome versions don't rely on this. |
|
pbos-webrtc
2016/02/01 14:32:19
Do you want to log a warning here?
stefan-webrtc
2016/02/01 15:26:08
I don't think so as that would spam warnings if a
|
| + if (kv == rtx_payload_type_map_.end()) |
| + kv = rtx_payload_type_map_.find(payload_type_); |
| + if (kv != rtx_payload_type_map_.end()) |
| + data_buffer_rtx[1] = kv->second; |
| + if (rtp_header.markerBit) |
| + data_buffer_rtx[1] |= kRtpMarkerBitMask; |
| // Replace sequence number. |
| uint8_t* ptr = data_buffer_rtx + 2; |