From b9c55cfe77a96e7cbc23bffb8ccd6123b0088f65 Mon Sep 17 00:00:00 2001 From: KimJeongYeon Date: Thu, 8 Dec 2016 10:31:59 +0900 Subject: [PATCH] audio-io uses new 'default' latency configuration. To provide backward compatibility, prebuf use -1. [Version] 0.3.49 [Profile] Common [Issue Type] Improves Signed-off-by: KimJeongYeon Change-Id: I5425d10044ada179cccc012f687477c92785a617 --- include/CPulseStreamSpec.h | 2 ++ packaging/capi-media-audio-io.spec | 2 +- src/cpp/CAudioInput.cpp | 4 +-- src/cpp/CAudioOutput.cpp | 4 +-- src/cpp/CPulseAudioClient.cpp | 25 -------------- src/cpp/CPulseStreamSpec.cpp | 68 ++++++++++++++++++++++++++------------ 6 files changed, 53 insertions(+), 52 deletions(-) diff --git a/include/CPulseStreamSpec.h b/include/CPulseStreamSpec.h index 1c75259..0e9cf09 100644 --- a/include/CPulseStreamSpec.h +++ b/include/CPulseStreamSpec.h @@ -38,10 +38,12 @@ namespace tizen_media_audio { STREAM_LATENCY_INPUT_MID, STREAM_LATENCY_INPUT_HIGH, STREAM_LATENCY_INPUT_VOIP, + STREAM_LATENCY_INPUT_DEFAULT, STREAM_LATENCY_OUTPUT_LOW, STREAM_LATENCY_OUTPUT_MID, STREAM_LATENCY_OUTPUT_HIGH, STREAM_LATENCY_OUTPUT_VOIP, + STREAM_LATENCY_OUTPUT_DEFAULT, STREAM_LATENCY_MAX }; diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index d5dca27..5346f2b 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.3.48 +Version: 0.3.49 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/cpp/CAudioInput.cpp b/src/cpp/CAudioInput.cpp index 919cecd..4cee3e1 100644 --- a/src/cpp/CAudioInput.cpp +++ b/src/cpp/CAudioInput.cpp @@ -260,8 +260,8 @@ void CAudioInput::prepare() throw(CAudioError) { } // Init StreamSpec - AUDIO_IO_LOGD("Set Stream Spec : CPulseStreamSpec::STREAM_LATENCY_INPUT_MID"); - CPulseStreamSpec::EStreamLatency streamSpec = CPulseStreamSpec::EStreamLatency::STREAM_LATENCY_INPUT_MID; + AUDIO_IO_LOGD("Set Stream Spec : CPulseStreamSpec::STREAM_LATENCY_INPUT_DEFAULT"); + CPulseStreamSpec::EStreamLatency streamSpec = CPulseStreamSpec::EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT; CPulseStreamSpec spec(streamSpec, mAudioInfo); // Create PulseAudio Handler diff --git a/src/cpp/CAudioOutput.cpp b/src/cpp/CAudioOutput.cpp index 267ba95..ae33c40 100644 --- a/src/cpp/CAudioOutput.cpp +++ b/src/cpp/CAudioOutput.cpp @@ -159,8 +159,8 @@ void CAudioOutput::prepare() throw(CAudioError) { } // Init StreamSpec - AUDIO_IO_LOGD("Set Stream Spec : CPulseStreamSpec::STREAM_LATENCY_OUTPUT_MID"); - CPulseStreamSpec::EStreamLatency streamSpec = CPulseStreamSpec::EStreamLatency::STREAM_LATENCY_OUTPUT_MID; + AUDIO_IO_LOGD("Set Stream Spec : CPulseStreamSpec::STREAM_LATENCY_OUTPUT_DEFAULT"); + CPulseStreamSpec::EStreamLatency streamSpec = CPulseStreamSpec::EStreamLatency::STREAM_LATENCY_OUTPUT_DEFAULT; CPulseStreamSpec spec(streamSpec, mAudioInfo); // Create PulseAudio Handler diff --git a/src/cpp/CPulseAudioClient.cpp b/src/cpp/CPulseAudioClient.cpp index bfe72b2..fe28ea9 100644 --- a/src/cpp/CPulseAudioClient.cpp +++ b/src/cpp/CPulseAudioClient.cpp @@ -162,17 +162,6 @@ void CPulseAudioClient::__streamPlaybackCb(pa_stream* s, size_t length, void* us CPulseAudioClient* pClient = static_cast(user_data); assert(pClient->__mpListener); - if (pClient->__mIsInit == false) { - AUDIO_IO_LOGD("Occurred this listener when an out stream is on the way to create : Write dummy, length[%d]", length); - - char* dummy = new char[length]; - memset(dummy, 0, length); - pa_stream_write(s, dummy, length, NULL, 0LL, PA_SEEK_RELATIVE); - delete [] dummy; - - return; - } - pClient->__mpListener->onStream(pClient, length); } @@ -563,12 +552,6 @@ int CPulseAudioClient::drop() throw(CAudioError) { } int CPulseAudioClient::write(const void* data, size_t length) throw(CAudioError) { - if (__mIsInit == false) { - THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient"); - } - - checkRunningState(); - if (data == NULL) { THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_ARGUMENT, "The parameter is invalid"); } @@ -712,10 +695,6 @@ size_t CPulseAudioClient::getWritableSize() throw(CAudioError) { } void CPulseAudioClient::checkRunningState() throw(CAudioError) { - if (__mIsInit == false) { - THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient"); - } - if (__mpContext == NULL || PA_CONTEXT_IS_GOOD(pa_context_get_state(__mpContext)) == 0) { THROW_ERROR_MSG_FORMAT(CAudioError::EError::ERROR_NOT_INITIALIZED, "The context[%p] is not created or not good state", __mpContext); } @@ -732,10 +711,6 @@ void CPulseAudioClient::checkRunningState() throw(CAudioError) { } bool CPulseAudioClient::isInThread() throw(CAudioError) { - if (__mIsInit == false) { - THROW_ERROR_MSG(CAudioError::EError::ERROR_NOT_INITIALIZED, "Did not initialize CPulseAudioClient"); - } - int ret = pa_threaded_mainloop_in_thread(__mpMainloop); #ifdef _AUDIO_IO_DEBUG_TIMING_ diff --git a/src/cpp/CPulseStreamSpec.cpp b/src/cpp/CPulseStreamSpec.cpp index 0e7f8a4..7ce3092 100644 --- a/src/cpp/CPulseStreamSpec.cpp +++ b/src/cpp/CPulseStreamSpec.cpp @@ -22,24 +22,27 @@ using namespace std; using namespace tizen_media_audio; -static const char* STREAM_NAME_INPUT = "CAPTURE"; static const char* STREAM_NAME_INPUT_LOW_LATENCY = "LOW LATENCY CAPTURE"; +static const char* STREAM_NAME_INPUT_MID_LATENCY = "MID LATENCY CAPTURE"; static const char* STREAM_NAME_INPUT_HIGH_LATENCY = "HIGH LATENCY CAPTURE"; static const char* STREAM_NAME_INPUT_VOIP = "VOIP CAPTURE"; +static const char* STREAM_NAME_INPUT_DEFAULT = "DEFAULT CAPTURE"; -static const char* STREAM_NAME_OUTPUT = "PLAYBACK"; static const char* STREAM_NAME_OUTPUT_LOW_LATENCY = "LOW LATENCY PLAYBACK"; +static const char* STREAM_NAME_OUTPUT_MID_LATENCY = "MID LATENCY PLAYBACK"; static const char* STREAM_NAME_OUTPUT_HIGH_LATENCY = "HIGH LATENCY PLAYBACK"; static const char* STREAM_NAME_OUTPUT_VOIP = "VOIP PLAYBACK"; +static const char* STREAM_NAME_OUTPUT_DEFAULT = "DEFAULT PLAYBACK"; -static const char* STREAM_LATENCY_LOW = "low"; -static const char* STREAM_LATENCY_MID = "mid"; -static const char* STREAM_LATENCY_HIGH = "high"; -static const char* STREAM_LATENCY_VOIP = "voip"; +static const char* STREAM_LATENCY_LOW = "low"; +static const char* STREAM_LATENCY_MID = "mid"; +static const char* STREAM_LATENCY_HIGH = "high"; +static const char* STREAM_LATENCY_VOIP = "voip"; +static const char* STREAM_LATENCY_DEFAULT = "default"; CPulseStreamSpec::CPulseStreamSpec() throw(CAudioError) : - __mLatency(EStreamLatency::STREAM_LATENCY_INPUT_MID), + __mLatency(EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT), __mStreamName(NULL) { __adjustSpec(); } @@ -94,37 +97,48 @@ void CPulseStreamSpec::__adjustSpec() throw(CAudioError) { // Sets stream name switch (__mLatency) { - case EStreamLatency::STREAM_LATENCY_OUTPUT_MID: - __mStreamName = STREAM_NAME_OUTPUT; + case EStreamLatency::STREAM_LATENCY_INPUT_LOW: + __mStreamName = STREAM_NAME_INPUT_LOW_LATENCY; break; - case EStreamLatency::STREAM_LATENCY_OUTPUT_HIGH: - __mStreamName = STREAM_NAME_OUTPUT_HIGH_LATENCY; + case EStreamLatency::STREAM_LATENCY_INPUT_MID: + __mStreamName = STREAM_NAME_INPUT_MID_LATENCY; + break; + + case EStreamLatency::STREAM_LATENCY_INPUT_HIGH: + __mStreamName = STREAM_NAME_INPUT_HIGH_LATENCY; + break; + + case EStreamLatency::STREAM_LATENCY_INPUT_VOIP: + __mStreamName = STREAM_NAME_INPUT_VOIP; + break; + + case EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT: + __mStreamName = STREAM_NAME_INPUT_DEFAULT; break; case EStreamLatency::STREAM_LATENCY_OUTPUT_LOW: __mStreamName = STREAM_NAME_OUTPUT_LOW_LATENCY; break; - case EStreamLatency::STREAM_LATENCY_OUTPUT_VOIP: - __mStreamName = STREAM_NAME_OUTPUT_VOIP; + case EStreamLatency::STREAM_LATENCY_OUTPUT_MID: + __mStreamName = STREAM_NAME_OUTPUT_MID_LATENCY; break; - case EStreamLatency::STREAM_LATENCY_INPUT_HIGH: - __mStreamName = STREAM_NAME_INPUT_HIGH_LATENCY; + case EStreamLatency::STREAM_LATENCY_OUTPUT_HIGH: + __mStreamName = STREAM_NAME_OUTPUT_HIGH_LATENCY; break; - case EStreamLatency::STREAM_LATENCY_INPUT_LOW: - __mStreamName = STREAM_NAME_INPUT_LOW_LATENCY; + case EStreamLatency::STREAM_LATENCY_OUTPUT_VOIP: + __mStreamName = STREAM_NAME_OUTPUT_VOIP; break; - case EStreamLatency::STREAM_LATENCY_INPUT_VOIP: - __mStreamName = STREAM_NAME_INPUT_VOIP; + case EStreamLatency::STREAM_LATENCY_OUTPUT_DEFAULT: + __mStreamName = STREAM_NAME_OUTPUT_DEFAULT; break; - case EStreamLatency::STREAM_LATENCY_INPUT_MID: default: - __mStreamName = STREAM_NAME_INPUT; + AUDIO_IO_LOGW("Invalid __mLatency[%d]", __mLatency); break; } } @@ -141,20 +155,30 @@ const char* CPulseStreamSpec::getStreamLatencyToString() { case EStreamLatency::STREAM_LATENCY_OUTPUT_LOW: latency = STREAM_LATENCY_LOW; break; + case EStreamLatency::STREAM_LATENCY_INPUT_MID: case EStreamLatency::STREAM_LATENCY_OUTPUT_MID: latency = STREAM_LATENCY_MID; break; + case EStreamLatency::STREAM_LATENCY_INPUT_HIGH: case EStreamLatency::STREAM_LATENCY_OUTPUT_HIGH: latency = STREAM_LATENCY_HIGH; break; + case EStreamLatency::STREAM_LATENCY_INPUT_VOIP: case EStreamLatency::STREAM_LATENCY_OUTPUT_VOIP: latency = STREAM_LATENCY_VOIP; break; + + case EStreamLatency::STREAM_LATENCY_INPUT_DEFAULT: + case EStreamLatency::STREAM_LATENCY_OUTPUT_DEFAULT: + latency = STREAM_LATENCY_DEFAULT; + break; + default: - latency = STREAM_LATENCY_MID; + AUDIO_IO_LOGW("Invalid __mLatency[%d]", __mLatency); + latency = STREAM_LATENCY_DEFAULT; break; } -- 2.7.4