fixup! Reset dump values when pause function is called
[platform/core/api/audio-io.git] / include / CAudioIO.h
index 667d3ae..36eabfc 100644 (file)
 #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 {
 
@@ -33,12 +34,8 @@ 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;
@@ -52,12 +49,8 @@ namespace tizen_media_audio {
         };
 
         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;
@@ -71,7 +64,6 @@ namespace tizen_media_audio {
         };
 
         /* Constructor & Destructor */
-        CAudioIO();
         explicit CAudioIO(CAudioInfo& audioInfo);
         virtual ~CAudioIO() = default;
 
@@ -79,6 +71,7 @@ namespace tizen_media_audio {
         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();
@@ -100,6 +93,7 @@ namespace tizen_media_audio {
 
         void setStreamInfo(sound_stream_info_h stream_info);
 
+        void setState(CAudioInfo::EAudioIOState state);
         CAudioInfo::EAudioIOState getState() noexcept;
 
     protected:
@@ -108,27 +102,22 @@ namespace tizen_media_audio {
         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 {};
     };