CAudioOutput: Add some stat dump log for future debugging 49/248949/2 submit/tizen/20201208.110804
authorSeungbae Shin <seungbae.shin@samsung.com>
Thu, 3 Dec 2020 11:48:58 +0000 (20:48 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Mon, 7 Dec 2020 05:22:40 +0000 (14:22 +0900)
[Version] 0.5.36
[Issue Type] Debug

Change-Id: I8d8a7d9c5a0d88f60a57f4f192889da39b72692d

include/CAudioOutput.h
packaging/capi-media-audio-io.spec
src/cpp/CAudioOutput.cpp

index 146f2f1..b7a5e81 100644 (file)
@@ -61,9 +61,13 @@ namespace tizen_media_audio {
         void __setInit(bool flag) noexcept;
         bool __IsInit() noexcept;
         bool __IsReady() noexcept;
+        void __dumpStat() noexcept;
 
         bool __mIsUsedSyncWrite;
         bool __mIsInit;
+
+        uint64_t __mTotalWrittenCount;
+        uint64_t __mTotalWrittenBytes;
     };
 
 
index bca194b..1ae28fe 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.35
+Version:        0.5.36
 Release:        0
 Group:          Multimedia/API
 License:        Apache-2.0
index 29c3729..38888ba 100644 (file)
@@ -34,7 +34,9 @@ static constexpr auto writable_timeout_s = 5s;
 CAudioOutput::CAudioOutput(CAudioInfo& info) :
     CAudioIO(info),
     __mIsUsedSyncWrite(false),
-    __mIsInit(false) {
+    __mIsInit(false),
+    __mTotalWrittenCount(0),
+    __mTotalWrittenBytes(0) {
     mDirection = CAudioInfo::EAudioDirection::AUDIO_DIRECTION_OUT;
 }
 
@@ -181,6 +183,8 @@ void CAudioOutput::unprepare() {
         return;
     }
 
+    __dumpStat();
+
     CAudioIO::unprepare();
 
     if (mpPulseAudioClient && mpPulseAudioClient->isInThread())
@@ -189,6 +193,9 @@ void CAudioOutput::unprepare() {
     SAFE_FINALIZE(mpPulseAudioClient);
     SAFE_DELETE(mpPulseAudioClient);
 
+    __mTotalWrittenCount = 0;
+    __mTotalWrittenBytes = 0;
+
     CAudioIO::setState(CAudioInfo::EAudioIOState::AUDIO_IO_STATE_IDLE);
 
     mutex.unlock();
@@ -210,6 +217,8 @@ void CAudioOutput::pause() {
     if (mpPulseAudioClient->isInThread())
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't pause in thread"); //LCOV_EXCL_LINE
 
+    __dumpStat();
+
     CAudioIO::pause();
     CAudioIO::setState(CAudioInfo::EAudioIOState::AUDIO_IO_STATE_PAUSED);
 
@@ -232,6 +241,8 @@ void CAudioOutput::resume() {
     if (mpPulseAudioClient->isInThread())
         THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INVALID_OPERATION, "Can't resume in thread"); //LCOV_EXCL_LINE
 
+    __dumpStat();
+
     CAudioIO::resume();
     CAudioIO::setState(CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING);
 
@@ -334,11 +345,15 @@ size_t CAudioOutput::write(const void* buffer, size_t length) {
                 }
             }
 
+            if (timeouts > 0)
+                AUDIO_IO_LOGD("writableSize(%zu) is now available after (%u) timeouts!!!", l, timeouts);
+
             if (l > lengthIter)
                 l = lengthIter;
 
 #ifdef _AUDIO_IO_DEBUG_TIMING_
             AUDIO_IO_LOGD("CPulseAudioClient->write(buffer:%p, length:%zu)", buffer, l);
+            __dumpStat();
 #endif
 
             int ret = mpPulseAudioClient->write(buffer, l);
@@ -348,7 +363,10 @@ size_t CAudioOutput::write(const void* buffer, size_t length) {
 
             buffer = static_cast<const uint8_t*>(buffer) + l;
             lengthIter -= l;
-        }  // End of while (length > 0)
+
+            __mTotalWrittenCount++;
+            __mTotalWrittenBytes += l;
+        }  // End of while (lengthIter > 0)
 
         __mIsUsedSyncWrite = false;
         mutex.unlock();
@@ -361,3 +379,9 @@ size_t CAudioOutput::write(const void* buffer, size_t length) {
 
     return length;
 }
+
+void CAudioOutput::__dumpStat() noexcept {
+    AUDIO_IO_LOGD("total written %llu times, %llu bytes, %llu ms",
+                  __mTotalWrittenCount, __mTotalWrittenBytes,
+                  __mTotalWrittenBytes * 1000 / mAudioInfo.getSampleSize() / mAudioInfo.getSampleRate());
+}
\ No newline at end of file