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

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

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, 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
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/fec_test_helper.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 81
82 // Number of packets left to generate, in the current frame. 82 // Number of packets left to generate, in the current frame.
83 size_t num_packets_; 83 size_t num_packets_;
84 84
85 private: 85 private:
86 uint32_t ssrc_; 86 uint32_t ssrc_;
87 uint16_t seq_num_; 87 uint16_t seq_num_;
88 uint32_t timestamp_; 88 uint32_t timestamp_;
89 }; 89 };
90 90
91 // This class generates media and FlexFEC packets for a single frame.
92 class FlexfecPacketGenerator : public AugmentedPacketGenerator {
93 public:
94 FlexfecPacketGenerator(uint32_t media_ssrc, uint32_t flexfec_ssrc);
95
96 // Creates a new AugmentedPacket (with RTP headers) from a
97 // FlexFEC packet (without RTP headers).
98 std::unique_ptr<AugmentedPacket> BuildFlexfecPacket(
99 const ForwardErrorCorrection::Packet& packet);
100
101 private:
102 uint32_t flexfec_ssrc_;
103 uint16_t flexfec_seq_num_;
104 uint32_t flexfec_timestamp_;
105 };
106
91 // This class generates media and ULPFEC packets (both encapsulated in RED) 107 // This class generates media and ULPFEC packets (both encapsulated in RED)
92 // for a single frame. 108 // for a single frame.
93 class UlpfecPacketGenerator : public AugmentedPacketGenerator { 109 class UlpfecPacketGenerator : public AugmentedPacketGenerator {
94 public: 110 public:
95 explicit UlpfecPacketGenerator(uint32_t ssrc); 111 explicit UlpfecPacketGenerator(uint32_t ssrc);
96 112
97 // Creates a new AugmentedPacket with the RED header added to the packet. 113 // Creates a new AugmentedPacket with the RED header added to the packet.
98 static std::unique_ptr<AugmentedPacket> BuildMediaRedPacket( 114 static std::unique_ptr<AugmentedPacket> BuildMediaRedPacket(
99 const AugmentedPacket& packet); 115 const AugmentedPacket& packet);
100 116
101 // Creates a new AugmentedPacket with FEC payload and RED header. Does this by 117 // Creates a new AugmentedPacket with FEC payload and RED header. Does this by
102 // creating a new fake media AugmentedPacket, clears the marker bit and adds a 118 // creating a new fake media AugmentedPacket, clears the marker bit and adds a
103 // RED header. Finally replaces the payload with the content of 119 // RED header. Finally replaces the payload with the content of
104 // |packet->data|. 120 // |packet->data|.
105 std::unique_ptr<AugmentedPacket> BuildUlpfecRedPacket( 121 std::unique_ptr<AugmentedPacket> BuildUlpfecRedPacket(
106 const ForwardErrorCorrection::Packet& packet); 122 const ForwardErrorCorrection::Packet& packet);
107 123
108 private: 124 private:
109 static void SetRedHeader(uint8_t payload_type, 125 static void SetRedHeader(uint8_t payload_type,
110 size_t header_length, 126 size_t header_length,
111 AugmentedPacket* red_packet); 127 AugmentedPacket* red_packet);
112 }; 128 };
113 129
114 } // namespace fec 130 } // namespace fec
115 } // namespace test 131 } // namespace test
116 } // namespace webrtc 132 } // namespace webrtc
117 133
118 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_ 134 #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_FEC_TEST_HELPER_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/rtp_rtcp/source/fec_test_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698