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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_sender_video.cc

Issue 1350163005: Avoid circular dependency rtp_rtcp <-> paced_sender (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase Created 5 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 unified diff | Download patch
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc ('k') | webrtc/video/BUILD.gn » ('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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 97
98 void RTPSenderVideo::SendVideoPacket(uint8_t* data_buffer, 98 void RTPSenderVideo::SendVideoPacket(uint8_t* data_buffer,
99 const size_t payload_length, 99 const size_t payload_length,
100 const size_t rtp_header_length, 100 const size_t rtp_header_length,
101 uint16_t seq_num, 101 uint16_t seq_num,
102 const uint32_t capture_timestamp, 102 const uint32_t capture_timestamp,
103 int64_t capture_time_ms, 103 int64_t capture_time_ms,
104 StorageType storage) { 104 StorageType storage) {
105 if (_rtpSender.SendToNetwork(data_buffer, payload_length, rtp_header_length, 105 if (_rtpSender.SendToNetwork(data_buffer, payload_length, rtp_header_length,
106 capture_time_ms, storage, 106 capture_time_ms, storage,
107 PacedSender::kNormalPriority) == 0) { 107 RtpPacketSender::kNormalPriority) == 0) {
108 _videoBitrate.Update(payload_length + rtp_header_length); 108 _videoBitrate.Update(payload_length + rtp_header_length);
109 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 109 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
110 "Video::PacketNormal", "timestamp", capture_timestamp, 110 "Video::PacketNormal", "timestamp", capture_timestamp,
111 "seqnum", seq_num); 111 "seqnum", seq_num);
112 } else { 112 } else {
113 LOG(LS_WARNING) << "Failed to send video packet " << seq_num; 113 LOG(LS_WARNING) << "Failed to send video packet " << seq_num;
114 } 114 }
115 } 115 }
116 116
117 void RTPSenderVideo::SendVideoPacketAsRed(uint8_t* data_buffer, 117 void RTPSenderVideo::SendVideoPacketAsRed(uint8_t* data_buffer,
(...skipping 25 matching lines...) Expand all
143 _payloadTypeRED, _payloadTypeFEC, next_fec_sequence_number, 143 _payloadTypeRED, _payloadTypeFEC, next_fec_sequence_number,
144 rtp_header_length); 144 rtp_header_length);
145 RTC_DCHECK_EQ(num_fec_packets, fec_packets.size()); 145 RTC_DCHECK_EQ(num_fec_packets, fec_packets.size());
146 if (_retransmissionSettings & kRetransmitFECPackets) 146 if (_retransmissionSettings & kRetransmitFECPackets)
147 fec_storage = kAllowRetransmission; 147 fec_storage = kAllowRetransmission;
148 } 148 }
149 } 149 }
150 if (_rtpSender.SendToNetwork( 150 if (_rtpSender.SendToNetwork(
151 red_packet->data(), red_packet->length() - rtp_header_length, 151 red_packet->data(), red_packet->length() - rtp_header_length,
152 rtp_header_length, capture_time_ms, media_packet_storage, 152 rtp_header_length, capture_time_ms, media_packet_storage,
153 PacedSender::kNormalPriority) == 0) { 153 RtpPacketSender::kNormalPriority) == 0) {
154 _videoBitrate.Update(red_packet->length()); 154 _videoBitrate.Update(red_packet->length());
155 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 155 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
156 "Video::PacketRed", "timestamp", capture_timestamp, 156 "Video::PacketRed", "timestamp", capture_timestamp,
157 "seqnum", media_seq_num); 157 "seqnum", media_seq_num);
158 } else { 158 } else {
159 LOG(LS_WARNING) << "Failed to send RED packet " << media_seq_num; 159 LOG(LS_WARNING) << "Failed to send RED packet " << media_seq_num;
160 } 160 }
161 for (RedPacket* fec_packet : fec_packets) { 161 for (RedPacket* fec_packet : fec_packets) {
162 if (_rtpSender.SendToNetwork( 162 if (_rtpSender.SendToNetwork(
163 fec_packet->data(), fec_packet->length() - rtp_header_length, 163 fec_packet->data(), fec_packet->length() - rtp_header_length,
164 rtp_header_length, capture_time_ms, fec_storage, 164 rtp_header_length, capture_time_ms, fec_storage,
165 PacedSender::kNormalPriority) == 0) { 165 RtpPacketSender::kNormalPriority) == 0) {
166 _fecOverheadRate.Update(fec_packet->length()); 166 _fecOverheadRate.Update(fec_packet->length());
167 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 167 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
168 "Video::PacketFec", "timestamp", capture_timestamp, 168 "Video::PacketFec", "timestamp", capture_timestamp,
169 "seqnum", next_fec_sequence_number); 169 "seqnum", next_fec_sequence_number);
170 } else { 170 } else {
171 LOG(LS_WARNING) << "Failed to send FEC packet " 171 LOG(LS_WARNING) << "Failed to send FEC packet "
172 << next_fec_sequence_number; 172 << next_fec_sequence_number;
173 } 173 }
174 delete fec_packet; 174 delete fec_packet;
175 ++next_fec_sequence_number; 175 ++next_fec_sequence_number;
176 } 176 }
177 } 177 }
178 178
179 int32_t RTPSenderVideo::SendRTPIntraRequest() { 179 int32_t RTPSenderVideo::SendRTPIntraRequest() {
180 // RFC 2032 180 // RFC 2032
181 // 5.2.1. Full intra-frame Request (FIR) packet 181 // 5.2.1. Full intra-frame Request (FIR) packet
182 182
183 size_t length = 8; 183 size_t length = 8;
184 uint8_t data[8]; 184 uint8_t data[8];
185 data[0] = 0x80; 185 data[0] = 0x80;
186 data[1] = 192; 186 data[1] = 192;
187 data[2] = 0; 187 data[2] = 0;
188 data[3] = 1; // length 188 data[3] = 1; // length
189 189
190 ByteWriter<uint32_t>::WriteBigEndian(data + 4, _rtpSender.SSRC()); 190 ByteWriter<uint32_t>::WriteBigEndian(data + 4, _rtpSender.SSRC());
191 191
192 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 192 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
193 "Video::IntraRequest", "seqnum", 193 "Video::IntraRequest", "seqnum",
194 _rtpSender.SequenceNumber()); 194 _rtpSender.SequenceNumber());
195 return _rtpSender.SendToNetwork( 195 return _rtpSender.SendToNetwork(data, 0, length, -1, kDontStore,
196 data, 0, length, -1, kDontStore, PacedSender::kNormalPriority); 196 RtpPacketSender::kNormalPriority);
197 } 197 }
198 198
199 void RTPSenderVideo::SetGenericFECStatus(const bool enable, 199 void RTPSenderVideo::SetGenericFECStatus(const bool enable,
200 const uint8_t payloadTypeRED, 200 const uint8_t payloadTypeRED,
201 const uint8_t payloadTypeFEC) { 201 const uint8_t payloadTypeFEC) {
202 CriticalSectionScoped cs(crit_.get()); 202 CriticalSectionScoped cs(crit_.get());
203 _fecEnabled = enable; 203 _fecEnabled = enable;
204 _payloadTypeRED = payloadTypeRED; 204 _payloadTypeRED = payloadTypeRED;
205 _payloadTypeFEC = payloadTypeFEC; 205 _payloadTypeFEC = payloadTypeFEC;
206 memset(&delta_fec_params_, 0, sizeof(delta_fec_params_)); 206 memset(&delta_fec_params_, 0, sizeof(delta_fec_params_));
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 CriticalSectionScoped cs(crit_.get()); 370 CriticalSectionScoped cs(crit_.get());
371 return _retransmissionSettings; 371 return _retransmissionSettings;
372 } 372 }
373 373
374 void RTPSenderVideo::SetSelectiveRetransmissions(uint8_t settings) { 374 void RTPSenderVideo::SetSelectiveRetransmissions(uint8_t settings) {
375 CriticalSectionScoped cs(crit_.get()); 375 CriticalSectionScoped cs(crit_.get());
376 _retransmissionSettings = settings; 376 _retransmissionSettings = settings;
377 } 377 }
378 378
379 } // namespace webrtc 379 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender_unittest.cc ('k') | webrtc/video/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698