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

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

Issue 2551143004: Remove deprecated RTPSender::SendPadData (Closed)
Patch Set: Created 4 years 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.h ('k') | no next file » | 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 461 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 break; 472 break;
473 size_t payload_size = packet->payload_size(); 473 size_t payload_size = packet->payload_size();
474 if (!PrepareAndSendPacket(std::move(packet), true, false, probe_cluster_id)) 474 if (!PrepareAndSendPacket(std::move(packet), true, false, probe_cluster_id))
475 break; 475 break;
476 bytes_left -= payload_size; 476 bytes_left -= payload_size;
477 } 477 }
478 return bytes_to_send - bytes_left; 478 return bytes_to_send - bytes_left;
479 } 479 }
480 480
481 size_t RTPSender::SendPadData(size_t bytes, int probe_cluster_id) { 481 size_t RTPSender::SendPadData(size_t bytes, int probe_cluster_id) {
482 return DeprecatedSendPadData(bytes, false, 0, 0, probe_cluster_id);
483 }
484
485 size_t RTPSender::SendPadData(size_t bytes,
486 bool timestamp_provided,
487 uint32_t timestamp,
488 int64_t capture_time_ms) {
489 return DeprecatedSendPadData(bytes, timestamp_provided, timestamp,
490 capture_time_ms, PacketInfo::kNotAProbe);
491 }
492
493 size_t RTPSender::DeprecatedSendPadData(size_t bytes,
494 bool timestamp_provided,
495 uint32_t timestamp,
496 int64_t capture_time_ms,
497 int probe_cluster_id) {
498 // Always send full padding packets. This is accounted for by the 482 // Always send full padding packets. This is accounted for by the
499 // RtpPacketSender, 483 // RtpPacketSender, which will make sure we don't send too much padding even
500 // which will make sure we don't send too much padding even if a single packet 484 // if a single packet is larger than requested.
501 // is larger than requested.
502 size_t padding_bytes_in_packet = 485 size_t padding_bytes_in_packet =
503 std::min(MaxDataPayloadLength(), kMaxPaddingLength); 486 std::min(MaxDataPayloadLength(), kMaxPaddingLength);
504 size_t bytes_sent = 0; 487 size_t bytes_sent = 0;
505 bool using_transport_seq = 488 while (bytes_sent < bytes) {
506 IsRtpHeaderExtensionRegistered(kRtpExtensionTransportSequenceNumber) && 489 int64_t now_ms = clock_->TimeInMilliseconds();
507 transport_sequence_number_allocator_;
508 for (; bytes > 0; bytes -= padding_bytes_in_packet) {
509 if (bytes < padding_bytes_in_packet)
510 bytes = padding_bytes_in_packet;
511
512 uint32_t ssrc; 490 uint32_t ssrc;
491 uint32_t timestamp;
492 int64_t capture_time_ms;
513 uint16_t sequence_number; 493 uint16_t sequence_number;
514 int payload_type; 494 int payload_type;
515 bool over_rtx; 495 bool over_rtx;
516 { 496 {
517 rtc::CritScope lock(&send_critsect_); 497 rtc::CritScope lock(&send_critsect_);
518 if (!sending_media_) 498 if (!sending_media_)
519 return bytes_sent; 499 break;
520 if (!timestamp_provided) { 500 timestamp = last_rtp_timestamp_;
521 timestamp = last_rtp_timestamp_; 501 capture_time_ms = capture_time_ms_;
522 capture_time_ms = capture_time_ms_;
523 }
524 if (rtx_ == kRtxOff) { 502 if (rtx_ == kRtxOff) {
525 // Without RTX we can't send padding in the middle of frames. 503 // Without RTX we can't send padding in the middle of frames.
526 if (!last_packet_marker_bit_) 504 if (!last_packet_marker_bit_)
527 return 0; 505 break;
528 ssrc = ssrc_; 506 ssrc = ssrc_;
529 sequence_number = sequence_number_; 507 sequence_number = sequence_number_;
530 ++sequence_number_; 508 ++sequence_number_;
531 payload_type = payload_type_; 509 payload_type = payload_type_;
532 over_rtx = false; 510 over_rtx = false;
533 } else { 511 } else {
534 // Without abs-send-time or transport sequence number a media packet 512 // Without abs-send-time or transport sequence number a media packet
535 // must be sent before padding so that the timestamps used for 513 // must be sent before padding so that the timestamps used for
536 // estimation are correct. 514 // estimation are correct.
537 if (!media_has_been_sent_ && 515 if (!media_has_been_sent_ &&
538 !(rtp_header_extension_map_.IsRegistered( 516 !(rtp_header_extension_map_.IsRegistered(AbsoluteSendTime::kId) ||
539 kRtpExtensionAbsoluteSendTime) || 517 (rtp_header_extension_map_.IsRegistered(
540 using_transport_seq)) { 518 TransportSequenceNumber::kId) &&
541 return 0; 519 transport_sequence_number_allocator_))) {
520 break;
542 } 521 }
543 // Only change change the timestamp of padding packets sent over RTX. 522 // Only change change the timestamp of padding packets sent over RTX.
544 // Padding only packets over RTP has to be sent as part of a media 523 // Padding only packets over RTP has to be sent as part of a media
545 // frame (and therefore the same timestamp). 524 // frame (and therefore the same timestamp).
546 if (last_timestamp_time_ms_ > 0) { 525 if (last_timestamp_time_ms_ > 0) {
547 timestamp += 526 timestamp +=
548 (clock_->TimeInMilliseconds() - last_timestamp_time_ms_) * 90; 527 (now_ms - last_timestamp_time_ms_) * kTimestampTicksPerMs;
549 capture_time_ms += 528 capture_time_ms += (now_ms - last_timestamp_time_ms_);
550 (clock_->TimeInMilliseconds() - last_timestamp_time_ms_);
551 } 529 }
552 ssrc = ssrc_rtx_; 530 ssrc = ssrc_rtx_;
553 sequence_number = sequence_number_rtx_; 531 sequence_number = sequence_number_rtx_;
554 ++sequence_number_rtx_; 532 ++sequence_number_rtx_;
555 payload_type = rtx_payload_type_map_.begin()->second; 533 payload_type = rtx_payload_type_map_.begin()->second;
556 over_rtx = true; 534 over_rtx = true;
557 } 535 }
558 } 536 }
559 537
560 RtpPacketToSend padding_packet(&rtp_header_extension_map_, IP_PACKET_SIZE); 538 RtpPacketToSend padding_packet(&rtp_header_extension_map_);
561 padding_packet.SetPayloadType(payload_type); 539 padding_packet.SetPayloadType(payload_type);
562 padding_packet.SetMarker(false); 540 padding_packet.SetMarker(false);
563 padding_packet.SetSequenceNumber(sequence_number); 541 padding_packet.SetSequenceNumber(sequence_number);
564 padding_packet.SetTimestamp(timestamp); 542 padding_packet.SetTimestamp(timestamp);
565 padding_packet.SetSsrc(ssrc); 543 padding_packet.SetSsrc(ssrc);
566 544
567 int64_t now_ms = clock_->TimeInMilliseconds();
568
569 if (capture_time_ms > 0) { 545 if (capture_time_ms > 0) {
570 padding_packet.SetExtension<TransmissionOffset>( 546 padding_packet.SetExtension<TransmissionOffset>(
571 kTimestampTicksPerMs * (now_ms - capture_time_ms)); 547 (now_ms - capture_time_ms) * kTimestampTicksPerMs);
572 } 548 }
573 padding_packet.SetExtension<AbsoluteSendTime>(now_ms); 549 padding_packet.SetExtension<AbsoluteSendTime>(now_ms);
574 PacketOptions options; 550 PacketOptions options;
575 bool has_transport_seq_num = 551 bool has_transport_seq_num =
576 UpdateTransportSequenceNumber(&padding_packet, &options.packet_id); 552 UpdateTransportSequenceNumber(&padding_packet, &options.packet_id);
577 padding_packet.SetPadding(padding_bytes_in_packet, &random_); 553 padding_packet.SetPadding(padding_bytes_in_packet, &random_);
578 554
579 if (has_transport_seq_num) { 555 if (has_transport_seq_num) {
580 AddPacketToTransportFeedback(options.packet_id, padding_packet, 556 AddPacketToTransportFeedback(options.packet_id, padding_packet,
581 probe_cluster_id); 557 probe_cluster_id);
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 return; 1293 return;
1318 } 1294 }
1319 rtp_overhead_bytes_per_packet_ = packet.headers_size(); 1295 rtp_overhead_bytes_per_packet_ = packet.headers_size();
1320 overhead_bytes_per_packet = 1296 overhead_bytes_per_packet =
1321 rtp_overhead_bytes_per_packet_ + transport_overhead_bytes_per_packet_; 1297 rtp_overhead_bytes_per_packet_ + transport_overhead_bytes_per_packet_;
1322 } 1298 }
1323 overhead_observer_->OnOverheadChanged(overhead_bytes_per_packet); 1299 overhead_observer_->OnOverheadChanged(overhead_bytes_per_packet);
1324 } 1300 }
1325 1301
1326 } // namespace webrtc 1302 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_sender.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698