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

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

Issue 1649493004: Support multiple rtx codecs. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. 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_payload_registry_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
index b73666d1af09e8c04d6c40fe71c06d726dc5f3f0..cbded6872d389330f958c82716ba8ddc679df721 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_payload_registry_unittest.cc
@@ -303,7 +303,7 @@ void TestRtxPacket(RTPPayloadRegistry* rtp_payload_registry,
size_t length = original_length;
bool success = rtp_payload_registry->RestoreOriginalPacket(
restored_packet.get(), packet.get(), &length, original_ssrc, header);
- ASSERT_EQ(should_succeed, success)
+ EXPECT_EQ(should_succeed, success)
<< "Test success should match should_succeed.";
if (!success) {
return;
@@ -335,58 +335,39 @@ TEST_F(RtpPayloadRegistryTest, MultipleRtxPayloadTypes) {
// Map two RTX payload types.
rtp_payload_registry_->SetRtxPayloadType(105, 95);
rtp_payload_registry_->SetRtxPayloadType(106, 96);
- rtp_payload_registry_->set_use_rtx_payload_mapping_on_restore(true);
TestRtxPacket(rtp_payload_registry_.get(), 105, 95, true);
TestRtxPacket(rtp_payload_registry_.get(), 106, 96, true);
-
- // If the option is off, the map will be ignored.
- rtp_payload_registry_->set_use_rtx_payload_mapping_on_restore(false);
- TestRtxPacket(rtp_payload_registry_.get(), 105, 90, true);
- TestRtxPacket(rtp_payload_registry_.get(), 106, 90, true);
}
-// TODO(holmer): Ignored by default for compatibility with misconfigured RTX
-// streams in Chrome. When that is fixed, remove this.
-TEST_F(RtpPayloadRegistryTest, IgnoresRtxPayloadTypeMappingByDefault) {
- // Set the incoming payload type to 90.
- RTPHeader header;
- header.payloadType = 90;
- header.ssrc = 1;
- rtp_payload_registry_->SetIncomingPayloadType(header);
- rtp_payload_registry_->SetRtxSsrc(100);
- // Map two RTX payload types.
- rtp_payload_registry_->SetRtxPayloadType(105, 95);
- rtp_payload_registry_->SetRtxPayloadType(106, 96);
-
- TestRtxPacket(rtp_payload_registry_.get(), 105, 90, true);
- TestRtxPacket(rtp_payload_registry_.get(), 106, 90, true);
-}
-
-TEST_F(RtpPayloadRegistryTest, InferLastReceivedPacketIfPayloadTypeUnknown) {
+TEST_F(RtpPayloadRegistryTest, InvalidRtxConfiguration) {
rtp_payload_registry_->SetRtxSsrc(100);
- // Set the incoming payload type to 90.
- RTPHeader header;
- header.payloadType = 90;
- header.ssrc = 1;
- rtp_payload_registry_->SetIncomingPayloadType(header);
+ // Fails because no mappings exist and the incoming payload type isn't known.
+ TestRtxPacket(rtp_payload_registry_.get(), 105, 0, false);
+ // Succeeds when the mapping is used, but fails for the implicit fallback.
rtp_payload_registry_->SetRtxPayloadType(105, 95);
- rtp_payload_registry_->set_use_rtx_payload_mapping_on_restore(true);
- // Mapping respected for known type.
TestRtxPacket(rtp_payload_registry_.get(), 105, 95, true);
- // Mapping ignored for unknown type, even though the option is on.
- TestRtxPacket(rtp_payload_registry_.get(), 106, 90, true);
+ TestRtxPacket(rtp_payload_registry_.get(), 106, 0, false);
}
-TEST_F(RtpPayloadRegistryTest, InvalidRtxConfiguration) {
+TEST_F(RtpPayloadRegistryTest, AssumeRtxWrappingRed) {
rtp_payload_registry_->SetRtxSsrc(100);
- // Fails because no mappings exist and the incoming payload type isn't known.
- TestRtxPacket(rtp_payload_registry_.get(), 105, 0, false);
// Succeeds when the mapping is used, but fails for the implicit fallback.
rtp_payload_registry_->SetRtxPayloadType(105, 95);
- rtp_payload_registry_->set_use_rtx_payload_mapping_on_restore(true);
+ // Set the incoming payload type to 96, which we assume is red.
+ RTPHeader header;
+ header.payloadType = 96;
+ header.ssrc = 1;
+ rtp_payload_registry_->SetIncomingPayloadType(header);
+ // Recovers with correct, but unexpected, payload type since we haven't
+ // configured red.
TestRtxPacket(rtp_payload_registry_.get(), 105, 95, true);
- TestRtxPacket(rtp_payload_registry_.get(), 106, 0, false);
+ bool created_new_payload;
+ rtp_payload_registry_->RegisterReceivePayload(
+ "RED", header.payloadType, 90000, 1, 0, &created_new_payload);
+ // Now that red is configured we expect to get the red payload type back on
+ // recovery because of the workaround to always recover red when configured.
+ TestRtxPacket(rtp_payload_registry_.get(), 105, header.payloadType, true);
}
INSTANTIATE_TEST_CASE_P(TestDynamicRange,
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_payload_registry.cc ('k') | webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698