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 <ilnik@webrtc.org>
Reviewed-by: Yves Gerey <yvesg@google.com>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30094}
This commit is contained in:
Danil Chapovalov
2019-12-13 18:05:09 +01:00
committed by Commit Bot
parent 73eb784676
commit 0f6bf75ab4
2 changed files with 12 additions and 16 deletions

View File

@ -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<uint16_t>::ReadBigEndian(rtp_packet.payload().data());

View File

@ -43,7 +43,6 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) {
RtpExtensionHeaderObserver(
TaskQueueBase* task_queue,
Call* sender_call,
const uint32_t& first_media_ssrc,
const std::map<uint32_t, uint32_t>& ssrc_map,
const std::map<uint8_t, MediaType>& 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<uint16_t>::ReadBigEndian(
rtp_packet.payload().data());
@ -157,7 +155,6 @@ TEST(TransportFeedbackMultiStreamTest, AssignsTransportSequenceNumbers) {
std::set<int64_t> received_packed_ids_;
std::set<uint32_t> streams_observed_;
std::map<uint32_t, std::set<uint16_t>> dropped_seq_;
const uint32_t& first_media_ssrc_;
const std::map<uint32_t, uint32_t>& 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<RtpExtensionHeaderObserver>(
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<uint32_t, uint32_t> rtx_to_media_ssrcs_;
RtpExtensionHeaderObserver* observer_;
} tester;