Reverse |rtx_payload_types| map, and rename.

New name is |rtx_associated_payload_types|.

BUG=webrtc:7135

Review-Url: https://codereview.webrtc.org/3000273002
Cr-Original-Commit-Position: refs/heads/master@{#19514}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 26e3abbb40d5fc24642ed61ca226810713084dec
diff --git a/call/call.cc b/call/call.cc
index cee0036..b1f56d3 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -86,6 +86,14 @@
   return UseSendSideBwe(config.rtp_header_extensions, config.transport_cc);
 }
 
+const int* FindKeyByValue(const std::map<int, int>& m, int v) {
+  for (const auto& kv : m) {
+    if (kv.second == v)
+      return &kv.first;
+  }
+  return nullptr;
+}
+
 rtclog::StreamConfig CreateRtcLogStreamConfig(
     const VideoReceiveStream::Config& config) {
   rtclog::StreamConfig rtclog_config;
@@ -97,10 +105,10 @@
   rtclog_config.rtp_extensions = config.rtp.extensions;
 
   for (const auto& d : config.decoders) {
-    auto search = config.rtp.rtx_payload_types.find(d.payload_type);
-    rtclog_config.codecs.emplace_back(
-        d.payload_name, d.payload_type,
-        search != config.rtp.rtx_payload_types.end() ? search->second : 0);
+    const int* search =
+        FindKeyByValue(config.rtp.rtx_associated_payload_types, d.payload_type);
+    rtclog_config.codecs.emplace_back(d.payload_name, d.payload_type,
+                                      search ? *search : 0);
   }
   return rtclog_config;
 }
diff --git a/call/rampup_tests.cc b/call/rampup_tests.cc
index cfb5117..ed44dad 100644
--- a/call/rampup_tests.cc
+++ b/call/rampup_tests.cc
@@ -215,8 +215,8 @@
     if (rtx_) {
       recv_config.rtp.rtx_ssrc = video_rtx_ssrcs_[i];
       recv_config.rtp
-          .rtx_payload_types[send_config->encoder_settings.payload_type] =
-          send_config->rtp.rtx.payload_type;
+          .rtx_associated_payload_types[send_config->rtp.rtx.payload_type] =
+          send_config->encoder_settings.payload_type;
     }
     ++i;
   }
diff --git a/call/video_receive_stream.cc b/call/video_receive_stream.cc
index bc65869..ef6c608 100644
--- a/call/video_receive_stream.cc
+++ b/call/video_receive_stream.cc
@@ -113,8 +113,8 @@
   ss << ", ulpfec: " << ulpfec.ToString();
   ss << ", rtx_ssrc: " << rtx_ssrc;
   ss << ", rtx_payload_types: {";
-  for (auto& kv : rtx_payload_types) {
-    ss << kv.first << " (apt) -> " << kv.second << " (pt), ";
+  for (auto& kv : rtx_associated_payload_types) {
+    ss << kv.first << " (pt) -> " << kv.second << " (apt), ";
   }
   ss << '}';
   ss << ", extensions: [";
diff --git a/call/video_receive_stream.h b/call/video_receive_stream.h
index bd4b997..18e904d 100644
--- a/call/video_receive_stream.h
+++ b/call/video_receive_stream.h
@@ -168,14 +168,15 @@
       // Set if the stream is protected using FlexFEC.
       bool protected_by_flexfec = false;
 
-      // Map from video payload type (apt) -> RTX payload type (pt).
+      // Map from rtx payload type -> media payload type.
       // For RTX to be enabled, both an SSRC and this mapping are needed.
-      std::map<int, int> rtx_payload_types;
+      std::map<int, int> rtx_associated_payload_types;
       // TODO(nisse): This is a temporary accessor function to enable
       // reversing and renaming of the rtx_payload_types mapping.
       void AddRtxBinding(int rtx_payload_type, int media_payload_type) {
-        rtx_payload_types[media_payload_type] = rtx_payload_type;
+        rtx_associated_payload_types[rtx_payload_type] = media_payload_type;
       }
+
       // RTP header extensions used for the received stream.
       std::vector<RtpExtension> extensions;
     } rtp;
diff --git a/media/engine/webrtcvideoengine.cc b/media/engine/webrtcvideoengine.cc
index 8a23ae8..6808f2c 100644
--- a/media/engine/webrtcvideoengine.cc
+++ b/media/engine/webrtcvideoengine.cc
@@ -2219,10 +2219,10 @@
     config_.decoders.push_back(decoder);
   }
 
-  config_.rtp.rtx_payload_types.clear();
+  config_.rtp.rtx_associated_payload_types.clear();
   for (const VideoCodecSettings& recv_codec : recv_codecs) {
-    config_.rtp.rtx_payload_types[recv_codec.codec.id] =
-        recv_codec.rtx_payload_type;
+    config_.rtp.rtx_associated_payload_types[recv_codec.rtx_payload_type] =
+        recv_codec.codec.id;
   }
 
   config_.rtp.ulpfec = recv_codecs.front().ulpfec;
diff --git a/media/engine/webrtcvideoengine_unittest.cc b/media/engine/webrtcvideoengine_unittest.cc
index 3af7ef4..c6adfd3 100644
--- a/media/engine/webrtcvideoengine_unittest.cc
+++ b/media/engine/webrtcvideoengine_unittest.cc
@@ -111,6 +111,16 @@
   media_config.video.enable_cpu_overuse_detection = false;
   return media_config;
 }
+
+// TODO(nisse): Duplicated in call.cc.
+const int* FindKeyByValue(const std::map<int, int>& m, int v) {
+  for (const auto& kv : m) {
+    if (kv.second == v)
+      return &kv.first;
+  }
+  return nullptr;
+}
+
 }  // namespace
 
 namespace cricket {
@@ -1304,9 +1314,10 @@
   // Receiver side.
   FakeVideoReceiveStream* recv_stream = AddRecvStream(
       cricket::CreateSimWithRtxStreamParams("cname", ssrcs, rtx_ssrcs));
-  EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx_payload_types.empty());
+  EXPECT_FALSE(
+      recv_stream->GetConfig().rtp.rtx_associated_payload_types.empty());
   EXPECT_EQ(recv_stream->GetConfig().decoders.size(),
-            recv_stream->GetConfig().rtp.rtx_payload_types.size())
+            recv_stream->GetConfig().rtp.rtx_associated_payload_types.size())
       << "RTX should be mapped for all decoders/payload types.";
   EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc);
 }
@@ -3142,11 +3153,11 @@
   ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size());
   const webrtc::VideoReceiveStream::Config& config_before =
       fake_call_->GetVideoReceiveStreams()[0]->GetConfig();
-  EXPECT_EQ(1U, config_before.rtp.rtx_payload_types.size());
-  auto it_before =
-      config_before.rtp.rtx_payload_types.find(GetEngineCodec("VP8").id);
-  ASSERT_NE(it_before, config_before.rtp.rtx_payload_types.end());
-  EXPECT_EQ(kUnusedPayloadType1, it_before->second);
+  EXPECT_EQ(1U, config_before.rtp.rtx_associated_payload_types.size());
+  const int* payload_type_before = FindKeyByValue(
+      config_before.rtp.rtx_associated_payload_types, GetEngineCodec("VP8").id);
+  ASSERT_NE(payload_type_before, nullptr);
+  EXPECT_EQ(kUnusedPayloadType1, *payload_type_before);
   EXPECT_EQ(kRtxSsrcs1[0], config_before.rtp.rtx_ssrc);
 
   // Change payload type for RTX.
@@ -3155,11 +3166,11 @@
   ASSERT_EQ(1U, fake_call_->GetVideoReceiveStreams().size());
   const webrtc::VideoReceiveStream::Config& config_after =
       fake_call_->GetVideoReceiveStreams()[0]->GetConfig();
-  EXPECT_EQ(1U, config_after.rtp.rtx_payload_types.size());
-  auto it_after =
-      config_after.rtp.rtx_payload_types.find(GetEngineCodec("VP8").id);
-  ASSERT_NE(it_after, config_after.rtp.rtx_payload_types.end());
-  EXPECT_EQ(kUnusedPayloadType2, it_after->second);
+  EXPECT_EQ(1U, config_after.rtp.rtx_associated_payload_types.size());
+  const int* payload_type_after = FindKeyByValue(
+      config_after.rtp.rtx_associated_payload_types, GetEngineCodec("VP8").id);
+  ASSERT_NE(payload_type_after, nullptr);
+  EXPECT_EQ(kUnusedPayloadType2, *payload_type_after);
   EXPECT_EQ(kRtxSsrcs1[0], config_after.rtp.rtx_ssrc);
 }
 
@@ -3783,9 +3794,10 @@
   ASSERT_EQ(1u, fake_call_->GetVideoReceiveStreams().size())
       << "AddRecvStream should have reconfigured, not added a new receiver.";
   recv_stream = fake_call_->GetVideoReceiveStreams()[0];
-  EXPECT_FALSE(recv_stream->GetConfig().rtp.rtx_payload_types.empty());
+  EXPECT_FALSE(
+      recv_stream->GetConfig().rtp.rtx_associated_payload_types.empty());
   EXPECT_EQ(recv_stream->GetConfig().decoders.size(),
-            recv_stream->GetConfig().rtp.rtx_payload_types.size())
+            recv_stream->GetConfig().rtp.rtx_associated_payload_types.size())
       << "RTX should be mapped for all decoders/payload types.";
   EXPECT_EQ(rtx_ssrcs[0], recv_stream->GetConfig().rtp.rtx_ssrc);
 }
diff --git a/video/end_to_end_tests.cc b/video/end_to_end_tests.cc
index 7e62f6d..fbc852f 100644
--- a/video/end_to_end_tests.cc
+++ b/video/end_to_end_tests.cc
@@ -865,8 +865,9 @@
 
       (*receive_configs)[0].rtp.rtx_ssrc = test::CallTest::kSendRtxSsrcs[0];
       (*receive_configs)[0]
-          .rtp.rtx_payload_types[test::CallTest::kVideoSendPayloadType] =
-          test::CallTest::kSendRtxPayloadType;
+          .rtp
+          .rtx_associated_payload_types[test::CallTest::kSendRtxPayloadType] =
+          test::CallTest::kVideoSendPayloadType;
     }
   }
 
@@ -1182,8 +1183,9 @@
         send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]);
         send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
         (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0];
-        (*receive_configs)[0].rtp.rtx_payload_types[payload_type_] =
-            kSendRtxPayloadType;
+        (*receive_configs)[0]
+            .rtp.rtx_associated_payload_types[kSendRtxPayloadType] =
+            payload_type_;
       }
       // Configure encoding and decoding with VP8, since generic packetization
       // doesn't support FEC with NACK.
@@ -2773,8 +2775,9 @@
         send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[0]);
         send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
         (*receive_configs)[0].rtp.rtx_ssrc = kSendRtxSsrcs[0];
-        (*receive_configs)[0].rtp.rtx_payload_types[kFakeVideoSendPayloadType] =
-            kSendRtxPayloadType;
+        (*receive_configs)[0]
+            .rtp.rtx_associated_payload_types[kSendRtxPayloadType] =
+            kFakeVideoSendPayloadType;
       }
       // RTT needed for RemoteNtpTimeEstimator for the receive stream.
       (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = true;
@@ -3540,8 +3543,9 @@
         (*receive_configs)[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
 
         (*receive_configs)[i].rtp.rtx_ssrc = kSendRtxSsrcs[i];
-        (*receive_configs)[i].rtp.rtx_payload_types[kFakeVideoSendPayloadType] =
-            kSendRtxPayloadType;
+        (*receive_configs)[i]
+            .rtp.rtx_associated_payload_types[kSendRtxPayloadType] =
+            kFakeVideoSendPayloadType;
       }
 
       for (size_t i = 0; i < kNumSsrcs; ++i)
@@ -4323,8 +4327,9 @@
     CreateMatchingReceiveConfigs(receive_transport.get());
     video_receive_configs_[0].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
     video_receive_configs_[0].rtp.rtx_ssrc = kSendRtxSsrcs[0];
-    video_receive_configs_[0].rtp.rtx_payload_types[kVideoSendPayloadType] =
-        kSendRtxPayloadType;
+    video_receive_configs_[0]
+        .rtp.rtx_associated_payload_types[kSendRtxPayloadType] =
+        kVideoSendPayloadType;
 
     // The matching FlexFEC receive config is not created by
     // CreateMatchingReceiveConfigs since this is not a test::BaseTest.
@@ -4824,7 +4829,7 @@
       << "RTCP XR settings require rtcp-xr to be negotiated.";
   EXPECT_EQ(0U, default_receive_config.rtp.rtx_ssrc)
       << "Enabling RTX requires ssrc-group: FID negotiation";
-  EXPECT_TRUE(default_receive_config.rtp.rtx_payload_types.empty())
+  EXPECT_TRUE(default_receive_config.rtp.rtx_associated_payload_types.empty())
       << "Enabling RTX requires rtpmap: rtx negotiation.";
   EXPECT_TRUE(default_receive_config.rtp.extensions.empty())
       << "Enabling RTP extensions require negotiation.";
diff --git a/video/replay.cc b/video/replay.cc
index 736db44..b1e7f3b 100644
--- a/video/replay.cc
+++ b/video/replay.cc
@@ -238,8 +238,8 @@
   receive_config.rtp.remote_ssrc = flags::Ssrc();
   receive_config.rtp.local_ssrc = kReceiverLocalSsrc;
   receive_config.rtp.rtx_ssrc = flags::SsrcRtx();
-  receive_config.rtp.rtx_payload_types[flags::PayloadType()] =
-      flags::PayloadTypeRtx();
+  receive_config.rtp.rtx_associated_payload_types[flags::PayloadTypeRtx()] =
+      flags::PayloadType();
   receive_config.rtp.ulpfec.ulpfec_payload_type = flags::FecPayloadType();
   receive_config.rtp.ulpfec.red_payload_type = flags::RedPayloadType();
   receive_config.rtp.nack.rtp_history_ms = 1000;
diff --git a/video/rtp_video_stream_receiver.cc b/video/rtp_video_stream_receiver.cc
index 01cb4dc..4678b8f 100644
--- a/video/rtp_video_stream_receiver.cc
+++ b/video/rtp_video_stream_receiver.cc
@@ -148,9 +148,9 @@
   if (config_.rtp.rtx_ssrc) {
     rtp_payload_registry_.SetRtxSsrc(config_.rtp.rtx_ssrc);
 
-    for (const auto& kv : config_.rtp.rtx_payload_types) {
-      RTC_DCHECK(kv.second != 0);
-      rtp_payload_registry_.SetRtxPayloadType(kv.second, kv.first);
+    for (const auto& kv : config_.rtp.rtx_associated_payload_types) {
+      RTC_DCHECK_NE(kv.first, 0);
+      rtp_payload_registry_.SetRtxPayloadType(kv.first, kv.second);
     }
   }
 
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index 7cacf29..3882f71 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1484,8 +1484,8 @@
   for (size_t i = 0; i < num_video_streams; ++i) {
     video_receive_configs_[i].rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
     video_receive_configs_[i].rtp.rtx_ssrc = kSendRtxSsrcs[i];
-    video_receive_configs_[i].rtp.rtx_payload_types[payload_type] =
-        kSendRtxPayloadType;
+    video_receive_configs_[i]
+        .rtp.rtx_associated_payload_types[kSendRtxPayloadType] = payload_type;
     video_receive_configs_[i].rtp.transport_cc = params_.call.send_side_bwe;
     video_receive_configs_[i].rtp.remb = !params_.call.send_side_bwe;
     // Enable RTT calculation so NTP time estimator will work.
@@ -1627,8 +1627,8 @@
 
     thumbnail_receive_config.rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
     thumbnail_receive_config.rtp.rtx_ssrc = kThumbnailRtxSsrcStart + i;
-    thumbnail_receive_config.rtp.rtx_payload_types[kPayloadTypeVP8] =
-        kSendRtxPayloadType;
+    thumbnail_receive_config.rtp
+        .rtx_associated_payload_types[kSendRtxPayloadType] = kPayloadTypeVP8;
     thumbnail_receive_config.rtp.transport_cc = params_.call.send_side_bwe;
     thumbnail_receive_config.rtp.remb = !params_.call.send_side_bwe;