Index: webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
index ce0bcd7fed9d9442033086fa79f428a035646db1..a862f1a9dcf7ecf06501e7bd1082004bd0f0d91e 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc |
@@ -25,7 +25,6 @@ RTPPayloadRegistry::RTPPayloadRegistry(RTPPayloadStrategy* rtp_payload_strategy) |
last_received_media_payload_type_(-1), |
rtx_(false), |
rtx_payload_type_(-1), |
- use_rtx_payload_mapping_on_restore_(false), |
ssrc_rtx_(0) {} |
RTPPayloadRegistry::~RTPPayloadRegistry() { |
@@ -271,21 +270,18 @@ bool RTPPayloadRegistry::RestoreOriginalPacket(uint8_t* restored_packet, |
int associated_payload_type; |
auto apt_mapping = rtx_payload_type_map_.find(header.payloadType); |
- if (use_rtx_payload_mapping_on_restore_ && |
- apt_mapping != rtx_payload_type_map_.end()) { |
- associated_payload_type = apt_mapping->second; |
- } else { |
- // In the future, this will be a bug. For now, just assume this RTX packet |
- // matches the last non-RTX payload type we received. There are cases where |
- // this could break, especially where RTX is sent outside of NACKing (e.g. |
- // padding with redundant payloads). |
- if (rtx_payload_type_ == -1 || incoming_payload_type_ == -1) { |
- LOG(LS_WARNING) << "Incorrect RTX configuration, dropping packet."; |
- return false; |
- } |
- associated_payload_type = incoming_payload_type_; |
+ if (apt_mapping == rtx_payload_type_map_.end()) |
+ return false; |
+ associated_payload_type = apt_mapping->second; |
+ if (red_payload_type_ != -1) { |
+ // Assume red will be used if it's configured. |
+ // This is a workaround for a Chrome sdp bug where rtx is associated |
+ // with the media codec even though media is sent over red. |
+ // TODO(holmer): Remove once the Chrome versions exposing this bug are |
+ // old enough, which should be once Chrome Stable reaches M53 as this |
+ // work-around went into M50. |
+ associated_payload_type = red_payload_type_; |
} |
- |
restored_packet[1] = static_cast<uint8_t>(associated_payload_type); |
if (header.markerBit) { |
restored_packet[1] |= kRtpMarkerBitMask; // Marker bit is set. |