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

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

Issue 2431253003: Remove now unused code in RtpHeaderExtensionMap (Closed)
Patch Set: 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
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 paced_sender_(paced_sender), 85 paced_sender_(paced_sender),
86 transport_sequence_number_allocator_(sequence_number_allocator), 86 transport_sequence_number_allocator_(sequence_number_allocator),
87 transport_feedback_observer_(transport_feedback_observer), 87 transport_feedback_observer_(transport_feedback_observer),
88 last_capture_time_ms_sent_(0), 88 last_capture_time_ms_sent_(0),
89 transport_(transport), 89 transport_(transport),
90 sending_media_(true), // Default to sending media. 90 sending_media_(true), // Default to sending media.
91 max_payload_length_(IP_PACKET_SIZE - 28), // Default is IP-v4/UDP. 91 max_payload_length_(IP_PACKET_SIZE - 28), // Default is IP-v4/UDP.
92 payload_type_(-1), 92 payload_type_(-1),
93 payload_type_map_(), 93 payload_type_map_(),
94 rtp_header_extension_map_(), 94 rtp_header_extension_map_(),
95 video_rotation_active_(false),
96 playout_delay_active_(false),
97 packet_history_(clock), 95 packet_history_(clock),
98 // Statistics 96 // Statistics
99 rtp_stats_callback_(nullptr), 97 rtp_stats_callback_(nullptr),
100 total_bitrate_sent_(kBitrateStatisticsWindowMs, 98 total_bitrate_sent_(kBitrateStatisticsWindowMs,
101 RateStatistics::kBpsScale), 99 RateStatistics::kBpsScale),
102 nack_bitrate_sent_(kBitrateStatisticsWindowMs, RateStatistics::kBpsScale), 100 nack_bitrate_sent_(kBitrateStatisticsWindowMs, RateStatistics::kBpsScale),
103 frame_count_observer_(frame_count_observer), 101 frame_count_observer_(frame_count_observer),
104 send_side_delay_observer_(send_side_delay_observer), 102 send_side_delay_observer_(send_side_delay_observer),
105 event_log_(event_log), 103 event_log_(event_log),
106 send_packet_observer_(send_packet_observer), 104 send_packet_observer_(send_packet_observer),
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 uint32_t RTPSender::NackOverheadRate() const { 176 uint32_t RTPSender::NackOverheadRate() const {
179 rtc::CritScope cs(&statistics_crit_); 177 rtc::CritScope cs(&statistics_crit_);
180 return nack_bitrate_sent_.Rate(clock_->TimeInMilliseconds()).value_or(0); 178 return nack_bitrate_sent_.Rate(clock_->TimeInMilliseconds()).value_or(0);
181 } 179 }
182 180
183 int32_t RTPSender::RegisterRtpHeaderExtension(RTPExtensionType type, 181 int32_t RTPSender::RegisterRtpHeaderExtension(RTPExtensionType type,
184 uint8_t id) { 182 uint8_t id) {
185 rtc::CritScope lock(&send_critsect_); 183 rtc::CritScope lock(&send_critsect_);
186 switch (type) { 184 switch (type) {
187 case kRtpExtensionVideoRotation: 185 case kRtpExtensionVideoRotation:
188 video_rotation_active_ = false;
189 return rtp_header_extension_map_.RegisterInactive(type, id);
190 case kRtpExtensionPlayoutDelay: 186 case kRtpExtensionPlayoutDelay:
191 playout_delay_active_ = false;
192 return rtp_header_extension_map_.RegisterInactive(type, id);
193 case kRtpExtensionTransmissionTimeOffset: 187 case kRtpExtensionTransmissionTimeOffset:
194 case kRtpExtensionAbsoluteSendTime: 188 case kRtpExtensionAbsoluteSendTime:
195 case kRtpExtensionAudioLevel: 189 case kRtpExtensionAudioLevel:
196 case kRtpExtensionTransportSequenceNumber: 190 case kRtpExtensionTransportSequenceNumber:
197 return rtp_header_extension_map_.Register(type, id); 191 return rtp_header_extension_map_.Register(type, id);
198 case kRtpExtensionNone: 192 case kRtpExtensionNone:
199 case kRtpExtensionNumberOfExtensions: 193 case kRtpExtensionNumberOfExtensions:
200 LOG(LS_ERROR) << "Invalid RTP extension type for registration"; 194 LOG(LS_ERROR) << "Invalid RTP extension type for registration";
201 return -1; 195 return -1;
202 } 196 }
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 SetSendPayloadType(payload_type); 365 SetSendPayloadType(payload_type);
372 RtpUtility::Payload* payload = it->second; 366 RtpUtility::Payload* payload = it->second;
373 assert(payload); 367 assert(payload);
374 if (!payload->audio && !audio_configured_) { 368 if (!payload->audio && !audio_configured_) {
375 video_->SetVideoCodecType(payload->typeSpecific.Video.videoCodecType); 369 video_->SetVideoCodecType(payload->typeSpecific.Video.videoCodecType);
376 *video_type = payload->typeSpecific.Video.videoCodecType; 370 *video_type = payload->typeSpecific.Video.videoCodecType;
377 } 371 }
378 return 0; 372 return 0;
379 } 373 }
380 374
381 bool RTPSender::ActivateCVORtpHeaderExtension() {
382 if (!video_rotation_active_) {
383 rtc::CritScope lock(&send_critsect_);
384 if (rtp_header_extension_map_.SetActive(kRtpExtensionVideoRotation, true)) {
385 video_rotation_active_ = true;
386 }
387 }
388 return video_rotation_active_;
389 }
390
391 bool RTPSender::SendOutgoingData(FrameType frame_type, 375 bool RTPSender::SendOutgoingData(FrameType frame_type,
392 int8_t payload_type, 376 int8_t payload_type,
393 uint32_t capture_timestamp, 377 uint32_t capture_timestamp,
394 int64_t capture_time_ms, 378 int64_t capture_time_ms,
395 const uint8_t* payload_data, 379 const uint8_t* payload_data,
396 size_t payload_size, 380 size_t payload_size,
397 const RTPFragmentationHeader* fragmentation, 381 const RTPFragmentationHeader* fragmentation,
398 const RTPVideoHeader* rtp_header, 382 const RTPVideoHeader* rtp_header,
399 uint32_t* transport_frame_id_out) { 383 uint32_t* transport_frame_id_out) {
400 uint32_t ssrc; 384 uint32_t ssrc;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 assert(frame_type != kAudioFrameSpeech && frame_type != kAudioFrameCN); 417 assert(frame_type != kAudioFrameSpeech && frame_type != kAudioFrameCN);
434 418
435 if (frame_type == kEmptyFrame) 419 if (frame_type == kEmptyFrame)
436 return true; 420 return true;
437 421
438 if (rtp_header) { 422 if (rtp_header) {
439 playout_delay_oracle_.UpdateRequest(ssrc, rtp_header->playout_delay, 423 playout_delay_oracle_.UpdateRequest(ssrc, rtp_header->playout_delay,
440 sequence_number); 424 sequence_number);
441 } 425 }
442 426
443 // Update the active/inactive status of playout delay extension based
444 // on what the oracle indicates.
445 {
446 rtc::CritScope lock(&send_critsect_);
447 bool send_playout_delay = playout_delay_oracle_.send_playout_delay();
448 if (playout_delay_active_ != send_playout_delay) {
449 playout_delay_active_ = send_playout_delay;
450 rtp_header_extension_map_.SetActive(kRtpExtensionPlayoutDelay,
451 playout_delay_active_);
452 }
453 }
454
455 result = video_->SendVideo(video_type, frame_type, payload_type, 427 result = video_->SendVideo(video_type, frame_type, payload_type,
456 rtp_timestamp, capture_time_ms, payload_data, 428 rtp_timestamp, capture_time_ms, payload_data,
457 payload_size, fragmentation, rtp_header); 429 payload_size, fragmentation, rtp_header);
458 } 430 }
459 431
460 rtc::CritScope cs(&statistics_crit_); 432 rtc::CritScope cs(&statistics_crit_);
461 // Note: This is currently only counting for video. 433 // Note: This is currently only counting for video.
462 if (frame_type == kVideoFrameKey) { 434 if (frame_type == kVideoFrameKey) {
463 ++frame_counts_.key_frames; 435 ++frame_counts_.key_frames;
464 } else if (frame_type == kVideoFrameDelta) { 436 } else if (frame_type == kVideoFrameDelta) {
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 // Remember marker bit to determine if padding can be inserted with 992 // Remember marker bit to determine if padding can be inserted with
1021 // sequence number following |packet|. 993 // sequence number following |packet|.
1022 last_packet_marker_bit_ = packet->Marker(); 994 last_packet_marker_bit_ = packet->Marker();
1023 // Save timestamps to generate timestamp field and extensions for the padding. 995 // Save timestamps to generate timestamp field and extensions for the padding.
1024 last_rtp_timestamp_ = packet->Timestamp(); 996 last_rtp_timestamp_ = packet->Timestamp();
1025 last_timestamp_time_ms_ = clock_->TimeInMilliseconds(); 997 last_timestamp_time_ms_ = clock_->TimeInMilliseconds();
1026 capture_time_ms_ = packet->capture_time_ms(); 998 capture_time_ms_ = packet->capture_time_ms();
1027 return true; 999 return true;
1028 } 1000 }
1029 1001
1030 bool RTPSender::FindHeaderExtensionPosition(RTPExtensionType type,
1031 const uint8_t* rtp_packet,
1032 size_t rtp_packet_length,
1033 const RTPHeader& rtp_header,
1034 size_t* position) const {
1035 // Get length until start of header extension block.
1036 int extension_block_pos =
1037 rtp_header_extension_map_.GetLengthUntilBlockStartInBytes(type);
1038 if (extension_block_pos < 0) {
1039 LOG(LS_WARNING) << "Failed to find extension position for " << type
1040 << " as it is not registered.";
1041 return false;
1042 }
1043
1044 HeaderExtension header_extension(type);
1045
1046 size_t extension_pos =
1047 kRtpHeaderLength + rtp_header.numCSRCs * sizeof(uint32_t);
1048 size_t block_pos = extension_pos + extension_block_pos;
1049 if (rtp_packet_length < block_pos + header_extension.length ||
1050 rtp_header.headerLength < block_pos + header_extension.length) {
1051 LOG(LS_WARNING) << "Failed to find extension position for " << type
1052 << " as the length is invalid.";
1053 return false;
1054 }
1055
1056 // Verify that header contains extension.
1057 if (!(rtp_packet[extension_pos] == 0xBE &&
1058 rtp_packet[extension_pos + 1] == 0xDE)) {
1059 LOG(LS_WARNING) << "Failed to find extension position for " << type
1060 << "as hdr extension not found.";
1061 return false;
1062 }
1063
1064 *position = block_pos;
1065 return true;
1066 }
1067
1068 bool RTPSender::UpdateTransportSequenceNumber(RtpPacketToSend* packet, 1002 bool RTPSender::UpdateTransportSequenceNumber(RtpPacketToSend* packet,
1069 int* packet_id) const { 1003 int* packet_id) const {
1070 RTC_DCHECK(packet); 1004 RTC_DCHECK(packet);
1071 RTC_DCHECK(packet_id); 1005 RTC_DCHECK(packet_id);
1072 rtc::CritScope lock(&send_critsect_); 1006 rtc::CritScope lock(&send_critsect_);
1073 if (!rtp_header_extension_map_.IsRegistered(TransportSequenceNumber::kId)) 1007 if (!rtp_header_extension_map_.IsRegistered(TransportSequenceNumber::kId))
1074 return false; 1008 return false;
1075 1009
1076 if (!transport_sequence_number_allocator_) 1010 if (!transport_sequence_number_allocator_)
1077 return false; 1011 return false;
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1313 rtc::CritScope lock(&send_critsect_); 1247 rtc::CritScope lock(&send_critsect_);
1314 1248
1315 RtpState state; 1249 RtpState state;
1316 state.sequence_number = sequence_number_rtx_; 1250 state.sequence_number = sequence_number_rtx_;
1317 state.start_timestamp = timestamp_offset_; 1251 state.start_timestamp = timestamp_offset_;
1318 1252
1319 return state; 1253 return state;
1320 } 1254 }
1321 1255
1322 } // namespace webrtc 1256 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698