From: Sangchul Lee Date: Thu, 28 Apr 2016 02:53:03 +0000 (+0900) Subject: Trigger stream state change callback when stream is failed/terminated and include... X-Git-Tag: submit/tizen/20160503.074218~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F93%2F67893%2F2;p=platform%2Fcore%2Fapi%2Faudio-io.git Trigger stream state change callback when stream is failed/terminated and include audio_io_test to package - Expand stream state change callback for stream failed/terminated - Call onStateChageCb only when state is changed from previous state - Build audio_io_test as default [Version] 0.3.30 [Profile] Common [Issue Type] Feature enhancement Change-Id: I33401f0ec9a95ce2fb9420c10bcf57aab1f547b4 Signed-off-by: Sangchul Lee --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c14c67e..d74b452 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ CONFIGURE_FILE( ) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${fw_name}.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -#ADD_SUBDIRECTORY(test) +ADD_SUBDIRECTORY(test) IF(UNIX) diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index 939fbaa..3fc298a 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.29 +Version: 0.3.30 Release: 0 Group: Multimedia/API License: Apache-2.0 @@ -55,5 +55,5 @@ make %{?jobs:-j%jobs} %{_includedir}/media/audio_io.h %{_libdir}/pkgconfig/*.pc %{_libdir}/libcapi-media-audio-io.so -#%{_prefix}/bin/audio_io_test +%{_prefix}/bin/audio_io_test diff --git a/src/cpp/CAudioIO.cpp b/src/cpp/CAudioIO.cpp index dbe16bd..d1898f7 100644 --- a/src/cpp/CAudioIO.cpp +++ b/src/cpp/CAudioIO.cpp @@ -185,6 +185,9 @@ void CAudioIO::onStateChanged(CAudioInfo::EAudioIOState state, bool byPolicy) { mState = state; mByPolicy = byPolicy; + if (mState == mStatePrev) + return; + AUDIO_IO_LOGD("current(%d), previous(%d), by_policy(%d)", mState, mStatePrev, mByPolicy); if (mStateChangedCallback.onStateChanged != NULL) { diff --git a/src/cpp/CPulseAudioClient.cpp b/src/cpp/CPulseAudioClient.cpp index 8d788d3..ed065cb 100644 --- a/src/cpp/CPulseAudioClient.cpp +++ b/src/cpp/CPulseAudioClient.cpp @@ -58,12 +58,13 @@ void CPulseAudioClient::__contextStateChangeCb(pa_context* c, void* user_data) { switch (pa_context_get_state(c)) { case PA_CONTEXT_READY: - AUDIO_IO_LOGD("The context is ready!"); + AUDIO_IO_LOGD("The context is ready"); pa_threaded_mainloop_signal(pClient->__mpMainloop, 0); break; case PA_CONTEXT_FAILED: case PA_CONTEXT_TERMINATED: + AUDIO_IO_LOGD("The context is lost"); pa_threaded_mainloop_signal(pClient->__mpMainloop, 0); break; @@ -94,13 +95,20 @@ void CPulseAudioClient::__streamStateChangeCb(pa_stream* s, void* user_data) { switch (pa_stream_get_state(s)) { case PA_STREAM_READY: - AUDIO_IO_LOGD("The stream is ready!"); + AUDIO_IO_LOGD("The stream is ready"); pClient->__mpListener->onStateChanged(CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING); pa_threaded_mainloop_signal(pClient->__mpMainloop, 0); break; case PA_STREAM_FAILED: + AUDIO_IO_LOGD("The stream is failed"); + pClient->__mpListener->onStateChanged(CAudioInfo::EAudioIOState::AUDIO_IO_STATE_IDLE); + pa_threaded_mainloop_signal(pClient->__mpMainloop, 0); + break; + case PA_STREAM_TERMINATED: + AUDIO_IO_LOGD("The stream is terminated"); + pClient->__mpListener->onStateChanged(CAudioInfo::EAudioIOState::AUDIO_IO_STATE_IDLE); pa_threaded_mainloop_signal(pClient->__mpMainloop, 0); break; diff --git a/test/audio_io_test.c b/test/audio_io_test.c index edf6a8c..b7db6c4 100644 --- a/test/audio_io_test.c +++ b/test/audio_io_test.c @@ -324,7 +324,6 @@ static void _audio_io_stream_read_cb(audio_in_h handle, size_t nbytes, void *use static void _audio_io_stream_write_cb(audio_out_h handle, size_t nbytes, void *user_data) { short *buffer = NULL; - int ret = 0; int i = 0; if (nbytes > 0) { @@ -346,7 +345,7 @@ static void _audio_io_stream_write_cb(audio_out_h handle, size_t nbytes, void *u test_wav.right_channel -= TABLE_SIZE; } - ret = audio_out_write(handle, buffer, nbytes); + audio_out_write(handle, buffer, nbytes); free(buffer); }