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

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

Issue 2276473002: Rename FrameGenerator -> UlpfecPacketGenerator. (pt. 6b) (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@headers-pt5-add_flexfec
Patch Set: Created 4 years, 4 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 c685ff695f2417d56058cc6d15a2b2d245a25ed1..7a814981ab3a7d15a46fcbafc75bc8dc6b5c780d 100644
--- a/webrtc/modules/rtp_rtcp/source/fec_test_helper.cc
+++ b/webrtc/modules/rtp_rtcp/source/fec_test_helper.cc
@@ -26,85 +26,6 @@ constexpr uint8_t kRedPayloadType = 97;
constexpr uint8_t kVp8PayloadType = 120;
} // namespace
-FrameGenerator::FrameGenerator()
- : num_packets_(0), seq_num_(0), timestamp_(0) {}
-
-void FrameGenerator::NewFrame(int num_packets) {
- num_packets_ = num_packets;
- timestamp_ += 3000;
-}
-
-uint16_t FrameGenerator::NextSeqNum() { return ++seq_num_; }
-
-RawRtpPacket* FrameGenerator::NextPacket(int offset, size_t length) {
- RawRtpPacket* rtp_packet = new RawRtpPacket;
- for (size_t i = 0; i < length; ++i)
- rtp_packet->data[i + kRtpHeaderSize] = offset + i;
- rtp_packet->length = length + kRtpHeaderSize;
- memset(&rtp_packet->header, 0, sizeof(WebRtcRTPHeader));
- rtp_packet->header.frameType = kVideoFrameDelta;
- rtp_packet->header.header.headerLength = kRtpHeaderSize;
- rtp_packet->header.header.markerBit = (num_packets_ == 1);
- rtp_packet->header.header.sequenceNumber = seq_num_;
- rtp_packet->header.header.timestamp = timestamp_;
- rtp_packet->header.header.payloadType = kVp8PayloadType;
- BuildRtpHeader(rtp_packet->data, &rtp_packet->header.header);
- ++seq_num_;
- --num_packets_;
- return rtp_packet;
-}
-
-// Creates a new RtpPacket with the RED header added to the packet.
-RawRtpPacket* FrameGenerator::BuildMediaRedPacket(const RawRtpPacket* packet) {
- const size_t kHeaderLength = packet->header.header.headerLength;
- RawRtpPacket* red_packet = new RawRtpPacket;
- 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, red_packet->data[1] & 0x7f, kHeaderLength);
- memcpy(red_packet->data + kHeaderLength + 1, packet->data + kHeaderLength,
- packet->length - kHeaderLength);
- return red_packet;
-}
-
-// Creates a new RtpPacket with FEC payload and RED header. Does this by
-// creating a new fake media RtpPacket, clears the marker bit and adds a RED
-// header. Finally replaces the payload with the content of |packet->data|.
-RawRtpPacket* FrameGenerator::BuildFecRedPacket(
- const ForwardErrorCorrection::Packet* packet) {
- // Create a fake media packet to get a correct header. 1 byte RED header.
- ++num_packets_;
- RawRtpPacket* red_packet = NextPacket(0, packet->length + 1);
- red_packet->data[1] &= ~0x80; // Clear marker bit.
- const size_t kHeaderLength = red_packet->header.header.headerLength;
- SetRedHeader(red_packet, kFecPayloadType, kHeaderLength);
- memcpy(red_packet->data + kHeaderLength + 1, packet->data, packet->length);
- red_packet->length = kHeaderLength + 1 + packet->length;
- return red_packet;
-}
-
-void FrameGenerator::SetRedHeader(ForwardErrorCorrection::Packet* red_packet,
- uint8_t payload_type,
- size_t header_length) const {
- // Replace pltype.
- red_packet->data[1] &= 0x80; // Reset.
- red_packet->data[1] += kRedPayloadType; // Replace.
-
- // Add RED header, f-bit always 0.
- red_packet->data[header_length] = payload_type;
-}
-
-void FrameGenerator::BuildRtpHeader(uint8_t* data, const RTPHeader* header) {
- data[0] = 0x80; // Version 2.
- data[1] = header->payloadType;
- data[1] |= (header->markerBit ? kRtpMarkerBitMask : 0);
- ByteWriter<uint16_t>::WriteBigEndian(data + 2, header->sequenceNumber);
- ByteWriter<uint32_t>::WriteBigEndian(data + 4, header->timestamp);
- ByteWriter<uint32_t>::WriteBigEndian(data + 8, header->ssrc);
-}
-
void MediaPacketGenerator::ConstructMediaPacketsSeqNum(int num_media_packets,
uint16_t start_seq_num) {
RTC_DCHECK_GT(num_media_packets, 0);
@@ -174,6 +95,86 @@ uint16_t MediaPacketGenerator::GetFecSeqNum() {
return fec_seq_num_;
}
+UlpfecPacketGenerator::UlpfecPacketGenerator()
+ : num_packets_(0), seq_num_(0), timestamp_(0) {}
+
+void UlpfecPacketGenerator::NewFrame(int num_packets) {
+ num_packets_ = num_packets;
+ timestamp_ += 3000;
+}
+
+uint16_t UlpfecPacketGenerator::NextSeqNum() {
+ return ++seq_num_;
+}
+
+RawRtpPacket* UlpfecPacketGenerator::NextPacket(int offset, size_t length) {
+ RawRtpPacket* rtp_packet = new RawRtpPacket;
+ for (size_t i = 0; i < length; ++i)
+ rtp_packet->data[i + kRtpHeaderSize] = offset + i;
+ rtp_packet->length = length + kRtpHeaderSize;
+ memset(&rtp_packet->header, 0, sizeof(WebRtcRTPHeader));
+ rtp_packet->header.frameType = kVideoFrameDelta;
+ rtp_packet->header.header.headerLength = kRtpHeaderSize;
+ rtp_packet->header.header.markerBit = (num_packets_ == 1);
+ rtp_packet->header.header.sequenceNumber = seq_num_;
+ rtp_packet->header.header.timestamp = timestamp_;
+ rtp_packet->header.header.payloadType = kVp8PayloadType;
+ BuildRtpHeader(rtp_packet->data, &rtp_packet->header.header);
+ ++seq_num_;
+ --num_packets_;
+ return rtp_packet;
+}
+
+RawRtpPacket* UlpfecPacketGenerator::BuildMediaRedPacket(
+ const RawRtpPacket* packet) {
+ const size_t kHeaderLength = packet->header.header.headerLength;
+ RawRtpPacket* red_packet = new RawRtpPacket;
+ 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, red_packet->data[1] & 0x7f, kHeaderLength);
+ memcpy(red_packet->data + kHeaderLength + 1, packet->data + kHeaderLength,
+ packet->length - kHeaderLength);
+ return red_packet;
+}
+
+RawRtpPacket* UlpfecPacketGenerator::BuildFecRedPacket(
+ const ForwardErrorCorrection::Packet* packet) {
+ // Create a fake media packet to get a correct header. 1 byte RED header.
+ ++num_packets_;
+ RawRtpPacket* red_packet = NextPacket(0, packet->length + 1);
+ red_packet->data[1] &= ~0x80; // Clear marker bit.
+ const size_t kHeaderLength = red_packet->header.header.headerLength;
+ SetRedHeader(red_packet, kFecPayloadType, kHeaderLength);
+ memcpy(red_packet->data + kHeaderLength + 1, packet->data, packet->length);
+ red_packet->length = kHeaderLength + 1 + packet->length;
+ return red_packet;
+}
+
+void UlpfecPacketGenerator::SetRedHeader(
+ ForwardErrorCorrection::Packet* red_packet,
+ uint8_t payload_type,
+ size_t header_length) const {
+ // Replace pltype.
+ red_packet->data[1] &= 0x80; // Reset.
+ red_packet->data[1] += kRedPayloadType; // Replace.
+
+ // Add RED header, f-bit always 0.
+ red_packet->data[header_length] = payload_type;
+}
+
+void UlpfecPacketGenerator::BuildRtpHeader(uint8_t* data,
+ const RTPHeader* header) {
+ data[0] = 0x80; // Version 2.
+ data[1] = header->payloadType;
+ data[1] |= (header->markerBit ? kRtpMarkerBitMask : 0);
+ ByteWriter<uint16_t>::WriteBigEndian(data + 2, header->sequenceNumber);
+ ByteWriter<uint32_t>::WriteBigEndian(data + 4, header->timestamp);
+ ByteWriter<uint32_t>::WriteBigEndian(data + 8, header->ssrc);
+}
+
} // namespace fec
} // namespace test
} // namespace webrtc
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/fec_test_helper.h ('k') | webrtc/modules/rtp_rtcp/source/producer_fec_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698