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

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

Issue 1613053003: Swap use of CriticalSectionWrapper for rtc::CriticalSection in webrtc/video. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase? Created 4 years, 11 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/vie_channel.h ('k') | webrtc/video/vie_encoder.h » ('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 10 matching lines...) Expand all
21 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" 21 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
22 #include "webrtc/frame_callback.h" 22 #include "webrtc/frame_callback.h"
23 #include "webrtc/modules/pacing/paced_sender.h" 23 #include "webrtc/modules/pacing/paced_sender.h"
24 #include "webrtc/modules/pacing/packet_router.h" 24 #include "webrtc/modules/pacing/packet_router.h"
25 #include "webrtc/modules/rtp_rtcp/include/rtp_receiver.h" 25 #include "webrtc/modules/rtp_rtcp/include/rtp_receiver.h"
26 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" 26 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
27 #include "webrtc/modules/utility/include/process_thread.h" 27 #include "webrtc/modules/utility/include/process_thread.h"
28 #include "webrtc/modules/video_coding/include/video_coding.h" 28 #include "webrtc/modules/video_coding/include/video_coding.h"
29 #include "webrtc/modules/video_processing/include/video_processing.h" 29 #include "webrtc/modules/video_processing/include/video_processing.h"
30 #include "webrtc/modules/video_render/video_render_defines.h" 30 #include "webrtc/modules/video_render/video_render_defines.h"
31 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
32 #include "webrtc/system_wrappers/include/metrics.h" 31 #include "webrtc/system_wrappers/include/metrics.h"
33 #include "webrtc/video/call_stats.h" 32 #include "webrtc/video/call_stats.h"
34 #include "webrtc/video/payload_router.h" 33 #include "webrtc/video/payload_router.h"
35 #include "webrtc/video/receive_statistics_proxy.h" 34 #include "webrtc/video/receive_statistics_proxy.h"
36 #include "webrtc/video/report_block_stats.h" 35 #include "webrtc/video/report_block_stats.h"
37 36
38 namespace webrtc { 37 namespace webrtc {
39 38
40 const int kMaxDecodeWaitTimeMs = 50; 39 const int kMaxDecodeWaitTimeMs = 50;
41 static const int kMaxTargetDelayMs = 10000; 40 static const int kMaxTargetDelayMs = 10000;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 TransportFeedbackObserver* transport_feedback_observer, 85 TransportFeedbackObserver* transport_feedback_observer,
87 RemoteBitrateEstimator* remote_bitrate_estimator, 86 RemoteBitrateEstimator* remote_bitrate_estimator,
88 RtcpRttStats* rtt_stats, 87 RtcpRttStats* rtt_stats,
89 PacedSender* paced_sender, 88 PacedSender* paced_sender,
90 PacketRouter* packet_router, 89 PacketRouter* packet_router,
91 size_t max_rtp_streams, 90 size_t max_rtp_streams,
92 bool sender) 91 bool sender)
93 : number_of_cores_(number_of_cores), 92 : number_of_cores_(number_of_cores),
94 sender_(sender), 93 sender_(sender),
95 module_process_thread_(module_process_thread), 94 module_process_thread_(module_process_thread),
96 crit_(CriticalSectionWrapper::CreateCriticalSection()),
97 send_payload_router_(new PayloadRouter()), 95 send_payload_router_(new PayloadRouter()),
98 vcm_protection_callback_(new ViEChannelProtectionCallback(this)), 96 vcm_protection_callback_(new ViEChannelProtectionCallback(this)),
99 vcm_(VideoCodingModule::Create(Clock::GetRealTimeClock(), 97 vcm_(VideoCodingModule::Create(Clock::GetRealTimeClock(),
100 nullptr, 98 nullptr,
101 nullptr)), 99 nullptr)),
102 vie_receiver_(vcm_, remote_bitrate_estimator, this), 100 vie_receiver_(vcm_, remote_bitrate_estimator, this),
103 vie_sync_(vcm_), 101 vie_sync_(vcm_),
104 stats_observer_(new ChannelStatsObserver(this)), 102 stats_observer_(new ChannelStatsObserver(this)),
105 receive_stats_callback_(nullptr), 103 receive_stats_callback_(nullptr),
106 incoming_video_stream_(nullptr), 104 incoming_video_stream_(nullptr),
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 if (!sender_) 187 if (!sender_)
190 StopDecodeThread(); 188 StopDecodeThread();
191 // Release modules. 189 // Release modules.
192 VideoCodingModule::Destroy(vcm_); 190 VideoCodingModule::Destroy(vcm_);
193 } 191 }
194 192
195 void ViEChannel::UpdateHistograms() { 193 void ViEChannel::UpdateHistograms() {
196 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds(); 194 int64_t now = Clock::GetRealTimeClock()->TimeInMilliseconds();
197 195
198 { 196 {
199 CriticalSectionScoped cs(crit_.get()); 197 rtc::CritScope lock(&crit_);
200 int64_t elapsed_sec = (now - time_of_first_rtt_ms_) / 1000; 198 int64_t elapsed_sec = (now - time_of_first_rtt_ms_) / 1000;
201 if (time_of_first_rtt_ms_ != -1 && num_rtts_ > 0 && 199 if (time_of_first_rtt_ms_ != -1 && num_rtts_ > 0 &&
202 elapsed_sec > metrics::kMinRunTimeInSeconds) { 200 elapsed_sec > metrics::kMinRunTimeInSeconds) {
203 int64_t avg_rtt_ms = (rtt_sum_ms_ + num_rtts_ / 2) / num_rtts_; 201 int64_t avg_rtt_ms = (rtt_sum_ms_ + num_rtts_ / 2) / num_rtts_;
204 RTC_HISTOGRAM_COUNTS_SPARSE_10000( 202 RTC_HISTOGRAM_COUNTS_SPARSE_10000(
205 "WebRTC.Video.AverageRoundTripTimeInMilliseconds", avg_rtt_ms); 203 "WebRTC.Video.AverageRoundTripTimeInMilliseconds", avg_rtt_ms);
206 } 204 }
207 } 205 }
208 206
209 if (sender_) { 207 if (sender_) {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>()); 358 send_payload_router_->SetSendingRtpModules(std::list<RtpRtcp*>());
361 359
362 std::vector<RtpRtcp*> registered_modules; 360 std::vector<RtpRtcp*> registered_modules;
363 std::vector<RtpRtcp*> deregistered_modules; 361 std::vector<RtpRtcp*> deregistered_modules;
364 size_t num_active_modules = video_codec.numberOfSimulcastStreams > 0 362 size_t num_active_modules = video_codec.numberOfSimulcastStreams > 0
365 ? video_codec.numberOfSimulcastStreams 363 ? video_codec.numberOfSimulcastStreams
366 : 1; 364 : 1;
367 size_t num_prev_active_modules; 365 size_t num_prev_active_modules;
368 { 366 {
369 // Cache which modules are active so StartSend can know which ones to start. 367 // Cache which modules are active so StartSend can know which ones to start.
370 CriticalSectionScoped cs(crit_.get()); 368 rtc::CritScope lock(&crit_);
371 num_prev_active_modules = num_active_rtp_rtcp_modules_; 369 num_prev_active_modules = num_active_rtp_rtcp_modules_;
372 num_active_rtp_rtcp_modules_ = num_active_modules; 370 num_active_rtp_rtcp_modules_ = num_active_modules;
373 } 371 }
374 for (size_t i = 0; i < num_active_modules; ++i) 372 for (size_t i = 0; i < num_active_modules; ++i)
375 registered_modules.push_back(rtp_rtcp_modules_[i]); 373 registered_modules.push_back(rtp_rtcp_modules_[i]);
376 374
377 for (size_t i = num_active_modules; i < rtp_rtcp_modules_.size(); ++i) 375 for (size_t i = num_active_modules; i < rtp_rtcp_modules_.size(); ++i)
378 deregistered_modules.push_back(rtp_rtcp_modules_[i]); 376 deregistered_modules.push_back(rtp_rtcp_modules_[i]);
379 377
380 // Disable inactive modules. 378 // Disable inactive modules.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 } 437 }
440 438
441 void ViEChannel::RegisterExternalDecoder(const uint8_t pl_type, 439 void ViEChannel::RegisterExternalDecoder(const uint8_t pl_type,
442 VideoDecoder* decoder) { 440 VideoDecoder* decoder) {
443 RTC_DCHECK(!sender_); 441 RTC_DCHECK(!sender_);
444 vcm_->RegisterExternalDecoder(decoder, pl_type); 442 vcm_->RegisterExternalDecoder(decoder, pl_type);
445 } 443 }
446 444
447 int32_t ViEChannel::ReceiveCodecStatistics(uint32_t* num_key_frames, 445 int32_t ViEChannel::ReceiveCodecStatistics(uint32_t* num_key_frames,
448 uint32_t* num_delta_frames) { 446 uint32_t* num_delta_frames) {
449 CriticalSectionScoped cs(crit_.get()); 447 rtc::CritScope lock(&crit_);
450 *num_key_frames = receive_frame_counts_.key_frames; 448 *num_key_frames = receive_frame_counts_.key_frames;
451 *num_delta_frames = receive_frame_counts_.delta_frames; 449 *num_delta_frames = receive_frame_counts_.delta_frames;
452 return 0; 450 return 0;
453 } 451 }
454 452
455 uint32_t ViEChannel::DiscardedPackets() const { 453 uint32_t ViEChannel::DiscardedPackets() const {
456 return vcm_->DiscardedPackets(); 454 return vcm_->DiscardedPackets();
457 } 455 }
458 456
459 int ViEChannel::ReceiveDelay() const { 457 int ViEChannel::ReceiveDelay() const {
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 SendSideDelayObserver* observer) { 875 SendSideDelayObserver* observer) {
878 send_side_delay_observer_.Set(observer); 876 send_side_delay_observer_.Set(observer);
879 } 877 }
880 878
881 void ViEChannel::RegisterSendBitrateObserver( 879 void ViEChannel::RegisterSendBitrateObserver(
882 BitrateStatisticsObserver* observer) { 880 BitrateStatisticsObserver* observer) {
883 send_bitrate_observer_.Set(observer); 881 send_bitrate_observer_.Set(observer);
884 } 882 }
885 883
886 int32_t ViEChannel::StartSend() { 884 int32_t ViEChannel::StartSend() {
887 CriticalSectionScoped cs(crit_.get()); 885 rtc::CritScope lock(&crit_);
888 886
889 if (rtp_rtcp_modules_[0]->Sending()) 887 if (rtp_rtcp_modules_[0]->Sending())
890 return -1; 888 return -1;
891 889
892 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) { 890 for (size_t i = 0; i < num_active_rtp_rtcp_modules_; ++i) {
893 RtpRtcp* rtp_rtcp = rtp_rtcp_modules_[i]; 891 RtpRtcp* rtp_rtcp = rtp_rtcp_modules_[i];
894 rtp_rtcp->SetSendingMediaStatus(true); 892 rtp_rtcp->SetSendingMediaStatus(true);
895 rtp_rtcp->SetSendingStatus(true); 893 rtp_rtcp->SetSendingStatus(true);
896 } 894 }
897 send_payload_router_->set_active(true); 895 send_payload_router_->set_active(true);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 961
964 CallStatsObserver* ViEChannel::GetStatsObserver() { 962 CallStatsObserver* ViEChannel::GetStatsObserver() {
965 return stats_observer_.get(); 963 return stats_observer_.get();
966 } 964 }
967 965
968 // Do not acquire the lock of |vcm_| in this function. Decode callback won't 966 // Do not acquire the lock of |vcm_| in this function. Decode callback won't
969 // necessarily be called from the decoding thread. The decoding thread may have 967 // necessarily be called from the decoding thread. The decoding thread may have
970 // held the lock when calling VideoDecoder::Decode, Reset, or Release. Acquiring 968 // held the lock when calling VideoDecoder::Decode, Reset, or Release. Acquiring
971 // the same lock in the path of decode callback can deadlock. 969 // the same lock in the path of decode callback can deadlock.
972 int32_t ViEChannel::FrameToRender(VideoFrame& video_frame) { // NOLINT 970 int32_t ViEChannel::FrameToRender(VideoFrame& video_frame) { // NOLINT
973 CriticalSectionScoped cs(crit_.get()); 971 rtc::CritScope lock(&crit_);
974 972
975 if (pre_render_callback_ != NULL) 973 if (pre_render_callback_ != NULL)
976 pre_render_callback_->FrameCallback(&video_frame); 974 pre_render_callback_->FrameCallback(&video_frame);
977 975
978 // TODO(pbos): Remove stream id argument. 976 // TODO(pbos): Remove stream id argument.
979 incoming_video_stream_->RenderFrame(0xFFFFFFFF, video_frame); 977 incoming_video_stream_->RenderFrame(0xFFFFFFFF, video_frame);
980 return 0; 978 return 0;
981 } 979 }
982 980
983 int32_t ViEChannel::ReceivedDecodedReferenceFrame( 981 int32_t ViEChannel::ReceivedDecodedReferenceFrame(
984 const uint64_t picture_id) { 982 const uint64_t picture_id) {
985 return rtp_rtcp_modules_[0]->SendRTCPReferencePictureSelection(picture_id); 983 return rtp_rtcp_modules_[0]->SendRTCPReferencePictureSelection(picture_id);
986 } 984 }
987 985
988 void ViEChannel::OnIncomingPayloadType(int payload_type) { 986 void ViEChannel::OnIncomingPayloadType(int payload_type) {
989 CriticalSectionScoped cs(crit_.get()); 987 rtc::CritScope lock(&crit_);
990 if (receive_stats_callback_) 988 if (receive_stats_callback_)
991 receive_stats_callback_->OnIncomingPayloadType(payload_type); 989 receive_stats_callback_->OnIncomingPayloadType(payload_type);
992 } 990 }
993 991
994 void ViEChannel::OnDecoderImplementationName(const char* implementation_name) { 992 void ViEChannel::OnDecoderImplementationName(const char* implementation_name) {
995 CriticalSectionScoped cs(crit_.get()); 993 rtc::CritScope lock(&crit_);
996 if (receive_stats_callback_) 994 if (receive_stats_callback_)
997 receive_stats_callback_->OnDecoderImplementationName(implementation_name); 995 receive_stats_callback_->OnDecoderImplementationName(implementation_name);
998 } 996 }
999 997
1000 void ViEChannel::OnReceiveRatesUpdated(uint32_t bit_rate, uint32_t frame_rate) { 998 void ViEChannel::OnReceiveRatesUpdated(uint32_t bit_rate, uint32_t frame_rate) {
1001 CriticalSectionScoped cs(crit_.get()); 999 rtc::CritScope lock(&crit_);
1002 if (receive_stats_callback_) 1000 if (receive_stats_callback_)
1003 receive_stats_callback_->OnIncomingRate(frame_rate, bit_rate); 1001 receive_stats_callback_->OnIncomingRate(frame_rate, bit_rate);
1004 } 1002 }
1005 1003
1006 void ViEChannel::OnDiscardedPacketsUpdated(int discarded_packets) { 1004 void ViEChannel::OnDiscardedPacketsUpdated(int discarded_packets) {
1007 CriticalSectionScoped cs(crit_.get()); 1005 rtc::CritScope lock(&crit_);
1008 if (receive_stats_callback_) 1006 if (receive_stats_callback_)
1009 receive_stats_callback_->OnDiscardedPacketsUpdated(discarded_packets); 1007 receive_stats_callback_->OnDiscardedPacketsUpdated(discarded_packets);
1010 } 1008 }
1011 1009
1012 void ViEChannel::OnFrameCountsUpdated(const FrameCounts& frame_counts) { 1010 void ViEChannel::OnFrameCountsUpdated(const FrameCounts& frame_counts) {
1013 CriticalSectionScoped cs(crit_.get()); 1011 rtc::CritScope lock(&crit_);
1014 receive_frame_counts_ = frame_counts; 1012 receive_frame_counts_ = frame_counts;
1015 if (receive_stats_callback_) 1013 if (receive_stats_callback_)
1016 receive_stats_callback_->OnFrameCountsUpdated(frame_counts); 1014 receive_stats_callback_->OnFrameCountsUpdated(frame_counts);
1017 } 1015 }
1018 1016
1019 void ViEChannel::OnDecoderTiming(int decode_ms, 1017 void ViEChannel::OnDecoderTiming(int decode_ms,
1020 int max_decode_ms, 1018 int max_decode_ms,
1021 int current_delay_ms, 1019 int current_delay_ms,
1022 int target_delay_ms, 1020 int target_delay_ms,
1023 int jitter_buffer_ms, 1021 int jitter_buffer_ms,
1024 int min_playout_delay_ms, 1022 int min_playout_delay_ms,
1025 int render_delay_ms) { 1023 int render_delay_ms) {
1026 CriticalSectionScoped cs(crit_.get()); 1024 rtc::CritScope lock(&crit_);
1027 if (!receive_stats_callback_) 1025 if (!receive_stats_callback_)
1028 return; 1026 return;
1029 receive_stats_callback_->OnDecoderTiming( 1027 receive_stats_callback_->OnDecoderTiming(
1030 decode_ms, max_decode_ms, current_delay_ms, target_delay_ms, 1028 decode_ms, max_decode_ms, current_delay_ms, target_delay_ms,
1031 jitter_buffer_ms, min_playout_delay_ms, render_delay_ms, last_rtt_ms_); 1029 jitter_buffer_ms, min_playout_delay_ms, render_delay_ms, last_rtt_ms_);
1032 } 1030 }
1033 1031
1034 int32_t ViEChannel::RequestKeyFrame() { 1032 int32_t ViEChannel::RequestKeyFrame() {
1035 return rtp_rtcp_modules_[0]->RequestKeyFrame(); 1033 return rtp_rtcp_modules_[0]->RequestKeyFrame();
1036 } 1034 }
(...skipping 14 matching lines...) Expand all
1051 } 1049 }
1052 1050
1053 bool ViEChannel::ChannelDecodeProcess() { 1051 bool ViEChannel::ChannelDecodeProcess() {
1054 vcm_->Decode(kMaxDecodeWaitTimeMs); 1052 vcm_->Decode(kMaxDecodeWaitTimeMs);
1055 return true; 1053 return true;
1056 } 1054 }
1057 1055
1058 void ViEChannel::OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) { 1056 void ViEChannel::OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) {
1059 vcm_->SetReceiveChannelParameters(max_rtt_ms); 1057 vcm_->SetReceiveChannelParameters(max_rtt_ms);
1060 1058
1061 CriticalSectionScoped cs(crit_.get()); 1059 rtc::CritScope lock(&crit_);
1062 if (time_of_first_rtt_ms_ == -1) 1060 if (time_of_first_rtt_ms_ == -1)
1063 time_of_first_rtt_ms_ = Clock::GetRealTimeClock()->TimeInMilliseconds(); 1061 time_of_first_rtt_ms_ = Clock::GetRealTimeClock()->TimeInMilliseconds();
1064 rtt_sum_ms_ += avg_rtt_ms; 1062 rtt_sum_ms_ += avg_rtt_ms;
1065 last_rtt_ms_ = avg_rtt_ms; 1063 last_rtt_ms_ = avg_rtt_ms;
1066 ++num_rtts_; 1064 ++num_rtts_;
1067 } 1065 }
1068 1066
1069 int ViEChannel::ProtectionRequest(const FecProtectionParams* delta_fec_params, 1067 int ViEChannel::ProtectionRequest(const FecProtectionParams* delta_fec_params,
1070 const FecProtectionParams* key_fec_params, 1068 const FecProtectionParams* key_fec_params,
1071 uint32_t* video_rate_bps, 1069 uint32_t* video_rate_bps,
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 rtp_rtcp_modules_[0], 1159 rtp_rtcp_modules_[0],
1162 vie_receiver_.GetRtpReceiver()); 1160 vie_receiver_.GetRtpReceiver());
1163 } 1161 }
1164 1162
1165 int32_t ViEChannel::VoiceChannel() { 1163 int32_t ViEChannel::VoiceChannel() {
1166 return vie_sync_.VoiceChannel(); 1164 return vie_sync_.VoiceChannel();
1167 } 1165 }
1168 1166
1169 void ViEChannel::RegisterPreRenderCallback( 1167 void ViEChannel::RegisterPreRenderCallback(
1170 I420FrameCallback* pre_render_callback) { 1168 I420FrameCallback* pre_render_callback) {
1171 CriticalSectionScoped cs(crit_.get()); 1169 rtc::CritScope lock(&crit_);
1172 pre_render_callback_ = pre_render_callback; 1170 pre_render_callback_ = pre_render_callback;
1173 } 1171 }
1174 1172
1175 void ViEChannel::RegisterPreDecodeImageCallback( 1173 void ViEChannel::RegisterPreDecodeImageCallback(
1176 EncodedImageCallback* pre_decode_callback) { 1174 EncodedImageCallback* pre_decode_callback) {
1177 vcm_->RegisterPreDecodeImageCallback(pre_decode_callback); 1175 vcm_->RegisterPreDecodeImageCallback(pre_decode_callback);
1178 } 1176 }
1179 1177
1180 // TODO(pbos): Remove OnInitializeDecoder which is called from the RTP module, 1178 // TODO(pbos): Remove OnInitializeDecoder which is called from the RTP module,
1181 // any decoder resetting should be handled internally within the VCM. 1179 // any decoder resetting should be handled internally within the VCM.
(...skipping 16 matching lines...) Expand all
1198 1196
1199 void ViEChannel::OnIncomingCSRCChanged(const uint32_t CSRC, const bool added) {} 1197 void ViEChannel::OnIncomingCSRCChanged(const uint32_t CSRC, const bool added) {}
1200 1198
1201 void ViEChannel::RegisterSendFrameCountObserver( 1199 void ViEChannel::RegisterSendFrameCountObserver(
1202 FrameCountObserver* observer) { 1200 FrameCountObserver* observer) {
1203 send_frame_count_observer_.Set(observer); 1201 send_frame_count_observer_.Set(observer);
1204 } 1202 }
1205 1203
1206 void ViEChannel::RegisterReceiveStatisticsProxy( 1204 void ViEChannel::RegisterReceiveStatisticsProxy(
1207 ReceiveStatisticsProxy* receive_statistics_proxy) { 1205 ReceiveStatisticsProxy* receive_statistics_proxy) {
1208 CriticalSectionScoped cs(crit_.get()); 1206 rtc::CritScope lock(&crit_);
1209 receive_stats_callback_ = receive_statistics_proxy; 1207 receive_stats_callback_ = receive_statistics_proxy;
1210 } 1208 }
1211 1209
1212 void ViEChannel::SetIncomingVideoStream( 1210 void ViEChannel::SetIncomingVideoStream(
1213 IncomingVideoStream* incoming_video_stream) { 1211 IncomingVideoStream* incoming_video_stream) {
1214 CriticalSectionScoped cs(crit_.get()); 1212 rtc::CritScope lock(&crit_);
1215 incoming_video_stream_ = incoming_video_stream; 1213 incoming_video_stream_ = incoming_video_stream;
1216 } 1214 }
1217 } // namespace webrtc 1215 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/vie_channel.h ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698