OLD | NEW |
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 611 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 padding_packet.SetExtension<AbsoluteSendTime>(now_ms); | 622 padding_packet.SetExtension<AbsoluteSendTime>(now_ms); |
623 | 623 |
624 PacketOptions options; | 624 PacketOptions options; |
625 bool has_transport_seq_no = | 625 bool has_transport_seq_no = |
626 UpdateTransportSequenceNumber(&padding_packet, &options.packet_id); | 626 UpdateTransportSequenceNumber(&padding_packet, &options.packet_id); |
627 | 627 |
628 padding_packet.SetPadding(padding_bytes_in_packet, &random_); | 628 padding_packet.SetPadding(padding_bytes_in_packet, &random_); |
629 | 629 |
630 if (has_transport_seq_no && transport_feedback_observer_) | 630 if (has_transport_seq_no && transport_feedback_observer_) |
631 transport_feedback_observer_->AddPacket( | 631 transport_feedback_observer_->AddPacket( |
632 options.packet_id, padding_packet.size(), probe_cluster_id); | 632 options.packet_id, |
| 633 padding_packet.payload_size() + padding_packet.padding_size(), |
| 634 probe_cluster_id); |
633 | 635 |
634 if (!SendPacketToNetwork(padding_packet, options)) | 636 if (!SendPacketToNetwork(padding_packet, options)) |
635 break; | 637 break; |
636 | 638 |
637 bytes_sent += padding_bytes_in_packet; | 639 bytes_sent += padding_bytes_in_packet; |
638 UpdateRtpStats(padding_packet, over_rtx, false); | 640 UpdateRtpStats(padding_packet, over_rtx, false); |
639 } | 641 } |
640 | 642 |
641 return bytes_sent; | 643 return bytes_sent; |
642 } | 644 } |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 } | 743 } |
742 | 744 |
743 // Called from pacer when we can send the packet. | 745 // Called from pacer when we can send the packet. |
744 bool RTPSender::TimeToSendPacket(uint16_t sequence_number, | 746 bool RTPSender::TimeToSendPacket(uint16_t sequence_number, |
745 int64_t capture_time_ms, | 747 int64_t capture_time_ms, |
746 bool retransmission, | 748 bool retransmission, |
747 int probe_cluster_id) { | 749 int probe_cluster_id) { |
748 std::unique_ptr<RtpPacketToSend> packet = | 750 std::unique_ptr<RtpPacketToSend> packet = |
749 packet_history_.GetPacketAndSetSendTime(sequence_number, 0, | 751 packet_history_.GetPacketAndSetSendTime(sequence_number, 0, |
750 retransmission); | 752 retransmission); |
751 if (!packet) | 753 if (!packet) { |
752 // Packet cannot be found. Allow sending to continue. | 754 // Packet cannot be found. Allow sending to continue. |
753 return true; | 755 return true; |
| 756 } |
754 | 757 |
755 return PrepareAndSendPacket( | 758 return PrepareAndSendPacket( |
756 std::move(packet), | 759 std::move(packet), |
757 retransmission && (RtxStatus() & kRtxRetransmitted) > 0, retransmission, | 760 retransmission && (RtxStatus() & kRtxRetransmitted) > 0, retransmission, |
758 probe_cluster_id); | 761 probe_cluster_id); |
759 } | 762 } |
760 | 763 |
761 bool RTPSender::PrepareAndSendPacket(std::unique_ptr<RtpPacketToSend> packet, | 764 bool RTPSender::PrepareAndSendPacket(std::unique_ptr<RtpPacketToSend> packet, |
762 bool send_over_rtx, | 765 bool send_over_rtx, |
763 bool is_retransmit, | 766 bool is_retransmit, |
(...skipping 22 matching lines...) Expand all Loading... |
786 int64_t now_ms = clock_->TimeInMilliseconds(); | 789 int64_t now_ms = clock_->TimeInMilliseconds(); |
787 int64_t diff_ms = now_ms - capture_time_ms; | 790 int64_t diff_ms = now_ms - capture_time_ms; |
788 packet_to_send->SetExtension<TransmissionOffset>(kTimestampTicksPerMs * | 791 packet_to_send->SetExtension<TransmissionOffset>(kTimestampTicksPerMs * |
789 diff_ms); | 792 diff_ms); |
790 packet_to_send->SetExtension<AbsoluteSendTime>(now_ms); | 793 packet_to_send->SetExtension<AbsoluteSendTime>(now_ms); |
791 | 794 |
792 PacketOptions options; | 795 PacketOptions options; |
793 if (UpdateTransportSequenceNumber(packet_to_send, &options.packet_id) && | 796 if (UpdateTransportSequenceNumber(packet_to_send, &options.packet_id) && |
794 transport_feedback_observer_) { | 797 transport_feedback_observer_) { |
795 transport_feedback_observer_->AddPacket( | 798 transport_feedback_observer_->AddPacket( |
796 options.packet_id, packet_to_send->size(), probe_cluster_id); | 799 options.packet_id, |
| 800 packet_to_send->payload_size() + packet_to_send->padding_size(), |
| 801 probe_cluster_id); |
797 } | 802 } |
798 | 803 |
799 if (!is_retransmit && !send_over_rtx) { | 804 if (!is_retransmit && !send_over_rtx) { |
800 UpdateDelayStatistics(packet->capture_time_ms(), now_ms); | 805 UpdateDelayStatistics(packet->capture_time_ms(), now_ms); |
801 UpdateOnSendPacket(options.packet_id, packet->capture_time_ms(), | 806 UpdateOnSendPacket(options.packet_id, packet->capture_time_ms(), |
802 packet->Ssrc()); | 807 packet->Ssrc()); |
803 } | 808 } |
804 | 809 |
805 if (!SendPacketToNetwork(*packet_to_send, options)) | 810 if (!SendPacketToNetwork(*packet_to_send, options)) |
806 return false; | 811 return false; |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
915 TRACE_EVENT_ASYNC_BEGIN1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), | 920 TRACE_EVENT_ASYNC_BEGIN1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), |
916 "PacedSend", corrected_time_ms, | 921 "PacedSend", corrected_time_ms, |
917 "capture_time_ms", corrected_time_ms); | 922 "capture_time_ms", corrected_time_ms); |
918 } | 923 } |
919 return true; | 924 return true; |
920 } | 925 } |
921 | 926 |
922 PacketOptions options; | 927 PacketOptions options; |
923 if (UpdateTransportSequenceNumber(packet.get(), &options.packet_id) && | 928 if (UpdateTransportSequenceNumber(packet.get(), &options.packet_id) && |
924 transport_feedback_observer_) { | 929 transport_feedback_observer_) { |
925 transport_feedback_observer_->AddPacket(options.packet_id, packet->size(), | 930 transport_feedback_observer_->AddPacket( |
926 PacketInfo::kNotAProbe); | 931 options.packet_id, packet->payload_size() + packet->padding_size(), |
| 932 PacketInfo::kNotAProbe); |
927 } | 933 } |
928 | 934 |
929 UpdateDelayStatistics(packet->capture_time_ms(), now_ms); | 935 UpdateDelayStatistics(packet->capture_time_ms(), now_ms); |
930 UpdateOnSendPacket(options.packet_id, packet->capture_time_ms(), | 936 UpdateOnSendPacket(options.packet_id, packet->capture_time_ms(), |
931 packet->Ssrc()); | 937 packet->Ssrc()); |
932 | 938 |
933 bool sent = SendPacketToNetwork(*packet, options); | 939 bool sent = SendPacketToNetwork(*packet, options); |
934 | 940 |
935 if (sent) { | 941 if (sent) { |
936 { | 942 { |
(...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 rtc::CritScope lock(&send_critsect_); | 1720 rtc::CritScope lock(&send_critsect_); |
1715 | 1721 |
1716 RtpState state; | 1722 RtpState state; |
1717 state.sequence_number = sequence_number_rtx_; | 1723 state.sequence_number = sequence_number_rtx_; |
1718 state.start_timestamp = timestamp_offset_; | 1724 state.start_timestamp = timestamp_offset_; |
1719 | 1725 |
1720 return state; | 1726 return state; |
1721 } | 1727 } |
1722 | 1728 |
1723 } // namespace webrtc | 1729 } // namespace webrtc |
OLD | NEW |