From: Jaechul Lee Date: Mon, 28 Aug 2023 04:38:03 +0000 (+0900) Subject: Add the sw_volume_dB parameter X-Git-Tag: accepted/tizen/unified/20230830.170616^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bc07903a92f73e6b0a030e9494e420c01f72e974;p=platform%2Fcore%2Fmultimedia%2Fpulseaudio-modules-tizen.git Add the sw_volume_dB parameter The sw_volume_dB parameter is added to tizenaudio-source2. In addition to this, some logs are added when read function takes more than 100ms. [Version] 15.0.54 [Issue Type] Update Change-Id: Ie76dd586df3427a011ce5ec86bf5dd89cd3b6256 Signed-off-by: Jaechul Lee --- diff --git a/packaging/pulseaudio-modules-tizen.spec b/packaging/pulseaudio-modules-tizen.spec index 0141ccf..4c707c6 100644 --- a/packaging/pulseaudio-modules-tizen.spec +++ b/packaging/pulseaudio-modules-tizen.spec @@ -2,7 +2,7 @@ Name: pulseaudio-modules-tizen Summary: Pulseaudio modules for Tizen -Version: 15.0.53 +Version: 15.0.54 Release: 0 Group: Multimedia/Audio License: LGPL-2.1+ diff --git a/src/module-tizenaudio-source2.c b/src/module-tizenaudio-source2.c index ff1e223..3ab00e2 100644 --- a/src/module-tizenaudio-source2.c +++ b/src/module-tizenaudio-source2.c @@ -41,7 +41,8 @@ PA_MODULE_USAGE( "channel_map=" "fragments= " "fragment_size= " - "rtpoll_timeout="); + "rtpoll_timeout=" + "sw_volume_dB="); static const char* const valid_modargs[] = { "source_name", @@ -54,6 +55,7 @@ static const char* const valid_modargs[] = { "fragments", "fragment_size", "rtpoll_timeout", + "sw_volume_dB", NULL }; diff --git a/src/tizenaudio-sink2.c b/src/tizenaudio-sink2.c index 30071f3..63666b3 100644 --- a/src/tizenaudio-sink2.c +++ b/src/tizenaudio-sink2.c @@ -635,7 +635,8 @@ pa_sink *pa_tizenaudio_sink2_new(pa_module *m, 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); diff --git a/src/tizenaudio-source2.c b/src/tizenaudio-source2.c index 9d8b871..912ad92 100644 --- a/src/tizenaudio-source2.c +++ b/src/tizenaudio-source2.c @@ -80,6 +80,7 @@ struct userdata { pa_rtpoll_item *rtpoll_item; uint32_t rtpoll_timeout; + double sw_volume_dB; uint64_t read_count; pa_usec_t latency_time; @@ -322,6 +323,8 @@ static int process_render(struct userdata *u) { 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); @@ -334,10 +337,17 @@ static int process_render(struct userdata *u) { 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; @@ -451,6 +461,7 @@ pa_source *pa_tizenaudio_source2_new(pa_module *m, 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; @@ -580,6 +591,11 @@ pa_source *pa_tizenaudio_source2_new(pa_module *m, 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); @@ -612,8 +628,8 @@ pa_source *pa_tizenaudio_source2_new(pa_module *m, 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);