| 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 21 matching lines...) Expand all Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |