Revise cpp codes 47/207347/8 accepted/tizen/unified/20190829.101437 submit/tizen/20190827.120802
authorSeungbae Shin <seungbae.shin@samsung.com>
Mon, 3 Jun 2019 06:01:51 +0000 (15:01 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Wed, 21 Aug 2019 02:40:56 +0000 (11:40 +0900)
  - remove {} for single statement.
  - use noexcept keyword for non-throw methods.
  - use override keyword for overrided function.
  - remove unused methods.
  - use default keyword for empty destructors.
  - use explict keyword on single argument class constructor to prevent auto conversion.
  - use nullptr instead of NULL if possible.
  - use ! operator instead of comparing with false.
  - use auto when initializing with a cast to avoid duplicating the type name.
  - remove explict end return of void functions.

[Version] 0.5.19
[Issue Type] Refactoring

Change-Id: I5118a6ff5e85f9d9e02c7875b2cbe691652ef064

17 files changed:
include/CAudioError.h
include/CAudioIO.h
include/CAudioInfo.h
include/CAudioInput.h
include/CAudioOutput.h
include/CPulseAudioClient.h
include/CPulseStreamSpec.h
packaging/capi-media-audio-io.spec
src/cpp/CAudioError.cpp
src/cpp/CAudioIO.cpp
src/cpp/CAudioInfo.cpp
src/cpp/CAudioInput.cpp
src/cpp/CAudioOutput.cpp
src/cpp/CPulseAudioClient.cpp
src/cpp/CPulseStreamSpec.cpp
src/cpp/cpp_audio_in_privilege.cpp
src/cpp/cpp_audio_io.cpp

index a18d0b0..c066e87 100644 (file)
@@ -67,11 +67,11 @@ namespace tizen_media_audio {
         static const unsigned int MSG_LENGTH = 512;
 
         /* Constructor & Destructor */
-        CAudioError(EError err);
+        explicit CAudioError(EError err);
         CAudioError(EError err, const char* fileName, const char* parentFunc, int lineNum);
         CAudioError(EError err, const char* msg, const char* fileName, const char* parentFunc, int lineNum);
         CAudioError(const CAudioError& err);
-        ~CAudioError();
+        virtual ~CAudioError() = default;
 
         /* Static Methods */
         static EError getLastError();
@@ -95,7 +95,7 @@ namespace tizen_media_audio {
         static EError __mLastError;
         static char   __mLastErrorMsg[MSG_LENGTH];
         EError        __mError;
-        char          __mErrorMsg[MSG_LENGTH];
+        char          __mErrorMsg[MSG_LENGTH]{};
     };
 
 
index 3068709..078795d 100644 (file)
@@ -36,7 +36,7 @@ namespace tizen_media_audio {
             void* mUserData;
             void (*onStream)(size_t nbytes, void* user_data);
 
-            SStreamCallback() : mUserData(NULL), onStream(NULL)
+            SStreamCallback() : mUserData(nullptr), onStream(nullptr)
             { /* Empty Body */ }
         };
 
@@ -44,14 +44,14 @@ namespace tizen_media_audio {
             void* mUserData;
             void (*onStateChanged)(CAudioInfo::EAudioIOState state, CAudioInfo::EAudioIOState statePrev, bool byPolicy, void* user_data);
 
-            SStateChangedCallback() : mUserData(NULL), onStateChanged(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() = 0;
@@ -63,6 +63,7 @@ namespace tizen_media_audio {
         virtual void pause() = 0;
         virtual void resume() = 0;
 
+        /* FIXME : drain needed to be moved to sub-class */
         virtual void drain();
         virtual void flush() = 0;
 
@@ -84,7 +85,7 @@ namespace tizen_media_audio {
 
         void setStreamInfo(sound_stream_info_h stream_info);
 
-        CAudioInfo::EAudioIOState getState();
+        CAudioInfo::EAudioIOState getState() noexcept;
 
     protected:
         /* Protected Methods */
index 39b051b..3ccc58f 100644 (file)
@@ -117,19 +117,20 @@ namespace tizen_media_audio {
         /* Constructors */
         CAudioInfo();
         CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sampleType, EAudioType audioType, int audioIndex);
+        virtual ~CAudioInfo() = default;
 
         /* Setter & Getter */
-        unsigned int getSampleRate();
-        EChannel getChannel();
-        ESampleType getSampleType();
-        EAudioType getAudioType();
-        void setAudioType(EAudioType audioType);
-        int getAudioIndex();
-        void setAudioIndex(int audioIndex);
+        unsigned int getSampleRate() noexcept;
+        EChannel getChannel() noexcept;
+        ESampleType getSampleType() noexcept;
+        EAudioType getAudioType() noexcept;
+        void setAudioType(EAudioType audioType) noexcept;
+        int getAudioIndex() noexcept;
+        void setAudioIndex(int audioIndex) noexcept;
         void convertAudioType2StreamType(CAudioInfo::EAudioType audioType, char **streamType);
         void convertInputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType);
         void convertOutputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType);
-        int getSampleSize();
+        int getSampleSize() noexcept;
 
     private:
         const char *__STREAM_TYPE_TABLE[(unsigned int)EAudioType::AUDIO_TYPE_MAX] = {
index 9e64b62..a27bf18 100644 (file)
@@ -30,33 +30,28 @@ namespace tizen_media_audio {
     class CAudioInput : public CAudioIO {
     public:
         /* Constructor & Destructor */
-        CAudioInput(CAudioInfo& info);
-        CAudioInput(
-                    unsigned int            sampleRate,
-                    CAudioInfo::EChannel    channel,
-                    CAudioInfo::ESampleType sampleType,
-                    CAudioInfo::EAudioType  audioType);
-        ~CAudioInput();
+        explicit CAudioInput(CAudioInfo& info);
+        ~CAudioInput() = default;
 
         /* Overridden Handler */
-        virtual void onStream(CPulseAudioClient* pClient, size_t length);
+        void onStream(CPulseAudioClient* pClient, size_t length) override;
 
         /* Implemented Methods */
-        virtual void initialize();
-        virtual void finalize();
+        void initialize() override;
+        void finalize() override;
 
-        virtual void prepare();
-        virtual void unprepare();
+        void prepare() override;
+        void unprepare() override;
 
-        virtual void pause();
-        virtual void resume();
+        void pause() override;
+        void resume() override;
 
-        virtual void flush();
+        void flush() override;
 
-        virtual int  getBufferSize();
+        int  getBufferSize() override;
 
         /* Overridden Methods */
-        virtual void setStreamCallback(SStreamCallback callback);
+        void setStreamCallback(SStreamCallback callback) override;
 
         /* Methods */
         size_t read(void* buffer, size_t length);
@@ -65,9 +60,9 @@ namespace tizen_media_audio {
 
     private:
         /* Private Methods */
-        void __setInit(bool flag);
-        bool __IsInit();
-        bool __IsReady();
+        void __setInit(bool flag) noexcept;
+        bool __IsInit() noexcept;
+        bool __IsReady() noexcept;
 
         bool __mIsUsedSyncRead;
         bool __mIsInit;
index 1378653..8e57ef5 100644 (file)
@@ -32,40 +32,35 @@ namespace tizen_media_audio {
     class CAudioOutput : public CAudioIO {
     public:
         /* Constructor & Destructor */
-        CAudioOutput(CAudioInfo& info);
-        CAudioOutput(
-                    unsigned int            smapleRate,
-                    CAudioInfo::EChannel    channel,
-                    CAudioInfo::ESampleType sampleType,
-                    CAudioInfo::EAudioType  type);
-        ~CAudioOutput();
+        explicit CAudioOutput(CAudioInfo& info);
+        ~CAudioOutput() = default;
 
         /* Overridden Handler */
-        virtual void onStream(CPulseAudioClient* pClient, size_t length);
+        void onStream(CPulseAudioClient* pClient, size_t length) override;
 
         /* Implemented Methods */
-        virtual void initialize();
-        virtual void finalize();
+        void initialize() override;
+        void finalize() override;
 
-        virtual void prepare();
-        virtual void unprepare();
+        void prepare() override;
+        void unprepare() override;
 
-        virtual void pause();
-        virtual void resume();
+        void pause() override;
+        void resume() override;
 
-        virtual void drain();
-        virtual void flush();
+        void drain() override;
+        void flush() override;
 
-        virtual int  getBufferSize();
+        int getBufferSize() override;
 
         /* Methods */
         size_t write(const void* buffer, size_t length);
 
     private:
         /* Private Methods */
-        void __setInit(bool flag);
-        bool __IsInit();
-        bool __IsReady();
+        void __setInit(bool flag) noexcept;
+        bool __IsInit() noexcept;
+        bool __IsReady() noexcept;
 
         bool __mIsUsedSyncWrite;
         bool __mIsInit;
index 13b4a1a..4eb774f 100644 (file)
@@ -30,8 +30,6 @@ namespace tizen_media_audio {
     /**
      * PULSE Thread
      */
-    class CPulseAudioVolume;
-    class CPulseAudioPolicy;
     class CPulseStreamSpec;
     class CPulseAudioClient {
     public:
@@ -66,7 +64,7 @@ namespace tizen_media_audio {
         bool flush();
 
         void checkRunningState();
-        bool isInThread();
+        bool isInThread() noexcept;
 
         size_t getWritableSize();
         size_t getReadableSize();
@@ -76,10 +74,6 @@ namespace tizen_media_audio {
         pa_usec_t getLatency();
         pa_usec_t getFinalLatency();
 
-        /* Setter & Getter */
-        EStreamDirection getStreamDirection();
-        CPulseStreamSpec getStreamSpec();
-
     private:
         /* Members */
         EStreamDirection      __mDirection;
@@ -108,8 +102,6 @@ namespace tizen_media_audio {
 
         /* Private Calblack Method */
         static void __contextStateChangeCb(pa_context* c, void* user_data);
-        static void __successContextCb(pa_context* c, int success, void* user_data);
-
         static void __streamStateChangeCb(pa_stream* s, void* user_data);
         static void __streamCaptureCb(pa_stream* s, size_t length, void* user_data);
         static void __streamPlaybackCb(pa_stream* s, size_t length, void* user_data);
index 416884f..44ffe29 100644 (file)
@@ -51,20 +51,19 @@ namespace tizen_media_audio {
         /* Constructor & Destructor */
         CPulseStreamSpec();
         CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo);
-        CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo, int customLatency);
-        ~CPulseStreamSpec();
+        ~CPulseStreamSpec() = default;
 
         /* Setter & Getter */
-        EStreamLatency getStreamLatency();
-        const char*    getStreamLatencyToString();
-        CAudioInfo&    getAudioInfo();
-        pa_sample_spec getSampleSpec();
-        pa_channel_map getChannelMap();
-        const char*    getStreamName();
+        EStreamLatency getStreamLatency() noexcept;
+        const char*    getStreamLatencyToString() noexcept;
+        CAudioInfo&    getAudioInfo() noexcept;
+        pa_sample_spec getSampleSpec() noexcept;
+        pa_channel_map getChannelMap() noexcept;
+        const char*    getStreamName() noexcept;
 
     private:
         /* Private Methods */
-        void __adjustSpec();
+        void __adjustSpec() noexcept;
 
         /* Members */
         EStreamLatency __mLatency;
index 54dc740..1a1f80a 100644 (file)
@@ -1,6 +1,6 @@
 Name:           capi-media-audio-io
 Summary:        An Audio Input & Audio Output library in Tizen Native API
-Version:        0.5.18
+Version:        0.5.19
 Release:        0
 Group:          Multimedia/API
 License:        Apache-2.0
index 655c34f..f0b8d1a 100644 (file)
@@ -28,7 +28,7 @@ using namespace tizen_media_audio;
  * class CAudioError
  */
 CAudioError::EError CAudioError::__mLastError = CAudioError::EError::ERROR_NONE;
-char CAudioError::__mLastErrorMsg[CAudioError::MSG_LENGTH];
+char CAudioError::__mLastErrorMsg[MSG_LENGTH];
 
 //LCOV_EXCL_START
 CAudioError::CAudioError(EError err) :
@@ -45,12 +45,12 @@ CAudioError::CAudioError(EError err, const char* fileName, const char* parentFun
         findFileName++;
     const char* errStr = __convertErrorToString(__mError);
 
-    snprintf(__mErrorMsg, CAudioError::MSG_LENGTH, "["
+    snprintf(__mErrorMsg, MSG_LENGTH, "["
             COLOR_RED    "THROW" COLOR_END ":%s|"
             COLOR_YELLOW "ERR"    COLOR_END ":%s|"
             COLOR_YELLOW "FUNC"   COLOR_END ":%s(%d)]", findFileName, errStr, parentFunc, lineNum);
 
-    snprintf(__mLastErrorMsg, CAudioError::MSG_LENGTH, "LastError:%s", __mErrorMsg);
+    snprintf(__mLastErrorMsg, MSG_LENGTH, "LastError:%s", __mErrorMsg);
 }
 //LCOV_EXCL_STOP
 
@@ -63,14 +63,14 @@ CAudioError::CAudioError(EError err, const char* msg, const char* fileName, cons
         findFileName++;
     const char* errStr = __convertErrorToString(__mError);
 
-    snprintf(__mErrorMsg, CAudioError::MSG_LENGTH, "["
+    snprintf(__mErrorMsg, MSG_LENGTH, "["
             COLOR_RED    "THROW" COLOR_END ":%s|"
             COLOR_YELLOW "ERR"    COLOR_END ":%s|"
             COLOR_YELLOW "FUNC"   COLOR_END ":%s(%d)]"
             COLOR_YELLOW "MSG"    COLOR_END ":"
             COLOR_CYAN   "%s"     COLOR_END, findFileName, errStr, parentFunc, lineNum, msg);
 
-    snprintf(__mLastErrorMsg, CAudioError::MSG_LENGTH, "LastError:%s", __mErrorMsg);
+    snprintf(__mLastErrorMsg, MSG_LENGTH, "LastError:%s", __mErrorMsg);
 }
 
 //LCOV_EXCL_START
@@ -80,9 +80,6 @@ CAudioError::CAudioError(const CAudioError& err) {
 }
 //LCOV_EXCL_STOP
 
-CAudioError::~CAudioError() {
-}
-
 const char* CAudioError::__convertErrorToString(EError err) {
     switch (err) {
     default:
index 2e236ef..55d4d87 100644 (file)
@@ -29,7 +29,7 @@ using namespace tizen_media_audio;
  */
 //LCOV_EXCL_START
 CAudioIO::CAudioIO() :
-    mpPulseAudioClient(NULL),
+    mpPulseAudioClient(nullptr),
     __mMutex(PTHREAD_MUTEX_INITIALIZER),
     __mCondMutex(PTHREAD_MUTEX_INITIALIZER),
     __mCond(PTHREAD_COND_INITIALIZER),
@@ -42,7 +42,7 @@ CAudioIO::CAudioIO() :
 //LCOV_EXCL_STOP
 
 CAudioIO::CAudioIO(CAudioInfo& audioInfo) :
-    mpPulseAudioClient(NULL),
+    mpPulseAudioClient(nullptr),
     __mMutex(PTHREAD_MUTEX_INITIALIZER),
     __mCondMutex(PTHREAD_MUTEX_INITIALIZER),
     __mCond(PTHREAD_COND_INITIALIZER),
@@ -54,9 +54,6 @@ CAudioIO::CAudioIO(CAudioInfo& audioInfo) :
     mByPolicy = false;
 }
 
-CAudioIO::~CAudioIO() {
-}
-
 void CAudioIO::setInit(bool flag) {
     __mIsInit = flag;
 }
@@ -67,11 +64,11 @@ bool CAudioIO::isInit() {
 
 bool CAudioIO::IsReady() {
     return ((mState == CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING ||
-             mState == CAudioInfo::EAudioIOState::AUDIO_IO_STATE_PAUSED)? true : false);
+             mState == CAudioInfo::EAudioIOState::AUDIO_IO_STATE_PAUSED));
 }
 
 void CAudioIO::internalLock() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     if (pthread_mutex_lock(&__mMutex) != 0)
@@ -83,7 +80,7 @@ void CAudioIO::internalLock() {
 }
 
 void CAudioIO::internalUnlock() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     if (pthread_mutex_unlock(&__mMutex) != 0)
@@ -95,7 +92,7 @@ void CAudioIO::internalUnlock() {
 }
 
 void CAudioIO::internalWait() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
@@ -108,7 +105,7 @@ void CAudioIO::internalWait() {
 }
 
 void CAudioIO::internalSignal() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
@@ -121,7 +118,7 @@ void CAudioIO::internalSignal() {
 }
 
 void CAudioIO::initialize() {
-    if (__mIsInit == true)
+    if (__mIsInit)
         return;
 
     AUDIO_IO_LOGD("initialize");
@@ -138,7 +135,7 @@ void CAudioIO::initialize() {
 }
 
 void CAudioIO::finalize() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         return;
 
     AUDIO_IO_LOGD("finalize");
@@ -175,20 +172,20 @@ void CAudioIO::finalize() {
 }
 
 void CAudioIO::onStream(CPulseAudioClient* pClient, size_t length) {
-    assert(__mIsInit == true);
-    assert(pClient != NULL);
+    assert(__mIsInit);
+    assert(pClient);
     assert(length > 0);
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
     AUDIO_IO_LOGD("mStreamCallback.onStream(%p), pClient(%p), length(%zu)", mStreamCallback.onStream, pClient, length);
 #endif
 
-    if (mStreamCallback.onStream != NULL)
+    if (mStreamCallback.onStream)
         mStreamCallback.onStream(length, mStreamCallback.mUserData);
 }
 
 void CAudioIO::onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy) {
-    assert(__mIsInit == true);
+    assert(__mIsInit);
     assert(state >= CAudioInfo::EAudioIOState::AUDIO_IO_STATE_NONE && state < CAudioInfo::EAudioIOState::AUDIO_IO_STATE_MAX);
 
     mStatePrev = mState;
@@ -198,7 +195,7 @@ void CAudioIO::onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy) {
     if (mState == mStatePrev)
         return;
 
-    const char* state_string[] = { "NONE", "IDLE", "RUNNING", "PAUSED" };
+    static const char* state_string[] = { "NONE", "IDLE", "RUNNING", "PAUSED" };
 
     AUDIO_IO_LOGD("previous(%s,%d) ===> current(%s,%d), by_policy(%d)",
                   state_string[static_cast<int>(mStatePrev)],
@@ -207,7 +204,7 @@ void CAudioIO::onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy) {
                   static_cast<int>(mState),
                   mByPolicy);
 
-    if (mStateChangedCallback.onStateChanged != NULL)
+    if (mStateChangedCallback.onStateChanged)
         mStateChangedCallback.onStateChanged(mState, mStatePrev, mByPolicy, mStateChangedCallback.mUserData);
 }
 
@@ -215,22 +212,22 @@ void CAudioIO::onStateChanged(CAudioInfo::EAudioIOState state) {
     onStateChanged(state, false);
 }
 
-CAudioInfo::EAudioIOState CAudioIO::getState() {
+CAudioInfo::EAudioIOState CAudioIO::getState() noexcept {
     return mState;
 }
 
 void CAudioIO::prepare() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 }
 
 void CAudioIO::unprepare() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 }
 
 void CAudioIO::pause() {
-    if (__mIsInit == false || IsReady() == false)
+    if (!__mIsInit || !IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize or prepare CAudioIO");
 
     try {
@@ -245,7 +242,7 @@ void CAudioIO::pause() {
 }
 
 void CAudioIO::resume() {
-    if (__mIsInit == false || IsReady() == false)
+    if (!__mIsInit || !IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize or prepare CAudioIO");
 
     try {
@@ -260,7 +257,7 @@ void CAudioIO::resume() {
 }
 
 void CAudioIO::drain() {
-    if (__mIsInit == false || IsReady() == false)
+    if (!__mIsInit || !IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize or prepare CAudioIO");
 
     try {
@@ -279,7 +276,7 @@ void CAudioIO::drain() {
 }
 
 void CAudioIO::flush() {
-    if (__mIsInit == false || IsReady() == false)
+    if (!__mIsInit || !IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize or prepare CAudioIO");
 
     try {
@@ -298,75 +295,70 @@ void CAudioIO::flush() {
 }
 
 CAudioInfo& CAudioIO::getAudioInfo() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     return mAudioInfo;
 }
 
 void CAudioIO::setStreamCallback(SStreamCallback callback) {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     mStreamCallback = callback;
 }
 
 CAudioIO::SStreamCallback CAudioIO::getStreamCallback() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     return mStreamCallback;
 }
 
 void CAudioIO::setStateChangedCallback(SStateChangedCallback callback) {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     mStateChangedCallback = callback;
 }
 
 CAudioIO::SStateChangedCallback CAudioIO::getStateChangedCallback() {
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
     return mStateChangedCallback;
 }
 
 void CAudioIO::setStreamInfo(sound_stream_info_h stream_info) {
-    if (stream_info == NULL)
+    if (!stream_info)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_ARGUMENT, "stream_info is NULL");
 
-    if (__mIsInit == false)
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Doesn't initialize CAudioIO");
 
-    try {
-        if (mState != CAudioInfo::EAudioIOState::AUDIO_IO_STATE_IDLE)
-            THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE, "it is not permitted while started");
-
-        int errorCode = SOUND_MANAGER_ERROR_NONE;
-        CAudioInfo::EAudioType audioType = CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA;
-        char *type = NULL;
-        int index = -1;
-        bool avail = false;
-
-        if ((errorCode = sound_manager_is_available_stream_information(stream_info, NATIVE_API_AUDIO_IO, &avail)) != SOUND_MANAGER_ERROR_NONE)
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info is invalid [ret:%d]", errorCode);
-        if (!avail)
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "Input stream is not supported");
-
-        if ((errorCode = sound_manager_get_type_from_stream_information(stream_info, &type)) != SOUND_MANAGER_ERROR_NONE)
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->stream_type is invalid [ret:%d]", errorCode); //LCOV_EXCL_LINE
-        if (mDirection == CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN)
-            getAudioInfo().convertInputStreamType2AudioType(type, &audioType);
-        else
-            getAudioInfo().convertOutputStreamType2AudioType(type, &audioType);
-        getAudioInfo().setAudioType(audioType);
-
-        if ((errorCode = sound_manager_get_index_from_stream_information(stream_info, &index)) != SOUND_MANAGER_ERROR_NONE)
-            THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->index is invalid [ret:%d]", errorCode); //LCOV_EXCL_LINE
-        getAudioInfo().setAudioIndex(index);
-
-    } catch (CAudioError& e) {
-        throw;
-    }
+    if (mState != CAudioInfo::EAudioIOState::AUDIO_IO_STATE_IDLE)
+        THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE, "it is not permitted while started");
+
+    int errorCode = SOUND_MANAGER_ERROR_NONE;
+    CAudioInfo::EAudioType audioType = CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA;
+    char *type = nullptr;
+    int index = -1;
+    bool avail = false;
+
+    if ((errorCode = sound_manager_is_available_stream_information(stream_info, NATIVE_API_AUDIO_IO, &avail)) != SOUND_MANAGER_ERROR_NONE)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info is invalid [ret:%d]", errorCode);
+    if (!avail)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "Input stream is not supported");
+
+    if ((errorCode = sound_manager_get_type_from_stream_information(stream_info, &type)) != SOUND_MANAGER_ERROR_NONE)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->stream_type is invalid [ret:%d]", errorCode);
+    if (mDirection == CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN)
+        getAudioInfo().convertInputStreamType2AudioType(type, &audioType);
+    else
+        getAudioInfo().convertOutputStreamType2AudioType(type, &audioType);
+    getAudioInfo().setAudioType(audioType);
+
+    if ((errorCode = sound_manager_get_index_from_stream_information(stream_info, &index)) != SOUND_MANAGER_ERROR_NONE)
+        THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "Parameter stream_info->index is invalid [ret:%d]", errorCode);
+    getAudioInfo().setAudioIndex(index);
 }
index 997348f..6f6ca9b 100644 (file)
@@ -41,54 +41,48 @@ CAudioInfo::CAudioInfo(unsigned int sampleRate, EChannel channel, ESampleType sa
     __mAudioType(audioType),
     __mAudioIndex(audioIndex) {
     // Check to invalid AudioInfo
-    if (sampleRate < CAudioInfo::MIN_SYSTEM_SAMPLERATE || sampleRate > CAudioInfo::MAX_SYSTEM_SAMPLERATE) {
+    if (sampleRate < CAudioInfo::MIN_SYSTEM_SAMPLERATE || sampleRate > CAudioInfo::MAX_SYSTEM_SAMPLERATE)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The sampleRate is invalid [sampleRate:%u]", sampleRate);
-    }
 
-    if (channel < CAudioInfo::EChannel::CHANNEL_MONO || channel >= CAudioInfo::EChannel::CHANNEL_MAX) {
+    if (channel < CAudioInfo::EChannel::CHANNEL_MONO || channel >= CAudioInfo::EChannel::CHANNEL_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The channel is invalid [channel:%u]", to_integral(channel));
-    }
 
-    if (sampleType < CAudioInfo::ESampleType::SAMPLE_TYPE_U8 || sampleType >= CAudioInfo::ESampleType::SAMPLE_TYPE_MAX) {
+    if (sampleType < CAudioInfo::ESampleType::SAMPLE_TYPE_U8 || sampleType >= CAudioInfo::ESampleType::SAMPLE_TYPE_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The sampleType is invalid [sampleType:%u]", to_integral(sampleType));
-    }
 
-    if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX) {
+    if (audioType < CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA || audioType >= CAudioInfo::EAudioType::AUDIO_TYPE_MAX)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The audioType is invalid [audioType:%u]", to_integral(audioType));
-    }
 }
 
-unsigned int CAudioInfo::getSampleRate() {
+unsigned int CAudioInfo::getSampleRate() noexcept {
     return __mSampleRate;
 }
 
-CAudioInfo::EChannel CAudioInfo::getChannel() {
+CAudioInfo::EChannel CAudioInfo::getChannel() noexcept {
     return __mChannel;
 }
 
-CAudioInfo::ESampleType CAudioInfo::getSampleType() {
+CAudioInfo::ESampleType CAudioInfo::getSampleType() noexcept {
     return __mSampleType;
 }
 
-CAudioInfo::EAudioType CAudioInfo::getAudioType() {
+CAudioInfo::EAudioType CAudioInfo::getAudioType() noexcept {
     return __mAudioType;
 }
 
-void CAudioInfo::setAudioType(CAudioInfo::EAudioType audioType) {
+void CAudioInfo::setAudioType(CAudioInfo::EAudioType audioType) noexcept {
     __mAudioType = audioType;
-    return;
 }
 
-int CAudioInfo::getAudioIndex() {
+int CAudioInfo::getAudioIndex() noexcept {
     return __mAudioIndex;
 }
 
-void CAudioInfo::setAudioIndex(int audioIndex) {
+void CAudioInfo::setAudioIndex(int audioIndex) noexcept {
     __mAudioIndex = audioIndex;
-    return;
 }
 
-int CAudioInfo::getSampleSize() {
+int CAudioInfo::getSampleSize() noexcept {
     int bytes_in_sample = 0;
 
     switch (__mSampleType) {
@@ -120,28 +114,25 @@ void CAudioInfo::convertAudioType2StreamType(CAudioInfo::EAudioType audioType, c
                                "The audioType is not supported [audioType:%u]", to_integral(audioType));
 
     *streamType = (char *)__STREAM_TYPE_TABLE[(unsigned int)audioType];
-    return;
 }
 
 void CAudioInfo::convertInputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType) {
-    for (unsigned int i = (unsigned int)CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i++) {
+    for (auto i = (unsigned int)CAudioInfo::EAudioType::AUDIO_IN_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i++) {
         if (!strcmp((char *)__STREAM_TYPE_TABLE[i], streamType)) {
             *audioType = (CAudioInfo::EAudioType)i;
             return;
         }
     }
     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType of input is not supported [streamType:%s]", streamType);
-    return;
 }
 
 void CAudioInfo::convertOutputStreamType2AudioType(char *streamType, CAudioInfo::EAudioType *audioType) {
-    for (unsigned int i = (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX ; i++) {
+    for (auto i = (unsigned int)CAudioInfo::EAudioType::AUDIO_OUT_TYPE_MEDIA ; i < (unsigned int)CAudioInfo::EAudioType::AUDIO_TYPE_MAX ; i++) {
         if (!strcmp((char *)__STREAM_TYPE_TABLE[i], streamType)) {
             *audioType = (CAudioInfo::EAudioType)i;
             return;
         }
     }
     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED_TYPE, "The streamType of output is not supported [streamType:%s]", streamType);
-    return;
 }
 
index 0be4dda..7c4863c 100644 (file)
@@ -37,22 +37,6 @@ CAudioInput::CAudioInput(CAudioInfo& info) :
     mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN;
 }
 
-//LCOV_EXCL_START
-CAudioInput::CAudioInput(
-        unsigned int            sampleRate,
-        CAudioInfo::EChannel    channel,
-        CAudioInfo::ESampleType type,
-        CAudioInfo::EAudioType  audioType) :
-    __mIsUsedSyncRead(true),
-    __mIsInit(false) {
-    mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_IN;
-    mAudioInfo = CAudioInfo(sampleRate, channel, type, audioType, -1);
-}
-//LCOV_EXCL_STOP
-
-CAudioInput::~CAudioInput() {
-}
-
 void CAudioInput::onStream(CPulseAudioClient* pClient, size_t length) {
     assert(pClient);
 
@@ -60,7 +44,7 @@ void CAudioInput::onStream(CPulseAudioClient* pClient, size_t length) {
      * Does not call CAudioIO::onStream() for synchronization
      * if a user is using read()
      */
-    if (__mIsUsedSyncRead == true) {
+    if (__mIsUsedSyncRead) {
 #ifdef _AUDIO_IO_DEBUG_TIMING_
         AUDIO_IO_LOGD("Sync Read Mode! - pClient:[%p], length:[%zu]", pClient, length);
 #endif
@@ -76,23 +60,23 @@ void CAudioInput::onStream(CPulseAudioClient* pClient, size_t length) {
     CAudioIO::onStream(pClient, length);
 }
 
-void CAudioInput::__setInit(bool flag) {
+void CAudioInput::__setInit(bool flag) noexcept {
     __mIsInit = flag;
 }
 
-bool CAudioInput::__IsInit() {
-    return (CAudioIO::isInit() == true && __mIsInit == true);
+bool CAudioInput::__IsInit() noexcept {
+    return (CAudioIO::isInit() && __mIsInit);
 }
 
-bool CAudioInput::__IsReady() {
+bool CAudioInput::__IsReady() noexcept {
     return CAudioIO::IsReady();
 }
 
 void CAudioInput::initialize() {
-    if (__IsInit() == true)
+    if (__IsInit())
         return;
 
-    if (cpp_audio_in_has_record_privilege() == false)
+    if (!cpp_audio_in_has_record_privilege())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_PERMISSION_DENIED, "No privilege for record");
 
     try {
@@ -107,7 +91,7 @@ void CAudioInput::initialize() {
 }
 
 void CAudioInput::finalize() {
-    if (__IsInit() == false) {
+    if (!__IsInit()) {
         AUDIO_IO_LOGD("Did not initialize");
         return;
     }
@@ -118,10 +102,10 @@ void CAudioInput::finalize() {
 }
 
 void CAudioInput::prepare() {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CAudioInput");
 
-    if (__IsReady() == true) {
+    if (__IsReady()) {
         AUDIO_IO_LOGD("Already prepared CAudioInput");
         CAudioIO::prepare();
         return;
@@ -168,11 +152,11 @@ void CAudioInput::prepare() {
 }
 
 void CAudioInput::unprepare() {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize CAudioInput");
 
-    if (__IsReady() == false) {
+    if (!__IsReady()) {
         AUDIO_IO_LOGD("Already unprepared");
         return;
     }
@@ -195,7 +179,7 @@ void CAudioInput::unprepare() {
 }
 
 void CAudioInput::pause() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioInput");
 
@@ -203,7 +187,7 @@ void CAudioInput::pause() {
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE,
                         "Can't pause if not in Running state");
 
-    if (mpPulseAudioClient->isInThread() == true)
+    if (mpPulseAudioClient->isInThread())
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't pause in thread");
 
     CAudioIO::pause();
@@ -211,7 +195,7 @@ void CAudioInput::pause() {
 }
 
 void CAudioInput::resume() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioInput");
 
@@ -219,7 +203,7 @@ void CAudioInput::resume() {
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE,
                         "Can't resume if not in Paused state");
 
-    if (mpPulseAudioClient->isInThread() == true)
+    if (mpPulseAudioClient->isInThread())
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't resume in thread");
 
     CAudioIO::resume();
@@ -227,7 +211,7 @@ void CAudioInput::resume() {
 }
 
 void CAudioInput::flush() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioInput");
 
@@ -235,7 +219,7 @@ void CAudioInput::flush() {
 }
 
 int CAudioInput::getBufferSize() {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CAudioInput");
 
     /* FIXME : return calculated size here to satisfy backward compatibility */
@@ -243,24 +227,22 @@ int CAudioInput::getBufferSize() {
 }
 
 void CAudioInput::setStreamCallback(SStreamCallback callback) {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CAudioInput");
 
-    if (callback.onStream == NULL)
-        __mIsUsedSyncRead = true;
-    else
-        __mIsUsedSyncRead = false;
+    __mIsUsedSyncRead = (callback.onStream == nullptr);
+
     AUDIO_IO_LOGD("__mIsUsedSyncRead = %d", __mIsUsedSyncRead);
 
     CAudioIO::setStreamCallback(callback);
 }
 
 size_t CAudioInput::read(void* buffer, size_t length) {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioInput");
 
-    if (buffer == NULL)
+    if (!buffer)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "Parameters are NULL buffer:%p", buffer);
 
@@ -269,7 +251,7 @@ size_t CAudioInput::read(void* buffer, size_t length) {
                         "Can't read if not in Running state");
 
     /* Checks synchronous flag */
-    if (__mIsUsedSyncRead == false)
+    if (!__mIsUsedSyncRead)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION,
                         "Invalid operation of read() if receive stream callback");
 
@@ -279,7 +261,7 @@ size_t CAudioInput::read(void* buffer, size_t length) {
         internalLock();
 
         // If another thread did call unprepare, do not read
-        if (mpPulseAudioClient == NULL)
+        if (!mpPulseAudioClient)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                             "Did not initialize CPulseAudioClient");
 
@@ -297,16 +279,16 @@ size_t CAudioInput::read(void* buffer, size_t length) {
 }
 
 int CAudioInput::peek(const void** buffer, size_t* length) {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioInput");
 
-    if (buffer == NULL || length == NULL)
+    if (buffer == nullptr || length == nullptr)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "Parameters are NULL buffer:%p, length:%p", buffer, length);
 
     /* Checks synchronous flag */
-    if (__mIsUsedSyncRead == true)
+    if (__mIsUsedSyncRead)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION,
                         "Invalid operation of peek() if does not receive a stream callback");
 
@@ -314,12 +296,12 @@ int CAudioInput::peek(const void** buffer, size_t* length) {
 }
 
 int CAudioInput::drop() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioInput");
 
     /* Checks synchronous flag */
-    if (__mIsUsedSyncRead == true)
+    if (__mIsUsedSyncRead)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION,
                         "Invalid operation of drop() if does not receive a stream callback");
 
index 2aaf058..f122752 100644 (file)
@@ -26,6 +26,7 @@ using namespace tizen_media_audio;
 /**
  * class CAudioOutput
  */
+
 CAudioOutput::CAudioOutput(CAudioInfo& info) :
     CAudioIO(info),
     __mIsUsedSyncWrite(false),
@@ -33,22 +34,6 @@ CAudioOutput::CAudioOutput(CAudioInfo& info) :
     mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_OUT;
 }
 
-//LCOV_EXCL_START
-CAudioOutput::CAudioOutput(
-        unsigned int            sampleRate,
-        CAudioInfo::EChannel    channel,
-        CAudioInfo::ESampleType sampleType,
-        CAudioInfo::EAudioType  audioType) :
-    __mIsUsedSyncWrite(false),
-    __mIsInit(false) {
-    mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_OUT;
-    mAudioInfo = CAudioInfo(sampleRate, channel, sampleType, audioType, -1);
-}
-//LCOV_EXCL_STOP
-
-CAudioOutput::~CAudioOutput() {
-}
-
 void CAudioOutput::onStream(CPulseAudioClient* pClient, size_t length) {
     assert(pClient);
 
@@ -56,7 +41,7 @@ void CAudioOutput::onStream(CPulseAudioClient* pClient, size_t length) {
      * Does not call CAudioIO::onStream() for synchronization
      * if a user is using write()
      */
-    if (__mIsUsedSyncWrite == true) {
+    if (__mIsUsedSyncWrite) {
 #ifdef _AUDIO_IO_DEBUG_TIMING_
         AUDIO_IO_LOGD("Sync Write Mode! - signal! - pClient:[%p], length:[%zu]", pClient, length);
 #endif
@@ -73,20 +58,20 @@ void CAudioOutput::onStream(CPulseAudioClient* pClient, size_t length) {
     CAudioIO::onStream(pClient, length);
 }
 
-void CAudioOutput::__setInit(bool flag) {
+void CAudioOutput::__setInit(bool flag) noexcept {
     __mIsInit = flag;
 }
 
-bool CAudioOutput::__IsInit() {
-    return (CAudioIO::isInit() == true && __mIsInit == true);
+bool CAudioOutput::__IsInit() noexcept {
+    return (CAudioIO::isInit() && __mIsInit);
 }
 
-bool CAudioOutput::__IsReady() {
+bool CAudioOutput::__IsReady() noexcept {
     return CAudioIO::IsReady();
 }
 
 void CAudioOutput::initialize() {
-    if (__IsInit() == true)
+    if (__IsInit())
         return;
 
     try {
@@ -101,7 +86,7 @@ void CAudioOutput::initialize() {
 }
 
 void CAudioOutput::finalize() {
-    if (__IsInit() == false) {
+    if (!__IsInit()) {
         AUDIO_IO_LOGD("Did not initialize");
         return;
     }
@@ -112,10 +97,10 @@ void CAudioOutput::finalize() {
 }
 
 void CAudioOutput::prepare() {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CAudioOutput");
 
-    if (__IsReady() == true) {
+    if (__IsReady()) {
         AUDIO_IO_LOGD("Already prepared CAudioOutput");
         CAudioIO::prepare();
         return;
@@ -172,11 +157,11 @@ void CAudioOutput::prepare() {
 }
 
 void CAudioOutput::unprepare() {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize CAudioOutput");
 
-    if (__IsReady() == false) {
+    if (!__IsReady()) {
         AUDIO_IO_LOGD("Already unprepared");
         return;
     }
@@ -199,7 +184,7 @@ void CAudioOutput::unprepare() {
 }
 
 void CAudioOutput::pause() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioOutput");
 
@@ -207,7 +192,7 @@ void CAudioOutput::pause() {
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE,
                         "Can't pause if not in Running state");
 
-    if (mpPulseAudioClient->isInThread() == true)
+    if (mpPulseAudioClient->isInThread() )
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't pause in thread");
 
     CAudioIO::pause();
@@ -215,7 +200,7 @@ void CAudioOutput::pause() {
 }
 
 void CAudioOutput::resume() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioOutput");
 
@@ -223,7 +208,7 @@ void CAudioOutput::resume() {
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_STATE,
                         "Can't resume if not in Paused state");
 
-    if (mpPulseAudioClient->isInThread() == true)
+    if (mpPulseAudioClient->isInThread())
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't resume in thread");
 
     CAudioIO::resume();
@@ -231,7 +216,7 @@ void CAudioOutput::resume() {
 }
 
 void CAudioOutput::drain() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioOutput");
 
@@ -242,7 +227,7 @@ void CAudioOutput::drain() {
 }
 
 void CAudioOutput::flush() {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioOutput");
 
@@ -250,7 +235,7 @@ void CAudioOutput::flush() {
 }
 
 int CAudioOutput::getBufferSize() {
-    if (__IsInit() == false)
+    if (!__IsInit())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioOutput");
 
@@ -259,11 +244,11 @@ int CAudioOutput::getBufferSize() {
 }
 
 size_t CAudioOutput::write(const void* buffer, size_t length) {
-    if (__IsInit() == false || __IsReady() == false)
+    if (!__IsInit() || !__IsReady())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                         "Did not initialize or prepare CAudioOutput");
 
-    if (buffer == NULL)
+    if (!buffer)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                "Parameters are invalid - buffer:%p, length:%zu", buffer, length);
 
@@ -272,7 +257,7 @@ size_t CAudioOutput::write(const void* buffer, size_t length) {
                         "Can't write if not in Running state");
 
     /* When write() is called in PulseAudio callback, bypass a pcm data to CPulseAudioClient (For Asynchronous) */
-    if (mpPulseAudioClient && mpPulseAudioClient->isInThread() == true) {
+    if (mpPulseAudioClient && mpPulseAudioClient->isInThread()) {
         int ret = mpPulseAudioClient->write(buffer, length);
         if (ret < 0)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION,
@@ -288,7 +273,7 @@ size_t CAudioOutput::write(const void* buffer, size_t length) {
         internalLock();
 
         // If another thread did call unprepare, do not write
-        if (mpPulseAudioClient == NULL)
+        if (!mpPulseAudioClient)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED,
                             "Did not initialize CPulseAudioClient");
 
index 4423dda..0676cb8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
git st* Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@
 #include "CAudioIODef.h"
 #include <unistd.h>
 #include <inttypes.h>
+
 #ifdef ENABLE_DPM
 #include <dpm/restriction.h>
 #endif
@@ -40,13 +41,13 @@ CPulseAudioClient::CPulseAudioClient(
     __mDirection(direction),
     __mSpec(spec),
     __mpListener(listener),
-    __mpMainloop(NULL),
-    __mpContext(NULL),
-    __mpStream(NULL),
-    __mpPropList(NULL),
+    __mpMainloop(nullptr),
+    __mpContext(nullptr),
+    __mpStream(nullptr),
+    __mpPropList(nullptr),
     __mIsInit(false),
     __mIsOperationSuccess(false),
-    __mpSyncReadDataPtr(NULL),
+    __mpSyncReadDataPtr(nullptr),
     __mSyncReadIndex(0),
     __mSyncReadLength(0),
     __mIsUsedSyncRead(false),
@@ -60,7 +61,7 @@ CPulseAudioClient::~CPulseAudioClient() {
 }
 
 void CPulseAudioClient::__contextStateChangeCb(pa_context* c, void* user_data) {
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
     assert(pClient);
     assert(c);
 
@@ -85,21 +86,10 @@ void CPulseAudioClient::__contextStateChangeCb(pa_context* c, void* user_data) {
 }
 
 //LCOV_EXCL_START
-void CPulseAudioClient::__successContextCb(pa_context* c, int success, void* user_data) {
-    AUDIO_IO_LOGD("pa_context[%p], success[%d], user_data[%p]", c, success, user_data);
-    assert(c);
-    assert(user_data);
-
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
-    pClient->__mIsOperationSuccess = static_cast<bool>(success);
-
-    pa_threaded_mainloop_signal(pClient->__mpMainloop, 0);
-}
-
 static bool __is_microphone_restricted(void) {
     int state = 1;
 #ifdef ENABLE_DPM
-    device_policy_manager_h dpm_h = NULL;
+    device_policy_manager_h dpm_h = nullptr;
     int ret = 0;
 
     if ((dpm_h = dpm_manager_create())) {
@@ -120,7 +110,7 @@ void CPulseAudioClient::__streamStateChangeCb(pa_stream* s, void* user_data) {
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
 
     switch (pa_stream_get_state(s)) {
     case PA_STREAM_READY:
@@ -157,13 +147,12 @@ void CPulseAudioClient::__streamCaptureCb(pa_stream* s, size_t length, void* use
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
     assert(pClient->__mpListener);
     assert(pClient->__mpMainloop);
 
-    if (pClient->__mIsUsedSyncRead == true) {
+    if (pClient->__mIsUsedSyncRead)
         pa_threaded_mainloop_signal(pClient->__mpMainloop, 0);
-    }
 
     pClient->__mpListener->onStream(pClient, length);
 }
@@ -181,11 +170,11 @@ void CPulseAudioClient::__streamPlaybackCb(pa_stream* s, size_t length, void* us
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
     assert(pClient->__mpListener);
 
 #ifndef DISABLE_MOBILE_BACK_COMP
-    if (pClient->__mIsInit == false) {
+    if (!pClient->__mIsInit) {
         AUDIO_IO_LOGD("Occurred this listener when an out stream is on the way to create : Write dummy, length[%zu]", length);
         __dummy_write(s, length);
         return;
@@ -215,7 +204,7 @@ void CPulseAudioClient::__streamLatencyUpdateCb(pa_stream* s, void* user_data) {
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
 
     pa_threaded_mainloop_signal(pClient->__mpMainloop, 0);
 }
@@ -224,7 +213,7 @@ void CPulseAudioClient::__streamStartedCb(pa_stream* s, void* user_data) {
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
 
     AUDIO_IO_LOGD("stream %p started.", pClient);
 
@@ -235,7 +224,7 @@ void CPulseAudioClient::__streamUnderflowCb(pa_stream* s, void* user_data) {
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
 
     AUDIO_IO_LOGD("stream %p UnderFlow...", pClient);
 
@@ -249,10 +238,9 @@ void CPulseAudioClient::__streamEventCb(pa_stream* s, const char *name, pa_propl
 
     AUDIO_IO_LOGE("NAME : %s, Prop : %p", name, pl);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
-    if (strcmp(name, PA_STREAM_EVENT_POP_TIMEOUT) == 0) {
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
+    if (strcmp(name, PA_STREAM_EVENT_POP_TIMEOUT) == 0)
         pa_operation_unref(pa_stream_cork(pClient->__mpStream, 1, NULL, NULL));
-    }
 }
 //LCOV_EXCL_STOP
 
@@ -261,7 +249,7 @@ void CPulseAudioClient::__successStreamCb(pa_stream* s, int success, void* user_
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
     pClient->__mIsOperationSuccess = static_cast<bool>(success);
 
     pa_threaded_mainloop_signal(pClient->__mpMainloop, 0);
@@ -273,7 +261,7 @@ void CPulseAudioClient::__successDrainCbInThread(pa_stream* s, int success, void
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
     pClient->__mIsOperationSuccess = static_cast<bool>(success);
     pClient->__mIsDraining = false;
 }
@@ -284,7 +272,7 @@ void CPulseAudioClient::__successDrainCb(pa_stream* s, int success, void* user_d
     assert(s);
     assert(user_data);
 
-    CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+    auto pClient = static_cast<CPulseAudioClient*>(user_data);
     pClient->__mIsOperationSuccess = static_cast<bool>(success);
     pClient->__mIsDraining = false;
 
@@ -292,9 +280,8 @@ void CPulseAudioClient::__successDrainCb(pa_stream* s, int success, void* user_d
 }
 
 void CPulseAudioClient::initialize() {
-    if (__mIsInit == true) {
+    if (__mIsInit)
         return;
-    }
 
     int ret = 0;
     int err = 0;
@@ -302,20 +289,18 @@ void CPulseAudioClient::initialize() {
     try {
         // Allocates PA proplist
         __mpPropList = pa_proplist_new();
-        if (__mpPropList == NULL) {
+        if (!__mpPropList)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_proplist_new()"); //LCOV_EXCL_LINE
-        }
 
         // Adds values on proplist for delivery to PULSEAUDIO
-        char *streamType = NULL;
+        char *streamType = nullptr;
         CAudioInfo::EAudioType audioType = __mSpec.getAudioInfo().getAudioType();
         __mSpec.getAudioInfo().convertAudioType2StreamType(audioType, &streamType);
         pa_proplist_sets(__mpPropList, PA_PROP_MEDIA_ROLE, streamType);
 
         int index = __mSpec.getAudioInfo().getAudioIndex();
-        if (index >= 0) {
+        if (index >= 0)
             pa_proplist_setf(__mpPropList, PA_PROP_MEDIA_PARENT_ID, "%u", (unsigned int) index);
-        }
 
         // Adds latency on proplist for delivery to PULSEAUDIO
         AUDIO_IO_LOGD("LATENCY : %s[%d]", __mSpec.getStreamLatencyToString(), static_cast<int>(__mSpec.getStreamLatency()));
@@ -323,23 +308,20 @@ void CPulseAudioClient::initialize() {
 
         // Allocates PA mainloop
         __mpMainloop = pa_threaded_mainloop_new();
-        if (__mpMainloop == NULL) {
+        if (!__mpMainloop)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_threaded_mainloop_new()"); //LCOV_EXCL_LINE
-        }
 
         // Allocates PA context
         __mpContext = pa_context_new(pa_threaded_mainloop_get_api(__mpMainloop), CLIENT_NAME);
-        if (__mpContext == NULL) {
+        if (!__mpContext)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_context_new()"); //LCOV_EXCL_LINE
-        }
 
         // Sets context state changed callback
         pa_context_set_state_callback(__mpContext, __contextStateChangeCb, this);
 
         // Connects this client with PA server
-        if (pa_context_connect(__mpContext, NULL, PA_CONTEXT_NOFLAGS, NULL) < 0) {
+        if (pa_context_connect(__mpContext, NULL, PA_CONTEXT_NOFLAGS, NULL) < 0)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_context_connect()"); //LCOV_EXCL_LINE
-        }
 
         // LOCK for synchronous connection
         pa_threaded_mainloop_lock(__mpMainloop);
@@ -357,9 +339,8 @@ void CPulseAudioClient::initialize() {
             pa_context_state_t state;
             state = pa_context_get_state(__mpContext);
 
-            if (state == PA_CONTEXT_READY) {
+            if (state == PA_CONTEXT_READY)
                 break;
-            }
 
             if (!PA_CONTEXT_IS_GOOD(state)) {
 //LCOV_EXCL_START
@@ -378,7 +359,7 @@ void CPulseAudioClient::initialize() {
         pa_channel_map map  = __mSpec.getChannelMap();
 
         __mpStream = pa_stream_new_with_proplist(__mpContext, __mSpec.getStreamName(), &ss, &map, __mpPropList);
-        if (__mpStream == NULL) {
+        if (!__mpStream) {
 //LCOV_EXCL_START
             pa_threaded_mainloop_unlock(__mpMainloop);
             THROW_ERROR_MSG(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_new_with_proplist()");
@@ -399,7 +380,7 @@ void CPulseAudioClient::initialize() {
         // Connect stream with PA Server
 
         if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
-            pa_stream_flags_t flags = static_cast<pa_stream_flags_t>(
+            auto flags = static_cast<pa_stream_flags_t>(
                     PA_STREAM_INTERPOLATE_TIMING |
                     PA_STREAM_ADJUST_LATENCY     |
 #ifndef DISABLE_MOBILE_BACK_COMP
@@ -409,7 +390,7 @@ void CPulseAudioClient::initialize() {
 
             ret = pa_stream_connect_playback(__mpStream, NULL, NULL, flags, NULL, NULL);
         } else {
-            pa_stream_flags_t flags = static_cast<pa_stream_flags_t>(
+            auto flags = static_cast<pa_stream_flags_t>(
                     PA_STREAM_INTERPOLATE_TIMING |
                     PA_STREAM_ADJUST_LATENCY     |
 #ifndef DISABLE_MOBILE_BACK_COMP
@@ -429,8 +410,7 @@ void CPulseAudioClient::initialize() {
         }
 
         while (true) {
-            pa_stream_state_t state;
-            state = pa_stream_get_state(__mpStream);
+            pa_stream_state_t state = pa_stream_get_state(__mpStream);
 
             if (state == PA_STREAM_READY) {
                 AUDIO_IO_LOGD("STREAM READY");
@@ -440,11 +420,10 @@ void CPulseAudioClient::initialize() {
             if (!PA_STREAM_IS_GOOD(state)) {
                 err = pa_context_errno(__mpContext);
                 pa_threaded_mainloop_unlock(__mpMainloop);
-                if (err == PA_ERR_ACCESS) {
+                if (err == PA_ERR_ACCESS)
                     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_DEVICE_POLICY_RESTRICTION, "pa_stream's state is not good : err[%d]", err);
-                } else {
+                else
                     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION, "pa_stream's state is not good : err[%d]", err); //LCOV_EXCL_LINE
-                }
             }
 
             /* Wait until the stream is ready */
@@ -464,7 +443,7 @@ void CPulseAudioClient::initialize() {
 void CPulseAudioClient::finalize() {
     AUDIO_IO_LOGD("");
 
-    if (__mpMainloop && isInThread() == false)
+    if (__mpMainloop && !isInThread())
         pa_threaded_mainloop_lock(__mpMainloop);
 
     /* clear callbacks */
@@ -477,62 +456,57 @@ void CPulseAudioClient::finalize() {
         pa_stream_set_event_callback(__mpStream, NULL, NULL);
     }
 
-    if (__mpMainloop && isInThread() == false)
+    if (__mpMainloop && !isInThread())
         pa_threaded_mainloop_unlock(__mpMainloop);
 
     /* Wait for drain complete if draining before finalize */
     if (__mIsDraining) {
         unsigned int drain_wait_count = 0;
-        while (__mIsDraining && drain_wait_count++ < drain_wait_max_count) {
+        while (__mIsDraining && drain_wait_count++ < drain_wait_max_count)
             usleep(drain_wait_interval);
-        }
         AUDIO_IO_LOGD("wait for drain complete!!!! [%d * %d usec]",
                       drain_wait_count, drain_wait_interval);
     }
 
-    if (__mpMainloop != NULL) {
+    if (__mpMainloop)
         pa_threaded_mainloop_stop(__mpMainloop);
-    }
 
-    if (__mpStream != NULL) {
+    if (__mpStream) {
         pa_stream_disconnect(__mpStream);
         pa_stream_unref(__mpStream);
-        __mpStream = NULL;
+        __mpStream = nullptr;
     }
 
-    if (__mpContext != NULL) {
+    if (__mpContext) {
         pa_context_disconnect(__mpContext);
         pa_context_unref(__mpContext);
-        __mpContext = NULL;
+        __mpContext = nullptr;
     }
 
-    if (__mpMainloop != NULL) {
+    if (__mpMainloop) {
         pa_threaded_mainloop_free(__mpMainloop);
-        __mpMainloop = NULL;
+        __mpMainloop = nullptr;
     }
 
-    if (__mpPropList != NULL) {
+    if (__mpPropList) {
         pa_proplist_free(__mpPropList);
-        __mpPropList = NULL;
+        __mpPropList = nullptr;
     }
 
     __mIsInit = false;
 }
 
 int CPulseAudioClient::read(void* buffer, size_t length) {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
-    if (buffer == NULL) {
+    if (!buffer)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The parameter is invalid : buffer[%p]", buffer);
-    }
 
-    if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
+    if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "The Playback client couldn't use this function");
-    }
 
     size_t lengthIter = length;
     int ret = 0;
@@ -545,33 +519,30 @@ int CPulseAudioClient::read(void* buffer, size_t length) {
         while (lengthIter > 0) {
             size_t l;
 
-            while (__mpSyncReadDataPtr == NULL) {
+            while (!__mpSyncReadDataPtr) {
                 ret = pa_stream_peek(__mpStream, &__mpSyncReadDataPtr, &__mSyncReadLength);
-                if (ret != 0) {
+                if (ret != 0)
                     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION, "Failed pa_stream_peek() : ret[%d]", ret);
-                }
 
                 if (__mSyncReadLength <= 0) {
 #ifdef _AUDIO_IO_DEBUG_TIMING_
                     AUDIO_IO_LOGD("readLength(%zu byte) is not valid. wait...", __mSyncReadLength);
 #endif
                     pa_threaded_mainloop_wait(__mpMainloop);
-                } else if (__mpSyncReadDataPtr == NULL) {
+                } else if (!__mpSyncReadDataPtr) {
                     // Data peeked, but it doesn't have any data
                     ret = pa_stream_drop(__mpStream);
-                    if (ret != 0) {
+                    if (ret != 0)
                         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION, "Failed pa_stream_drop() : ret[%d]", ret); //LCOV_EXCL_LINE
-                    }
                 } else {
                     __mSyncReadIndex = 0;
                 }
             }
 
-            if (__mSyncReadLength < lengthIter) {
+            if (__mSyncReadLength < lengthIter)
                 l = __mSyncReadLength;
-            } else {
+            else
                 l = lengthIter;
-            }
 
             // Copy partial pcm data on out parameter
 #ifdef _AUDIO_IO_DEBUG_TIMING_
@@ -592,12 +563,11 @@ int CPulseAudioClient::read(void* buffer, size_t length) {
                 AUDIO_IO_LOGD("__mSyncReadLength is zero, do drop()");
 #endif
                 ret = pa_stream_drop(__mpStream);
-                if (ret != 0) {
+                if (ret != 0)
                     THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION, "Failed pa_stream_drop() : ret[%d]", ret); //LCOV_EXCL_LINE
-                }
 
                 // Reset the internal pointer
-                __mpSyncReadDataPtr = NULL;
+                __mpSyncReadDataPtr = nullptr;
                 __mSyncReadLength   = 0;
                 __mSyncReadIndex    = 0;
             }
@@ -615,23 +585,20 @@ int CPulseAudioClient::read(void* buffer, size_t length) {
 }
 
 int CPulseAudioClient::peek(const void** buffer, size_t* length) {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
-    if (buffer == NULL || length == NULL) {
+    if (!buffer || !length)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The parameter is invalid : buffer[%p], length[%p]", buffer, length);
-    }
 
-    if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
+    if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "The Playback client couldn't use this function");
-    }
 
     int ret = 0;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
         ret = pa_stream_peek(__mpStream, buffer, length);
         pa_threaded_mainloop_unlock(__mpMainloop);
@@ -643,17 +610,15 @@ int CPulseAudioClient::peek(const void** buffer, size_t* length) {
     AUDIO_IO_LOGD("buffer[%p], length[%zu]", *buffer, *length);
 #endif
 
-    if (ret < 0) {
+    if (ret < 0)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_peek() : err[%d]", ret); //LCOV_EXCL_LINE
-    }
 
     return ret;
 }
 
 int CPulseAudioClient::drop() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
     AUDIO_IO_LOGD("");
@@ -661,13 +626,12 @@ int CPulseAudioClient::drop() {
 
     checkRunningState();
 
-    if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
+    if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "The Playback client couldn't use this function");
-    }
 
     int ret = 0;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
         ret = pa_stream_drop(__mpStream);
         pa_threaded_mainloop_unlock(__mpMainloop);
@@ -675,21 +639,18 @@ int CPulseAudioClient::drop() {
         ret = pa_stream_drop(__mpStream);
     }
 
-    if (ret < 0) {
+    if (ret < 0)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_drop() : err[%d]", ret); //LCOV_EXCL_LINE
-    }
 
     return ret;
 }
 
 int CPulseAudioClient::write(const void* data, size_t length) {
-    if (data == NULL) {
+    if (!data)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The parameter is invalid");
-    }
 
-    if (__mDirection == EStreamDirection::STREAM_DIRECTION_RECORD) {
+    if (__mDirection == EStreamDirection::STREAM_DIRECTION_RECORD)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "The Playback client couldn't use this function");
-    }
 
     int ret = 0;
 
@@ -697,7 +658,7 @@ int CPulseAudioClient::write(const void* data, size_t length) {
     AUDIO_IO_LOGD("data[%p], length[%zu], First[%d]", data, length, __mIsFirstStream);
 #endif
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
         if (pa_stream_is_corked(__mpStream)) {
             AUDIO_IO_LOGW("stream is corked...do uncork here first!!!!");
@@ -730,9 +691,8 @@ int CPulseAudioClient::write(const void* data, size_t length) {
         ret = pa_stream_write(__mpStream, data, length, NULL, 0LL, PA_SEEK_RELATIVE);
     }
 
-    if (ret < 0) {
+    if (ret < 0)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_write() : err[%d]", ret); //LCOV_EXCL_LINE
-    }
 
     return ret;
 }
@@ -740,41 +700,36 @@ int CPulseAudioClient::write(const void* data, size_t length) {
 void CPulseAudioClient::cork(bool cork) {
     AUDIO_IO_LOGD("cork[%d]", cork);
 
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
-    if (isInThread() == true) {
+    if (isInThread())
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "This operation is not supported in callback");
-    }
 
     checkRunningState();
 
     // Set __mIsFirstStream flag when uncork(resume) stream, because prebuf will be enable again
-    if (cork == false)
+    if (!cork)
         __mIsFirstStream = true;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
         pa_operation_unref(pa_stream_cork(__mpStream, static_cast<int>(cork), __successStreamCb, this));
         pa_threaded_mainloop_unlock(__mpMainloop);
     } else {
         pa_operation_unref(pa_stream_cork(__mpStream, static_cast<int>(cork), __successStreamCb, this));
     }
-
-    return;
 }
 
 bool CPulseAudioClient::isCorked() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
     int isCork = 0;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
         isCork = pa_stream_is_corked(__mpStream);
         pa_threaded_mainloop_unlock(__mpMainloop);
@@ -789,9 +744,8 @@ bool CPulseAudioClient::isCorked() {
 }
 
 bool CPulseAudioClient::drain() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
@@ -810,14 +764,14 @@ bool CPulseAudioClient::drain() {
         return true;
     }
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         AUDIO_IO_LOGD("drain");
         pa_threaded_mainloop_lock(__mpMainloop);
         pa_operation* o = pa_stream_drain(__mpStream, __successDrainCb, this);
         __mIsDraining = true;
-        while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) {
+        while (pa_operation_get_state(o) == PA_OPERATION_RUNNING)
             pa_threaded_mainloop_wait(__mpMainloop);
-        }
+
         pa_operation_unref(o);
         pa_threaded_mainloop_unlock(__mpMainloop);
         AUDIO_IO_LOGD("drain done");
@@ -831,13 +785,12 @@ bool CPulseAudioClient::drain() {
 }
 
 bool CPulseAudioClient::flush() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         AUDIO_IO_LOGD("flush");
         pa_threaded_mainloop_lock(__mpMainloop);
         pa_operation_unref(pa_stream_flush(__mpStream, __successStreamCb, this));
@@ -851,19 +804,17 @@ bool CPulseAudioClient::flush() {
 }
 
 size_t CPulseAudioClient::getWritableSize() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
-    if (__mDirection != EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
+    if (__mDirection != EStreamDirection::STREAM_DIRECTION_PLAYBACK)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "This client is used for Playback");
-    }
 
     size_t ret = 0;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
         ret = pa_stream_writable_size(__mpStream);
         pa_threaded_mainloop_unlock(__mpMainloop);
@@ -875,22 +826,21 @@ size_t CPulseAudioClient::getWritableSize() {
 }
 
 void CPulseAudioClient::checkRunningState() {
-    if (__mpContext == NULL || PA_CONTEXT_IS_GOOD(pa_context_get_state(__mpContext)) == 0) {
+    if (!__mpContext || !PA_CONTEXT_IS_GOOD(pa_context_get_state(__mpContext)))
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_INITIALIZED, "The context[%p] is not created or not good state", __mpContext);
-    }
-    if (__mpStream == NULL || PA_STREAM_IS_GOOD(pa_stream_get_state(__mpStream)) == 0) {
+
+    if (!__mpStream || !PA_STREAM_IS_GOOD(pa_stream_get_state(__mpStream)))
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_INITIALIZED, "The stream[%p] is not created or not good state", __mpStream);
-    }
-    if (pa_context_get_state(__mpContext) != PA_CONTEXT_READY || pa_stream_get_state(__mpStream) != PA_STREAM_READY) {
+
+    if (pa_context_get_state(__mpContext) != PA_CONTEXT_READY || pa_stream_get_state(__mpStream) != PA_STREAM_READY)
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_INITIALIZED, "The context[%p] or stream[%p] state is not ready", __mpContext, __mpStream);
-    }
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
     AUDIO_IO_LOGD("This client is running");
 #endif
 }
 
-bool CPulseAudioClient::isInThread() {
+bool CPulseAudioClient::isInThread() noexcept {
     int ret = pa_threaded_mainloop_in_thread(__mpMainloop);
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
@@ -901,21 +851,19 @@ bool CPulseAudioClient::isInThread() {
 
 //LCOV_EXCL_START
 size_t CPulseAudioClient::getReadableSize() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
-    if (__mDirection != EStreamDirection::STREAM_DIRECTION_RECORD) {
+    if (__mDirection != EStreamDirection::STREAM_DIRECTION_RECORD)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "This client is used for Capture");
-    }
 
     size_t ret = 0;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         pa_threaded_mainloop_lock(__mpMainloop);
-        ret = pa_stream_writable_size(__mpStream);
+        ret = pa_stream_readable_size(__mpStream);
         pa_threaded_mainloop_unlock(__mpMainloop);
     } else {
         ret = pa_stream_writable_size(__mpStream);
@@ -925,21 +873,19 @@ size_t CPulseAudioClient::getReadableSize() {
 }
 
 size_t CPulseAudioClient::getBufferSize() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
     size_t ret = 0;
 
     try {
-        if (isInThread() == false) {
+        if (!isInThread())
             pa_threaded_mainloop_lock(__mpMainloop);
-        }
 
         const pa_buffer_attr* attr = pa_stream_get_buffer_attr(__mpStream);
-        if (attr == NULL) {
+        if (!attr) {
             int _err = pa_context_errno(__mpContext);
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_get_buffer_attr() : err[%d]", _err);
         }
@@ -952,35 +898,31 @@ size_t CPulseAudioClient::getBufferSize() {
             AUDIO_IO_LOGD("RECORD buffer size[%zu]", ret);
         }
     } catch (CAudioError& e) {
-        if (isInThread() == false) {
+        if (!isInThread())
             pa_threaded_mainloop_unlock(__mpMainloop);
-        }
         throw;
     }
 
-    if (isInThread() == false) {
+    if (!isInThread())
         pa_threaded_mainloop_unlock(__mpMainloop);
-    }
 
     return ret;
 }
 
 pa_usec_t CPulseAudioClient::getLatency() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
     pa_usec_t ret = 0;
     int negative  = 0;
 
-    if (isInThread() == false) {
+    if (!isInThread()) {
         if (pa_stream_get_latency(__mpStream, &ret, &negative) < 0) {
             int _err = pa_context_errno(__mpContext);
-            if (_err != PA_ERR_NODATA) {
+            if (_err != PA_ERR_NODATA)
                 THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_get_latency() : err[%d]", _err);
-            }
         }
         return negative ? 0 : ret;
     }
@@ -989,14 +931,12 @@ pa_usec_t CPulseAudioClient::getLatency() {
 
     try {
         while (true) {
-            if (pa_stream_get_latency(__mpStream, &ret, &negative) >= 0) {
+            if (pa_stream_get_latency(__mpStream, &ret, &negative) >= 0)
                 break;
-            }
 
             int _err = pa_context_errno(__mpContext);
-            if (_err != PA_ERR_NODATA) {
+            if (_err != PA_ERR_NODATA)
                 THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_FAILED_OPERATION, "Failed pa_stream_get_latency() : err[%d]", _err);
-            }
 
             /* Wait until latency data is available again */
             pa_threaded_mainloop_wait(__mpMainloop);
@@ -1012,30 +952,26 @@ pa_usec_t CPulseAudioClient::getLatency() {
 }
 
 pa_usec_t CPulseAudioClient::getFinalLatency() {
-    if (__mIsInit == false) {
+    if (!__mIsInit)
         THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient");
-    }
 
     checkRunningState();
 
     pa_usec_t ret = 0;
-    uint32_t  ver = 0;
 
     try {
-        if (isInThread() == false) {
+        if (!isInThread())
             pa_threaded_mainloop_lock(__mpMainloop);
-        }
 
-        ver = pa_context_get_server_protocol_version(__mpContext);
+        uint32_t ver = pa_context_get_server_protocol_version(__mpContext);
         if (ver >= 13) {
             const pa_buffer_attr* buffer_attr = pa_stream_get_buffer_attr(__mpStream);
             const pa_sample_spec* sample_spec = pa_stream_get_sample_spec(__mpStream);
             const pa_timing_info* timing_info = pa_stream_get_timing_info(__mpStream);
 
-            if (buffer_attr == NULL || sample_spec == NULL || timing_info == NULL) {
+            if (!buffer_attr || !sample_spec || !timing_info)
                 THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed to get buffer_attr[%p] or sample_spec[%p] or timing_info[%p] from a pa_stream",
                         buffer_attr, sample_spec, timing_info);
-            }
 
             if (__mDirection == EStreamDirection::STREAM_DIRECTION_PLAYBACK) {
                 ret = (pa_bytes_to_usec(buffer_attr->tlength, sample_spec) + timing_info->configured_sink_usec);
@@ -1048,24 +984,14 @@ pa_usec_t CPulseAudioClient::getFinalLatency() {
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_SUPPORTED, "This version(ver.%d) is not supported", ver);
         }
 
-        if (isInThread() == false) {
+        if (!isInThread())
             pa_threaded_mainloop_unlock(__mpMainloop);
-        }
     } catch (CAudioError& e) {
-        if (isInThread() == false) {
+        if (!isInThread())
             pa_threaded_mainloop_unlock(__mpMainloop);
-        }
         throw;
     }
 
     return ret;
 }
-
-CPulseAudioClient::EStreamDirection CPulseAudioClient::getStreamDirection() {
-    return __mDirection;
-}
-
-CPulseStreamSpec CPulseAudioClient::getStreamSpec() {
-    return __mSpec;
-}
 //LCOV_EXCL_STOP
index def1833..d1a5e8b 100644 (file)
@@ -45,7 +45,7 @@ static const char* STREAM_LATENCY_DEFAULT_ASYNC = "default-async";
 //LCOV_EXCL_START
 CPulseStreamSpec::CPulseStreamSpec():
     __mLatency(EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT),
-    __mStreamName(NULL) {
+    __mStreamName(nullptr) {
     __adjustSpec();
 }
 //LCOV_EXCL_STOP
@@ -53,23 +53,11 @@ CPulseStreamSpec::CPulseStreamSpec():
 CPulseStreamSpec::CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo) :
     __mLatency(latency),
     __mAudioInfo(audioInfo),
-    __mStreamName(NULL) {
+    __mStreamName(nullptr) {
     __adjustSpec();
 }
 
-//LCOV_EXCL_START
-CPulseStreamSpec::CPulseStreamSpec(EStreamLatency latency, CAudioInfo& audioInfo, int customLatency) :
-    __mLatency(latency),
-    __mAudioInfo(audioInfo),
-    __mStreamName(NULL) {
-    __adjustSpec();
-}
-//LCOV_EXCL_STOP
-
-CPulseStreamSpec::~CPulseStreamSpec() {
-}
-
-void CPulseStreamSpec::__adjustSpec() {
+void CPulseStreamSpec::__adjustSpec() noexcept {
     // Sets a sampleRate
     __mSampleSpec.rate = __mAudioInfo.getSampleRate();
 
@@ -164,11 +152,11 @@ void CPulseStreamSpec::__adjustSpec() {
 //LCOV_EXCL_STOP
 }
 
-CPulseStreamSpec::EStreamLatency CPulseStreamSpec::getStreamLatency() {
+CPulseStreamSpec::EStreamLatency CPulseStreamSpec::getStreamLatency() noexcept {
     return __mLatency;
 }
 
-const char* CPulseStreamSpec::getStreamLatencyToString() {
+const char* CPulseStreamSpec::getStreamLatencyToString() noexcept {
     const char* latency;
 
     switch (__mLatency) {
@@ -214,18 +202,18 @@ const char* CPulseStreamSpec::getStreamLatencyToString() {
     return latency;
 }
 
-CAudioInfo& CPulseStreamSpec::getAudioInfo() {
+CAudioInfo& CPulseStreamSpec::getAudioInfo() noexcept {
     return __mAudioInfo;
 }
 
-pa_sample_spec CPulseStreamSpec::getSampleSpec() {
+pa_sample_spec CPulseStreamSpec::getSampleSpec() noexcept {
     return __mSampleSpec;
 }
 
-pa_channel_map CPulseStreamSpec::getChannelMap() {
+pa_channel_map CPulseStreamSpec::getChannelMap() noexcept {
     return __mChannelMap;
 }
 
-const char* CPulseStreamSpec::getStreamName() {
+const char* CPulseStreamSpec::getStreamName() noexcept {
     return __mStreamName;
 }
index d8a56c0..9efc812 100644 (file)
@@ -74,12 +74,12 @@ bool cpp_audio_in_has_record_privilege(void) {
     PrivilegeData prData;
 
     prData.paMainloop = pa_threaded_mainloop_new();
-    if (prData.paMainloop == NULL)
-        THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_threaded_mainloop_new()"); //LCOV_EXCL_LINE
+    if (!prData.paMainloop)
+        THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_threaded_mainloop_new()");
 
     c = pa_context_new(pa_threaded_mainloop_get_api(prData.paMainloop), CLIENT_NAME);
-    if (c == NULL)
-        THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_context_new()"); //LCOV_EXCL_LINE
+    if (!c)
+        THROW_ERROR_MSG(CAudioError::EError::ERROR_OUT_OF_MEMORY, "Failed pa_context_new()");
 
     pa_context_set_state_callback(c, __contextStateChangeCb, prData.paMainloop);
 
index d23f26f..d5370a6 100644 (file)
@@ -38,7 +38,7 @@ typedef struct audio_io_stream_cb_s {
     void* user_data;
     audio_in_stream_cb onStream;
 
-    audio_io_stream_cb_s() : user_data(NULL), onStream(NULL)
+    audio_io_stream_cb_s() : user_data(nullptr), onStream(nullptr)
     {/* Empty Body */}
 }   audio_io_stream_cb_s;
 
@@ -52,7 +52,7 @@ typedef struct audio_io_state_changed_cb_s {
     void* user_data;
     audio_in_state_changed_cb onStateChanged;
 
-    audio_io_state_changed_cb_s() : user_data(NULL), onStateChanged(NULL)
+    audio_io_state_changed_cb_s() : user_data(nullptr), onStateChanged(nullptr)
     {/* Empty Body */}
 }   audio_io_state_changed_cb_s;
 
@@ -70,7 +70,7 @@ typedef struct audio_io_s {
     audio_io_stream_cb_s stream_callback;
     audio_io_state_changed_cb_s state_changed_callback;
 
-    audio_io_s() : audioIoHandle(NULL)
+    audio_io_s() : audioIoHandle(nullptr)
     {/* Empty Body */}
 }   audio_io_s;
 
@@ -382,9 +382,9 @@ static void __handle_safe_free(audio_io_s* handle, void *obj, bool is_output) {
 
     VALID_POINTER_START(obj)
         if (is_output)
-            *(audio_out_h *)obj = NULL;
+            *(audio_out_h *)obj = nullptr;
         else
-            *(audio_in_h *)obj = NULL;
+            *(audio_in_h *)obj = nullptr;
     VALID_POINTER_END
 }
 
@@ -392,25 +392,23 @@ static void __handle_safe_free(audio_io_s* handle, void *obj, bool is_output) {
  * Implements CAPI functions
  */
 int cpp_audio_in_create(int sample_rate, audio_channel_e channel, audio_sample_type_e type, audio_in_h *input) {
-    audio_io_s* handle = NULL;
+    audio_io_s* handle = nullptr;
     bool mic_enable = false;
-    int ret = 0;
+
     try {
-        if (input == NULL) {
+        if (!input)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                   "Parameters are NULL input:%p", input);
-        }
 
         __check_audio_param(sample_rate, channel, type, false);
 
         AUDIO_IO_LOGD("samplerate:[%d] channel:[0x%x] sample_type:[0x%x]", sample_rate, channel, type);
 
         /* If MIC is not supported, return NOT_SUPPORTED error */
-        ret = system_info_get_platform_bool(FEATURE_MICROPHONE, &mic_enable);
+        int ret = system_info_get_platform_bool(FEATURE_MICROPHONE, &mic_enable);
         AUDIO_IO_LOGD("system_info_platform [%s]=[%d], ret[%d]", FEATURE_MICROPHONE, mic_enable, ret);
-        if (ret != SYSTEM_INFO_ERROR_NONE || !mic_enable) {
+        if (ret != SYSTEM_INFO_ERROR_NONE || !mic_enable)
             THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_SUPPORTED, "System doesn't support microphone!");
-        }
 
         CAudioInfo audioInfo = __generate_audio_input_info(sample_rate, channel, type);
 
@@ -425,8 +423,7 @@ int cpp_audio_in_create(int sample_rate, audio_channel_e channel, audio_sample_t
         __handle_safe_free(handle, (void *)input, false);
         return __convert_CAudioError(e);
     } catch (const std::bad_alloc&) {
-//LCOV_EXCL_START
-        CAudioError e = CAudioError::EError::ERROR_OUT_OF_MEMORY;
+        CAudioError e(CAudioError::EError::ERROR_OUT_OF_MEMORY);
         AUDIO_IO_LOGE("Failed to allocate handle");
         __handle_safe_free(handle, (void *)input, false);
         return __convert_CAudioError(e);
@@ -437,10 +434,10 @@ int cpp_audio_in_create(int sample_rate, audio_channel_e channel, audio_sample_t
 }
 
 int cpp_audio_in_destroy(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                   "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
@@ -463,10 +460,10 @@ int cpp_audio_in_destroy(audio_in_h input) {
 }
 
 int cpp_audio_in_set_sound_stream_info(audio_in_h input, sound_stream_info_h stream_info) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL || stream_info == NULL)
+        if (!handle || !stream_info)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, stream_info:%p", input, stream_info);
         assert(handle->audioIoHandle);
@@ -484,10 +481,10 @@ int cpp_audio_in_set_sound_stream_info(audio_in_h input, sound_stream_info_h str
 }
 
 int cpp_audio_in_prepare(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
@@ -505,10 +502,10 @@ int cpp_audio_in_prepare(audio_in_h input) {
 }
 
 int cpp_audio_in_unprepare(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
@@ -526,10 +523,10 @@ int cpp_audio_in_unprepare(audio_in_h input) {
 }
 
 int cpp_audio_in_pause(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
@@ -547,10 +544,10 @@ int cpp_audio_in_pause(audio_in_h input) {
 }
 
 int cpp_audio_in_resume(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
@@ -568,10 +565,10 @@ int cpp_audio_in_resume(audio_in_h input) {
 }
 
 int cpp_audio_in_flush(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
@@ -589,21 +586,20 @@ int cpp_audio_in_flush(audio_in_h input) {
 }
 
 int cpp_audio_in_read(audio_in_h input, void *buffer, unsigned int length) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
     int ret = 0;
 
     try {
-        if (handle == NULL || buffer == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle || !buffer)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, buffer:%p", input, buffer);
         assert(handle->audioIoHandle);
 
-        CAudioInput* inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
-        if (inputHandle == NULL) {
+        auto inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
+        if (!inputHandle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
-        }
 
-        size_t readn = inputHandle->read(buffer, static_cast<size_t>(length));
+        auto readn = inputHandle->read(buffer, static_cast<size_t>(length));
         ret = static_cast<int>(readn);
 #ifdef _AUDIO_IO_DEBUG_TIMING_
         AUDIO_IO_LOGD("readn:%zu", readn);
@@ -617,18 +613,17 @@ int cpp_audio_in_read(audio_in_h input, void *buffer, unsigned int length) {
 }
 
 int cpp_audio_in_get_buffer_size(audio_in_h input, int *size) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
-
     try {
-        if (handle == NULL || size == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle || !size)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, size:%p", input, size);
         assert(handle->audioIoHandle);
 
-        CAudioIO* inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
-        if (inputHandle == NULL) {
+        auto inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
+        if (!inputHandle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
-        }
+
         *size = inputHandle->getBufferSize();
     } catch (CAudioError& e) {
         AUDIO_IO_LOGE("%s", e.getErrorMsg());
@@ -639,10 +634,9 @@ int cpp_audio_in_get_buffer_size(audio_in_h input, int *size) {
 }
 
 int cpp_audio_in_get_sample_rate(audio_in_h input, int *sample_rate) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
-
     try {
-        if (handle == NULL || sample_rate == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle || !sample_rate)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, sample_rate:%p", input, sample_rate);
         assert(handle->audioIoHandle);
@@ -657,16 +651,15 @@ int cpp_audio_in_get_sample_rate(audio_in_h input, int *sample_rate) {
 }
 
 int cpp_audio_in_get_channel(audio_in_h input, audio_channel_e *channel) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
-
     try {
-        if (handle == NULL || channel == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle || !channel)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, channel:%p", input, channel);
         assert(handle->audioIoHandle);
 
-        const CAudioInfo::EChannel srcChannel = handle->audioIoHandle->getAudioInfo().getChannel();
-        audio_channel_e dstChannel = AUDIO_CHANNEL_MONO;
+        auto srcChannel = handle->audioIoHandle->getAudioInfo().getChannel();
+        auto dstChannel = AUDIO_CHANNEL_MONO;
         __convert_audio_info_channel_2_channel(srcChannel, dstChannel);
 
         *channel = dstChannel;
@@ -679,16 +672,15 @@ int cpp_audio_in_get_channel(audio_in_h input, audio_channel_e *channel) {
 }
 
 int cpp_audio_in_get_sample_type(audio_in_h input, audio_sample_type_e *type) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
-
     try {
-        if (handle == NULL || type == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle || !type)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, type:%p", input, type);
         assert(handle->audioIoHandle);
 
-        const CAudioInfo::ESampleType srcSampleType = handle->audioIoHandle->getAudioInfo().getSampleType();
-        audio_sample_type_e dstSampleType = AUDIO_SAMPLE_TYPE_U8;
+        auto srcSampleType = handle->audioIoHandle->getAudioInfo().getSampleType();
+        auto dstSampleType = AUDIO_SAMPLE_TYPE_U8;
         __convert_audio_info_sample_type_2_sample_type(srcSampleType, dstSampleType);
 
         *type = dstSampleType;
@@ -701,7 +693,7 @@ int cpp_audio_in_get_sample_type(audio_in_h input, audio_sample_type_e *type) {
 }
 
 static void __stream_cb_internal(size_t nbytes, void *user_data) {
-    audio_io_s* audioIo = static_cast<audio_io_s*>(user_data);
+    auto audioIo = static_cast<audio_io_s*>(user_data);
     assert(audioIo);
 
     if (audioIo->stream_callback.onStream)
@@ -713,7 +705,7 @@ static void __state_changed_cb_internal(CAudioInfo::EAudioIOState state,
                                         CAudioInfo::EAudioIOState state_prev,
                                         bool by_policy,
                                         void *user_data) {
-    audio_io_s* audioIo = static_cast<audio_io_s*>(user_data);
+    auto audioIo = static_cast<audio_io_s*>(user_data);
     assert(audioIo);
 
     if (audioIo->state_changed_callback.onStateChanged)
@@ -724,10 +716,10 @@ static void __state_changed_cb_internal(CAudioInfo::EAudioIOState state,
 //LCOV_EXCL_STOP
 
 int cpp_audio_in_set_stream_cb(audio_in_h input, audio_in_stream_cb callback, void* user_data) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL || callback == NULL)
+        if (!handle || !callback)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, callback:%p", input, callback);
         assert(handle->audioIoHandle);
@@ -736,7 +728,7 @@ int cpp_audio_in_set_stream_cb(audio_in_h input, audio_in_stream_cb callback, vo
         handle->stream_callback.onStream = callback;
         handle->stream_callback.user_data = user_data;
 
-        CAudioIO::SStreamCallback cb = handle->audioIoHandle->getStreamCallback();
+        auto cb = handle->audioIoHandle->getStreamCallback();
         cb.mUserData = static_cast<void*>(handle);
         cb.onStream  = __stream_cb_internal;
 
@@ -752,21 +744,20 @@ int cpp_audio_in_set_stream_cb(audio_in_h input, audio_in_stream_cb callback, vo
 }
 
 int cpp_audio_in_unset_stream_cb(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
-
+    auto handle = static_cast<audio_io_s*>(input);
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
         assert(handle->audioIoHandle);
         AUDIO_IO_LOGD("[%p]", handle);
 
-        handle->stream_callback.onStream = NULL;
-        handle->stream_callback.user_data = NULL;
+        handle->stream_callback.onStream = nullptr;
+        handle->stream_callback.user_data = nullptr;
 
-        CAudioIO::SStreamCallback cb = handle->audioIoHandle->getStreamCallback();
-        cb.mUserData = NULL;
-        cb.onStream  = NULL;
+        auto cb = handle->audioIoHandle->getStreamCallback();
+        cb.mUserData = nullptr;
+        cb.onStream  = nullptr;
 
         handle->audioIoHandle->setStreamCallback(cb);
     } catch (CAudioError& e) {
@@ -780,16 +771,16 @@ int cpp_audio_in_unset_stream_cb(audio_in_h input) {
 }
 
 int cpp_audio_in_peek(audio_in_h input, const void **buffer, unsigned int *length) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
     size_t _length = 0;
 
     try {
-        if (handle == NULL || buffer == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle || !buffer)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, buffer:%p", input, buffer);
 
-        CAudioInput* inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
-        if (inputHandle == NULL)
+        auto inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
+        if (!inputHandle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
 
         inputHandle->peek(buffer, &_length);
@@ -804,15 +795,14 @@ int cpp_audio_in_peek(audio_in_h input, const void **buffer, unsigned int *lengt
 }
 
 int cpp_audio_in_drop(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
-
     try {
-        if (handle == NULL)
+        auto handle = static_cast<audio_io_s*>(input);
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p", input);
 
-        CAudioInput* inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
-        if (inputHandle == NULL)
+        auto inputHandle = static_cast<CAudioInput*>(handle->audioIoHandle);
+        if (!inputHandle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
 
         inputHandle->drop();
@@ -825,10 +815,10 @@ int cpp_audio_in_drop(audio_in_h input) {
 }
 
 int cpp_audio_in_set_state_changed_cb(audio_in_h input, audio_in_state_changed_cb callback, void* user_data) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL || callback == NULL)
+        if (!handle || !callback)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL input:%p, callback:%p", input, callback);
         assert(handle->audioIoHandle);
@@ -837,7 +827,7 @@ int cpp_audio_in_set_state_changed_cb(audio_in_h input, audio_in_state_changed_c
         handle->state_changed_callback.onStateChanged = callback;
         handle->state_changed_callback.user_data = user_data;
 
-        CAudioIO::SStateChangedCallback cb = handle->audioIoHandle->getStateChangedCallback();
+        auto cb = handle->audioIoHandle->getStateChangedCallback();
         cb.mUserData = static_cast<void*>(handle);
         cb.onStateChanged = __state_changed_cb_internal;
 
@@ -853,21 +843,21 @@ int cpp_audio_in_set_state_changed_cb(audio_in_h input, audio_in_state_changed_c
 }
 
 int cpp_audio_in_unset_state_changed_cb(audio_in_h input) {
-    audio_io_s* handle = static_cast<audio_io_s*>(input);
+    auto handle = static_cast<audio_io_s*>(input);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p", input);
         assert(handle->audioIoHandle);
         AUDIO_IO_LOGD("[%p]", handle);
 
-        handle->state_changed_callback.onStateChanged = NULL;
-        handle->state_changed_callback.user_data = NULL;
+        handle->state_changed_callback.onStateChanged = nullptr;
+        handle->state_changed_callback.user_data = nullptr;
 
-        CAudioIO::SStateChangedCallback cb = handle->audioIoHandle->getStateChangedCallback();
-        cb.mUserData = NULL;
-        cb.onStateChanged  = NULL;
+        auto cb = handle->audioIoHandle->getStateChangedCallback();
+        cb.mUserData = nullptr;
+        cb.onStateChanged  = nullptr;
 
         handle->audioIoHandle->setStateChangedCallback(cb);
     } catch (CAudioError& e) {
@@ -885,9 +875,9 @@ int cpp_audio_in_unset_state_changed_cb(audio_in_h input) {
  * Audio Out
  */
 int cpp_audio_out_create_new(int sample_rate, audio_channel_e channel, audio_sample_type_e type, audio_out_h *output) {
-    audio_io_s* handle = NULL;
+    audio_io_s* handle = nullptr;
     try {
-        if (output == NULL)
+        if (!output)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p", output);
 
@@ -907,8 +897,7 @@ int cpp_audio_out_create_new(int sample_rate, audio_channel_e channel, audio_sam
         __handle_safe_free(handle, (void *)output, true);
         return __convert_CAudioError(e);
     } catch (const std::bad_alloc&) {
-//LCOV_EXCL_START
-        CAudioError e = CAudioError::EError::ERROR_OUT_OF_MEMORY;
+        CAudioError e(CAudioError::EError::ERROR_OUT_OF_MEMORY);
         AUDIO_IO_LOGE("Failed to allocate handle");
         __handle_safe_free(handle, (void *)output, true);
         return __convert_CAudioError(e);
@@ -919,10 +908,10 @@ int cpp_audio_out_create_new(int sample_rate, audio_channel_e channel, audio_sam
 }
 
 int cpp_audio_out_destroy(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -939,16 +928,16 @@ int cpp_audio_out_destroy(audio_out_h output) {
         return __convert_CAudioError(e);
     }
 
-    AUDIO_IO_LOGD("destroyed");
+    AUDIO_IO_LOGD("[%p] destroyed", handle);
 
     return AUDIO_IO_ERROR_NONE;
 }
 
 int cpp_audio_out_set_sound_stream_info(audio_out_h output, sound_stream_info_h stream_info) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL || stream_info == NULL)
+        if (!handle || !stream_info)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, stream_info:%p", output, stream_info);
         assert(handle->audioIoHandle);
@@ -966,10 +955,10 @@ int cpp_audio_out_set_sound_stream_info(audio_out_h output, sound_stream_info_h
 }
 
 int cpp_audio_out_prepare(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -987,10 +976,10 @@ int cpp_audio_out_prepare(audio_out_h output) {
 }
 
 int cpp_audio_out_unprepare(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -1008,10 +997,10 @@ int cpp_audio_out_unprepare(audio_out_h output) {
 }
 
 int cpp_audio_out_pause(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -1029,10 +1018,10 @@ int cpp_audio_out_pause(audio_out_h output) {
 }
 
 int cpp_audio_out_resume(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -1050,10 +1039,10 @@ int cpp_audio_out_resume(audio_out_h output) {
 }
 
 int cpp_audio_out_drain(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -1071,10 +1060,10 @@ int cpp_audio_out_drain(audio_out_h output) {
 }
 
 int cpp_audio_out_flush(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p", output);
         assert(handle->audioIoHandle);
@@ -1092,20 +1081,20 @@ int cpp_audio_out_flush(audio_out_h output) {
 }
 
 int cpp_audio_out_write(audio_out_h output, void *buffer, unsigned int length) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
     int ret = 0;
 
     try {
-        if (handle == NULL || buffer == NULL)
+        auto handle = static_cast<audio_io_s*>(output);
+        if (!handle || !buffer)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameter is NULL output:%p, buffer:%p", output, buffer);
         assert(handle->audioIoHandle);
 
-        CAudioOutput* outputHandle = static_cast<CAudioOutput*>(handle->audioIoHandle);
-        if (outputHandle == NULL)
+        auto outputHandle = static_cast<CAudioOutput*>(handle->audioIoHandle);
+        if (!outputHandle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
 
-        size_t written = outputHandle->write(buffer, static_cast<size_t>(length));
+        auto written = outputHandle->write(buffer, static_cast<size_t>(length));
         ret = static_cast<int>(written);
 #ifdef _AUDIO_IO_DEBUG_TIMING_
         AUDIO_IO_LOGD("written:%zu", written);
@@ -1119,16 +1108,15 @@ int cpp_audio_out_write(audio_out_h output, void *buffer, unsigned int length) {
 }
 
 int cpp_audio_out_get_buffer_size(audio_out_h output, int *size) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
-
     try {
-        if (handle == NULL || size == NULL)
+        auto handle = static_cast<audio_io_s*>(output);
+        if (!handle || !size)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, size:%p", output, size);
         assert(handle->audioIoHandle);
 
-        CAudioOutput* outputHandle = static_cast<CAudioOutput*>(handle->audioIoHandle);
-        if (outputHandle == NULL)
+        auto outputHandle = static_cast<CAudioOutput*>(handle->audioIoHandle);
+        if (!outputHandle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_HANDLE, "Handle is NULL");
 
         *size = outputHandle->getBufferSize();
@@ -1141,10 +1129,9 @@ int cpp_audio_out_get_buffer_size(audio_out_h output, int *size) {
 }
 
 int cpp_audio_out_get_sample_rate(audio_out_h output, int *sample_rate) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
-
     try {
-        if (handle == NULL || sample_rate == NULL)
+        auto handle = static_cast<audio_io_s*>(output);
+        if (!handle || !sample_rate)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, sample_rate:%p", output, sample_rate);
         assert(handle->audioIoHandle);
@@ -1159,16 +1146,15 @@ int cpp_audio_out_get_sample_rate(audio_out_h output, int *sample_rate) {
 }
 
 int cpp_audio_out_get_channel(audio_out_h output, audio_channel_e *channel) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
-
     try {
-        if (handle == NULL || channel == NULL)
+        auto handle = static_cast<audio_io_s*>(output);
+        if (!handle || !channel)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, channel:%p", output, channel);
         assert(handle->audioIoHandle);
 
-        const CAudioInfo::EChannel srcChannel = handle->audioIoHandle->getAudioInfo().getChannel();
-        audio_channel_e dstChannel = AUDIO_CHANNEL_MONO;
+        auto srcChannel = handle->audioIoHandle->getAudioInfo().getChannel();
+        auto dstChannel = AUDIO_CHANNEL_MONO;
         __convert_audio_info_channel_2_channel(srcChannel, dstChannel);
 
         *channel = dstChannel;
@@ -1181,16 +1167,15 @@ int cpp_audio_out_get_channel(audio_out_h output, audio_channel_e *channel) {
 }
 
 int cpp_audio_out_get_sample_type(audio_out_h output, audio_sample_type_e *type) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
-
     try {
-        if (handle == NULL || type == NULL)
+        auto handle = static_cast<audio_io_s*>(output);
+        if (!handle || !type)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, type:%p", output, type);
         assert(handle->audioIoHandle);
 
-        const CAudioInfo::ESampleType srcSampleType = handle->audioIoHandle->getAudioInfo().getSampleType();
-        audio_sample_type_e dstSampleType = AUDIO_SAMPLE_TYPE_U8;
+        auto srcSampleType = handle->audioIoHandle->getAudioInfo().getSampleType();
+        auto dstSampleType = AUDIO_SAMPLE_TYPE_U8;
         __convert_audio_info_sample_type_2_sample_type(srcSampleType, dstSampleType);
 
         *type = dstSampleType;
@@ -1203,16 +1188,16 @@ int cpp_audio_out_get_sample_type(audio_out_h output, audio_sample_type_e *type)
 }
 
 int cpp_audio_out_get_sound_type(audio_out_h output, sound_type_e *type) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL || type == NULL)
+        if (!handle || !type)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, type:%p", output, type);
         assert(handle->audioIoHandle);
 
-        const CAudioInfo::EAudioType srcAudioType = handle->audioIoHandle->getAudioInfo().getAudioType();
-        sound_type_e dstSoundType = SOUND_TYPE_MEDIA;
+        auto srcAudioType = handle->audioIoHandle->getAudioInfo().getAudioType();
+        auto dstSoundType = SOUND_TYPE_MEDIA;
         __convert_audio_info_audio_type_2_sound_type(srcAudioType, dstSoundType);
 
         *type = dstSoundType;
@@ -1225,10 +1210,10 @@ int cpp_audio_out_get_sound_type(audio_out_h output, sound_type_e *type) {
 }
 
 int cpp_audio_out_set_stream_cb(audio_out_h output, audio_out_stream_cb callback, void* user_data) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL || callback == NULL)
+        if (!handle || !callback)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, callback:%p", output, callback);
         assert(handle->audioIoHandle);
@@ -1237,7 +1222,7 @@ int cpp_audio_out_set_stream_cb(audio_out_h output, audio_out_stream_cb callback
         handle->stream_callback.onStream = callback;
         handle->stream_callback.user_data = user_data;
 
-        CAudioIO::SStreamCallback cb = handle->audioIoHandle->getStreamCallback();
+        auto cb = handle->audioIoHandle->getStreamCallback();
         cb.mUserData = static_cast<void*>(handle);
         cb.onStream = __stream_cb_internal;
 
@@ -1253,21 +1238,21 @@ int cpp_audio_out_set_stream_cb(audio_out_h output, audio_out_stream_cb callback
 }
 
 int cpp_audio_out_unset_stream_cb(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p", output);
         assert(handle->audioIoHandle);
         AUDIO_IO_LOGD("[%p]", handle);
 
-        handle->stream_callback.onStream = NULL;
-        handle->stream_callback.user_data = NULL;
+        handle->stream_callback.onStream = nullptr;
+        handle->stream_callback.user_data = nullptr;
 
-        CAudioIO::SStreamCallback cb = handle->audioIoHandle->getStreamCallback();
-        cb.mUserData = NULL;
-        cb.onStream = NULL;
+        auto cb = handle->audioIoHandle->getStreamCallback();
+        cb.mUserData = nullptr;
+        cb.onStream = nullptr;
 
         handle->audioIoHandle->setStreamCallback(cb);
     } catch (CAudioError& e) {
@@ -1281,10 +1266,10 @@ int cpp_audio_out_unset_stream_cb(audio_out_h output) {
 }
 
 int cpp_audio_out_set_state_changed_cb(audio_out_h output, audio_in_state_changed_cb callback, void* user_data) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL || callback == NULL)
+        if (!handle || !callback)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p, callback:%p", output, callback);
         assert(handle->audioIoHandle);
@@ -1293,7 +1278,7 @@ int cpp_audio_out_set_state_changed_cb(audio_out_h output, audio_in_state_change
         handle->state_changed_callback.onStateChanged = callback;
         handle->state_changed_callback.user_data = user_data;
 
-        CAudioIO::SStateChangedCallback cb = handle->audioIoHandle->getStateChangedCallback();
+        auto cb = handle->audioIoHandle->getStateChangedCallback();
         cb.mUserData = static_cast<void*>(handle);
         cb.onStateChanged = __state_changed_cb_internal;
 
@@ -1309,21 +1294,21 @@ int cpp_audio_out_set_state_changed_cb(audio_out_h output, audio_in_state_change
 }
 
 int cpp_audio_out_unset_state_changed_cb(audio_out_h output) {
-    audio_io_s* handle = static_cast<audio_io_s*>(output);
+    auto handle = static_cast<audio_io_s*>(output);
 
     try {
-        if (handle == NULL)
+        if (!handle)
             THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_ARGUMENT,
                                    "Parameters are NULL output:%p", output);
         assert(handle->audioIoHandle);
         AUDIO_IO_LOGD("[%p]", handle);
 
-        handle->state_changed_callback.onStateChanged = NULL;
-        handle->state_changed_callback.user_data = NULL;
+        handle->state_changed_callback.onStateChanged = nullptr;
+        handle->state_changed_callback.user_data = nullptr;
 
-        CAudioIO::SStateChangedCallback cb = handle->audioIoHandle->getStateChangedCallback();
-        cb.mUserData = NULL;
-        cb.onStateChanged = NULL;
+        auto cb = handle->audioIoHandle->getStateChangedCallback();
+        cb.mUserData = nullptr;
+        cb.onStateChanged = nullptr;
 
         handle->audioIoHandle->setStateChangedCallback(cb);
     } catch (CAudioError& e) {