Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(475)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender.cc

Issue 1649493004: Support multiple rtx codecs. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Remove some more code. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698