| Index: webrtc/modules/audio_device/linux/audio_device_pulse_linux.h
|
| diff --git a/webrtc/modules/audio_device/linux/audio_device_pulse_linux.h b/webrtc/modules/audio_device/linux/audio_device_pulse_linux.h
|
| index 7e8d68347bc5e7354e5d2b9699af527bc8721424..6170944212f0214c1be8a9578f7f46e9692ee23b 100644
|
| --- a/webrtc/modules/audio_device/linux/audio_device_pulse_linux.h
|
| +++ b/webrtc/modules/audio_device/linux/audio_device_pulse_linux.h
|
| @@ -199,153 +199,156 @@ public:
|
| void AttachAudioBuffer(AudioDeviceBuffer* audioBuffer) override;
|
|
|
| private:
|
| - void Lock() EXCLUSIVE_LOCK_FUNCTION(_critSect) {
|
| - _critSect.Enter();
|
| - }
|
| - void UnLock() UNLOCK_FUNCTION(_critSect) {
|
| - _critSect.Leave();
|
| - }
|
| - void WaitForOperationCompletion(pa_operation* paOperation) const;
|
| - void WaitForSuccess(pa_operation* paOperation) const;
|
| -
|
| - bool KeyPressed() const;
|
| -
|
| - static void PaContextStateCallback(pa_context *c, void *pThis);
|
| - static void PaSinkInfoCallback(pa_context *c, const pa_sink_info *i,
|
| - int eol, void *pThis);
|
| - static void PaSourceInfoCallback(pa_context *c, const pa_source_info *i,
|
| - int eol, void *pThis);
|
| - static void PaServerInfoCallback(pa_context *c, const pa_server_info *i,
|
| - void *pThis);
|
| - static void PaStreamStateCallback(pa_stream *p, void *pThis);
|
| - void PaContextStateCallbackHandler(pa_context *c);
|
| - void PaSinkInfoCallbackHandler(const pa_sink_info *i, int eol);
|
| - void PaSourceInfoCallbackHandler(const pa_source_info *i, int eol);
|
| - void PaServerInfoCallbackHandler(const pa_server_info *i);
|
| - void PaStreamStateCallbackHandler(pa_stream *p);
|
| -
|
| - void EnableWriteCallback();
|
| - void DisableWriteCallback();
|
| - static void PaStreamWriteCallback(pa_stream *unused, size_t buffer_space,
|
| - void *pThis);
|
| - void PaStreamWriteCallbackHandler(size_t buffer_space);
|
| - static void PaStreamUnderflowCallback(pa_stream *unused, void *pThis);
|
| - void PaStreamUnderflowCallbackHandler();
|
| - void EnableReadCallback();
|
| - void DisableReadCallback();
|
| - static void PaStreamReadCallback(pa_stream *unused1, size_t unused2,
|
| - void *pThis);
|
| - void PaStreamReadCallbackHandler();
|
| - static void PaStreamOverflowCallback(pa_stream *unused, void *pThis);
|
| - void PaStreamOverflowCallbackHandler();
|
| - int32_t LatencyUsecs(pa_stream *stream);
|
| - int32_t ReadRecordedData(const void* bufferData, size_t bufferSize);
|
| - int32_t ProcessRecordedData(int8_t *bufferData,
|
| - uint32_t bufferSizeInSamples,
|
| - uint32_t recDelay);
|
| -
|
| - int32_t CheckPulseAudioVersion();
|
| - int32_t InitSamplingFrequency();
|
| - int32_t GetDefaultDeviceInfo(bool recDevice, char* name, uint16_t& index);
|
| - int32_t InitPulseAudio();
|
| - int32_t TerminatePulseAudio();
|
| -
|
| - void PaLock();
|
| - void PaUnLock();
|
| -
|
| - static bool RecThreadFunc(void*);
|
| - static bool PlayThreadFunc(void*);
|
| - bool RecThreadProcess();
|
| - bool PlayThreadProcess();
|
| -
|
| - AudioDeviceBuffer* _ptrAudioBuffer;
|
| -
|
| - rtc::CriticalSection _critSect;
|
| - EventWrapper& _timeEventRec;
|
| - EventWrapper& _timeEventPlay;
|
| - EventWrapper& _recStartEvent;
|
| - EventWrapper& _playStartEvent;
|
| -
|
| - // TODO(pbos): Remove unique_ptr and use directly without resetting.
|
| - std::unique_ptr<rtc::PlatformThread> _ptrThreadPlay;
|
| - std::unique_ptr<rtc::PlatformThread> _ptrThreadRec;
|
| -
|
| - AudioMixerManagerLinuxPulse _mixerManager;
|
| -
|
| - uint16_t _inputDeviceIndex;
|
| - uint16_t _outputDeviceIndex;
|
| - bool _inputDeviceIsSpecified;
|
| - bool _outputDeviceIsSpecified;
|
| -
|
| - int sample_rate_hz_;
|
| - uint8_t _recChannels;
|
| - uint8_t _playChannels;
|
| -
|
| - // Stores thread ID in constructor.
|
| - // We can then use ThreadChecker::CalledOnValidThread() to ensure that
|
| - // other methods are called from the same thread.
|
| - // Currently only does RTC_DCHECK(thread_checker_.CalledOnValidThread()).
|
| - rtc::ThreadChecker thread_checker_;
|
| -
|
| - bool _initialized;
|
| - bool _recording;
|
| - bool _playing;
|
| - bool _recIsInitialized;
|
| - bool _playIsInitialized;
|
| - bool _startRec;
|
| - bool _stopRec;
|
| - bool _startPlay;
|
| - bool _stopPlay;
|
| - bool _AGC;
|
| - bool update_speaker_volume_at_startup_;
|
| -
|
| - uint32_t _sndCardPlayDelay;
|
| - uint32_t _sndCardRecDelay;
|
| -
|
| - int32_t _writeErrors;
|
| - uint16_t _playWarning;
|
| - uint16_t _playError;
|
| - uint16_t _recWarning;
|
| - uint16_t _recError;
|
| -
|
| - uint16_t _deviceIndex;
|
| - int16_t _numPlayDevices;
|
| - int16_t _numRecDevices;
|
| - char* _playDeviceName;
|
| - char* _recDeviceName;
|
| - char* _playDisplayDeviceName;
|
| - char* _recDisplayDeviceName;
|
| - char _paServerVersion[32];
|
| -
|
| - int8_t* _playBuffer;
|
| - size_t _playbackBufferSize;
|
| - size_t _playbackBufferUnused;
|
| - size_t _tempBufferSpace;
|
| - int8_t* _recBuffer;
|
| - size_t _recordBufferSize;
|
| - size_t _recordBufferUsed;
|
| - const void* _tempSampleData;
|
| - size_t _tempSampleDataSize;
|
| - int32_t _configuredLatencyPlay;
|
| - int32_t _configuredLatencyRec;
|
| -
|
| - // PulseAudio
|
| - uint16_t _paDeviceIndex;
|
| - bool _paStateChanged;
|
| -
|
| - pa_threaded_mainloop* _paMainloop;
|
| - pa_mainloop_api* _paMainloopApi;
|
| - pa_context* _paContext;
|
| -
|
| - pa_stream* _recStream;
|
| - pa_stream* _playStream;
|
| - uint32_t _recStreamFlags;
|
| - uint32_t _playStreamFlags;
|
| - pa_buffer_attr _playBufferAttr;
|
| - pa_buffer_attr _recBufferAttr;
|
| -
|
| - char _oldKeyState[32];
|
| - Display* _XDisplay;
|
| + void Lock() RTC_EXCLUSIVE_LOCK_FUNCTION(_critSect) { _critSect.Enter(); }
|
| + void UnLock() RTC_UNLOCK_FUNCTION(_critSect) { _critSect.Leave(); }
|
| + void WaitForOperationCompletion(pa_operation* paOperation) const;
|
| + void WaitForSuccess(pa_operation* paOperation) const;
|
| +
|
| + bool KeyPressed() const;
|
| +
|
| + static void PaContextStateCallback(pa_context* c, void* pThis);
|
| + static void PaSinkInfoCallback(pa_context* c,
|
| + const pa_sink_info* i,
|
| + int eol,
|
| + void* pThis);
|
| + static void PaSourceInfoCallback(pa_context* c,
|
| + const pa_source_info* i,
|
| + int eol,
|
| + void* pThis);
|
| + static void PaServerInfoCallback(pa_context* c,
|
| + const pa_server_info* i,
|
| + void* pThis);
|
| + static void PaStreamStateCallback(pa_stream* p, void* pThis);
|
| + void PaContextStateCallbackHandler(pa_context* c);
|
| + void PaSinkInfoCallbackHandler(const pa_sink_info* i, int eol);
|
| + void PaSourceInfoCallbackHandler(const pa_source_info* i, int eol);
|
| + void PaServerInfoCallbackHandler(const pa_server_info* i);
|
| + void PaStreamStateCallbackHandler(pa_stream* p);
|
| +
|
| + void EnableWriteCallback();
|
| + void DisableWriteCallback();
|
| + static void PaStreamWriteCallback(pa_stream* unused,
|
| + size_t buffer_space,
|
| + void* pThis);
|
| + void PaStreamWriteCallbackHandler(size_t buffer_space);
|
| + static void PaStreamUnderflowCallback(pa_stream* unused, void* pThis);
|
| + void PaStreamUnderflowCallbackHandler();
|
| + void EnableReadCallback();
|
| + void DisableReadCallback();
|
| + static void PaStreamReadCallback(pa_stream* unused1,
|
| + size_t unused2,
|
| + void* pThis);
|
| + void PaStreamReadCallbackHandler();
|
| + static void PaStreamOverflowCallback(pa_stream* unused, void* pThis);
|
| + void PaStreamOverflowCallbackHandler();
|
| + int32_t LatencyUsecs(pa_stream* stream);
|
| + int32_t ReadRecordedData(const void* bufferData, size_t bufferSize);
|
| + int32_t ProcessRecordedData(int8_t* bufferData,
|
| + uint32_t bufferSizeInSamples,
|
| + uint32_t recDelay);
|
| +
|
| + int32_t CheckPulseAudioVersion();
|
| + int32_t InitSamplingFrequency();
|
| + int32_t GetDefaultDeviceInfo(bool recDevice, char* name, uint16_t& index);
|
| + int32_t InitPulseAudio();
|
| + int32_t TerminatePulseAudio();
|
| +
|
| + void PaLock();
|
| + void PaUnLock();
|
| +
|
| + static bool RecThreadFunc(void*);
|
| + static bool PlayThreadFunc(void*);
|
| + bool RecThreadProcess();
|
| + bool PlayThreadProcess();
|
| +
|
| + AudioDeviceBuffer* _ptrAudioBuffer;
|
| +
|
| + rtc::CriticalSection _critSect;
|
| + EventWrapper& _timeEventRec;
|
| + EventWrapper& _timeEventPlay;
|
| + EventWrapper& _recStartEvent;
|
| + EventWrapper& _playStartEvent;
|
| +
|
| + // TODO(pbos): Remove unique_ptr and use directly without resetting.
|
| + std::unique_ptr<rtc::PlatformThread> _ptrThreadPlay;
|
| + std::unique_ptr<rtc::PlatformThread> _ptrThreadRec;
|
| +
|
| + AudioMixerManagerLinuxPulse _mixerManager;
|
| +
|
| + uint16_t _inputDeviceIndex;
|
| + uint16_t _outputDeviceIndex;
|
| + bool _inputDeviceIsSpecified;
|
| + bool _outputDeviceIsSpecified;
|
| +
|
| + int sample_rate_hz_;
|
| + uint8_t _recChannels;
|
| + uint8_t _playChannels;
|
| +
|
| + // Stores thread ID in constructor.
|
| + // We can then use ThreadChecker::CalledOnValidThread() to ensure that
|
| + // other methods are called from the same thread.
|
| + // Currently only does RTC_DCHECK(thread_checker_.CalledOnValidThread()).
|
| + rtc::ThreadChecker thread_checker_;
|
| +
|
| + bool _initialized;
|
| + bool _recording;
|
| + bool _playing;
|
| + bool _recIsInitialized;
|
| + bool _playIsInitialized;
|
| + bool _startRec;
|
| + bool _stopRec;
|
| + bool _startPlay;
|
| + bool _stopPlay;
|
| + bool _AGC;
|
| + bool update_speaker_volume_at_startup_;
|
| +
|
| + uint32_t _sndCardPlayDelay;
|
| + uint32_t _sndCardRecDelay;
|
| +
|
| + int32_t _writeErrors;
|
| + uint16_t _playWarning;
|
| + uint16_t _playError;
|
| + uint16_t _recWarning;
|
| + uint16_t _recError;
|
| +
|
| + uint16_t _deviceIndex;
|
| + int16_t _numPlayDevices;
|
| + int16_t _numRecDevices;
|
| + char* _playDeviceName;
|
| + char* _recDeviceName;
|
| + char* _playDisplayDeviceName;
|
| + char* _recDisplayDeviceName;
|
| + char _paServerVersion[32];
|
| +
|
| + int8_t* _playBuffer;
|
| + size_t _playbackBufferSize;
|
| + size_t _playbackBufferUnused;
|
| + size_t _tempBufferSpace;
|
| + int8_t* _recBuffer;
|
| + size_t _recordBufferSize;
|
| + size_t _recordBufferUsed;
|
| + const void* _tempSampleData;
|
| + size_t _tempSampleDataSize;
|
| + int32_t _configuredLatencyPlay;
|
| + int32_t _configuredLatencyRec;
|
| +
|
| + // PulseAudio
|
| + uint16_t _paDeviceIndex;
|
| + bool _paStateChanged;
|
| +
|
| + pa_threaded_mainloop* _paMainloop;
|
| + pa_mainloop_api* _paMainloopApi;
|
| + pa_context* _paContext;
|
| +
|
| + pa_stream* _recStream;
|
| + pa_stream* _playStream;
|
| + uint32_t _recStreamFlags;
|
| + uint32_t _playStreamFlags;
|
| + pa_buffer_attr _playBufferAttr;
|
| + pa_buffer_attr _recBufferAttr;
|
| +
|
| + char _oldKeyState[32];
|
| + Display* _XDisplay;
|
| };
|
|
|
| }
|
|
|