Index: webrtc/voice_engine/shared_data.h |
diff --git a/webrtc/voice_engine/shared_data.h b/webrtc/voice_engine/shared_data.h |
index e3014194547c5bac84444c68d98b2322a47cbf8f..1a910407a2357258e8e167c282c7e9205196815a 100644 |
--- a/webrtc/voice_engine/shared_data.h |
+++ b/webrtc/voice_engine/shared_data.h |
@@ -15,6 +15,9 @@ |
#include "webrtc/base/criticalsection.h" |
#include "webrtc/base/scoped_ref_ptr.h" |
+#include "webrtc/base/task_queue.h" |
+#include "webrtc/base/thread_annotations.h" |
+#include "webrtc/base/thread_checker.h" |
#include "webrtc/modules/audio_device/include/audio_device.h" |
#include "webrtc/modules/audio_processing/include/audio_processing.h" |
#include "webrtc/modules/utility/include/process_thread.h" |
@@ -46,6 +49,7 @@ public: |
OutputMixer* output_mixer() { return _outputMixerPtr; } |
rtc::CriticalSection* crit_sec() { return &_apiCritPtr; } |
ProcessThread* process_thread() { return _moduleProcessThreadPtr.get(); } |
+ rtc::TaskQueue* encoder_queue(); |
int NumOfSendingChannels(); |
int NumOfPlayingChannels(); |
@@ -57,18 +61,22 @@ public: |
const char* msg) const; |
protected: |
- const uint32_t _instanceId; |
- rtc::CriticalSection _apiCritPtr; |
- ChannelManager _channelManager; |
- Statistics _engineStatistics; |
- rtc::scoped_refptr<AudioDeviceModule> _audioDevicePtr; |
- OutputMixer* _outputMixerPtr; |
- TransmitMixer* _transmitMixerPtr; |
- std::unique_ptr<AudioProcessing> audioproc_; |
- std::unique_ptr<ProcessThread> _moduleProcessThreadPtr; |
+ rtc::ThreadChecker construction_thread_; |
+ const uint32_t _instanceId; |
+ rtc::CriticalSection _apiCritPtr; |
+ ChannelManager _channelManager; |
+ Statistics _engineStatistics; |
+ rtc::scoped_refptr<AudioDeviceModule> _audioDevicePtr; |
+ OutputMixer* _outputMixerPtr; |
+ TransmitMixer* _transmitMixerPtr; |
+ std::unique_ptr<AudioProcessing> audioproc_; |
+ std::unique_ptr<ProcessThread> _moduleProcessThreadPtr; |
+ // |encoder_queue| is defined last to ensure all pending tasks are cancelled |
+ // and deleted before any other members. |
+ rtc::TaskQueue encoder_queue_ ACCESS_ON(construction_thread_); |
- SharedData(); |
- virtual ~SharedData(); |
+ SharedData(); |
+ virtual ~SharedData(); |
}; |
} // namespace voe |