Avoid infinite recursion if a RED packet encapsulate a RED packet.

Bug: None
Change-Id: Ife982f28637c7a1b5a4f06fa0446841d76da8392
Reviewed-on: https://webrtc-review.googlesource.com/40880
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21718}
This commit is contained in:
philipel
2018-01-19 14:41:41 +01:00
committed by Commit Bot
parent 91e26fd94e
commit d8f6c167bb
2 changed files with 33 additions and 2 deletions

View File

@ -218,6 +218,25 @@ TEST_F(RtpVideoStreamReceiverTest, GenericKeyFrame) {
&rtp_header);
}
TEST_F(RtpVideoStreamReceiverTest, NoInfiniteRecursionOnEncapsulatedRedPacket) {
const uint8_t kRedPayloadType = 125;
VideoCodec codec;
codec.plType = kRedPayloadType;
memcpy(codec.plName, "red", sizeof("red"));
rtp_video_stream_receiver_->AddReceiveCodec(codec, {});
const std::vector<uint8_t> data({0x80, // RTP version.
kRedPayloadType, // Payload type.
0, 0, 0, 0, 0, 0, // Don't care.
0, 0, 0x4, 0x57, // SSRC
kRedPayloadType, // RED header.
0, 0, 0, 0, 0 // Don't care.
});
RtpPacketReceived packet;
EXPECT_TRUE(packet.Parse(data.data(), data.size()));
rtp_video_stream_receiver_->StartReceive();
rtp_video_stream_receiver_->OnRtpPacket(packet);
}
TEST_F(RtpVideoStreamReceiverTest, GenericKeyFrameBitstreamError) {
WebRtcRTPHeader rtp_header;
const std::vector<uint8_t> data({1, 2, 3, 4});