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

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

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