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

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

Issue 2297533002: Reorder member functions in RtpFecTest. (pt. 4b) (Closed)
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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
index 1334cb7be2bdff6dc0455c4a30af451c1245d6bc..a95c2cb3b054a804984bb33c82015ac86c4edde6 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_fec_unittest.cc
@@ -47,15 +47,6 @@ void DeepCopyEveryNthPacket(const ForwardErrorCorrection::PacketList& src,
using ::testing::Types;
-// Subclass ForwardErrorCorrection to use gTest typed tests.
-class UlpfecForwardErrorCorrection : public ForwardErrorCorrection {
- public:
- UlpfecForwardErrorCorrection()
- : ForwardErrorCorrection(
- std::unique_ptr<FecHeaderReader>(new UlpfecHeaderReader()),
- std::unique_ptr<FecHeaderWriter>(new UlpfecHeaderWriter())) {}
-};
-
template <typename ForwardErrorCorrectionType>
class RtpFecTest : public ::testing::Test {
protected:
@@ -100,10 +91,98 @@ class RtpFecTest : public ::testing::Test {
int fec_loss_mask_[kUlpfecMaxMediaPackets];
};
+template <typename ForwardErrorCorrectionType>
+void RtpFecTest<ForwardErrorCorrectionType>::NetworkReceivedPackets(
+ int* media_loss_mask,
+ int* fec_loss_mask) {
+ constexpr bool kFecPacket = true;
+ ReceivedPackets(media_packets_, media_loss_mask, !kFecPacket);
+ ReceivedPackets(generated_fec_packets_, fec_loss_mask, kFecPacket);
+}
+
+template <typename ForwardErrorCorrectionType>
+template <typename PacketListType>
+void RtpFecTest<ForwardErrorCorrectionType>::ReceivedPackets(
+ const PacketListType& packet_list,
+ int* loss_mask,
+ bool is_fec) {
+ uint16_t fec_seq_num = media_packet_generator_.GetFecSeqNum();
+ int packet_idx = 0;
+
+ for (const auto& packet : packet_list) {
+ if (loss_mask[packet_idx] == 0) {
+ std::unique_ptr<ForwardErrorCorrection::ReceivedPacket> received_packet(
+ new ForwardErrorCorrection::ReceivedPacket());
+ received_packet->pkt = new ForwardErrorCorrection::Packet();
+ received_packet->pkt->length = packet->length;
+ memcpy(received_packet->pkt->data, packet->data, packet->length);
+ received_packet->is_fec = is_fec;
+ if (!is_fec) {
+ // For media packets, the sequence number and marker bit is
+ // obtained from RTP header. These were set in ConstructMediaPackets().
+ received_packet->seq_num =
+ ByteReader<uint16_t>::ReadBigEndian(&packet->data[2]);
+ } else {
+ // The sequence number, marker bit, and ssrc number are defined in the
+ // RTP header of the FEC packet, which is not constructed in this test.
+ // So we set these values below based on the values generated in
+ // ConstructMediaPackets().
+ received_packet->seq_num = fec_seq_num;
+ // The ssrc value for FEC packets is set to the one used for the
+ // media packets in ConstructMediaPackets().
+ received_packet->ssrc = kMediaSsrc;
+ }
+ received_packets_.push_back(std::move(received_packet));
+ }
+ packet_idx++;
+ // Sequence number of FEC packets are defined as increment by 1 from
+ // last media packet in frame.
+ if (is_fec)
+ fec_seq_num++;
+ }
+}
+
+template <typename ForwardErrorCorrectionType>
+bool RtpFecTest<ForwardErrorCorrectionType>::IsRecoveryComplete() {
+ // We must have equally many recovered packets as original packets.
+ if (recovered_packets_.size() != media_packets_.size()) {
+ return false;
+ }
+
+ // All recovered packets must be identical to the corresponding
+ // original packets.
+ using PacketPtr = std::unique_ptr<ForwardErrorCorrection::Packet>;
+ using RecoveredPacketPtr =
+ std::unique_ptr<ForwardErrorCorrection::RecoveredPacket>;
+ auto cmp = [](const PacketPtr& media_packet,
+ const RecoveredPacketPtr& recovered_packet) {
+ if (media_packet->length != recovered_packet->pkt->length) {
+ return false;
+ }
+ if (memcmp(media_packet->data,
+ recovered_packet->pkt->data,
+ media_packet->length) != 0) {
+ return false;
+ }
+ return true;
+ };
+ return std::equal(media_packets_.cbegin(), media_packets_.cend(),
+ recovered_packets_.cbegin(), cmp);
+}
+
// Define gTest typed test to loop over both ULPFEC and FlexFEC.
// Since the tests now are parameterized, we need to access
// member variables using |this|, thereby enforcing runtime
// resolution.
+
+class UlpfecForwardErrorCorrection : public ForwardErrorCorrection {
+ public:
+ UlpfecForwardErrorCorrection()
+ : ForwardErrorCorrection(
+ std::unique_ptr<FecHeaderReader>(new UlpfecHeaderReader()),
+ std::unique_ptr<FecHeaderWriter>(new UlpfecHeaderWriter())) {}
+};
+
using FecTypes = Types<UlpfecForwardErrorCorrection>;
TYPED_TEST_CASE(RtpFecTest, FecTypes);
@@ -870,83 +949,4 @@ TYPED_TEST(RtpFecTest, FecRecoveryNonConsecutivePacketsWrap) {
EXPECT_FALSE(this->IsRecoveryComplete());
}
-template <typename ForwardErrorCorrectionType>
-bool RtpFecTest<ForwardErrorCorrectionType>::IsRecoveryComplete() {
- // We must have equally many recovered packets as original packets.
- if (recovered_packets_.size() != media_packets_.size()) {
- return false;
- }
-
- // All recovered packets must be identical to the corresponding
- // original packets.
- using PacketPtr = std::unique_ptr<ForwardErrorCorrection::Packet>;
- using RecoveredPacketPtr =
- std::unique_ptr<ForwardErrorCorrection::RecoveredPacket>;
- auto cmp = [](const PacketPtr& media_packet,
- const RecoveredPacketPtr& recovered_packet) {
- if (media_packet->length != recovered_packet->pkt->length) {
- return false;
- }
- if (memcmp(media_packet->data,
- recovered_packet->pkt->data,
- media_packet->length) != 0) {
- return false;
- }
- return true;
- };
- return std::equal(media_packets_.cbegin(), media_packets_.cend(),
- recovered_packets_.cbegin(), cmp);
-}
-
-template <typename ForwardErrorCorrectionType>
-void RtpFecTest<ForwardErrorCorrectionType>::NetworkReceivedPackets(
- int* media_loss_mask,
- int* fec_loss_mask) {
- constexpr bool kFecPacket = true;
- ReceivedPackets(media_packets_, media_loss_mask, !kFecPacket);
- ReceivedPackets(generated_fec_packets_, fec_loss_mask, kFecPacket);
-}
-
-template <typename ForwardErrorCorrectionType>
-template <typename PacketListType>
-void RtpFecTest<ForwardErrorCorrectionType>::ReceivedPackets(
- const PacketListType& packet_list,
- int* loss_mask,
- bool is_fec) {
- uint16_t fec_seq_num = media_packet_generator_.GetFecSeqNum();
- int packet_idx = 0;
-
- for (const auto& packet : packet_list) {
- if (loss_mask[packet_idx] == 0) {
- std::unique_ptr<ForwardErrorCorrection::ReceivedPacket> received_packet(
- new ForwardErrorCorrection::ReceivedPacket());
- received_packet->pkt = new ForwardErrorCorrection::Packet();
- received_packet->pkt->length = packet->length;
- memcpy(received_packet->pkt->data, packet->data, packet->length);
- received_packet->is_fec = is_fec;
- if (!is_fec) {
- // For media packets, the sequence number and marker bit is
- // obtained from RTP header. These were set in ConstructMediaPackets().
- received_packet->seq_num =
- ByteReader<uint16_t>::ReadBigEndian(&packet->data[2]);
- } else {
- // The sequence number, marker bit, and ssrc number are defined in the
- // RTP header of the FEC packet, which is not constructed in this test.
- // So we set these values below based on the values generated in
- // ConstructMediaPackets().
- received_packet->seq_num = fec_seq_num;
- // The ssrc value for FEC packets is set to the one used for the
- // media packets in ConstructMediaPackets().
- received_packet->ssrc = kMediaSsrc;
- }
- received_packets_.push_back(std::move(received_packet));
- }
- packet_idx++;
- // Sequence number of FEC packets are defined as increment by 1 from
- // last media packet in frame.
- if (is_fec)
- fec_seq_num++;
- }
-}
-
} // namespace webrtc
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698