[Version] 0.5.28
[Issue Type] Enhancement
Change-Id: Ie1f43daefd63bace231e048891197258f22c10e6
Name: capi-media-audio-io
Summary: An Audio Input & Audio Output library in Tizen Native API
Name: capi-media-audio-io
Summary: An Audio Input & Audio Output library in Tizen Native API
Release: 0
Group: Multimedia/API
License: Apache-2.0
Release: 0
Group: Multimedia/API
License: Apache-2.0
using namespace tizen_media_audio;
static constexpr auto cond_wait_ms = 200ms;
using namespace tizen_media_audio;
static constexpr auto cond_wait_ms = 200ms;
+static constexpr auto writable_timeout_s = 5s;
while (lengthIter > 0) {
size_t l;
while (lengthIter > 0) {
size_t l;
+ unsigned int timeouts = 0;
while ((l = mpPulseAudioClient->getWritableSize()) == 0) {
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("writableSize is [%zu].. wait", l);
#endif
std::unique_lock<std::mutex> cond_mutex(mCondMutex);
while ((l = mpPulseAudioClient->getWritableSize()) == 0) {
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("writableSize is [%zu].. wait", l);
#endif
std::unique_lock<std::mutex> cond_mutex(mCondMutex);
- mCond.wait_for(cond_mutex, cond_wait_ms);
+ if (mCond.wait_for(cond_mutex, cond_wait_ms) == std::cv_status::timeout) {
+//LCOV_EXCL_START
+ AUDIO_IO_LOGW("[%2u] timeout expired for waiting %lld ms of write available...", ++timeouts,
+ std::chrono::duration_cast<std::chrono::milliseconds>(cond_wait_ms).count());
+ if ((cond_wait_ms * timeouts) > writable_timeout_s)
+ THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_INTERNAL_OPERATION,
+ "writable size is 0 for more than %lld seconds...",
+ std::chrono::duration_cast<std::chrono::seconds>(writable_timeout_s).count());
+//LCOV_EXCL_STOP
+ }