X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2FCAudioIO.h;h=078795d3d8d561c1c85d02afeb69d3717eb4be30;hb=ffd34c56a7091e7dd9bc5680ad718a4e1a263740;hp=b9207529de2d4d3e7a3b4a4ef0e9fb9a328d90f3;hpb=5cfe54834f37db8a96a502b6191252534fc537b4;p=platform%2Fcore%2Fapi%2Faudio-io.git diff --git a/include/CAudioIO.h b/include/CAudioIO.h index b920752..078795d 100644 --- a/include/CAudioIO.h +++ b/include/CAudioIO.h @@ -17,6 +17,7 @@ #ifndef __TIZEN_MEDIA_AUDIO_IO_CAUDIO_IO_H__ #define __TIZEN_MEDIA_AUDIO_IO_CAUDIO_IO_H__ +#include #ifdef __cplusplus @@ -29,107 +30,93 @@ namespace tizen_media_audio { * You can't take this object directly. */ class IPulseStreamListener; - class IAudioSessionEventListener; - class CAudioIO : public IPulseStreamListener, public IAudioSessionEventListener { + class CAudioIO : public IPulseStreamListener { public: struct SStreamCallback { void* mUserData; void (*onStream)(size_t nbytes, void* user_data); - SStreamCallback() : mUserData(NULL), onStream(NULL) - {/* Empty Body */} + SStreamCallback() : mUserData(nullptr), onStream(nullptr) + { /* Empty Body */ } }; struct SStateChangedCallback { void* mUserData; void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data); - SStateChangedCallback() : mUserData(NULL), onStateChanged(NULL) - {/* Empty Body */} + SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr) + { /* Empty Body */ } }; - struct SInterruptCallback { - void* mUserData; - void (*onInterrupt)(IAudioSessionEventListener::EInterruptCode code, void* user_data); - - SInterruptCallback() : mUserData(NULL), onInterrupt(NULL) - {/* Empty Body */} - }; - - private: - pthread_mutex_t mMutex; - pthread_cond_t mCond; - bool mIsInit; - bool mForceIgnore; - - protected: - CAudioSessionHandler* mpAudioSessionHandler; - CPulseAudioClient* mpPulseAudioClient; - CAudioInfo mAudioInfo; - - SStreamCallback mStreamCallback; - SStateChangedCallback mStateChangedCallback; - SInterruptCallback mInterruptCallback; - - CAudioInfo::EAudioIOState mState; - CAudioInfo::EAudioIOState mStatePrev; - bool mByPolicy; - - /* Protected Methods */ - virtual void setInit(bool flag); - virtual bool isInit(); - virtual bool IsReady(); - - void internalLock() throw (CAudioError); - void internalUnlock() throw (CAudioError); - void internalWait() throw (CAudioError); - void internalSignal() throw (CAudioError); - - bool isForceIgnore(); - - public: /* Constructor & Destructor */ CAudioIO(); - CAudioIO(CAudioInfo& audioInfo); - virtual ~CAudioIO(); + explicit CAudioIO(CAudioInfo& audioInfo); + virtual ~CAudioIO() = default; /* Pure Virtual Methods */ - virtual void initialize() throw (CAudioError) = 0; + virtual void initialize() = 0; virtual void finalize() = 0; - virtual void prepare() throw (CAudioError) = 0; - virtual void unprepare() throw (CAudioError) = 0; + virtual void prepare() = 0; + virtual void unprepare() = 0; - virtual void pause() throw (CAudioError) = 0; - virtual void resume() throw (CAudioError) = 0; + virtual void pause() = 0; + virtual void resume() = 0; - virtual void drain() throw (CAudioError) = 0; - virtual void flush() throw (CAudioError) = 0; + /* FIXME : drain needed to be moved to sub-class */ + virtual void drain(); + virtual void flush() = 0; - virtual int getBufferSize() throw (CAudioError) = 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); - virtual void onInterrupt(CAudioSessionHandler* pHandler, int id, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *additional_info); - virtual void onSignal(CAudioSessionHandler* pHandler, mm_sound_signal_name_t signal, int value); /* Methods */ - CAudioInfo getAudioInfo() throw (CAudioError); + CAudioInfo& getAudioInfo(); + + virtual void setStreamCallback(SStreamCallback callback); + SStreamCallback getStreamCallback(); + + virtual void setStateChangedCallback(SStateChangedCallback callback); + SStateChangedCallback getStateChangedCallback(); + + void setStreamInfo(sound_stream_info_h stream_info); + + CAudioInfo::EAudioIOState getState() noexcept; + + protected: + /* Protected Methods */ + virtual void setInit(bool flag); + virtual bool isInit(); + virtual bool IsReady(); - virtual void setStreamCallback(SStreamCallback callback) throw (CAudioError); - SStreamCallback getStreamCallback() throw (CAudioError); + void internalLock(); + void internalUnlock(); + void internalWait(); + void internalSignal(); - virtual void setStateChangedCallback(SStateChangedCallback callback) throw (CAudioError); - SStateChangedCallback getStateChangedCallback() throw (CAudioError); + CPulseAudioClient* mpPulseAudioClient; + CAudioInfo mAudioInfo; - void setInterruptCallback(SInterruptCallback callback) throw (CAudioError); - SInterruptCallback getInterruptCallback() throw (CAudioError); + SStreamCallback mStreamCallback; + SStateChangedCallback mStateChangedCallback; - void ignoreSession() throw (CAudioError); + CAudioInfo::EAudioDirection mDirection; + CAudioInfo::EAudioIOState mState; + CAudioInfo::EAudioIOState mStatePrev; + bool mByPolicy; + + private: + pthread_mutex_t __mMutex; + pthread_mutex_t __mCondMutex; + pthread_cond_t __mCond; + bool __mIsInit; }; + } /* namespace tizen_media_audio */ #endif