Trigger stream state change callback when stream is failed/terminated and include... 93/67893/2
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 28 Apr 2016 02:53:03 +0000 (11:53 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 29 Apr 2016 05:47:51 +0000 (14:47 +0900)
 - 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 <sc11.lee@samsung.com>
CMakeLists.txt
packaging/capi-media-audio-io.spec
src/cpp/CAudioIO.cpp
src/cpp/CPulseAudioClient.cpp
test/audio_io_test.c

index c14c67e..d74b452 100644 (file)
@@ -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)
 
index 939fbaa..3fc298a 100644 (file)
@@ -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
 
index dbe16bd..d1898f7 100644 (file)
@@ -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) {
index 8d788d3..ed065cb 100644 (file)
@@ -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;
 
index edf6a8c..b7db6c4 100644 (file)
@@ -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);
        }