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 69a87a8bf2b57f8b9be17c35806b43038ee1df19..d8af53a396bbafcb95a4e703d2968afd0a4b53db 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" |
@@ -135,6 +137,36 @@ 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_ += 3000; |
philipel
2016/09/21 11:15:27
constexpr int kMagicConstantWithSomeDescriptiveNam
brandtr
2016/09/21 11:59:21
Done.
|
+ header.ssrc = flexfec_ssrc_; |
+ |
+ std::unique_ptr<AugmentedPacket> packet_with_rtp_header( |
+ new AugmentedPacket()); |
+ memset(packet_with_rtp_header->data, 0, IP_PACKET_SIZE); |
philipel
2016/09/21 11:15:27
Do you really need to zero this memory?
brandtr
2016/09/21 11:59:21
No, this was overly cautious of me.
Parts of the
|
+ 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) {} |