#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 {
void* mUserData;
void (*onStream)(size_t nbytes, void* user_data);
- SStreamCallback() : mUserData(nullptr), onStream(nullptr)
- { /* Empty Body */ }
+ SStreamCallback() : mUserData(nullptr), onStream(nullptr) {
+ /* Empty Body */
+ }
+
+ void set(void (*callback)(size_t, void*), void* userdata) {
+ onStream = callback;
+ mUserData = userdata;
+ }
+
+ void unset() {
+ onStream = nullptr;
+ mUserData = nullptr;
+ }
};
struct SStateChangedCallback {
void* mUserData;
void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data);
- SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr)
- { /* Empty Body */ }
+ SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr) {
+ /* Empty Body */
+ }
+
+ void set(void (*callback)(CAudioInfo::EAudioIOState, CAudioInfo::EAudioIOState, bool, void*), void* userdata) {
+ onStateChanged = callback;
+ mUserData = userdata;
+ }
+
+ void unset() {
+ onStateChanged = nullptr;
+ mUserData = nullptr;
+ }
};
/* Constructor & Destructor */
explicit CAudioIO(CAudioInfo& audioInfo);
virtual ~CAudioIO() = default;
- /* Pure Virtual Methods */
- virtual void initialize() = 0;
- virtual void finalize() = 0;
-
- virtual void prepare() = 0;
- virtual void unprepare() = 0;
-
- virtual void pause() = 0;
- virtual void resume() = 0;
-
- /* FIXME : drain needed to be moved to sub-class */
- virtual void drain();
- virtual void flush() = 0;
-
- virtual int getBufferSize() = 0;
-
/* Implemented Handlers */
virtual void onStream(CPulseAudioClient* pClient, size_t length);
virtual void onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy);
virtual void onStateChanged(CAudioInfo::EAudioIOState state);
/* Methods */
+ virtual void initialize();
+ virtual void finalize();
+ virtual void prepare();
+ virtual void unprepare();
+ virtual void pause();
+ virtual void resume();
+ virtual void flush();
+ virtual int getBufferSize() = 0;
+
CAudioInfo& getAudioInfo();
virtual void setStreamCallback(SStreamCallback callback);
virtual bool isInit();
virtual bool IsReady();
- void internalLock();
- void internalUnlock();
- void internalWait();
- void internalSignal();
-
CPulseAudioClient* mpPulseAudioClient;
CAudioInfo mAudioInfo;
CAudioInfo::EAudioIOState mState;
CAudioInfo::EAudioIOState mStatePrev;
bool mByPolicy;
+ std::mutex mMutex;
+ std::mutex mCondMutex;
+ std::condition_variable mCond;
private:
- pthread_mutex_t __mMutex;
- pthread_mutex_t __mCondMutex;
- pthread_cond_t __mCond;
bool __mIsInit;
};