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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 BitrateStatistics statistics_; | 90 BitrateStatistics statistics_; |
91 const BitrateAggregator& aggregator_; | 91 const BitrateAggregator& aggregator_; |
92 }; | 92 }; |
93 | 93 |
94 BitrateStatisticsObserver* const callback_; | 94 BitrateStatisticsObserver* const callback_; |
95 BitrateObserver total_bitrate_observer_; | 95 BitrateObserver total_bitrate_observer_; |
96 BitrateObserver retransmit_bitrate_observer_; | 96 BitrateObserver retransmit_bitrate_observer_; |
97 uint32_t ssrc_; | 97 uint32_t ssrc_; |
98 }; | 98 }; |
99 | 99 |
100 RTPSender::RTPSender(int32_t id, | 100 RTPSender::RTPSender(bool audio, |
101 bool audio, | |
102 Clock* clock, | 101 Clock* clock, |
103 Transport* transport, | 102 Transport* transport, |
104 RtpAudioFeedback* audio_feedback, | 103 RtpAudioFeedback* audio_feedback, |
105 PacedSender* paced_sender, | 104 PacedSender* paced_sender, |
106 PacketRouter* packet_router, | 105 PacketRouter* packet_router, |
107 TransportFeedbackObserver* transport_feedback_observer, | 106 TransportFeedbackObserver* transport_feedback_observer, |
108 BitrateStatisticsObserver* bitrate_callback, | 107 BitrateStatisticsObserver* bitrate_callback, |
109 FrameCountObserver* frame_count_observer, | 108 FrameCountObserver* frame_count_observer, |
110 SendSideDelayObserver* send_side_delay_observer) | 109 SendSideDelayObserver* send_side_delay_observer) |
111 : clock_(clock), | 110 : clock_(clock), |
112 // TODO(holmer): Remove this conversion when we remove the use of | 111 // TODO(holmer): Remove this conversion when we remove the use of |
113 // TickTime. | 112 // TickTime. |
114 clock_delta_ms_(clock_->TimeInMilliseconds() - | 113 clock_delta_ms_(clock_->TimeInMilliseconds() - |
115 TickTime::MillisecondTimestamp()), | 114 TickTime::MillisecondTimestamp()), |
116 bitrates_(new BitrateAggregator(bitrate_callback)), | 115 bitrates_(new BitrateAggregator(bitrate_callback)), |
117 total_bitrate_sent_(clock, bitrates_->total_bitrate_observer()), | 116 total_bitrate_sent_(clock, bitrates_->total_bitrate_observer()), |
118 id_(id), | |
119 audio_configured_(audio), | 117 audio_configured_(audio), |
120 audio_(audio ? new RTPSenderAudio(id, clock, this, audio_feedback) | 118 audio_(audio ? new RTPSenderAudio(clock, this, audio_feedback) : nullptr), |
121 : nullptr), | |
122 video_(audio ? nullptr : new RTPSenderVideo(clock, this)), | 119 video_(audio ? nullptr : new RTPSenderVideo(clock, this)), |
123 paced_sender_(paced_sender), | 120 paced_sender_(paced_sender), |
124 packet_router_(packet_router), | 121 packet_router_(packet_router), |
125 transport_feedback_observer_(transport_feedback_observer), | 122 transport_feedback_observer_(transport_feedback_observer), |
126 last_capture_time_ms_sent_(0), | 123 last_capture_time_ms_sent_(0), |
127 send_critsect_(CriticalSectionWrapper::CreateCriticalSection()), | 124 send_critsect_(CriticalSectionWrapper::CreateCriticalSection()), |
128 transport_(transport), | 125 transport_(transport), |
129 sending_media_(true), // Default to sending media. | 126 sending_media_(true), // Default to sending media. |
130 max_payload_length_(IP_PACKET_SIZE - 28), // Default is IP-v4/UDP. | 127 max_payload_length_(IP_PACKET_SIZE - 28), // Default is IP-v4/UDP. |
131 packet_over_head_(28), | 128 packet_over_head_(28), |
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
733 if (!PrepareAndSendPacket(data_buffer, length, capture_time_ms, | 730 if (!PrepareAndSendPacket(data_buffer, length, capture_time_ms, |
734 (rtx & kRtxRetransmitted) > 0, true)) { | 731 (rtx & kRtxRetransmitted) > 0, true)) { |
735 return -1; | 732 return -1; |
736 } | 733 } |
737 return static_cast<int32_t>(length); | 734 return static_cast<int32_t>(length); |
738 } | 735 } |
739 | 736 |
740 bool RTPSender::SendPacketToNetwork(const uint8_t *packet, size_t size) { | 737 bool RTPSender::SendPacketToNetwork(const uint8_t *packet, size_t size) { |
741 int bytes_sent = -1; | 738 int bytes_sent = -1; |
742 if (transport_) { | 739 if (transport_) { |
743 bytes_sent = transport_->SendPacket(id_, packet, size); | 740 bytes_sent = transport_->SendPacket(packet, size); |
744 } | 741 } |
745 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), | 742 TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), |
746 "RTPSender::SendPacketToNetwork", "size", size, "sent", | 743 "RTPSender::SendPacketToNetwork", "size", size, "sent", |
747 bytes_sent); | 744 bytes_sent); |
748 // TODO(pwestin): Add a separate bitrate for sent bitrate after pacer. | 745 // TODO(pwestin): Add a separate bitrate for sent bitrate after pacer. |
749 if (bytes_sent <= 0) { | 746 if (bytes_sent <= 0) { |
750 LOG(LS_WARNING) << "Transport failed to send packet"; | 747 LOG(LS_WARNING) << "Transport failed to send packet"; |
751 return false; | 748 return false; |
752 } | 749 } |
753 return true; | 750 return true; |
(...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1902 CriticalSectionScoped lock(send_critsect_.get()); | 1899 CriticalSectionScoped lock(send_critsect_.get()); |
1903 | 1900 |
1904 RtpState state; | 1901 RtpState state; |
1905 state.sequence_number = sequence_number_rtx_; | 1902 state.sequence_number = sequence_number_rtx_; |
1906 state.start_timestamp = start_timestamp_; | 1903 state.start_timestamp = start_timestamp_; |
1907 | 1904 |
1908 return state; | 1905 return state; |
1909 } | 1906 } |
1910 | 1907 |
1911 } // namespace webrtc | 1908 } // namespace webrtc |
OLD | NEW |