Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Unified Diff: webrtc/modules/rtp_rtcp/source/fec_test_helper.cc

Issue 2282473002: Add FlexfecPacketGenerator. (pt. 9) (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@generalize_ulpfec_packet_generator_into_augmented_packet_generator
Patch Set: Rebase. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {}

Powered by Google App Engine
This is Rietveld 408576698