X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2FCAudioIO.h;h=078795d3d8d561c1c85d02afeb69d3717eb4be30;hb=ffd34c56a7091e7dd9bc5680ad718a4e1a263740;hp=dc648a2db51af6b000fa5350d9e4946f18be9609;hpb=2ef80e7e8230299522e253ab0a592a7e7a83b1ad;p=platform%2Fcore%2Fapi%2Faudio-io.git diff --git a/include/CAudioIO.h b/include/CAudioIO.h index dc648a2..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,14 +30,13 @@ 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) + SStreamCallback() : mUserData(nullptr), onStream(nullptr) { /* Empty Body */ } }; @@ -44,58 +44,48 @@ namespace tizen_media_audio { void* mUserData; void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data); - SStateChangedCallback() : mUserData(NULL), onStateChanged(NULL) - { /* Empty Body */ } - }; - - struct SInterruptCallback { - void* mUserData; - void (*onInterrupt)(IAudioSessionEventListener::EInterruptCode code, void* user_data); - - SInterruptCallback() : mUserData(NULL), onInterrupt(NULL) + SStateChangedCallback() : mUserData(nullptr), onStateChanged(nullptr) { /* Empty Body */ } }; /* 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) throw (CAudioError); - SStreamCallback getStreamCallback() throw (CAudioError); + virtual void setStreamCallback(SStreamCallback callback); + SStreamCallback getStreamCallback(); - virtual void setStateChangedCallback(SStateChangedCallback callback) throw (CAudioError); - SStateChangedCallback getStateChangedCallback() throw (CAudioError); + virtual void setStateChangedCallback(SStateChangedCallback callback); + SStateChangedCallback getStateChangedCallback(); - void setInterruptCallback(SInterruptCallback callback) throw (CAudioError); - SInterruptCallback getInterruptCallback() throw (CAudioError); + void setStreamInfo(sound_stream_info_h stream_info); - void ignoreSession() throw (CAudioError); + CAudioInfo::EAudioIOState getState() noexcept; protected: /* Protected Methods */ @@ -103,30 +93,27 @@ namespace tizen_media_audio { virtual bool isInit(); virtual bool IsReady(); - void internalLock() throw (CAudioError); - void internalUnlock() throw (CAudioError); - void internalWait() throw (CAudioError); - void internalSignal() throw (CAudioError); - - bool isForceIgnore(); + void internalLock(); + void internalUnlock(); + void internalWait(); + void internalSignal(); - CAudioSessionHandler* mpAudioSessionHandler; CPulseAudioClient* mpPulseAudioClient; CAudioInfo mAudioInfo; SStreamCallback mStreamCallback; SStateChangedCallback mStateChangedCallback; - SInterruptCallback mInterruptCallback; + 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; - bool __mForceIgnore; };