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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/fec_test_helper.h

Issue 2276473002: Rename FrameGenerator -> UlpfecPacketGenerator. (pt. 6b) (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@headers-pt5-add_flexfec
Patch Set: gmock/test paths. Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_ 11 #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_
12 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_ 12 #define WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_
13 13
14 #include "webrtc/base/basictypes.h" 14 #include "webrtc/base/basictypes.h"
15 #include "webrtc/base/random.h" 15 #include "webrtc/base/random.h"
16 #include "webrtc/modules/include/module_common_types.h" 16 #include "webrtc/modules/include/module_common_types.h"
17 #include "webrtc/modules/rtp_rtcp/source/forward_error_correction.h" 17 #include "webrtc/modules/rtp_rtcp/source/forward_error_correction.h"
18 18
19 namespace webrtc { 19 namespace webrtc {
20 namespace test { 20 namespace test {
21
22 // Needed to not clash with another webrtc::FrameGenerator.
23 namespace fec { 21 namespace fec {
24 22
25 struct RawRtpPacket : public ForwardErrorCorrection::Packet { 23 struct RawRtpPacket : public ForwardErrorCorrection::Packet {
26 WebRtcRTPHeader header; 24 WebRtcRTPHeader header;
27 }; 25 };
28 26
29 class FrameGenerator { 27 // This class generates media packets corresponding to a single frame.
30 public:
31 FrameGenerator();
32
33 void NewFrame(int num_packets);
34
35 uint16_t NextSeqNum();
36
37 RawRtpPacket* NextPacket(int offset, size_t length);
38
39 // Creates a new RtpPacket with the RED header added to the packet.
40 RawRtpPacket* BuildMediaRedPacket(const RawRtpPacket* packet);
41
42 // Creates a new RtpPacket with FEC payload and red header. Does this by
43 // creating a new fake media RtpPacket, clears the marker bit and adds a RED
44 // header. Finally replaces the payload with the content of |packet->data|.
45 RawRtpPacket* BuildFecRedPacket(const ForwardErrorCorrection::Packet* packet);
46
47 void SetRedHeader(ForwardErrorCorrection::Packet* red_packet,
48 uint8_t payload_type,
49 size_t header_length) const;
50
51 private:
52 static void BuildRtpHeader(uint8_t* data, const RTPHeader* header);
53
54 int num_packets_;
55 uint16_t seq_num_;
56 uint32_t timestamp_;
57 };
58
59 class MediaPacketGenerator { 28 class MediaPacketGenerator {
60 public: 29 public:
61 MediaPacketGenerator(uint32_t min_packet_size, 30 MediaPacketGenerator(uint32_t min_packet_size,
62 uint32_t max_packet_size, 31 uint32_t max_packet_size,
63 uint32_t ssrc, 32 uint32_t ssrc,
64 Random* random) 33 Random* random)
65 : min_packet_size_(min_packet_size), 34 : min_packet_size_(min_packet_size),
66 max_packet_size_(max_packet_size), 35 max_packet_size_(max_packet_size),
67 ssrc_(ssrc), 36 ssrc_(ssrc),
68 random_(random) {} 37 random_(random) {}
(...skipping 10 matching lines...) Expand all
79 private: 48 private:
80 uint32_t min_packet_size_; 49 uint32_t min_packet_size_;
81 uint32_t max_packet_size_; 50 uint32_t max_packet_size_;
82 uint32_t ssrc_; 51 uint32_t ssrc_;
83 Random* random_; 52 Random* random_;
84 53
85 ForwardErrorCorrection::PacketList media_packets_; 54 ForwardErrorCorrection::PacketList media_packets_;
86 uint16_t fec_seq_num_; 55 uint16_t fec_seq_num_;
87 }; 56 };
88 57
58 // This class generates media and ULPFEC packets (both encapsulated in RED)
59 // for a single frame.
60 class UlpfecPacketGenerator {
61 public:
62 UlpfecPacketGenerator();
63
64 void NewFrame(int num_packets);
65
66 uint16_t NextSeqNum();
67
68 RawRtpPacket* NextPacket(int offset, size_t length);
69
70 // Creates a new RtpPacket with the RED header added to the packet.
71 RawRtpPacket* BuildMediaRedPacket(const RawRtpPacket* packet);
72
73 // Creates a new RtpPacket with FEC payload and red header. Does this by
74 // creating a new fake media RtpPacket, clears the marker bit and adds a RED
75 // header. Finally replaces the payload with the content of |packet->data|.
76 RawRtpPacket* BuildFecRedPacket(const ForwardErrorCorrection::Packet* packet);
77
78 void SetRedHeader(ForwardErrorCorrection::Packet* red_packet,
79 uint8_t payload_type,
80 size_t header_length) const;
81
82 private:
83 static void BuildRtpHeader(uint8_t* data, const RTPHeader* header);
84
85 int num_packets_;
86 uint16_t seq_num_;
87 uint32_t timestamp_;
88 };
89
89 } // namespace fec 90 } // namespace fec
90 } // namespace test 91 } // namespace test
91 } // namespace webrtc 92 } // namespace webrtc
92 93
93 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_ 94 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/fec_receiver_unittest.cc ('k') | webrtc/modules/rtp_rtcp/source/fec_test_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698