From 0f6bf75ab4a7fec6a943ebb976d926eebff8ec22 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Fri, 13 Dec 2019 18:05:09 +0100 Subject: [PATCH] Make video engine tests aware of padding packets Specifically do not try to parse them as rtx packets. Bug: webrtc:11213, webrtc:11188 Change-Id: I3aa5929af433b1ada9fb26516618d11207f075a5 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/162204 Reviewed-by: Ilya Nikolaevskiy Reviewed-by: Yves Gerey Commit-Queue: Danil Chapovalov Cr-Commit-Position: refs/heads/master@{#30094} --- video/end_to_end_tests/fec_tests.cc | 5 ++++ .../transport_feedback_tests.cc | 23 ++++++------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/video/end_to_end_tests/fec_tests.cc b/video/end_to_end_tests/fec_tests.cc index e1fb8cf4e6..c55c4dbee1 100644 --- a/video/end_to_end_tests/fec_tests.cc +++ b/video/end_to_end_tests/fec_tests.cc @@ -196,6 +196,11 @@ class FlexfecRenderObserver : public test::EndToEndTest, if (rtp_packet.PayloadType() == test::CallTest::kSendRtxPayloadType) { EXPECT_EQ(test::CallTest::kSendRtxSsrcs[0], rtp_packet.Ssrc()); + if (rtp_packet.payload_size() == 0) { + // Pure padding packet. + return SEND_PACKET; + } + // Parse RTX header. uint16_t original_sequence_number = ByteReader::ReadBigEndian(rtp_packet.payload().data()); diff --git a/video/end_to_end_tests/transport_feedback_tests.cc b/video/end_to_end_tests/transport_feedback_tests.cc index b36c9b937b..4291bc4812 100644 --- a/video/end_to_end_tests/transport_feedback_tests.cc +++ b/video/end_to_end_tests/transport_feedback_tests.cc @@ -43,7 +43,6 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { RtpExtensionHeaderObserver( TaskQueueBase* task_queue, Call* sender_call, - const uint32_t& first_media_ssrc, const std::map& ssrc_map, const std::map& payload_type_map) : DirectTransport(task_queue, @@ -53,7 +52,6 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { BuiltInNetworkBehaviorConfig())), sender_call, payload_type_map), - first_media_ssrc_(first_media_ssrc), rtx_to_media_ssrcs_(ssrc_map), rtx_padding_observed_(false), retransmit_observed_(false), @@ -88,17 +86,17 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { } // Drop (up to) every 17th packet, so we get retransmits. - // Only drop media, and not on the first stream (otherwise it will be - // hard to distinguish from padding, which is always sent on the first - // stream). + // Only drop media, do not drop padding packets. if (rtp_packet.PayloadType() != kSendRtxPayloadType && - rtp_packet.Ssrc() != first_media_ssrc_ && + rtp_packet.payload_size() > 0 && transport_sequence_number % 17 == 0) { dropped_seq_[rtp_packet.Ssrc()].insert(rtp_packet.SequenceNumber()); drop_packet = true; } - if (rtp_packet.PayloadType() == kSendRtxPayloadType) { + if (rtp_packet.payload_size() == 0) { + // Ignore padding packets. + } else if (rtp_packet.PayloadType() == kSendRtxPayloadType) { uint16_t original_sequence_number = ByteReader::ReadBigEndian( rtp_packet.payload().data()); @@ -157,7 +155,6 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { std::set received_packed_ids_; std::set streams_observed_; std::map> dropped_seq_; - const uint32_t& first_media_ssrc_; const std::map& rtx_to_media_ssrcs_; bool rtx_padding_observed_; bool retransmit_observed_; @@ -166,8 +163,7 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { class TransportSequenceNumberTester : public MultiStreamTester { public: - TransportSequenceNumberTester() - : first_media_ssrc_(0), observer_(nullptr) {} + TransportSequenceNumberTester() : observer_(nullptr) {} ~TransportSequenceNumberTester() override = default; protected: @@ -200,9 +196,6 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { send_config->rtp.rtx.payload_type = kSendRtxPayloadType; rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] = send_config->rtp.ssrcs[0]; - - if (stream_index == 0) - first_media_ssrc_ = send_config->rtp.ssrcs[0]; } void UpdateReceiveConfig( @@ -225,15 +218,13 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) { payload_type_map.end()); payload_type_map[kSendRtxPayloadType] = MediaType::VIDEO; auto observer = std::make_unique( - task_queue, sender_call, first_media_ssrc_, rtx_to_media_ssrcs_, - payload_type_map); + task_queue, sender_call, rtx_to_media_ssrcs_, payload_type_map); observer_ = observer.get(); return observer; } private: test::FakeVideoRenderer fake_renderer_; - uint32_t first_media_ssrc_; std::map rtx_to_media_ssrcs_; RtpExtensionHeaderObserver* observer_; } tester;