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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 PacedSender* paced_sender, | 88 PacedSender* paced_sender, |
89 PacketRouter* packet_router, | 89 PacketRouter* packet_router, |
90 size_t max_rtp_streams, | 90 size_t max_rtp_streams, |
91 bool sender) | 91 bool sender) |
92 : sender_(sender), | 92 : sender_(sender), |
93 module_process_thread_(module_process_thread), | 93 module_process_thread_(module_process_thread), |
94 send_payload_router_(send_payload_router), | 94 send_payload_router_(send_payload_router), |
95 vcm_protection_callback_(new ViEChannelProtectionCallback(this)), | 95 vcm_protection_callback_(new ViEChannelProtectionCallback(this)), |
96 vcm_(vcm), | 96 vcm_(vcm), |
97 vie_receiver_(vcm_, remote_bitrate_estimator, this), | 97 vie_receiver_(vcm_, remote_bitrate_estimator, this), |
98 vie_sync_(vcm_), | |
99 stats_observer_(new ChannelStatsObserver(this)), | 98 stats_observer_(new ChannelStatsObserver(this)), |
100 receive_stats_callback_(nullptr), | 99 receive_stats_callback_(nullptr), |
101 incoming_video_stream_(nullptr), | 100 incoming_video_stream_(nullptr), |
102 intra_frame_observer_(intra_frame_observer), | 101 intra_frame_observer_(intra_frame_observer), |
103 rtt_stats_(rtt_stats), | 102 rtt_stats_(rtt_stats), |
104 paced_sender_(paced_sender), | 103 paced_sender_(paced_sender), |
105 packet_router_(packet_router), | 104 packet_router_(packet_router), |
106 bandwidth_observer_(bandwidth_observer), | 105 bandwidth_observer_(bandwidth_observer), |
107 transport_feedback_observer_(transport_feedback_observer), | 106 transport_feedback_observer_(transport_feedback_observer), |
108 nack_history_size_sender_(kMinSendSidePacketHistorySize), | 107 nack_history_size_sender_(kMinSendSidePacketHistorySize), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 std::vector<RtpRtcp*>(1, rtp_rtcp_modules_[0])); | 158 std::vector<RtpRtcp*>(1, rtp_rtcp_modules_[0])); |
160 RTC_DCHECK(!send_payload_router_->active()); | 159 RTC_DCHECK(!send_payload_router_->active()); |
161 } else { | 160 } else { |
162 if (vcm_->RegisterReceiveCallback(this) != 0) { | 161 if (vcm_->RegisterReceiveCallback(this) != 0) { |
163 return -1; | 162 return -1; |
164 } | 163 } |
165 vcm_->RegisterFrameTypeCallback(this); | 164 vcm_->RegisterFrameTypeCallback(this); |
166 vcm_->RegisterReceiveStatisticsCallback(this); | 165 vcm_->RegisterReceiveStatisticsCallback(this); |
167 vcm_->RegisterDecoderTimingCallback(this); | 166 vcm_->RegisterDecoderTimingCallback(this); |
168 vcm_->SetRenderDelay(kDefaultRenderDelayMs); | 167 vcm_->SetRenderDelay(kDefaultRenderDelayMs); |
169 module_process_thread_->RegisterModule(&vie_sync_); | |
170 } | 168 } |
171 return 0; | 169 return 0; |
172 } | 170 } |
173 | 171 |
174 ViEChannel::~ViEChannel() { | 172 ViEChannel::~ViEChannel() { |
175 UpdateHistograms(); | 173 UpdateHistograms(); |
176 // Make sure we don't get more callbacks from the RTP module. | 174 // Make sure we don't get more callbacks from the RTP module. |
177 module_process_thread_->DeRegisterModule( | 175 module_process_thread_->DeRegisterModule( |
178 vie_receiver_.GetReceiveStatistics()); | 176 vie_receiver_.GetReceiveStatistics()); |
179 if (sender_) { | 177 if (sender_) { |
180 send_payload_router_->SetSendingRtpModules(std::vector<RtpRtcp*>()); | 178 send_payload_router_->SetSendingRtpModules(std::vector<RtpRtcp*>()); |
181 } else { | |
182 module_process_thread_->DeRegisterModule(&vie_sync_); | |
183 } | 179 } |
184 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) | 180 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) |
185 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i], sender_); | 181 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i], sender_); |
186 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { | 182 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { |
187 module_process_thread_->DeRegisterModule(rtp_rtcp); | 183 module_process_thread_->DeRegisterModule(rtp_rtcp); |
188 delete rtp_rtcp; | 184 delete rtp_rtcp; |
189 } | 185 } |
190 } | 186 } |
191 | 187 |
192 void ViEChannel::UpdateHistograms() { | 188 void ViEChannel::UpdateHistograms() { |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 rtp_rtcp->SetRTCPStatus(RtcpMode::kCompound); | 989 rtp_rtcp->SetRTCPStatus(RtcpMode::kCompound); |
994 modules.push_back(rtp_rtcp); | 990 modules.push_back(rtp_rtcp); |
995 // Receive statistics and remote bitrate estimator should only be set for | 991 // Receive statistics and remote bitrate estimator should only be set for |
996 // the primary (first) module. | 992 // the primary (first) module. |
997 configuration.receive_statistics = null_receive_statistics; | 993 configuration.receive_statistics = null_receive_statistics; |
998 configuration.remote_bitrate_estimator = nullptr; | 994 configuration.remote_bitrate_estimator = nullptr; |
999 } | 995 } |
1000 return modules; | 996 return modules; |
1001 } | 997 } |
1002 | 998 |
1003 int32_t ViEChannel::SetVoiceChannel(int32_t ve_channel_id, | |
1004 VoEVideoSync* ve_sync_interface) { | |
1005 RTC_DCHECK(!sender_); | |
1006 return vie_sync_.ConfigureSync(ve_channel_id, ve_sync_interface, | |
1007 rtp_rtcp_modules_[0], | |
1008 vie_receiver_.GetRtpReceiver()); | |
1009 } | |
1010 | |
1011 int32_t ViEChannel::VoiceChannel() { | |
1012 RTC_DCHECK(!sender_); | |
1013 return vie_sync_.VoiceChannel(); | |
1014 } | |
1015 | |
1016 void ViEChannel::RegisterPreRenderCallback( | 999 void ViEChannel::RegisterPreRenderCallback( |
1017 I420FrameCallback* pre_render_callback) { | 1000 I420FrameCallback* pre_render_callback) { |
1018 RTC_DCHECK(!sender_); | 1001 RTC_DCHECK(!sender_); |
1019 rtc::CritScope lock(&crit_); | 1002 rtc::CritScope lock(&crit_); |
1020 pre_render_callback_ = pre_render_callback; | 1003 pre_render_callback_ = pre_render_callback; |
1021 } | 1004 } |
1022 | 1005 |
1023 // TODO(pbos): Remove as soon as audio can handle a changing payload type | 1006 // TODO(pbos): Remove as soon as audio can handle a changing payload type |
1024 // without this callback. | 1007 // without this callback. |
1025 int32_t ViEChannel::OnInitializeDecoder( | 1008 int32_t ViEChannel::OnInitializeDecoder( |
(...skipping 22 matching lines...) Expand all Loading... |
1048 rtc::CritScope lock(&crit_); | 1031 rtc::CritScope lock(&crit_); |
1049 receive_stats_callback_ = receive_statistics_proxy; | 1032 receive_stats_callback_ = receive_statistics_proxy; |
1050 } | 1033 } |
1051 | 1034 |
1052 void ViEChannel::SetIncomingVideoStream( | 1035 void ViEChannel::SetIncomingVideoStream( |
1053 IncomingVideoStream* incoming_video_stream) { | 1036 IncomingVideoStream* incoming_video_stream) { |
1054 rtc::CritScope lock(&crit_); | 1037 rtc::CritScope lock(&crit_); |
1055 incoming_video_stream_ = incoming_video_stream; | 1038 incoming_video_stream_ = incoming_video_stream; |
1056 } | 1039 } |
1057 } // namespace webrtc | 1040 } // namespace webrtc |
OLD | NEW |