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

Side by Side Diff: webrtc/call/call.cc

Issue 1748403002: Move RtcEventLog object from inside VoiceEngine to Call. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix for failing tests. Created 4 years, 8 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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
88 const webrtc::Call::Config::BitrateConfig& bitrate_config) override; 88 const webrtc::Call::Config::BitrateConfig& bitrate_config) override;
89 89
90 void SignalChannelNetworkState(MediaType media, NetworkState state) override; 90 void SignalChannelNetworkState(MediaType media, NetworkState state) override;
91 91
92 void OnSentPacket(const rtc::SentPacket& sent_packet) override; 92 void OnSentPacket(const rtc::SentPacket& sent_packet) override;
93 93
94 // Implements BitrateObserver. 94 // Implements BitrateObserver.
95 void OnNetworkChanged(uint32_t bitrate_bps, uint8_t fraction_loss, 95 void OnNetworkChanged(uint32_t bitrate_bps, uint8_t fraction_loss,
96 int64_t rtt_ms) override; 96 int64_t rtt_ms) override;
97 97
98 bool StartEventLog(rtc::PlatformFile log_file,
99 int64_t max_size_bytes) override {
100 return event_log_->StartLogging(log_file, max_size_bytes);
101 }
102
103 void StopEventLog() override { event_log_->StopLogging(); }
104
98 private: 105 private:
99 DeliveryStatus DeliverRtcp(MediaType media_type, const uint8_t* packet, 106 DeliveryStatus DeliverRtcp(MediaType media_type, const uint8_t* packet,
100 size_t length); 107 size_t length);
101 DeliveryStatus DeliverRtp(MediaType media_type, 108 DeliveryStatus DeliverRtp(MediaType media_type,
102 const uint8_t* packet, 109 const uint8_t* packet,
103 size_t length, 110 size_t length,
104 const PacketTime& packet_time); 111 const PacketTime& packet_time);
105 112
106 void ConfigureSync(const std::string& sync_group) 113 void ConfigureSync(const std::string& sync_group)
107 EXCLUSIVE_LOCKS_REQUIRED(receive_crit_); 114 EXCLUSIVE_LOCKS_REQUIRED(receive_crit_);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 GUARDED_BY(receive_crit_); 151 GUARDED_BY(receive_crit_);
145 152
146 std::unique_ptr<RWLockWrapper> send_crit_; 153 std::unique_ptr<RWLockWrapper> send_crit_;
147 // Audio and Video send streams are owned by the client that creates them. 154 // Audio and Video send streams are owned by the client that creates them.
148 std::map<uint32_t, AudioSendStream*> audio_send_ssrcs_ GUARDED_BY(send_crit_); 155 std::map<uint32_t, AudioSendStream*> audio_send_ssrcs_ GUARDED_BY(send_crit_);
149 std::map<uint32_t, VideoSendStream*> video_send_ssrcs_ GUARDED_BY(send_crit_); 156 std::map<uint32_t, VideoSendStream*> video_send_ssrcs_ GUARDED_BY(send_crit_);
150 std::set<VideoSendStream*> video_send_streams_ GUARDED_BY(send_crit_); 157 std::set<VideoSendStream*> video_send_streams_ GUARDED_BY(send_crit_);
151 158
152 VideoSendStream::RtpStateMap suspended_video_send_ssrcs_; 159 VideoSendStream::RtpStateMap suspended_video_send_ssrcs_;
153 160
154 RtcEventLog* event_log_ = nullptr; 161 std::unique_ptr<webrtc::RtcEventLog> event_log_;
155 162
156 // The following members are only accessed (exclusively) from one thread and 163 // The following members are only accessed (exclusively) from one thread and
157 // from the destructor, and therefore doesn't need any explicit 164 // from the destructor, and therefore doesn't need any explicit
158 // synchronization. 165 // synchronization.
159 int64_t received_video_bytes_; 166 int64_t received_video_bytes_;
160 int64_t received_audio_bytes_; 167 int64_t received_audio_bytes_;
161 int64_t received_rtcp_bytes_; 168 int64_t received_rtcp_bytes_;
162 int64_t first_rtp_packet_received_ms_; 169 int64_t first_rtp_packet_received_ms_;
163 int64_t last_rtp_packet_received_ms_; 170 int64_t last_rtp_packet_received_ms_;
164 int64_t first_packet_sent_ms_; 171 int64_t first_packet_sent_ms_;
(...skipping 24 matching lines...) Expand all
189 module_process_thread_( 196 module_process_thread_(
190 rtc::ScopedToUnique(ProcessThread::Create("ModuleProcessThread"))), 197 rtc::ScopedToUnique(ProcessThread::Create("ModuleProcessThread"))),
191 pacer_thread_(rtc::ScopedToUnique(ProcessThread::Create("PacerThread"))), 198 pacer_thread_(rtc::ScopedToUnique(ProcessThread::Create("PacerThread"))),
192 call_stats_(new CallStats(clock_)), 199 call_stats_(new CallStats(clock_)),
193 bitrate_allocator_(new BitrateAllocator()), 200 bitrate_allocator_(new BitrateAllocator()),
194 config_(config), 201 config_(config),
195 audio_network_state_(kNetworkUp), 202 audio_network_state_(kNetworkUp),
196 video_network_state_(kNetworkUp), 203 video_network_state_(kNetworkUp),
197 receive_crit_(RWLockWrapper::CreateRWLock()), 204 receive_crit_(RWLockWrapper::CreateRWLock()),
198 send_crit_(RWLockWrapper::CreateRWLock()), 205 send_crit_(RWLockWrapper::CreateRWLock()),
206 event_log_(RtcEventLog::Create()),
199 received_video_bytes_(0), 207 received_video_bytes_(0),
200 received_audio_bytes_(0), 208 received_audio_bytes_(0),
201 received_rtcp_bytes_(0), 209 received_rtcp_bytes_(0),
202 first_rtp_packet_received_ms_(-1), 210 first_rtp_packet_received_ms_(-1),
203 last_rtp_packet_received_ms_(-1), 211 last_rtp_packet_received_ms_(-1),
204 first_packet_sent_ms_(-1), 212 first_packet_sent_ms_(-1),
205 estimated_send_bitrate_sum_kbits_(0), 213 estimated_send_bitrate_sum_kbits_(0),
206 pacer_bitrate_sum_kbits_(0), 214 pacer_bitrate_sum_kbits_(0),
207 num_bitrate_updates_(0), 215 num_bitrate_updates_(0),
208 remb_(clock_), 216 remb_(clock_),
209 congestion_controller_(new CongestionController(clock_, this, &remb_)) { 217 congestion_controller_(
218 new CongestionController(clock_, this, &remb_, event_log_.get())) {
210 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); 219 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
211 RTC_DCHECK_GE(config.bitrate_config.min_bitrate_bps, 0); 220 RTC_DCHECK_GE(config.bitrate_config.min_bitrate_bps, 0);
212 RTC_DCHECK_GE(config.bitrate_config.start_bitrate_bps, 221 RTC_DCHECK_GE(config.bitrate_config.start_bitrate_bps,
213 config.bitrate_config.min_bitrate_bps); 222 config.bitrate_config.min_bitrate_bps);
214 if (config.bitrate_config.max_bitrate_bps != -1) { 223 if (config.bitrate_config.max_bitrate_bps != -1) {
215 RTC_DCHECK_GE(config.bitrate_config.max_bitrate_bps, 224 RTC_DCHECK_GE(config.bitrate_config.max_bitrate_bps,
216 config.bitrate_config.start_bitrate_bps); 225 config.bitrate_config.start_bitrate_bps);
217 } 226 }
218 if (config.audio_state.get()) {
219 ScopedVoEInterface<VoECodec> voe_codec(voice_engine());
220 event_log_ = voe_codec->GetEventLog();
221 }
222 227
223 Trace::CreateTrace(); 228 Trace::CreateTrace();
224 call_stats_->RegisterStatsObserver(congestion_controller_.get()); 229 call_stats_->RegisterStatsObserver(congestion_controller_.get());
225 230
226 congestion_controller_->SetBweBitrates( 231 congestion_controller_->SetBweBitrates(
227 config_.bitrate_config.min_bitrate_bps, 232 config_.bitrate_config.min_bitrate_bps,
228 config_.bitrate_config.start_bitrate_bps, 233 config_.bitrate_config.start_bitrate_bps,
229 config_.bitrate_config.max_bitrate_bps); 234 config_.bitrate_config.max_bitrate_bps);
230 congestion_controller_->GetBitrateController()->SetEventLog(event_log_);
231 235
232 module_process_thread_->Start(); 236 module_process_thread_->Start();
233 module_process_thread_->RegisterModule(call_stats_.get()); 237 module_process_thread_->RegisterModule(call_stats_.get());
234 module_process_thread_->RegisterModule(congestion_controller_.get()); 238 module_process_thread_->RegisterModule(congestion_controller_.get());
235 pacer_thread_->RegisterModule(congestion_controller_->pacer()); 239 pacer_thread_->RegisterModule(congestion_controller_->pacer());
236 pacer_thread_->RegisterModule( 240 pacer_thread_->RegisterModule(
237 congestion_controller_->GetRemoteBitrateEstimator(true)); 241 congestion_controller_->GetRemoteBitrateEstimator(true));
238 pacer_thread_->Start(); 242 pacer_thread_->Start();
239 } 243 }
240 244
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 RTC_DCHECK(num_deleted == 1); 352 RTC_DCHECK(num_deleted == 1);
349 } 353 }
350 UpdateAggregateNetworkState(); 354 UpdateAggregateNetworkState();
351 delete audio_send_stream; 355 delete audio_send_stream;
352 } 356 }
353 357
354 webrtc::AudioReceiveStream* Call::CreateAudioReceiveStream( 358 webrtc::AudioReceiveStream* Call::CreateAudioReceiveStream(
355 const webrtc::AudioReceiveStream::Config& config) { 359 const webrtc::AudioReceiveStream::Config& config) {
356 TRACE_EVENT0("webrtc", "Call::CreateAudioReceiveStream"); 360 TRACE_EVENT0("webrtc", "Call::CreateAudioReceiveStream");
357 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); 361 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
358 AudioReceiveStream* receive_stream = new AudioReceiveStream( 362 AudioReceiveStream* receive_stream =
359 congestion_controller_.get(), config, config_.audio_state); 363 new AudioReceiveStream(congestion_controller_.get(), config,
364 config_.audio_state, event_log_.get());
360 { 365 {
361 WriteLockScoped write_lock(*receive_crit_); 366 WriteLockScoped write_lock(*receive_crit_);
362 RTC_DCHECK(audio_receive_ssrcs_.find(config.rtp.remote_ssrc) == 367 RTC_DCHECK(audio_receive_ssrcs_.find(config.rtp.remote_ssrc) ==
363 audio_receive_ssrcs_.end()); 368 audio_receive_ssrcs_.end());
364 audio_receive_ssrcs_[config.rtp.remote_ssrc] = receive_stream; 369 audio_receive_ssrcs_[config.rtp.remote_ssrc] = receive_stream;
365 ConfigureSync(config.sync_group); 370 ConfigureSync(config.sync_group);
366 } 371 }
367 receive_stream->SignalNetworkState(audio_network_state_); 372 receive_stream->SignalNetworkState(audio_network_state_);
368 UpdateAggregateNetworkState(); 373 UpdateAggregateNetworkState();
369 return receive_stream; 374 return receive_stream;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 { 413 {
409 WriteLockScoped write_lock(*send_crit_); 414 WriteLockScoped write_lock(*send_crit_);
410 for (uint32_t ssrc : config.rtp.ssrcs) { 415 for (uint32_t ssrc : config.rtp.ssrcs) {
411 RTC_DCHECK(video_send_ssrcs_.find(ssrc) == video_send_ssrcs_.end()); 416 RTC_DCHECK(video_send_ssrcs_.find(ssrc) == video_send_ssrcs_.end());
412 video_send_ssrcs_[ssrc] = send_stream; 417 video_send_ssrcs_[ssrc] = send_stream;
413 } 418 }
414 video_send_streams_.insert(send_stream); 419 video_send_streams_.insert(send_stream);
415 } 420 }
416 send_stream->SignalNetworkState(video_network_state_); 421 send_stream->SignalNetworkState(video_network_state_);
417 UpdateAggregateNetworkState(); 422 UpdateAggregateNetworkState();
418 if (event_log_) 423 event_log_->LogVideoSendStreamConfig(config);
419 event_log_->LogVideoSendStreamConfig(config);
420 return send_stream; 424 return send_stream;
421 } 425 }
422 426
423 void Call::DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) { 427 void Call::DestroyVideoSendStream(webrtc::VideoSendStream* send_stream) {
424 TRACE_EVENT0("webrtc", "Call::DestroyVideoSendStream"); 428 TRACE_EVENT0("webrtc", "Call::DestroyVideoSendStream");
425 RTC_DCHECK(send_stream != nullptr); 429 RTC_DCHECK(send_stream != nullptr);
426 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); 430 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
427 431
428 send_stream->Stop(); 432 send_stream->Stop();
429 433
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 WriteLockScoped write_lock(*receive_crit_); 470 WriteLockScoped write_lock(*receive_crit_);
467 RTC_DCHECK(video_receive_ssrcs_.find(config.rtp.remote_ssrc) == 471 RTC_DCHECK(video_receive_ssrcs_.find(config.rtp.remote_ssrc) ==
468 video_receive_ssrcs_.end()); 472 video_receive_ssrcs_.end());
469 video_receive_ssrcs_[config.rtp.remote_ssrc] = receive_stream; 473 video_receive_ssrcs_[config.rtp.remote_ssrc] = receive_stream;
470 // TODO(pbos): Configure different RTX payloads per receive payload. 474 // TODO(pbos): Configure different RTX payloads per receive payload.
471 VideoReceiveStream::Config::Rtp::RtxMap::const_iterator it = 475 VideoReceiveStream::Config::Rtp::RtxMap::const_iterator it =
472 config.rtp.rtx.begin(); 476 config.rtp.rtx.begin();
473 if (it != config.rtp.rtx.end()) 477 if (it != config.rtp.rtx.end())
474 video_receive_ssrcs_[it->second.ssrc] = receive_stream; 478 video_receive_ssrcs_[it->second.ssrc] = receive_stream;
475 video_receive_streams_.insert(receive_stream); 479 video_receive_streams_.insert(receive_stream);
476
477 ConfigureSync(config.sync_group); 480 ConfigureSync(config.sync_group);
478 } 481 }
479 receive_stream->SignalNetworkState(video_network_state_); 482 receive_stream->SignalNetworkState(video_network_state_);
480 UpdateAggregateNetworkState(); 483 UpdateAggregateNetworkState();
481 if (event_log_) 484 event_log_->LogVideoReceiveStreamConfig(config);
482 event_log_->LogVideoReceiveStreamConfig(config);
483 return receive_stream; 485 return receive_stream;
484 } 486 }
485 487
486 void Call::DestroyVideoReceiveStream( 488 void Call::DestroyVideoReceiveStream(
487 webrtc::VideoReceiveStream* receive_stream) { 489 webrtc::VideoReceiveStream* receive_stream) {
488 TRACE_EVENT0("webrtc", "Call::DestroyVideoReceiveStream"); 490 TRACE_EVENT0("webrtc", "Call::DestroyVideoReceiveStream");
489 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); 491 RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread());
490 RTC_DCHECK(receive_stream != nullptr); 492 RTC_DCHECK(receive_stream != nullptr);
491 VideoReceiveStream* receive_stream_impl = nullptr; 493 VideoReceiveStream* receive_stream_impl = nullptr;
492 { 494 {
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 // Do NOT broadcast! Also make sure it's a valid packet. 721 // Do NOT broadcast! Also make sure it's a valid packet.
720 // Return DELIVERY_UNKNOWN_SSRC if it can be determined that 722 // Return DELIVERY_UNKNOWN_SSRC if it can be determined that
721 // there's no receiver of the packet. 723 // there's no receiver of the packet.
722 received_rtcp_bytes_ += length; 724 received_rtcp_bytes_ += length;
723 bool rtcp_delivered = false; 725 bool rtcp_delivered = false;
724 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { 726 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) {
725 ReadLockScoped read_lock(*receive_crit_); 727 ReadLockScoped read_lock(*receive_crit_);
726 for (VideoReceiveStream* stream : video_receive_streams_) { 728 for (VideoReceiveStream* stream : video_receive_streams_) {
727 if (stream->DeliverRtcp(packet, length)) { 729 if (stream->DeliverRtcp(packet, length)) {
728 rtcp_delivered = true; 730 rtcp_delivered = true;
729 if (event_log_) 731 event_log_->LogRtcpPacket(kIncomingPacket, media_type, packet, length);
730 event_log_->LogRtcpPacket(kIncomingPacket, media_type, packet,
731 length);
732 } 732 }
733 } 733 }
734 } 734 }
735 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { 735 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) {
736 ReadLockScoped read_lock(*send_crit_); 736 ReadLockScoped read_lock(*send_crit_);
737 for (VideoSendStream* stream : video_send_streams_) { 737 for (VideoSendStream* stream : video_send_streams_) {
738 if (stream->DeliverRtcp(packet, length)) { 738 if (stream->DeliverRtcp(packet, length)) {
739 rtcp_delivered = true; 739 rtcp_delivered = true;
740 if (event_log_) 740 event_log_->LogRtcpPacket(kIncomingPacket, media_type, packet, length);
741 event_log_->LogRtcpPacket(kIncomingPacket, media_type, packet,
742 length);
743 } 741 }
744 } 742 }
745 } 743 }
746 return rtcp_delivered ? DELIVERY_OK : DELIVERY_PACKET_ERROR; 744 return rtcp_delivered ? DELIVERY_OK : DELIVERY_PACKET_ERROR;
747 } 745 }
748 746
749 PacketReceiver::DeliveryStatus Call::DeliverRtp(MediaType media_type, 747 PacketReceiver::DeliveryStatus Call::DeliverRtp(MediaType media_type,
750 const uint8_t* packet, 748 const uint8_t* packet,
751 size_t length, 749 size_t length,
752 const PacketTime& packet_time) { 750 const PacketTime& packet_time) {
753 TRACE_EVENT0("webrtc", "Call::DeliverRtp"); 751 TRACE_EVENT0("webrtc", "Call::DeliverRtp");
754 // Minimum RTP header size. 752 // Minimum RTP header size.
755 if (length < 12) 753 if (length < 12)
756 return DELIVERY_PACKET_ERROR; 754 return DELIVERY_PACKET_ERROR;
757 755
758 last_rtp_packet_received_ms_ = clock_->TimeInMilliseconds(); 756 last_rtp_packet_received_ms_ = clock_->TimeInMilliseconds();
759 if (first_rtp_packet_received_ms_ == -1) 757 if (first_rtp_packet_received_ms_ == -1)
760 first_rtp_packet_received_ms_ = last_rtp_packet_received_ms_; 758 first_rtp_packet_received_ms_ = last_rtp_packet_received_ms_;
761 759
762 uint32_t ssrc = ByteReader<uint32_t>::ReadBigEndian(&packet[8]); 760 uint32_t ssrc = ByteReader<uint32_t>::ReadBigEndian(&packet[8]);
763 ReadLockScoped read_lock(*receive_crit_); 761 ReadLockScoped read_lock(*receive_crit_);
764 if (media_type == MediaType::ANY || media_type == MediaType::AUDIO) { 762 if (media_type == MediaType::ANY || media_type == MediaType::AUDIO) {
765 auto it = audio_receive_ssrcs_.find(ssrc); 763 auto it = audio_receive_ssrcs_.find(ssrc);
766 if (it != audio_receive_ssrcs_.end()) { 764 if (it != audio_receive_ssrcs_.end()) {
767 received_audio_bytes_ += length; 765 received_audio_bytes_ += length;
768 auto status = it->second->DeliverRtp(packet, length, packet_time) 766 auto status = it->second->DeliverRtp(packet, length, packet_time)
769 ? DELIVERY_OK 767 ? DELIVERY_OK
770 : DELIVERY_PACKET_ERROR; 768 : DELIVERY_PACKET_ERROR;
771 if (status == DELIVERY_OK && event_log_) 769 if (status == DELIVERY_OK)
772 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); 770 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length);
773 return status; 771 return status;
774 } 772 }
775 } 773 }
776 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { 774 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) {
777 auto it = video_receive_ssrcs_.find(ssrc); 775 auto it = video_receive_ssrcs_.find(ssrc);
778 if (it != video_receive_ssrcs_.end()) { 776 if (it != video_receive_ssrcs_.end()) {
779 received_video_bytes_ += length; 777 received_video_bytes_ += length;
780 auto status = it->second->DeliverRtp(packet, length, packet_time) 778 auto status = it->second->DeliverRtp(packet, length, packet_time)
781 ? DELIVERY_OK 779 ? DELIVERY_OK
782 : DELIVERY_PACKET_ERROR; 780 : DELIVERY_PACKET_ERROR;
783 if (status == DELIVERY_OK && event_log_) 781 if (status == DELIVERY_OK)
784 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); 782 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length);
785 return status; 783 return status;
786 } 784 }
787 } 785 }
788 return DELIVERY_UNKNOWN_SSRC; 786 return DELIVERY_UNKNOWN_SSRC;
789 } 787 }
790 788
791 PacketReceiver::DeliveryStatus Call::DeliverPacket( 789 PacketReceiver::DeliveryStatus Call::DeliverPacket(
792 MediaType media_type, 790 MediaType media_type,
793 const uint8_t* packet, 791 const uint8_t* packet,
794 size_t length, 792 size_t length,
795 const PacketTime& packet_time) { 793 const PacketTime& packet_time) {
796 // TODO(solenberg): Tests call this function on a network thread, libjingle 794 // TODO(solenberg): Tests call this function on a network thread, libjingle
797 // calls on the worker thread. We should move towards always using a network 795 // calls on the worker thread. We should move towards always using a network
798 // thread. Then this check can be enabled. 796 // thread. Then this check can be enabled.
799 // RTC_DCHECK(!configuration_thread_checker_.CalledOnValidThread()); 797 // RTC_DCHECK(!configuration_thread_checker_.CalledOnValidThread());
800 if (RtpHeaderParser::IsRtcp(packet, length)) 798 if (RtpHeaderParser::IsRtcp(packet, length))
801 return DeliverRtcp(media_type, packet, length); 799 return DeliverRtcp(media_type, packet, length);
802 800
803 return DeliverRtp(media_type, packet, length, packet_time); 801 return DeliverRtp(media_type, packet, length, packet_time);
804 } 802 }
805 803
806 } // namespace internal 804 } // namespace internal
807 } // namespace webrtc 805 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698