#ifndef __TIZEN_MEDIA_AUDIO_IO_CAUDIO_IO_H__
#define __TIZEN_MEDIA_AUDIO_IO_CAUDIO_IO_H__
-#include <sound_manager.h>
-
#ifdef __cplusplus
+#include <sound_manager.h>
+#include <mutex>
+#include <condition_variable>
namespace tizen_media_audio {
class CAudioIO : public IPulseStreamListener {
public:
struct SStreamCallback {
- void* mUserData;
- void (*onStream)(size_t nbytes, void* user_data);
-
- SStreamCallback() : mUserData(nullptr), onStream(nullptr) {
- /* Empty Body */
- }
+ void* mUserData {};
+ void (*onStream)(size_t nbytes, void* user_data) {};
void set(void (*callback)(size_t, void*), void* userdata) {
onStream = callback;
};
struct SStateChangedCallback {
- void* mUserData;
- void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data);
-
- SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr) {
- /* Empty Body */
- }
+ void* mUserData {};
+ void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data) {};
void set(void (*callback)(CAudioInfo::EAudioIOState, CAudioInfo::EAudioIOState, bool, void*), void* userdata) {
onStateChanged = callback;
};
/* Constructor & Destructor */
- CAudioIO();
explicit CAudioIO(CAudioInfo& audioInfo);
virtual ~CAudioIO() = default;
virtual void onStream(CPulseAudioClient* pClient, size_t length);
virtual void onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy);
virtual void onStateChanged(CAudioInfo::EAudioIOState state);
+ virtual void onCorked(CPulseAudioClient* pClient, bool corked);
/* Methods */
virtual void initialize();
void setStreamInfo(sound_stream_info_h stream_info);
+ void setState(CAudioInfo::EAudioIOState state);
CAudioInfo::EAudioIOState getState() noexcept;
protected:
virtual bool isInit();
virtual bool IsReady();
- void internalLock();
- void internalUnlock();
- void internalWait();
- void internalSignal();
-
- CPulseAudioClient* mpPulseAudioClient;
+ CPulseAudioClient* mpPulseAudioClient {};
CAudioInfo mAudioInfo;
SStreamCallback mStreamCallback;
SStateChangedCallback mStateChangedCallback;
- CAudioInfo::EAudioDirection mDirection;
- CAudioInfo::EAudioIOState mState;
- CAudioInfo::EAudioIOState mStatePrev;
- bool mByPolicy;
+ CAudioInfo::EAudioDirection mDirection { CAudioInfo::EAudioDirection::AUDIO_DIRECTION_MAX };
+ CAudioInfo::EAudioIOState mState { CAudioInfo::EAudioIOState::AUDIO_IO_STATE_NONE };
+ CAudioInfo::EAudioIOState mStatePrev { CAudioInfo::EAudioIOState::AUDIO_IO_STATE_NONE };
+ bool mByPolicy {};
+ std::timed_mutex mMutex;
+ std::mutex mCondMutex;
+ std::condition_variable mCond;
private:
- pthread_mutex_t __mMutex;
- pthread_mutex_t __mCondMutex;
- pthread_cond_t __mCond;
- bool __mIsInit;
+ bool __mIsInit {};
};