[Version] 0.3.37
[Profile] Common
[Issue Type] MPR-381
Change-Id: I0e2f62e63da52b96d6d3f662199a82b9cae753e7
static void __streamCaptureCb(pa_stream* s, size_t length, void* user_data);
static void __streamPlaybackCb(pa_stream* s, size_t length, void* user_data);
static void __streamLatencyUpdateCb(pa_stream* s, void* user_data);
static void __streamCaptureCb(pa_stream* s, size_t length, void* user_data);
static void __streamPlaybackCb(pa_stream* s, size_t length, void* user_data);
static void __streamLatencyUpdateCb(pa_stream* s, void* user_data);
+ static void __streamEventCb(pa_stream* s, const char *name, pa_proplist *pl, void *user_data);
static void __successStreamCb(pa_stream* s, int success, void* user_data);
};
static void __successStreamCb(pa_stream* s, int success, void* user_data);
};
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
- if (mpPulseAudioClient != NULL && mpPulseAudioClient->isCorked() == false) {
+ if (mpPulseAudioClient != NULL && mState == CAudioInfo::EAudioIOState::AUDIO_IO_STATE_RUNNING) {
THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, "An Operation is not permitted while started");
}
THROW_ERROR_MSG(CAudioError::EError::ERROR_INVALID_OPERATION, "An Operation is not permitted while started");
}
pa_threaded_mainloop_signal(pClient->__mpMainloop, 0);
}
pa_threaded_mainloop_signal(pClient->__mpMainloop, 0);
}
+void CPulseAudioClient::__streamEventCb(pa_stream* s, const char *name, pa_proplist *pl, void *user_data) {
+ assert(s);
+ assert(user_data);
+
+ AUDIO_IO_LOGE("NAME : %s, Prop : %p", name, pl);
+
+ CPulseAudioClient* pClient = static_cast<CPulseAudioClient*>(user_data);
+ if (strcmp(name, PA_STREAM_EVENT_POP_TIMEOUT) == 0) {
+ pa_operation_unref(pa_stream_cork(pClient->__mpStream, 1, NULL, NULL));
+ }
+}
+
+
void CPulseAudioClient::__successStreamCb(pa_stream* s, int success, void* user_data) {
AUDIO_IO_LOGD("pa_stream[%p], success[%d], user_data[%p]", s, success, user_data);
assert(s);
void CPulseAudioClient::__successStreamCb(pa_stream* s, int success, void* user_data) {
AUDIO_IO_LOGD("pa_stream[%p], success[%d], user_data[%p]", s, success, user_data);
assert(s);
pa_stream_set_read_callback(__mpStream, __streamCaptureCb, this);
pa_stream_set_write_callback(__mpStream, __streamPlaybackCb, this);
pa_stream_set_latency_update_callback(__mpStream, __streamLatencyUpdateCb, this);
pa_stream_set_read_callback(__mpStream, __streamCaptureCb, this);
pa_stream_set_write_callback(__mpStream, __streamPlaybackCb, this);
pa_stream_set_latency_update_callback(__mpStream, __streamLatencyUpdateCb, this);
+ pa_stream_set_event_callback(__mpStream, __streamEventCb, this);
// Connect stream with PA Server
// Connect stream with PA Server
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("data[%p], length[%d]", data, length);
#endif
#ifdef _AUDIO_IO_DEBUG_TIMING_
AUDIO_IO_LOGD("data[%p], length[%d]", data, length);
#endif
+ if (pa_stream_is_corked(__mpStream)) {
+ AUDIO_IO_LOGW("stream is corked...do uncork here first!!!!");
+ pa_operation_unref(pa_stream_cork(__mpStream, 0, NULL, this));
+ }
if (isInThread() == false) {
pa_threaded_mainloop_lock(__mpMainloop);
if (isInThread() == false) {
pa_threaded_mainloop_lock(__mpMainloop);