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

Side by Side Diff: webrtc/video/rtp_stream_receiver.cc

Issue 2181383002: Add NACK rate throttling for audio channels. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase Created 4 years, 4 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
« no previous file with comments | « webrtc/video/rtp_stream_receiver.h ('k') | webrtc/video/video_receive_stream.cc » ('j') | 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 21 matching lines...) Expand all
32 32
33 namespace webrtc { 33 namespace webrtc {
34 34
35 std::unique_ptr<RtpRtcp> CreateRtpRtcpModule( 35 std::unique_ptr<RtpRtcp> CreateRtpRtcpModule(
36 ReceiveStatistics* receive_statistics, 36 ReceiveStatistics* receive_statistics,
37 Transport* outgoing_transport, 37 Transport* outgoing_transport,
38 RtcpRttStats* rtt_stats, 38 RtcpRttStats* rtt_stats,
39 RtcpPacketTypeCounterObserver* rtcp_packet_type_counter_observer, 39 RtcpPacketTypeCounterObserver* rtcp_packet_type_counter_observer,
40 RemoteBitrateEstimator* remote_bitrate_estimator, 40 RemoteBitrateEstimator* remote_bitrate_estimator,
41 RtpPacketSender* paced_sender, 41 RtpPacketSender* paced_sender,
42 TransportSequenceNumberAllocator* transport_sequence_number_allocator) { 42 TransportSequenceNumberAllocator* transport_sequence_number_allocator,
43 RateLimiter* retransmission_rate_limiter) {
43 RtpRtcp::Configuration configuration; 44 RtpRtcp::Configuration configuration;
44 configuration.audio = false; 45 configuration.audio = false;
45 configuration.receiver_only = true; 46 configuration.receiver_only = true;
46 configuration.receive_statistics = receive_statistics; 47 configuration.receive_statistics = receive_statistics;
47 configuration.outgoing_transport = outgoing_transport; 48 configuration.outgoing_transport = outgoing_transport;
48 configuration.intra_frame_callback = nullptr; 49 configuration.intra_frame_callback = nullptr;
49 configuration.rtt_stats = rtt_stats; 50 configuration.rtt_stats = rtt_stats;
50 configuration.rtcp_packet_type_counter_observer = 51 configuration.rtcp_packet_type_counter_observer =
51 rtcp_packet_type_counter_observer; 52 rtcp_packet_type_counter_observer;
52 configuration.paced_sender = paced_sender; 53 configuration.paced_sender = paced_sender;
53 configuration.transport_sequence_number_allocator = 54 configuration.transport_sequence_number_allocator =
54 transport_sequence_number_allocator; 55 transport_sequence_number_allocator;
55 configuration.send_bitrate_observer = nullptr; 56 configuration.send_bitrate_observer = nullptr;
56 configuration.send_frame_count_observer = nullptr; 57 configuration.send_frame_count_observer = nullptr;
57 configuration.send_side_delay_observer = nullptr; 58 configuration.send_side_delay_observer = nullptr;
58 configuration.send_packet_observer = nullptr; 59 configuration.send_packet_observer = nullptr;
59 configuration.bandwidth_callback = nullptr; 60 configuration.bandwidth_callback = nullptr;
60 configuration.transport_feedback_callback = nullptr; 61 configuration.transport_feedback_callback = nullptr;
61 configuration.retransmission_rate_limiter = nullptr; 62 configuration.retransmission_rate_limiter = retransmission_rate_limiter;
62 63
63 std::unique_ptr<RtpRtcp> rtp_rtcp(RtpRtcp::CreateRtpRtcp(configuration)); 64 std::unique_ptr<RtpRtcp> rtp_rtcp(RtpRtcp::CreateRtpRtcp(configuration));
64 rtp_rtcp->SetSendingStatus(false); 65 rtp_rtcp->SetSendingStatus(false);
65 rtp_rtcp->SetSendingMediaStatus(false); 66 rtp_rtcp->SetSendingMediaStatus(false);
66 rtp_rtcp->SetRTCPStatus(RtcpMode::kCompound); 67 rtp_rtcp->SetRTCPStatus(RtcpMode::kCompound);
67 68
68 return rtp_rtcp; 69 return rtp_rtcp;
69 } 70 }
70 71
71 static const int kPacketLogIntervalMs = 10000; 72 static const int kPacketLogIntervalMs = 10000;
72 73
73 RtpStreamReceiver::RtpStreamReceiver( 74 RtpStreamReceiver::RtpStreamReceiver(
74 vcm::VideoReceiver* video_receiver, 75 vcm::VideoReceiver* video_receiver,
75 RemoteBitrateEstimator* remote_bitrate_estimator, 76 RemoteBitrateEstimator* remote_bitrate_estimator,
76 Transport* transport, 77 Transport* transport,
77 RtcpRttStats* rtt_stats, 78 RtcpRttStats* rtt_stats,
78 PacedSender* paced_sender, 79 PacedSender* paced_sender,
79 PacketRouter* packet_router, 80 PacketRouter* packet_router,
80 VieRemb* remb, 81 VieRemb* remb,
81 const VideoReceiveStream::Config* config, 82 const VideoReceiveStream::Config* config,
82 ReceiveStatisticsProxy* receive_stats_proxy, 83 ReceiveStatisticsProxy* receive_stats_proxy,
83 ProcessThread* process_thread) 84 ProcessThread* process_thread,
85 RateLimiter* retransmission_rate_limiter)
84 : clock_(Clock::GetRealTimeClock()), 86 : clock_(Clock::GetRealTimeClock()),
85 config_(*config), 87 config_(*config),
86 video_receiver_(video_receiver), 88 video_receiver_(video_receiver),
87 remote_bitrate_estimator_(remote_bitrate_estimator), 89 remote_bitrate_estimator_(remote_bitrate_estimator),
88 packet_router_(packet_router), 90 packet_router_(packet_router),
89 remb_(remb), 91 remb_(remb),
90 process_thread_(process_thread), 92 process_thread_(process_thread),
91 ntp_estimator_(clock_), 93 ntp_estimator_(clock_),
92 rtp_payload_registry_(RTPPayloadStrategy::CreateStrategy(false)), 94 rtp_payload_registry_(RTPPayloadStrategy::CreateStrategy(false)),
93 rtp_header_parser_(RtpHeaderParser::Create()), 95 rtp_header_parser_(RtpHeaderParser::Create()),
94 rtp_receiver_(RtpReceiver::CreateVideoReceiver(clock_, 96 rtp_receiver_(RtpReceiver::CreateVideoReceiver(clock_,
95 this, 97 this,
96 this, 98 this,
97 &rtp_payload_registry_)), 99 &rtp_payload_registry_)),
98 rtp_receive_statistics_(ReceiveStatistics::Create(clock_)), 100 rtp_receive_statistics_(ReceiveStatistics::Create(clock_)),
99 fec_receiver_(FecReceiver::Create(this)), 101 fec_receiver_(FecReceiver::Create(this)),
100 receiving_(false), 102 receiving_(false),
101 restored_packet_in_use_(false), 103 restored_packet_in_use_(false),
102 last_packet_log_ms_(-1), 104 last_packet_log_ms_(-1),
103 rtp_rtcp_(CreateRtpRtcpModule(rtp_receive_statistics_.get(), 105 rtp_rtcp_(CreateRtpRtcpModule(rtp_receive_statistics_.get(),
104 transport, 106 transport,
105 rtt_stats, 107 rtt_stats,
106 receive_stats_proxy, 108 receive_stats_proxy,
107 remote_bitrate_estimator_, 109 remote_bitrate_estimator_,
108 paced_sender, 110 paced_sender,
109 packet_router)) { 111 packet_router,
112 retransmission_rate_limiter)) {
110 packet_router_->AddRtpModule(rtp_rtcp_.get()); 113 packet_router_->AddRtpModule(rtp_rtcp_.get());
111 rtp_receive_statistics_->RegisterRtpStatisticsCallback(receive_stats_proxy); 114 rtp_receive_statistics_->RegisterRtpStatisticsCallback(receive_stats_proxy);
112 rtp_receive_statistics_->RegisterRtcpStatisticsCallback(receive_stats_proxy); 115 rtp_receive_statistics_->RegisterRtcpStatisticsCallback(receive_stats_proxy);
113 116
114 RTC_DCHECK(config_.rtp.rtcp_mode != RtcpMode::kOff) 117 RTC_DCHECK(config_.rtp.rtcp_mode != RtcpMode::kOff)
115 << "A stream should not be configured with RTCP disabled. This value is " 118 << "A stream should not be configured with RTCP disabled. This value is "
116 "reserved for internal usage."; 119 "reserved for internal usage.";
117 RTC_DCHECK(config_.rtp.remote_ssrc != 0); 120 RTC_DCHECK(config_.rtp.remote_ssrc != 0);
118 // TODO(pbos): What's an appropriate local_ssrc for receive-only streams? 121 // TODO(pbos): What's an appropriate local_ssrc for receive-only streams?
119 RTC_DCHECK(config_.rtp.local_ssrc != 0); 122 RTC_DCHECK(config_.rtp.local_ssrc != 0);
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 const std::string& extension, int id) { 538 const std::string& extension, int id) {
536 // One-byte-extension local identifiers are in the range 1-14 inclusive. 539 // One-byte-extension local identifiers are in the range 1-14 inclusive.
537 RTC_DCHECK_GE(id, 1); 540 RTC_DCHECK_GE(id, 1);
538 RTC_DCHECK_LE(id, 14); 541 RTC_DCHECK_LE(id, 14);
539 RTC_DCHECK(RtpExtension::IsSupportedForVideo(extension)); 542 RTC_DCHECK(RtpExtension::IsSupportedForVideo(extension));
540 RTC_CHECK(rtp_header_parser_->RegisterRtpHeaderExtension( 543 RTC_CHECK(rtp_header_parser_->RegisterRtpHeaderExtension(
541 StringToRtpExtensionType(extension), id)); 544 StringToRtpExtensionType(extension), id));
542 } 545 }
543 546
544 } // namespace webrtc 547 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/rtp_stream_receiver.h ('k') | webrtc/video/video_receive_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698