u->sink->set_state_in_io_thread = sink_set_state_in_io_thread_cb;
u->sink->userdata = u;
- pa_log_info("card(%s) device(%s) fragment_size(%u), fragments(%u)", u->card, u->device, u->frag_size, u->nfrags);
+ pa_log_info("card(%s) device(%s) fragment_size(%u), fragments(%u), rtpoll_timeout(%u)",
+ u->card, u->device, u->frag_size, u->nfrags, u->rtpoll_timeout);
pa_sink_set_asyncmsgq(u->sink, u->thread_mq.inq);
pa_sink_set_rtpoll(u->sink, u->rtpoll);
pa_rtpoll_item *rtpoll_item;
uint32_t rtpoll_timeout;
+ double sw_volume_dB;
uint64_t read_count;
pa_usec_t latency_time;
uint32_t avail = 0;
pa_memchunk chunk;
+ pa_usec_t elapsed;
+
pa_assert(u);
pa_hal_interface_pcm_available(u->hal_interface, u->pcm_handle, &avail);
chunk.memblock = pa_memblock_new(u->core->mempool, chunk.length);
p = pa_memblock_acquire(chunk.memblock);
+
+ elapsed = pa_rtclock_now();
+
if (pa_hal_interface_pcm_read(u->hal_interface, u->pcm_handle, p, (uint32_t)frames_to_read)) {
pa_log_error("failed to read pcm. p(%p), size(%zu)", p, frames_to_read);
return -1;
}
+
+ if (pa_rtclock_now() - elapsed > 100 * PA_USEC_PER_MSEC)
+ pa_log_error("HAL read function takes a long time : %" PRId64 "", elapsed);
+
pa_memblock_release(chunk.memblock);
chunk.index = 0;
const char *modarg_device_id;
size_t frame_size, buffer_size, period_frames, buffer_frames;
pa_pcm_params_t param;
+ pa_cvolume cvolume;
uint32_t period_size;
uint32_t periods;
pa_source_new_data_set_name(&data, pa_modargs_get_value(ma, "source_name", DEFAULT_SOURCE_NAME));
pa_source_new_data_set_sample_spec(&data, &ss);
pa_source_new_data_set_channel_map(&data, &map);
+
+ pa_modargs_get_value_double(ma, "sw_volume_dB", &u->sw_volume_dB);
+ pa_cvolume_set(&cvolume, ss.channels, pa_sw_volume_from_dB(u->sw_volume_dB));
+ pa_source_new_data_set_volume(&data, &cvolume);
+
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_DESCRIPTION, _("Tizen audio source2"));
pa_proplist_sets(data.proplist, PA_PROP_DEVICE_CLASS, "abstract");
pa_proplist_sets(data.proplist, "tizen.card", u->card);
u->source->set_state_in_io_thread = source_set_state_in_io_thread_cb;
u->source->userdata = u;
- pa_log_info("card(%s) device(%s) fragment_size(%u), fragments(%u)",
- u->card, u->device, u->frag_size, u->nfrags);
+ pa_log_info("card(%s) device(%s) fragment_size(%u), fragments(%u), rtpoll_timeout(%u) sw_volume_dB(%f)",
+ u->card, u->device, u->frag_size, u->nfrags, u->rtpoll_timeout, u->sw_volume_dB);
pa_source_set_asyncmsgq(u->source, u->thread_mq.inq);
pa_source_set_rtpoll(u->source, u->rtpoll);