| Index: webrtc/modules/rtp_rtcp/source/fec_test_helper.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/source/fec_test_helper.cc b/webrtc/modules/rtp_rtcp/source/fec_test_helper.cc
|
| index c2d2f9acfb12be1606754fb72d306ab996fd8368..74406db086b94deef2c94d67ce403af62dd9b7af 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/fec_test_helper.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/fec_test_helper.cc
|
| @@ -13,6 +13,8 @@
|
| #include <memory>
|
| #include <utility>
|
|
|
| +#include "webrtc/base/checks.h"
|
| +#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
| #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
|
| #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
|
|
|
| @@ -24,6 +26,8 @@ namespace {
|
| constexpr uint8_t kFecPayloadType = 96;
|
| constexpr uint8_t kRedPayloadType = 97;
|
| constexpr uint8_t kVp8PayloadType = 120;
|
| +
|
| +constexpr int kPacketTimestampIncrement = 3000;
|
| } // namespace
|
|
|
| ForwardErrorCorrection::PacketList MediaPacketGenerator::ConstructMediaPackets(
|
| @@ -93,7 +97,7 @@ AugmentedPacketGenerator::AugmentedPacketGenerator(uint32_t ssrc)
|
|
|
| void AugmentedPacketGenerator::NewFrame(size_t num_packets) {
|
| num_packets_ = num_packets;
|
| - timestamp_ += 3000;
|
| + timestamp_ += kPacketTimestampIncrement;
|
| }
|
|
|
| uint16_t AugmentedPacketGenerator::NextPacketSeqNum() {
|
| @@ -133,6 +137,35 @@ void AugmentedPacketGenerator::WriteRtpHeader(const RTPHeader& header,
|
| ByteWriter<uint32_t>::WriteBigEndian(data + 8, header.ssrc);
|
| }
|
|
|
| +FlexfecPacketGenerator::FlexfecPacketGenerator(uint32_t media_ssrc,
|
| + uint32_t flexfec_ssrc)
|
| + : AugmentedPacketGenerator(media_ssrc),
|
| + flexfec_ssrc_(flexfec_ssrc),
|
| + flexfec_seq_num_(0),
|
| + flexfec_timestamp_(0) {}
|
| +
|
| +std::unique_ptr<AugmentedPacket> FlexfecPacketGenerator::BuildFlexfecPacket(
|
| + const ForwardErrorCorrection::Packet& packet) {
|
| + RTC_DCHECK_LE(packet.length,
|
| + static_cast<size_t>(IP_PACKET_SIZE - kRtpHeaderSize));
|
| +
|
| + RTPHeader header;
|
| + header.sequenceNumber = flexfec_seq_num_;
|
| + ++flexfec_seq_num_;
|
| + header.timestamp = flexfec_timestamp_;
|
| + flexfec_timestamp_ += kPacketTimestampIncrement;
|
| + header.ssrc = flexfec_ssrc_;
|
| +
|
| + std::unique_ptr<AugmentedPacket> packet_with_rtp_header(
|
| + new AugmentedPacket());
|
| + WriteRtpHeader(header, packet_with_rtp_header->data);
|
| + memcpy(packet_with_rtp_header->data + kRtpHeaderSize, packet.data,
|
| + packet.length);
|
| + packet_with_rtp_header->length = kRtpHeaderSize + packet.length;
|
| +
|
| + return packet_with_rtp_header;
|
| +}
|
| +
|
| UlpfecPacketGenerator::UlpfecPacketGenerator(uint32_t ssrc)
|
| : AugmentedPacketGenerator(ssrc) {}
|
|
|
| @@ -143,7 +176,6 @@ std::unique_ptr<AugmentedPacket> UlpfecPacketGenerator::BuildMediaRedPacket(
|
| const size_t kHeaderLength = packet.header.header.headerLength;
|
| red_packet->header = packet.header;
|
| red_packet->length = packet.length + 1; // 1 byte RED header.
|
| - memset(red_packet->data, 0, red_packet->length);
|
| // Copy RTP header.
|
| memcpy(red_packet->data, packet.data, kHeaderLength);
|
| SetRedHeader(red_packet->data[1] & 0x7f, kHeaderLength, red_packet.get());
|
|
|