| 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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 vie_sync_(vcm_), | 104 vie_sync_(vcm_), |
| 105 stats_observer_(new ChannelStatsObserver(this)), | 105 stats_observer_(new ChannelStatsObserver(this)), |
| 106 receive_stats_callback_(nullptr), | 106 receive_stats_callback_(nullptr), |
| 107 incoming_video_stream_(nullptr), | 107 incoming_video_stream_(nullptr), |
| 108 intra_frame_observer_(intra_frame_observer), | 108 intra_frame_observer_(intra_frame_observer), |
| 109 rtt_stats_(rtt_stats), | 109 rtt_stats_(rtt_stats), |
| 110 paced_sender_(paced_sender), | 110 paced_sender_(paced_sender), |
| 111 packet_router_(packet_router), | 111 packet_router_(packet_router), |
| 112 bandwidth_observer_(bandwidth_observer), | 112 bandwidth_observer_(bandwidth_observer), |
| 113 transport_feedback_observer_(transport_feedback_observer), | 113 transport_feedback_observer_(transport_feedback_observer), |
| 114 decode_thread_(ChannelDecodeThreadFunction, this, "DecodingThread"), |
| 114 nack_history_size_sender_(kMinSendSidePacketHistorySize), | 115 nack_history_size_sender_(kMinSendSidePacketHistorySize), |
| 115 max_nack_reordering_threshold_(kMaxPacketAgeToNack), | 116 max_nack_reordering_threshold_(kMaxPacketAgeToNack), |
| 116 pre_render_callback_(NULL), | 117 pre_render_callback_(NULL), |
| 117 report_block_stats_sender_(new ReportBlockStats()), | 118 report_block_stats_sender_(new ReportBlockStats()), |
| 118 time_of_first_rtt_ms_(-1), | 119 time_of_first_rtt_ms_(-1), |
| 119 rtt_sum_ms_(0), | 120 rtt_sum_ms_(0), |
| 120 last_rtt_ms_(0), | 121 last_rtt_ms_(0), |
| 121 num_rtts_(0), | 122 num_rtts_(0), |
| 122 rtp_rtcp_modules_( | 123 rtp_rtcp_modules_( |
| 123 CreateRtpRtcpModules(!sender, | 124 CreateRtpRtcpModules(!sender, |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 vie_receiver_.GetReceiveStatistics()); | 180 vie_receiver_.GetReceiveStatistics()); |
| 180 module_process_thread_->DeRegisterModule(vcm_); | 181 module_process_thread_->DeRegisterModule(vcm_); |
| 181 module_process_thread_->DeRegisterModule(&vie_sync_); | 182 module_process_thread_->DeRegisterModule(&vie_sync_); |
| 182 send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>()); | 183 send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>()); |
| 183 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) | 184 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) |
| 184 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i]); | 185 packet_router_->RemoveRtpModule(rtp_rtcp_modules_[i]); |
| 185 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { | 186 for (RtpRtcp* rtp_rtcp : rtp_rtcp_modules_) { |
| 186 module_process_thread_->DeRegisterModule(rtp_rtcp); | 187 module_process_thread_->DeRegisterModule(rtp_rtcp); |
| 187 delete rtp_rtcp; | 188 delete rtp_rtcp; |
| 188 } | 189 } |
| 189 if (decode_thread_) { | 190 StopDecodeThread(); |
| 190 StopDecodeThread(); | |
| 191 } | |
| 192 // Release modules. | 191 // Release modules. |
| 193 VideoCodingModule::Destroy(vcm_); | 192 VideoCodingModule::Destroy(vcm_); |
| 194 } | 193 } |
| 195 | 194 |
| 196 void ViEChannel::UpdateHistograms() { | 195 void ViEChannel::UpdateHistograms() { |
| 197 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); | 196 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); |
| 198 | 197 |
| 199 { | 198 { |
| 200 CriticalSectionScoped cs(crit_.get()); | 199 CriticalSectionScoped cs(crit_.get()); |
| 201 int64_t elapsed_sec = (now - time_of_first_rtt_ms_) / 1000; | 200 int64_t elapsed_sec = (now - time_of_first_rtt_ms_) / 1000; |
| (...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1141 // Receive statistics and remote bitrate estimator should only be set for | 1140 // Receive statistics and remote bitrate estimator should only be set for |
| 1142 // the primary (first) module. | 1141 // the primary (first) module. |
| 1143 configuration.receive_statistics = null_receive_statistics; | 1142 configuration.receive_statistics = null_receive_statistics; |
| 1144 configuration.remote_bitrate_estimator = nullptr; | 1143 configuration.remote_bitrate_estimator = nullptr; |
| 1145 } | 1144 } |
| 1146 return modules; | 1145 return modules; |
| 1147 } | 1146 } |
| 1148 | 1147 |
| 1149 void ViEChannel::StartDecodeThread() { | 1148 void ViEChannel::StartDecodeThread() { |
| 1150 RTC_DCHECK(!sender_); | 1149 RTC_DCHECK(!sender_); |
| 1150 if (decode_thread_.IsRunning()) |
| 1151 return; |
| 1151 // Start the decode thread | 1152 // Start the decode thread |
| 1152 if (decode_thread_) | 1153 decode_thread_.Start(); |
| 1153 return; | 1154 decode_thread_.SetPriority(rtc::kHighestPriority); |
| 1154 decode_thread_ = PlatformThread::CreateThread(ChannelDecodeThreadFunction, | |
| 1155 this, "DecodingThread"); | |
| 1156 decode_thread_->Start(); | |
| 1157 decode_thread_->SetPriority(kHighestPriority); | |
| 1158 } | 1155 } |
| 1159 | 1156 |
| 1160 void ViEChannel::StopDecodeThread() { | 1157 void ViEChannel::StopDecodeThread() { |
| 1161 if (!decode_thread_) | |
| 1162 return; | |
| 1163 | |
| 1164 vcm_->TriggerDecoderShutdown(); | 1158 vcm_->TriggerDecoderShutdown(); |
| 1165 | 1159 |
| 1166 decode_thread_->Stop(); | 1160 decode_thread_.Stop(); |
| 1167 decode_thread_.reset(); | |
| 1168 } | 1161 } |
| 1169 | 1162 |
| 1170 int32_t ViEChannel::SetVoiceChannel(int32_t ve_channel_id, | 1163 int32_t ViEChannel::SetVoiceChannel(int32_t ve_channel_id, |
| 1171 VoEVideoSync* ve_sync_interface) { | 1164 VoEVideoSync* ve_sync_interface) { |
| 1172 return vie_sync_.ConfigureSync(ve_channel_id, ve_sync_interface, | 1165 return vie_sync_.ConfigureSync(ve_channel_id, ve_sync_interface, |
| 1173 rtp_rtcp_modules_[0], | 1166 rtp_rtcp_modules_[0], |
| 1174 vie_receiver_.GetRtpReceiver()); | 1167 vie_receiver_.GetRtpReceiver()); |
| 1175 } | 1168 } |
| 1176 | 1169 |
| 1177 int32_t ViEChannel::VoiceChannel() { | 1170 int32_t ViEChannel::VoiceChannel() { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1220 CriticalSectionScoped cs(crit_.get()); | 1213 CriticalSectionScoped cs(crit_.get()); |
| 1221 receive_stats_callback_ = receive_statistics_proxy; | 1214 receive_stats_callback_ = receive_statistics_proxy; |
| 1222 } | 1215 } |
| 1223 | 1216 |
| 1224 void ViEChannel::SetIncomingVideoStream( | 1217 void ViEChannel::SetIncomingVideoStream( |
| 1225 IncomingVideoStream* incoming_video_stream) { | 1218 IncomingVideoStream* incoming_video_stream) { |
| 1226 CriticalSectionScoped cs(crit_.get()); | 1219 CriticalSectionScoped cs(crit_.get()); |
| 1227 incoming_video_stream_ = incoming_video_stream; | 1220 incoming_video_stream_ = incoming_video_stream; |
| 1228 } | 1221 } |
| 1229 } // namespace webrtc | 1222 } // namespace webrtc |
| OLD | NEW |