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

Side by Side Diff: webrtc/voice_engine/channel.h

Issue 2710363003: Fix TSAN race in webrtc::voe::Channel (Closed)
Patch Set: Merge and added TODO Created 3 years, 9 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/pc/rtcstats_integrationtest.cc ('k') | webrtc/voice_engine/channel.cc » ('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 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 int ResendPackets(const uint16_t* sequence_numbers, int length); 409 int ResendPackets(const uint16_t* sequence_numbers, int length);
410 int32_t MixOrReplaceAudioWithFile(int mixingFrequency); 410 int32_t MixOrReplaceAudioWithFile(int mixingFrequency);
411 int32_t MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency); 411 int32_t MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency);
412 void UpdatePlayoutTimestamp(bool rtcp); 412 void UpdatePlayoutTimestamp(bool rtcp);
413 void RegisterReceiveCodecsToRTPModule(); 413 void RegisterReceiveCodecsToRTPModule();
414 414
415 int SetSendRtpHeaderExtension(bool enable, 415 int SetSendRtpHeaderExtension(bool enable,
416 RTPExtensionType type, 416 RTPExtensionType type,
417 unsigned char id); 417 unsigned char id);
418 418
419 void UpdateOverheadForEncoder(); 419 void UpdateOverheadForEncoder(size_t overhead_per_packet);
hta-webrtc 2017/02/28 12:21:20 Should there be a lock notation here saying "must
hbos 2017/02/28 12:32:53 Good idea! There's EXCLUSIVE_LOCKS_REQUIRED. Now u
420 420
421 int GetRtpTimestampRateHz() const; 421 int GetRtpTimestampRateHz() const;
422 int64_t GetRTT(bool allow_associate_channel) const; 422 int64_t GetRTT(bool allow_associate_channel) const;
423 423
424 rtc::CriticalSection _fileCritSect; 424 rtc::CriticalSection _fileCritSect;
425 rtc::CriticalSection _callbackCritSect; 425 rtc::CriticalSection _callbackCritSect;
426 rtc::CriticalSection volume_settings_critsect_; 426 rtc::CriticalSection volume_settings_critsect_;
427 uint32_t _instanceId; 427 uint32_t _instanceId;
428 int32_t _channelId; 428 int32_t _channelId;
429 429
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 // VoEVolumeControl 490 // VoEVolumeControl
491 bool input_mute_ GUARDED_BY(volume_settings_critsect_); 491 bool input_mute_ GUARDED_BY(volume_settings_critsect_);
492 bool previous_frame_muted_; // Only accessed from PrepareEncodeAndSend(). 492 bool previous_frame_muted_; // Only accessed from PrepareEncodeAndSend().
493 float _panLeft GUARDED_BY(volume_settings_critsect_); 493 float _panLeft GUARDED_BY(volume_settings_critsect_);
494 float _panRight GUARDED_BY(volume_settings_critsect_); 494 float _panRight GUARDED_BY(volume_settings_critsect_);
495 float _outputGain GUARDED_BY(volume_settings_critsect_); 495 float _outputGain GUARDED_BY(volume_settings_critsect_);
496 // VoeRTP_RTCP 496 // VoeRTP_RTCP
497 uint32_t _lastLocalTimeStamp; 497 uint32_t _lastLocalTimeStamp;
498 int8_t _lastPayloadType; 498 int8_t _lastPayloadType;
499 bool _includeAudioLevelIndication; 499 bool _includeAudioLevelIndication;
500 size_t transport_overhead_per_packet_; 500 size_t transport_overhead_per_packet_ GUARDED_BY(overhead_per_packet_lock_);
501 size_t rtp_overhead_per_packet_; 501 size_t rtp_overhead_per_packet_ GUARDED_BY(overhead_per_packet_lock_);
502 rtc::CriticalSection overhead_per_packet_lock_;
502 // VoENetwork 503 // VoENetwork
503 AudioFrame::SpeechType _outputSpeechType; 504 AudioFrame::SpeechType _outputSpeechType;
504 // VoEVideoSync 505 // VoEVideoSync
505 rtc::CriticalSection video_sync_lock_; 506 rtc::CriticalSection video_sync_lock_;
506 // VoEAudioProcessing 507 // VoEAudioProcessing
507 bool restored_packet_in_use_; 508 bool restored_packet_in_use_;
508 // RtcpBandwidthObserver 509 // RtcpBandwidthObserver
509 std::unique_ptr<VoERtcpObserver> rtcp_observer_; 510 std::unique_ptr<VoERtcpObserver> rtcp_observer_;
510 // An associated send channel. 511 // An associated send channel.
511 rtc::CriticalSection assoc_send_channel_lock_; 512 rtc::CriticalSection assoc_send_channel_lock_;
512 ChannelOwner associate_send_channel_ GUARDED_BY(assoc_send_channel_lock_); 513 ChannelOwner associate_send_channel_ GUARDED_BY(assoc_send_channel_lock_);
513 514
514 bool pacing_enabled_; 515 bool pacing_enabled_;
515 PacketRouter* packet_router_ = nullptr; 516 PacketRouter* packet_router_ = nullptr;
516 std::unique_ptr<TransportFeedbackProxy> feedback_observer_proxy_; 517 std::unique_ptr<TransportFeedbackProxy> feedback_observer_proxy_;
517 std::unique_ptr<TransportSequenceNumberProxy> seq_num_allocator_proxy_; 518 std::unique_ptr<TransportSequenceNumberProxy> seq_num_allocator_proxy_;
518 std::unique_ptr<RtpPacketSenderProxy> rtp_packet_sender_proxy_; 519 std::unique_ptr<RtpPacketSenderProxy> rtp_packet_sender_proxy_;
519 std::unique_ptr<RateLimiter> retransmission_rate_limiter_; 520 std::unique_ptr<RateLimiter> retransmission_rate_limiter_;
520 521
521 // TODO(ossu): Remove once GetAudioDecoderFactory() is no longer needed. 522 // TODO(ossu): Remove once GetAudioDecoderFactory() is no longer needed.
522 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_; 523 rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
523 }; 524 };
524 525
525 } // namespace voe 526 } // namespace voe
526 } // namespace webrtc 527 } // namespace webrtc
527 528
528 #endif // WEBRTC_VOICE_ENGINE_CHANNEL_H_ 529 #endif // WEBRTC_VOICE_ENGINE_CHANNEL_H_
OLDNEW
« no previous file with comments | « webrtc/pc/rtcstats_integrationtest.cc ('k') | webrtc/voice_engine/channel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698