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

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

Issue 1607353002: Swap use of CriticalSectionWrapper with rtc::CriticalSection in voice_engine/ (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: 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 | « no previous file | webrtc/voice_engine/channel.cc » ('j') | webrtc/voice_engine/channel.cc » ('J')
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 29 matching lines...) Expand all
40 40
41 namespace rtc { 41 namespace rtc {
42 42
43 class TimestampWrapAroundHandler; 43 class TimestampWrapAroundHandler;
44 } 44 }
45 45
46 namespace webrtc { 46 namespace webrtc {
47 47
48 class AudioDeviceModule; 48 class AudioDeviceModule;
49 class Config; 49 class Config;
50 class CriticalSectionWrapper;
51 class FileWrapper; 50 class FileWrapper;
52 class PacketRouter; 51 class PacketRouter;
53 class ProcessThread; 52 class ProcessThread;
54 class ReceiveStatistics; 53 class ReceiveStatistics;
55 class RemoteNtpTimeEstimator; 54 class RemoteNtpTimeEstimator;
56 class RtcEventLog; 55 class RtcEventLog;
57 class RTPPayloadRegistry; 56 class RTPPayloadRegistry;
58 class RtpReceiver; 57 class RtpReceiver;
59 class RTPReceiverAudio; 58 class RTPReceiverAudio;
60 class RtpRtcp; 59 class RtpRtcp;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 95
97 bool rx_apm_is_enabled; 96 bool rx_apm_is_enabled;
98 bool input_external_media; 97 bool input_external_media;
99 bool output_file_playing; 98 bool output_file_playing;
100 bool input_file_playing; 99 bool input_file_playing;
101 bool playing; 100 bool playing;
102 bool sending; 101 bool sending;
103 bool receiving; 102 bool receiving;
104 }; 103 };
105 104
106 ChannelState() : lock_(CriticalSectionWrapper::CreateCriticalSection()) { 105 ChannelState() {}
107 }
108 virtual ~ChannelState() {} 106 virtual ~ChannelState() {}
109 107
110 void Reset() { 108 void Reset() {
111 CriticalSectionScoped lock(lock_.get()); 109 rtc::CritScope lock(&lock_);
112 state_ = State(); 110 state_ = State();
113 } 111 }
114 112
115 State Get() const { 113 State Get() const {
116 CriticalSectionScoped lock(lock_.get()); 114 rtc::CritScope lock(&lock_);
117 return state_; 115 return state_;
118 } 116 }
119 117
120 void SetRxApmIsEnabled(bool enable) { 118 void SetRxApmIsEnabled(bool enable) {
121 CriticalSectionScoped lock(lock_.get()); 119 rtc::CritScope lock(&lock_);
122 state_.rx_apm_is_enabled = enable; 120 state_.rx_apm_is_enabled = enable;
123 } 121 }
124 122
125 void SetInputExternalMedia(bool enable) { 123 void SetInputExternalMedia(bool enable) {
126 CriticalSectionScoped lock(lock_.get()); 124 rtc::CritScope lock(&lock_);
127 state_.input_external_media = enable; 125 state_.input_external_media = enable;
128 } 126 }
129 127
130 void SetOutputFilePlaying(bool enable) { 128 void SetOutputFilePlaying(bool enable) {
131 CriticalSectionScoped lock(lock_.get()); 129 rtc::CritScope lock(&lock_);
132 state_.output_file_playing = enable; 130 state_.output_file_playing = enable;
133 } 131 }
134 132
135 void SetInputFilePlaying(bool enable) { 133 void SetInputFilePlaying(bool enable) {
136 CriticalSectionScoped lock(lock_.get()); 134 rtc::CritScope lock(&lock_);
137 state_.input_file_playing = enable; 135 state_.input_file_playing = enable;
138 } 136 }
139 137
140 void SetPlaying(bool enable) { 138 void SetPlaying(bool enable) {
141 CriticalSectionScoped lock(lock_.get()); 139 rtc::CritScope lock(&lock_);
142 state_.playing = enable; 140 state_.playing = enable;
143 } 141 }
144 142
145 void SetSending(bool enable) { 143 void SetSending(bool enable) {
146 CriticalSectionScoped lock(lock_.get()); 144 rtc::CritScope lock(&lock_);
147 state_.sending = enable; 145 state_.sending = enable;
148 } 146 }
149 147
150 void SetReceiving(bool enable) { 148 void SetReceiving(bool enable) {
151 CriticalSectionScoped lock(lock_.get()); 149 rtc::CritScope lock(&lock_);
152 state_.receiving = enable; 150 state_.receiving = enable;
153 } 151 }
154 152
155 private: 153 private:
156 rtc::scoped_ptr<CriticalSectionWrapper> lock_; 154 mutable rtc::CriticalSection lock_;
henrika_webrtc 2016/01/21 08:50:48 Just a question. Can we skip mutable and modify th
tommi 2016/01/21 08:57:29 I think it's better to do it this way and this is
157 State state_; 155 State state_;
158 }; 156 };
159 157
160 class Channel: 158 class Channel:
161 public RtpData, 159 public RtpData,
162 public RtpFeedback, 160 public RtpFeedback,
163 public FileCallback, // receiving notification from file player & recorder 161 public FileCallback, // receiving notification from file player & recorder
164 public Transport, 162 public Transport,
165 public RtpAudioFeedback, 163 public RtpAudioFeedback,
166 public AudioPacketizationCallback, // receive encoded packets from the ACM 164 public AudioPacketizationCallback, // receive encoded packets from the ACM
(...skipping 16 matching lines...) Expand all
183 RtcEventLog* const event_log, 181 RtcEventLog* const event_log,
184 const Config& config); 182 const Config& config);
185 int32_t Init(); 183 int32_t Init();
186 int32_t SetEngineInformation( 184 int32_t SetEngineInformation(
187 Statistics& engineStatistics, 185 Statistics& engineStatistics,
188 OutputMixer& outputMixer, 186 OutputMixer& outputMixer,
189 TransmitMixer& transmitMixer, 187 TransmitMixer& transmitMixer,
190 ProcessThread& moduleProcessThread, 188 ProcessThread& moduleProcessThread,
191 AudioDeviceModule& audioDeviceModule, 189 AudioDeviceModule& audioDeviceModule,
192 VoiceEngineObserver* voiceEngineObserver, 190 VoiceEngineObserver* voiceEngineObserver,
193 CriticalSectionWrapper* callbackCritSect); 191 rtc::CriticalSection* callbackCritSect);
194 int32_t UpdateLocalTimeStamp(); 192 int32_t UpdateLocalTimeStamp();
195 193
196 void SetSink(rtc::scoped_ptr<AudioSinkInterface> sink); 194 void SetSink(rtc::scoped_ptr<AudioSinkInterface> sink);
197 195
198 // API methods 196 // API methods
199 197
200 // VoEBase 198 // VoEBase
201 int32_t StartPlayout(); 199 int32_t StartPlayout();
202 int32_t StopPlayout(); 200 int32_t StopPlayout();
203 int32_t StartSend(); 201 int32_t StartSend();
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 bool Sending() const 420 bool Sending() const
423 { 421 {
424 return channel_state_.Get().sending; 422 return channel_state_.Get().sending;
425 } 423 }
426 bool Receiving() const 424 bool Receiving() const
427 { 425 {
428 return channel_state_.Get().receiving; 426 return channel_state_.Get().receiving;
429 } 427 }
430 bool ExternalTransport() const 428 bool ExternalTransport() const
431 { 429 {
432 CriticalSectionScoped cs(&_callbackCritSect); 430 rtc::CritScope cs(&_callbackCritSect);
433 return _externalTransport; 431 return _externalTransport;
434 } 432 }
435 bool ExternalMixing() const 433 bool ExternalMixing() const
436 { 434 {
437 return _externalMixing; 435 return _externalMixing;
438 } 436 }
439 RtpRtcp* RtpRtcpModulePtr() const 437 RtpRtcp* RtpRtcpModulePtr() const
440 { 438 {
441 return _rtpRtcpModule.get(); 439 return _rtpRtcpModule.get();
442 } 440 }
443 int8_t OutputEnergyLevel() const 441 int8_t OutputEnergyLevel() const
444 { 442 {
445 return _outputAudioLevel.Level(); 443 return _outputAudioLevel.Level();
446 } 444 }
447 uint32_t Demultiplex(const AudioFrame& audioFrame); 445 uint32_t Demultiplex(const AudioFrame& audioFrame);
448 // Demultiplex the data to the channel's |_audioFrame|. The difference 446 // Demultiplex the data to the channel's |_audioFrame|. The difference
449 // between this method and the overloaded method above is that |audio_data| 447 // between this method and the overloaded method above is that |audio_data|
450 // does not go through transmit_mixer and APM. 448 // does not go through transmit_mixer and APM.
451 void Demultiplex(const int16_t* audio_data, 449 void Demultiplex(const int16_t* audio_data,
452 int sample_rate, 450 int sample_rate,
453 size_t number_of_frames, 451 size_t number_of_frames,
454 size_t number_of_channels); 452 size_t number_of_channels);
455 uint32_t PrepareEncodeAndSend(int mixingFrequency); 453 uint32_t PrepareEncodeAndSend(int mixingFrequency);
456 uint32_t EncodeAndSend(); 454 uint32_t EncodeAndSend();
457 455
458 // Associate to a send channel. 456 // Associate to a send channel.
459 // Used for obtaining RTT for a receive-only channel. 457 // Used for obtaining RTT for a receive-only channel.
460 void set_associate_send_channel(const ChannelOwner& channel) { 458 void set_associate_send_channel(const ChannelOwner& channel) {
461 assert(_channelId != channel.channel()->ChannelId()); 459 assert(_channelId != channel.channel()->ChannelId());
462 CriticalSectionScoped lock(assoc_send_channel_lock_.get()); 460 rtc::CritScope lock(&assoc_send_channel_lock_);
463 associate_send_channel_ = channel; 461 associate_send_channel_ = channel;
464 } 462 }
465 463
466 // Disassociate a send channel if it was associated. 464 // Disassociate a send channel if it was associated.
467 void DisassociateSendChannel(int channel_id); 465 void DisassociateSendChannel(int channel_id);
468 466
469 protected: 467 protected:
470 void OnIncomingFractionLoss(int fraction_lost); 468 void OnIncomingFractionLoss(int fraction_lost);
471 469
472 private: 470 private:
(...skipping 13 matching lines...) Expand all
486 uint16_t sequenceNumber); 484 uint16_t sequenceNumber);
487 void RegisterReceiveCodecsToRTPModule(); 485 void RegisterReceiveCodecsToRTPModule();
488 486
489 int SetRedPayloadType(int red_payload_type); 487 int SetRedPayloadType(int red_payload_type);
490 int SetSendRtpHeaderExtension(bool enable, RTPExtensionType type, 488 int SetSendRtpHeaderExtension(bool enable, RTPExtensionType type,
491 unsigned char id); 489 unsigned char id);
492 490
493 int32_t GetPlayoutFrequency(); 491 int32_t GetPlayoutFrequency();
494 int64_t GetRTT(bool allow_associate_channel) const; 492 int64_t GetRTT(bool allow_associate_channel) const;
495 493
496 CriticalSectionWrapper& _fileCritSect; 494 mutable rtc::CriticalSection _fileCritSect;
497 CriticalSectionWrapper& _callbackCritSect; 495 mutable rtc::CriticalSection _callbackCritSect;
498 CriticalSectionWrapper& volume_settings_critsect_; 496 mutable rtc::CriticalSection volume_settings_critsect_;
499 uint32_t _instanceId; 497 uint32_t _instanceId;
500 int32_t _channelId; 498 int32_t _channelId;
501 499
502 ChannelState channel_state_; 500 ChannelState channel_state_;
503 501
504 RtcEventLog* const event_log_; 502 RtcEventLog* const event_log_;
505 503
506 rtc::scoped_ptr<RtpHeaderParser> rtp_header_parser_; 504 rtc::scoped_ptr<RtpHeaderParser> rtp_header_parser_;
507 rtc::scoped_ptr<RTPPayloadRegistry> rtp_payload_registry_; 505 rtc::scoped_ptr<RTPPayloadRegistry> rtp_payload_registry_;
508 rtc::scoped_ptr<ReceiveStatistics> rtp_receive_statistics_; 506 rtc::scoped_ptr<ReceiveStatistics> rtp_receive_statistics_;
(...skipping 27 matching lines...) Expand all
536 534
537 // Timestamp of the audio pulled from NetEq. 535 // Timestamp of the audio pulled from NetEq.
538 uint32_t jitter_buffer_playout_timestamp_; 536 uint32_t jitter_buffer_playout_timestamp_;
539 uint32_t playout_timestamp_rtp_ GUARDED_BY(video_sync_lock_); 537 uint32_t playout_timestamp_rtp_ GUARDED_BY(video_sync_lock_);
540 uint32_t playout_timestamp_rtcp_; 538 uint32_t playout_timestamp_rtcp_;
541 uint32_t playout_delay_ms_ GUARDED_BY(video_sync_lock_); 539 uint32_t playout_delay_ms_ GUARDED_BY(video_sync_lock_);
542 uint32_t _numberOfDiscardedPackets; 540 uint32_t _numberOfDiscardedPackets;
543 uint16_t send_sequence_number_; 541 uint16_t send_sequence_number_;
544 uint8_t restored_packet_[kVoiceEngineMaxIpPacketSizeBytes]; 542 uint8_t restored_packet_[kVoiceEngineMaxIpPacketSizeBytes];
545 543
546 rtc::scoped_ptr<CriticalSectionWrapper> ts_stats_lock_; 544 mutable rtc::CriticalSection ts_stats_lock_;
547 545
548 rtc::scoped_ptr<rtc::TimestampWrapAroundHandler> rtp_ts_wraparound_handler_; 546 rtc::scoped_ptr<rtc::TimestampWrapAroundHandler> rtp_ts_wraparound_handler_;
549 // The rtp timestamp of the first played out audio frame. 547 // The rtp timestamp of the first played out audio frame.
550 int64_t capture_start_rtp_time_stamp_; 548 int64_t capture_start_rtp_time_stamp_;
551 // The capture ntp time (in local timebase) of the first played out audio 549 // The capture ntp time (in local timebase) of the first played out audio
552 // frame. 550 // frame.
553 int64_t capture_start_ntp_time_ms_ GUARDED_BY(ts_stats_lock_); 551 int64_t capture_start_ntp_time_ms_ GUARDED_BY(ts_stats_lock_);
554 552
555 // uses 553 // uses
556 Statistics* _engineStatisticsPtr; 554 Statistics* _engineStatisticsPtr;
557 OutputMixer* _outputMixerPtr; 555 OutputMixer* _outputMixerPtr;
558 TransmitMixer* _transmitMixerPtr; 556 TransmitMixer* _transmitMixerPtr;
559 ProcessThread* _moduleProcessThreadPtr; 557 ProcessThread* _moduleProcessThreadPtr;
560 AudioDeviceModule* _audioDeviceModulePtr; 558 AudioDeviceModule* _audioDeviceModulePtr;
561 VoiceEngineObserver* _voiceEngineObserverPtr; // owned by base 559 VoiceEngineObserver* _voiceEngineObserverPtr; // owned by base
562 CriticalSectionWrapper* _callbackCritSectPtr; // owned by base 560 rtc::CriticalSection* _callbackCritSectPtr; // owned by base
563 Transport* _transportPtr; // WebRtc socket or external transport 561 Transport* _transportPtr; // WebRtc socket or external transport
564 RMSLevel rms_level_; 562 RMSLevel rms_level_;
565 rtc::scoped_ptr<AudioProcessing> rx_audioproc_; // far end AudioProcessing 563 rtc::scoped_ptr<AudioProcessing> rx_audioproc_; // far end AudioProcessing
566 VoERxVadCallback* _rxVadObserverPtr; 564 VoERxVadCallback* _rxVadObserverPtr;
567 int32_t _oldVadDecision; 565 int32_t _oldVadDecision;
568 int32_t _sendFrameType; // Send data is voice, 1-voice, 0-otherwise 566 int32_t _sendFrameType; // Send data is voice, 1-voice, 0-otherwise
569 // VoEBase 567 // VoEBase
570 bool _externalMixing; 568 bool _externalMixing;
571 bool _mixFileWithMicrophone; 569 bool _mixFileWithMicrophone;
572 // VoEVolumeControl 570 // VoEVolumeControl
573 bool _mute; 571 bool _mute;
574 float _panLeft; 572 float _panLeft;
575 float _panRight; 573 float _panRight;
576 float _outputGain; 574 float _outputGain;
577 // VoEDtmf 575 // VoEDtmf
578 bool _playOutbandDtmfEvent; 576 bool _playOutbandDtmfEvent;
579 bool _playInbandDtmfEvent; 577 bool _playInbandDtmfEvent;
580 // VoeRTP_RTCP 578 // VoeRTP_RTCP
581 uint32_t _lastLocalTimeStamp; 579 uint32_t _lastLocalTimeStamp;
582 int8_t _lastPayloadType; 580 int8_t _lastPayloadType;
583 bool _includeAudioLevelIndication; 581 bool _includeAudioLevelIndication;
584 // VoENetwork 582 // VoENetwork
585 AudioFrame::SpeechType _outputSpeechType; 583 AudioFrame::SpeechType _outputSpeechType;
586 // VoEVideoSync 584 // VoEVideoSync
587 rtc::scoped_ptr<CriticalSectionWrapper> video_sync_lock_; 585 mutable rtc::CriticalSection video_sync_lock_;
588 uint32_t _average_jitter_buffer_delay_us GUARDED_BY(video_sync_lock_); 586 uint32_t _average_jitter_buffer_delay_us GUARDED_BY(video_sync_lock_);
589 uint32_t _previousTimestamp; 587 uint32_t _previousTimestamp;
590 uint16_t _recPacketDelayMs GUARDED_BY(video_sync_lock_); 588 uint16_t _recPacketDelayMs GUARDED_BY(video_sync_lock_);
591 // VoEAudioProcessing 589 // VoEAudioProcessing
592 bool _RxVadDetection; 590 bool _RxVadDetection;
593 bool _rxAgcIsEnabled; 591 bool _rxAgcIsEnabled;
594 bool _rxNsIsEnabled; 592 bool _rxNsIsEnabled;
595 bool restored_packet_in_use_; 593 bool restored_packet_in_use_;
596 // RtcpBandwidthObserver 594 // RtcpBandwidthObserver
597 rtc::scoped_ptr<VoERtcpObserver> rtcp_observer_; 595 rtc::scoped_ptr<VoERtcpObserver> rtcp_observer_;
598 rtc::scoped_ptr<NetworkPredictor> network_predictor_; 596 rtc::scoped_ptr<NetworkPredictor> network_predictor_;
599 // An associated send channel. 597 // An associated send channel.
600 rtc::scoped_ptr<CriticalSectionWrapper> assoc_send_channel_lock_; 598 mutable rtc::CriticalSection assoc_send_channel_lock_;
601 ChannelOwner associate_send_channel_ GUARDED_BY(assoc_send_channel_lock_); 599 ChannelOwner associate_send_channel_ GUARDED_BY(assoc_send_channel_lock_);
602 600
603 bool pacing_enabled_; 601 bool pacing_enabled_;
604 PacketRouter* packet_router_ = nullptr; 602 PacketRouter* packet_router_ = nullptr;
605 rtc::scoped_ptr<TransportFeedbackProxy> feedback_observer_proxy_; 603 rtc::scoped_ptr<TransportFeedbackProxy> feedback_observer_proxy_;
606 rtc::scoped_ptr<TransportSequenceNumberProxy> seq_num_allocator_proxy_; 604 rtc::scoped_ptr<TransportSequenceNumberProxy> seq_num_allocator_proxy_;
607 rtc::scoped_ptr<RtpPacketSenderProxy> rtp_packet_sender_proxy_; 605 rtc::scoped_ptr<RtpPacketSenderProxy> rtp_packet_sender_proxy_;
608 }; 606 };
609 607
610 } // namespace voe 608 } // namespace voe
611 } // namespace webrtc 609 } // namespace webrtc
612 610
613 #endif // WEBRTC_VOICE_ENGINE_CHANNEL_H_ 611 #endif // WEBRTC_VOICE_ENGINE_CHANNEL_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/voice_engine/channel.cc » ('j') | webrtc/voice_engine/channel.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698