OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 Transport* outgoing_transport, | 45 Transport* outgoing_transport, |
46 RtcpIntraFrameObserver* intra_frame_callback, | 46 RtcpIntraFrameObserver* intra_frame_callback, |
47 RtcpBandwidthObserver* bandwidth_callback, | 47 RtcpBandwidthObserver* bandwidth_callback, |
48 TransportFeedbackObserver* transport_feedback_callback, | 48 TransportFeedbackObserver* transport_feedback_callback, |
49 RtcpRttStats* rtt_stats, | 49 RtcpRttStats* rtt_stats, |
50 RtpPacketSender* paced_sender, | 50 RtpPacketSender* paced_sender, |
51 TransportSequenceNumberAllocator* transport_sequence_number_allocator, | 51 TransportSequenceNumberAllocator* transport_sequence_number_allocator, |
52 SendStatisticsProxy* stats_proxy, | 52 SendStatisticsProxy* stats_proxy, |
53 SendDelayStats* send_delay_stats, | 53 SendDelayStats* send_delay_stats, |
54 RtcEventLog* event_log, | 54 RtcEventLog* event_log, |
| 55 RateLimiter* retransmission_rate_limiter, |
55 size_t num_modules) { | 56 size_t num_modules) { |
56 RTC_DCHECK_GT(num_modules, 0u); | 57 RTC_DCHECK_GT(num_modules, 0u); |
57 RtpRtcp::Configuration configuration; | 58 RtpRtcp::Configuration configuration; |
58 ReceiveStatistics* null_receive_statistics = configuration.receive_statistics; | 59 ReceiveStatistics* null_receive_statistics = configuration.receive_statistics; |
59 configuration.audio = false; | 60 configuration.audio = false; |
60 configuration.receiver_only = false; | 61 configuration.receiver_only = false; |
61 configuration.receive_statistics = null_receive_statistics; | 62 configuration.receive_statistics = null_receive_statistics; |
62 configuration.outgoing_transport = outgoing_transport; | 63 configuration.outgoing_transport = outgoing_transport; |
63 configuration.intra_frame_callback = intra_frame_callback; | 64 configuration.intra_frame_callback = intra_frame_callback; |
64 configuration.bandwidth_callback = bandwidth_callback; | 65 configuration.bandwidth_callback = bandwidth_callback; |
65 configuration.transport_feedback_callback = transport_feedback_callback; | 66 configuration.transport_feedback_callback = transport_feedback_callback; |
66 configuration.rtt_stats = rtt_stats; | 67 configuration.rtt_stats = rtt_stats; |
67 configuration.rtcp_packet_type_counter_observer = stats_proxy; | 68 configuration.rtcp_packet_type_counter_observer = stats_proxy; |
68 configuration.paced_sender = paced_sender; | 69 configuration.paced_sender = paced_sender; |
69 configuration.transport_sequence_number_allocator = | 70 configuration.transport_sequence_number_allocator = |
70 transport_sequence_number_allocator; | 71 transport_sequence_number_allocator; |
71 configuration.send_bitrate_observer = stats_proxy; | 72 configuration.send_bitrate_observer = stats_proxy; |
72 configuration.send_frame_count_observer = stats_proxy; | 73 configuration.send_frame_count_observer = stats_proxy; |
73 configuration.send_side_delay_observer = stats_proxy; | 74 configuration.send_side_delay_observer = stats_proxy; |
74 configuration.send_packet_observer = send_delay_stats; | 75 configuration.send_packet_observer = send_delay_stats; |
75 configuration.event_log = event_log; | 76 configuration.event_log = event_log; |
| 77 configuration.retransmission_rate_limiter = retransmission_rate_limiter; |
76 | 78 |
77 std::vector<RtpRtcp*> modules; | 79 std::vector<RtpRtcp*> modules; |
78 for (size_t i = 0; i < num_modules; ++i) { | 80 for (size_t i = 0; i < num_modules; ++i) { |
79 RtpRtcp* rtp_rtcp = RtpRtcp::CreateRtpRtcp(configuration); | 81 RtpRtcp* rtp_rtcp = RtpRtcp::CreateRtpRtcp(configuration); |
80 rtp_rtcp->SetSendingStatus(false); | 82 rtp_rtcp->SetSendingStatus(false); |
81 rtp_rtcp->SetSendingMediaStatus(false); | 83 rtp_rtcp->SetSendingMediaStatus(false); |
82 rtp_rtcp->SetRTCPStatus(RtcpMode::kCompound); | 84 rtp_rtcp->SetRTCPStatus(RtcpMode::kCompound); |
83 modules.push_back(rtp_rtcp); | 85 modules.push_back(rtp_rtcp); |
84 } | 86 } |
85 return modules; | 87 return modules; |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 config.send_transport, | 421 config.send_transport, |
420 &encoder_feedback_, | 422 &encoder_feedback_, |
421 bandwidth_observer_.get(), | 423 bandwidth_observer_.get(), |
422 congestion_controller_->GetTransportFeedbackObserver(), | 424 congestion_controller_->GetTransportFeedbackObserver(), |
423 call_stats_->rtcp_rtt_stats(), | 425 call_stats_->rtcp_rtt_stats(), |
424 congestion_controller_->pacer(), | 426 congestion_controller_->pacer(), |
425 congestion_controller_->packet_router(), | 427 congestion_controller_->packet_router(), |
426 &stats_proxy_, | 428 &stats_proxy_, |
427 send_delay_stats, | 429 send_delay_stats, |
428 event_log, | 430 event_log, |
| 431 congestion_controller_->GetRetransmissionRateLimiter(), |
429 config_.rtp.ssrcs.size())), | 432 config_.rtp.ssrcs.size())), |
430 payload_router_(rtp_rtcp_modules_, config.encoder_settings.payload_type), | 433 payload_router_(rtp_rtcp_modules_, config.encoder_settings.payload_type), |
431 input_(&encoder_wakeup_event_, | 434 input_(&encoder_wakeup_event_, |
432 config_.local_renderer, | 435 config_.local_renderer, |
433 &stats_proxy_, | 436 &stats_proxy_, |
434 &overuse_detector_) { | 437 &overuse_detector_) { |
435 LOG(LS_INFO) << "VideoSendStream: " << config_.ToString(); | 438 LOG(LS_INFO) << "VideoSendStream: " << config_.ToString(); |
436 | 439 |
437 RTC_DCHECK(!config_.rtp.ssrcs.empty()); | 440 RTC_DCHECK(!config_.rtp.ssrcs.empty()); |
438 RTC_DCHECK(module_process_thread_); | 441 RTC_DCHECK(module_process_thread_); |
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 void VideoSendStream::SignalNetworkState(NetworkState state) { | 865 void VideoSendStream::SignalNetworkState(NetworkState state) { |
863 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { | 866 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { |
864 rtp_rtcp->SetRTCPStatus(state == kNetworkUp ? config_.rtp.rtcp_mode | 867 rtp_rtcp->SetRTCPStatus(state == kNetworkUp ? config_.rtp.rtcp_mode |
865 : RtcpMode::kOff); | 868 : RtcpMode::kOff); |
866 } | 869 } |
867 } | 870 } |
868 | 871 |
869 uint32_t VideoSendStream::OnBitrateUpdated(uint32_t bitrate_bps, | 872 uint32_t VideoSendStream::OnBitrateUpdated(uint32_t bitrate_bps, |
870 uint8_t fraction_loss, | 873 uint8_t fraction_loss, |
871 int64_t rtt) { | 874 int64_t rtt) { |
872 payload_router_.SetTargetSendBitrate(bitrate_bps); | |
873 // Get the encoder target rate. It is the estimated network rate - | 875 // Get the encoder target rate. It is the estimated network rate - |
874 // protection overhead. | 876 // protection overhead. |
875 uint32_t encoder_target_rate_bps = | 877 uint32_t encoder_target_rate_bps = |
876 protection_bitrate_calculator_.SetTargetRates( | 878 protection_bitrate_calculator_.SetTargetRates( |
877 bitrate_bps, stats_proxy_.GetSendFrameRate(), fraction_loss, rtt); | 879 bitrate_bps, stats_proxy_.GetSendFrameRate(), fraction_loss, rtt); |
878 vie_encoder_.OnBitrateUpdated(encoder_target_rate_bps, fraction_loss, rtt); | 880 vie_encoder_.OnBitrateUpdated(encoder_target_rate_bps, fraction_loss, rtt); |
879 | 881 |
880 return bitrate_bps - encoder_target_rate_bps; | 882 return bitrate_bps - encoder_target_rate_bps; |
881 } | 883 } |
882 | 884 |
(...skipping 15 matching lines...) Expand all Loading... |
898 &module_nack_rate); | 900 &module_nack_rate); |
899 *sent_video_rate_bps += module_video_rate; | 901 *sent_video_rate_bps += module_video_rate; |
900 *sent_nack_rate_bps += module_nack_rate; | 902 *sent_nack_rate_bps += module_nack_rate; |
901 *sent_fec_rate_bps += module_fec_rate; | 903 *sent_fec_rate_bps += module_fec_rate; |
902 } | 904 } |
903 return 0; | 905 return 0; |
904 } | 906 } |
905 | 907 |
906 } // namespace internal | 908 } // namespace internal |
907 } // namespace webrtc | 909 } // namespace webrtc |
OLD | NEW |