From f6804c65d285c57d531a695ab8863d235e89ac81 Mon Sep 17 00:00:00 2001 From: Seungbae Shin Date: Thu, 3 Dec 2020 20:48:58 +0900 Subject: [PATCH] CAudioOutput: Add some stat dump log for future debugging [Version] 0.5.36 [Issue Type] Debug Change-Id: I8d8a7d9c5a0d88f60a57f4f192889da39b72692d --- include/CAudioOutput.h | 4 ++++ packaging/capi-media-audio-io.spec | 2 +- src/cpp/CAudioOutput.cpp | 28 ++++++++++++++++++++++++++-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/include/CAudioOutput.h b/include/CAudioOutput.h index 146f2f1..b7a5e81 100644 --- a/include/CAudioOutput.h +++ b/include/CAudioOutput.h @@ -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; }; diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index bca194b..1ae28fe 100644 --- a/packaging/capi-media-audio-io.spec +++ b/packaging/capi-media-audio-io.spec @@ -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 diff --git a/src/cpp/CAudioOutput.cpp b/src/cpp/CAudioOutput.cpp index 29c3729..38888ba 100644 --- a/src/cpp/CAudioOutput.cpp +++ b/src/cpp/CAudioOutput.cpp @@ -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(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 -- 2.7.4