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

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

Issue 2448463003: Rename {,Set}GenericFECStatus to {,Set}UlpfecConfig. (Closed)
Patch Set: Feedback response 3. Created 4 years, 1 month 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_video.h ('k') | webrtc/video/rtp_stream_receiver.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 29 matching lines...) Expand all
40 kRedForFecHeaderLength + media_packet.payload_size()); 40 kRedForFecHeaderLength + media_packet.payload_size());
41 RTC_DCHECK(red_payload); 41 RTC_DCHECK(red_payload);
42 red_payload[0] = media_packet.PayloadType(); 42 red_payload[0] = media_packet.PayloadType();
43 memcpy(&red_payload[kRedForFecHeaderLength], media_packet.payload(), 43 memcpy(&red_payload[kRedForFecHeaderLength], media_packet.payload(),
44 media_packet.payload_size()); 44 media_packet.payload_size());
45 } 45 }
46 } // namespace 46 } // namespace
47 47
48 RTPSenderVideo::RTPSenderVideo(Clock* clock, RTPSender* rtp_sender) 48 RTPSenderVideo::RTPSenderVideo(Clock* clock, RTPSender* rtp_sender)
49 : rtp_sender_(rtp_sender), 49 : rtp_sender_(rtp_sender),
50 clock_(clock), 50 clock_(clock),
brandtr 2016/10/31 12:47:04 Please help me check that I correctly copy-pasted
stefan-webrtc 2016/11/03 13:52:26 Done.
51 video_type_(kRtpVideoGeneric),
52 retransmission_settings_(kRetransmitBaseLayer),
53 last_rotation_(kVideoRotation_0),
54 fec_enabled_(false),
55 red_payload_type_(-1),
56 fec_payload_type_(-1),
57 delta_fec_params_{0, 1, kFecMaskRandom},
58 key_fec_params_{0, 1, kFecMaskRandom},
51 fec_bitrate_(1000, RateStatistics::kBpsScale), 59 fec_bitrate_(1000, RateStatistics::kBpsScale),
52 video_bitrate_(1000, RateStatistics::kBpsScale) { 60 video_bitrate_(1000, RateStatistics::kBpsScale) {
53 encoder_checker_.Detach(); 61 encoder_checker_.Detach();
54 } 62 }
55 63
56 RTPSenderVideo::~RTPSenderVideo() {} 64 RTPSenderVideo::~RTPSenderVideo() {}
57 65
58 void RTPSenderVideo::SetVideoCodecType(RtpVideoCodecTypes video_type) { 66 void RTPSenderVideo::SetVideoCodecType(RtpVideoCodecTypes video_type) {
59 video_type_ = video_type; 67 video_type_ = video_type;
60 } 68 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 fec_bitrate_.Update(fec_packet->length(), clock_->TimeInMilliseconds()); 173 fec_bitrate_.Update(fec_packet->length(), clock_->TimeInMilliseconds());
166 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), 174 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"),
167 "Video::PacketFec", "timestamp", rtp_timestamp, 175 "Video::PacketFec", "timestamp", rtp_timestamp,
168 "seqnum", fec_sequence_number); 176 "seqnum", fec_sequence_number);
169 } else { 177 } else {
170 LOG(LS_WARNING) << "Failed to send FEC packet " << fec_sequence_number; 178 LOG(LS_WARNING) << "Failed to send FEC packet " << fec_sequence_number;
171 } 179 }
172 } 180 }
173 } 181 }
174 182
175 void RTPSenderVideo::SetGenericFECStatus(bool enable, 183 void RTPSenderVideo::SetUlpfecConfig(bool enabled,
176 uint8_t payload_type_red, 184 int red_payload_type,
177 uint8_t payload_type_fec) { 185 int ulpfec_payload_type) {
178 RTC_DCHECK(!enable || payload_type_red > 0); 186 RTC_DCHECK(!enabled || red_payload_type > 0);
187 RTC_DCHECK_LE(red_payload_type, 127);
188 RTC_DCHECK_LE(ulpfec_payload_type, 127);
189
179 rtc::CritScope cs(&crit_); 190 rtc::CritScope cs(&crit_);
180 fec_enabled_ = enable; 191 fec_enabled_ = enabled;
181 red_payload_type_ = payload_type_red; 192 red_payload_type_ = red_payload_type;
182 fec_payload_type_ = payload_type_fec; 193 fec_payload_type_ = ulpfec_payload_type;
194
195 // Reset FEC rates.
183 delta_fec_params_ = FecProtectionParams{0, 1, kFecMaskRandom}; 196 delta_fec_params_ = FecProtectionParams{0, 1, kFecMaskRandom};
184 key_fec_params_ = FecProtectionParams{0, 1, kFecMaskRandom}; 197 key_fec_params_ = FecProtectionParams{0, 1, kFecMaskRandom};
185 } 198 }
186 199
187 void RTPSenderVideo::GenericFECStatus(bool* enable, 200 void RTPSenderVideo::GetUlpfecConfig(bool* enabled,
188 uint8_t* payload_type_red, 201 int* red_payload_type,
189 uint8_t* payload_type_fec) const { 202 int* ulpfec_payload_type) const {
190 rtc::CritScope cs(&crit_); 203 rtc::CritScope cs(&crit_);
191 *enable = fec_enabled_; 204 *enabled = fec_enabled_;
192 *payload_type_red = red_payload_type_; 205 *red_payload_type = red_payload_type_;
193 *payload_type_fec = fec_payload_type_; 206 *ulpfec_payload_type = fec_payload_type_;
194 } 207 }
195 208
196 size_t RTPSenderVideo::FecPacketOverhead() const { 209 size_t RTPSenderVideo::FecPacketOverhead() const {
197 rtc::CritScope cs(&crit_); 210 rtc::CritScope cs(&crit_);
198 size_t overhead = 0; 211 size_t overhead = 0;
199 if (red_payload_type_ != 0) { 212 if (red_payload_type_ != -1) {
200 // Overhead is FEC headers plus RED for FEC header plus anything in RTP 213 // Overhead is FEC headers plus RED for FEC header plus anything in RTP
201 // header beyond the 12 bytes base header (CSRC list, extensions...) 214 // header beyond the 12 bytes base header (CSRC list, extensions...)
202 // This reason for the header extensions to be included here is that 215 // This reason for the header extensions to be included here is that
203 // from an FEC viewpoint, they are part of the payload to be protected. 216 // from an FEC viewpoint, they are part of the payload to be protected.
204 // (The base RTP header is already protected by the FEC header.) 217 // (The base RTP header is already protected by the FEC header.)
205 return producer_fec_.MaxPacketOverhead() + kRedForFecHeaderLength + 218 return producer_fec_.MaxPacketOverhead() + kRedForFecHeaderLength +
206 (rtp_sender_->RtpHeaderLength() - kRtpHeaderSize); 219 (rtp_sender_->RtpHeaderLength() - kRtpHeaderSize);
207 } 220 }
208 if (fec_enabled_) 221 if (fec_enabled_)
209 overhead += producer_fec_.MaxPacketOverhead(); 222 overhead += producer_fec_.MaxPacketOverhead();
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 312
300 size_t payload_bytes_in_packet = 0; 313 size_t payload_bytes_in_packet = 0;
301 if (!packetizer->NextPacket(payload, &payload_bytes_in_packet, &last)) 314 if (!packetizer->NextPacket(payload, &payload_bytes_in_packet, &last))
302 return false; 315 return false;
303 316
304 packet->SetPayloadSize(payload_bytes_in_packet); 317 packet->SetPayloadSize(payload_bytes_in_packet);
305 packet->SetMarker(last); 318 packet->SetMarker(last);
306 if (!rtp_sender_->AssignSequenceNumber(packet.get())) 319 if (!rtp_sender_->AssignSequenceNumber(packet.get()))
307 return false; 320 return false;
308 321
309 if (red_payload_type != 0) { 322 if (red_payload_type != -1) {
310 SendVideoPacketAsRed(std::move(packet), storage, 323 SendVideoPacketAsRed(std::move(packet), storage,
311 packetizer->GetProtectionType() == kProtectedPacket); 324 packetizer->GetProtectionType() == kProtectedPacket);
312 } else { 325 } else {
313 SendVideoPacket(std::move(packet), storage); 326 SendVideoPacket(std::move(packet), storage);
314 } 327 }
315 328
316 if (first_frame) { 329 if (first_frame) {
317 if (first) { 330 if (first) {
318 LOG(LS_INFO) 331 LOG(LS_INFO)
319 << "Sent first RTP packet of the first video frame (pre-pacer)"; 332 << "Sent first RTP packet of the first video frame (pre-pacer)";
(...skipping 25 matching lines...) Expand all
345 rtc::CritScope cs(&crit_); 358 rtc::CritScope cs(&crit_);
346 return retransmission_settings_; 359 return retransmission_settings_;
347 } 360 }
348 361
349 void RTPSenderVideo::SetSelectiveRetransmissions(uint8_t settings) { 362 void RTPSenderVideo::SetSelectiveRetransmissions(uint8_t settings) {
350 rtc::CritScope cs(&crit_); 363 rtc::CritScope cs(&crit_);
351 retransmission_settings_ = settings; 364 retransmission_settings_ = settings;
352 } 365 }
353 366
354 } // namespace webrtc 367 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender_video.h ('k') | webrtc/video/rtp_stream_receiver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698