From 1965dae614a92a5d9f1ce020853128cfe8e0ff0b Mon Sep 17 00:00:00 2001 From: Jaechul Lee Date: Thu, 23 Apr 2020 17:08:00 +0900 Subject: [PATCH] pactl: Adds set-pcm-dump command This commit is from d2f6895a1. Unused functions such as pcm_dump_option and defines regarding gstreamer have been removed. [Version] 13.0-5 [Issue Type] None Change-Id: I9d1be1ab5e38e4f7b21b6d99687bf66d8f50f896 Signed-off-by: Jaechul Lee --- packaging/pulseaudio.spec | 5 ++-- src/Makefile.am | 4 --- src/map-file | 1 - src/pulse/introspect.c | 22 -------------- src/pulse/introspect.h | 1 - src/pulsecore/core.c | 1 - src/pulsecore/core.h | 25 ++++------------ src/pulsecore/protocol-native.c | 26 ----------------- src/pulsecore/sink-input.c | 6 ++-- src/pulsecore/sink.c | 6 ++-- src/pulsecore/source-output.c | 6 ++-- src/pulsecore/source.c | 8 +++--- src/utils/pactl.c | 63 +++++++++++++++++++++++++++++++++++++++++ 13 files changed, 84 insertions(+), 90 deletions(-) diff --git a/packaging/pulseaudio.spec b/packaging/pulseaudio.spec index e688e91..ea96d9d 100644 --- a/packaging/pulseaudio.spec +++ b/packaging/pulseaudio.spec @@ -3,7 +3,7 @@ Name: pulseaudio Summary: Improved Linux sound server Version: 13.0 -Release: 4 +Release: 5 Group: Multimedia/Audio License: LGPL-2.1 URL: http://pulseaudio.org @@ -208,7 +208,7 @@ NOCONFIGURE=yes ./bootstrap.sh --with-access-group=pulse-access \ --enable-dlog \ --enable-buffer-attr \ - --enable-pcm-dump \ + --disable-pcm-dump \ --enable-security \ --enable-udev-with-usb-only \ --enable-paready \ @@ -221,7 +221,6 @@ NOCONFIGURE=yes ./bootstrap.sh %if "%{tizen_profile_name}" == "tv" --enable-prelink \ --enable-lwipc \ - --disable-pcm-dump \ %endif %__make %{?_smp_mflags} V=0 diff --git a/src/Makefile.am b/src/Makefile.am index 4097d4b..89aeab5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -263,10 +263,6 @@ pactl_SOURCES = utils/pactl.c pactl_LDADD = $(AM_LDADD) libpulse.la libpulsecommon-@PA_MAJORMINOR@.la $(LIBSNDFILE_LIBS) pactl_CFLAGS = $(AM_CFLAGS) $(LIBSNDFILE_CFLAGS) -fPIE pactl_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) -pie -if TIZEN_PCM_DUMP -pactl_CFLAGS += $(VCONF_CFLAGS) -DTIZEN_PCM_DUMP -pactl_LDADD += $(VCONF_LIBS) -endif pasuspender_SOURCES = utils/pasuspender.c pasuspender_LDADD = $(AM_LDADD) libpulse.la libpulsecommon-@PA_MAJORMINOR@.la diff --git a/src/map-file b/src/map-file index 5eff4bd..218f455 100644 --- a/src/map-file +++ b/src/map-file @@ -94,7 +94,6 @@ pa_context_set_default_source; pa_context_set_event_callback; pa_context_set_name; pa_context_set_pcm_dump; -pa_context_set_pcm_dump_option; pa_context_set_sink_input_mute; pa_context_set_sink_input_volume; pa_context_set_sink_mute_by_index; diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c index d868655..40b3644 100644 --- a/src/pulse/introspect.c +++ b/src/pulse/introspect.c @@ -2207,26 +2207,4 @@ pa_operation* pa_context_set_pcm_dump(pa_context *c, uint32_t dump_type, int dum return o; } - -pa_operation* pa_context_set_pcm_dump_option(pa_context *c, uint32_t dump_option, int dump_option_enable, pa_context_success_cb_t cb, void *userdata) { - pa_operation *o; - pa_tagstruct *t; - uint32_t tag; - - pa_assert(c); - pa_assert(PA_REFCNT_VALUE(c) >= 1); - - PA_CHECK_VALIDITY_RETURN_NULL(c, !pa_detect_fork(), PA_ERR_FORKED); - PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE); - - o = pa_operation_new(c, NULL, (pa_operation_cb_t) cb, userdata); - - t = pa_tagstruct_command(c, PA_COMMAND_SET_PCM_DUMP_OPTION, &tag); - pa_tagstruct_putu32(t, dump_option); - pa_tagstruct_put_boolean(t, dump_option_enable); - pa_pstream_send_tagstruct(c->pstream, t); - pa_pdispatch_register_reply(c->pdispatch, tag, DEFAULT_TIMEOUT, pa_context_simple_ack_callback, pa_operation_ref(o), (pa_free_cb_t) pa_operation_unref); - - return o; -} #endif diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h index 7d3b8d9..fd9eb35 100644 --- a/src/pulse/introspect.h +++ b/src/pulse/introspect.h @@ -552,7 +552,6 @@ pa_operation* pa_context_set_port_latency_offset(pa_context *c, const char *card #ifdef __TIZEN__ pa_operation* pa_context_set_pcm_dump(pa_context *c, uint32_t dump_type, int dump_type_enable, pa_context_success_cb_t cb, void *userdata); -pa_operation* pa_context_set_pcm_dump_option(pa_context *c, uint32_t dump_option, int dump_option_enable, pa_context_success_cb_t cb, void *userdata); #endif /** @} */ diff --git a/src/pulsecore/core.c b/src/pulsecore/core.c index ba12dbc..eca2dde 100644 --- a/src/pulsecore/core.c +++ b/src/pulsecore/core.c @@ -163,7 +163,6 @@ pa_core* pa_core_new(pa_mainloop_api *m, bool shared, bool enable_memfd, size_t c->state = PA_CORE_RUNNING; #ifdef TIZEN_PCM_DUMP c->pcm_dump = 0; - c->pcm_dump_option = 0; #endif #ifdef TIZEN_EMPTY_POP c->empty_pop_threshold = 10; diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h index e6ba518..2d9c27d 100644 --- a/src/pulsecore/core.h +++ b/src/pulsecore/core.h @@ -150,26 +150,14 @@ typedef enum pa_core_hook { #ifdef __TIZEN__ #define PA_PCM_DUMP_PATH_PREFIX "/tmp/pcm" -#define PA_PCM_DUMP_VCONF_KEY "memory/private/sound/pcm_dump" enum { - PA_PCM_DUMP_GST_DECODER_OUT = 0x00000001U, - PA_PCM_DUMP_GST_RESAMPLER_IN = 0x00000008U, - PA_PCM_DUMP_GST_RESAMPLER_OUT = 0x00000010U, - PA_PCM_DUMP_GST_AUDIO_SINK_IN = 0x00000400U, - PA_PCM_DUMP_PA_STREAM_WRITE = 0x00000800U, - PA_PCM_DUMP_PA_SINK_INPUT = 0x00002000U, - PA_PCM_DUMP_PA_SINK = 0x00004000U, - PA_PCM_DUMP_PA_SOURCE = 0x00020000U, - PA_PCM_DUMP_PA_SOURCE_OUTPUT = 0x00040000U, - PA_PCM_DUMP_PA_STREAM_READ = 0x00100000U, - PA_PCM_DUMP_GST_AUDIO_SRC_OUT = 0x00200000U, - PA_PCM_DUMP_GST_ENCODER_IN = 0x80000000U, -}; - -enum { - PA_PCM_DUMP_OPTION_SEPARATED = 0x0001U, - PA_PCM_DUMP_OPTION_MONITOR = 0x0002U, + PA_PCM_DUMP_SINK_INPUT = 0x00002000U, + PA_PCM_DUMP_SINK = 0x00004000U, + PA_PCM_DUMP_SOURCE = 0x00020000U, + PA_PCM_DUMP_SOURCE_OUTPUT = 0x00040000U, + PA_PCM_DUMP_SEPARATED = 0x10000000U, + PA_PCM_DUMP_MONITOR = 0x20000000U, }; #endif @@ -261,7 +249,6 @@ struct pa_core { pa_hook hooks[PA_CORE_HOOK_MAX]; #ifdef __TIZEN__ uint32_t pcm_dump; - uint32_t pcm_dump_option; unsigned empty_pop_threshold; #endif }; diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index 4d098b7..9b702da 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -5080,31 +5080,6 @@ static void command_set_pcm_dump(pa_pdispatch *pd, uint32_t command, uint32_t ta pa_pstream_send_simple_ack(c->pstream, tag); } - -static void command_set_pcm_dump_option(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) { - pa_native_connection *c = PA_NATIVE_CONNECTION(userdata); - uint32_t dump_option; - bool dump_option_enable; - - pa_native_connection_assert_ref(c); - pa_assert(t); - - if (pa_tagstruct_getu32(t, &dump_option) < 0 || - pa_tagstruct_get_boolean(t, &dump_option_enable) < 0 || - !pa_tagstruct_eof(t)) { - protocol_error(c); - return; - } - - CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS); - - if (dump_option_enable) - c->protocol->core->pcm_dump_option |= dump_option; - else - c->protocol->core->pcm_dump_option &= ~dump_option; - - pa_pstream_send_simple_ack(c->pstream, tag); -} #endif static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = { [PA_COMMAND_ERROR] = NULL, @@ -5215,7 +5190,6 @@ static const pa_pdispatch_cb_t command_table[PA_COMMAND_MAX] = { [PA_COMMAND_EXTENSION] = command_extension, #ifdef TIZEN_PCM_DUMP [PA_COMMAND_SET_PCM_DUMP] = command_set_pcm_dump, - [PA_COMMAND_SET_PCM_DUMP_OPTION] = command_set_pcm_dump_option, #endif #ifdef TIZEN_SECURITY [PA_COMMAND_CHECK_PRIVILEGE] = command_check_privilege, diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c index aee8764..6edf57f 100644 --- a/src/pulsecore/sink-input.c +++ b/src/pulsecore/sink-input.c @@ -83,7 +83,7 @@ static void pa_sink_input_write_pcm_dump(pa_sink_input *i, pa_memchunk *chunk) char datetime[7]; /* open file for dump pcm */ - if (i->core->pcm_dump & PA_PCM_DUMP_PA_SINK_INPUT && !i->pcm_dump_fp && i->state == PA_SINK_INPUT_RUNNING) { + if (i->core->pcm_dump & PA_PCM_DUMP_SINK_INPUT && !i->pcm_dump_fp && i->state == PA_SINK_INPUT_RUNNING) { pa_gettimeofday(&now); localtime_r(&now.tv_sec, &tm); memset(&datetime[0], 0x00, sizeof(datetime)); @@ -114,7 +114,7 @@ static void pa_sink_input_write_pcm_dump(pa_sink_input *i, pa_memchunk *chunk) pa_xfree(dump_time); pa_xfree(dump_path_surfix); /* close file for dump pcm when config is changed */ - } else if (~i->core->pcm_dump & PA_PCM_DUMP_PA_SINK_INPUT && i->pcm_dump_fp) { + } else if (~i->core->pcm_dump & PA_PCM_DUMP_SINK_INPUT && i->pcm_dump_fp) { fclose(i->pcm_dump_fp); pa_log_info("%s closed", i->dump_path); pa_xfree(i->dump_path); @@ -785,7 +785,7 @@ static void sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state) pa_sink_input_set_state_within_thread(ssync, state); } #ifdef TIZEN_PCM_DUMP - if (i->state == PA_SINK_INPUT_RUNNING && i->pcm_dump_fp && (i->core->pcm_dump_option & PA_PCM_DUMP_OPTION_SEPARATED)) { + if (i->state == PA_SINK_INPUT_RUNNING && i->pcm_dump_fp && (i->core->pcm_dump & PA_PCM_DUMP_SEPARATED)) { /* close file for dump pcm */ fclose(i->pcm_dump_fp); pa_log_info("%s closed", i->dump_path); diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index 4e8d328..acf347e 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -88,7 +88,7 @@ static void pa_sink_write_pcm_dump(pa_sink *s, pa_memchunk *chunk) char datetime[7]; /* open file for dump pcm */ - if (s->core->pcm_dump & PA_PCM_DUMP_PA_SINK && !s->pcm_dump_fp && s->state == PA_SINK_RUNNING) { + if (s->core->pcm_dump & PA_PCM_DUMP_SINK && !s->pcm_dump_fp && s->state == PA_SINK_RUNNING) { pa_gettimeofday(&now); localtime_r(&now.tv_sec, &tm); memset(&datetime[0], 0x00, sizeof(datetime)); @@ -119,7 +119,7 @@ static void pa_sink_write_pcm_dump(pa_sink *s, pa_memchunk *chunk) pa_xfree(dump_time); pa_xfree(dump_path_surfix); /* close file for dump pcm when config is changed */ - } else if (~s->core->pcm_dump & PA_PCM_DUMP_PA_SINK && s->pcm_dump_fp) { + } else if (~s->core->pcm_dump & PA_PCM_DUMP_SINK && s->pcm_dump_fp) { fclose(s->pcm_dump_fp); pa_log_info("%s closed", s->dump_path); pa_xfree(s->dump_path); @@ -549,7 +549,7 @@ static int sink_set_state(pa_sink *s, pa_sink_state_t state, pa_suspend_cause_t #ifdef TIZEN_PCM_DUMP /* close file for dump pcm */ - if (s->pcm_dump_fp && (s->core->pcm_dump_option & PA_PCM_DUMP_OPTION_SEPARATED) && suspending) { + if (s->pcm_dump_fp && (s->core->pcm_dump & PA_PCM_DUMP_SEPARATED) && suspending) { fclose(s->pcm_dump_fp); pa_log_info("%s closed", s->dump_path); pa_xfree(s->dump_path); diff --git a/src/pulsecore/source-output.c b/src/pulsecore/source-output.c index 2b3fa09..10bffd1 100644 --- a/src/pulsecore/source-output.c +++ b/src/pulsecore/source-output.c @@ -63,7 +63,7 @@ static void pa_source_output_write_pcm_dump(pa_source_output *o, pa_memchunk *ch char datetime[7]; /* open file for dump pcm */ - if (o->core->pcm_dump & PA_PCM_DUMP_PA_SOURCE_OUTPUT && !o->pcm_dump_fp && o->state == PA_SOURCE_OUTPUT_RUNNING) { + if (o->core->pcm_dump & PA_PCM_DUMP_SOURCE_OUTPUT && !o->pcm_dump_fp && o->state == PA_SOURCE_OUTPUT_RUNNING) { pa_gettimeofday(&now); localtime_r(&now.tv_sec, &tm); memset(&datetime[0], 0x00, sizeof(datetime)); @@ -94,7 +94,7 @@ static void pa_source_output_write_pcm_dump(pa_source_output *o, pa_memchunk *ch pa_xfree(dump_time); pa_xfree(dump_path_surfix); /* close file for dump pcm when config is changed */ - } else if (~o->core->pcm_dump & PA_PCM_DUMP_PA_SOURCE_OUTPUT && o->pcm_dump_fp) { + } else if (~o->core->pcm_dump & PA_PCM_DUMP_SOURCE_OUTPUT && o->pcm_dump_fp) { fclose(o->pcm_dump_fp); pa_log_info("%s closed", o->dump_path); pa_xfree(o->dump_path); @@ -632,7 +632,7 @@ static void source_output_set_state(pa_source_output *o, pa_source_output_state_ pa_source_output_set_state_within_thread(o, state); #ifdef TIZEN_PCM_DUMP - if (o->state == PA_SOURCE_OUTPUT_RUNNING && o->pcm_dump_fp && (o->core->pcm_dump_option & PA_PCM_DUMP_OPTION_SEPARATED)) { + if (o->state == PA_SOURCE_OUTPUT_RUNNING && o->pcm_dump_fp && (o->core->pcm_dump & PA_PCM_DUMP_SEPARATED)) { /* close file for dump pcm */ fclose(o->pcm_dump_fp); pa_log_info("%s closed", o->dump_path); diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index 7f097db..23d39bf 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -78,8 +78,8 @@ static void pa_source_write_pcm_dump(pa_source *s, pa_memchunk *chunk) char datetime[7]; /* open file for dump pcm */ - if (s->core->pcm_dump & PA_PCM_DUMP_PA_SOURCE && !s->pcm_dump_fp && s->state == PA_SOURCE_RUNNING && - !(~s->core->pcm_dump_option & PA_PCM_DUMP_OPTION_MONITOR && s->monitor_of)) { + if (s->core->pcm_dump & PA_PCM_DUMP_SOURCE && !s->pcm_dump_fp && s->state == PA_SOURCE_RUNNING && + !(~s->core->pcm_dump & PA_PCM_DUMP_MONITOR && s->monitor_of)) { pa_gettimeofday(&now); localtime_r(&now.tv_sec, &tm); memset(&datetime[0], 0x00, sizeof(datetime)); @@ -110,7 +110,7 @@ static void pa_source_write_pcm_dump(pa_source *s, pa_memchunk *chunk) pa_xfree(dump_time); pa_xfree(dump_path_surfix); /* close file for dump pcm when config is changed */ - } else if (~s->core->pcm_dump & PA_PCM_DUMP_PA_SOURCE && s->pcm_dump_fp) { + } else if (~s->core->pcm_dump & PA_PCM_DUMP_SOURCE && s->pcm_dump_fp) { fclose(s->pcm_dump_fp); pa_log_info("%s closed", s->dump_path); pa_xfree(s->dump_path); @@ -497,7 +497,7 @@ static int source_set_state(pa_source *s, pa_source_state_t state, pa_suspend_ca #ifdef TIZEN_PCM_DUMP /* close file for dump pcm */ - if (s->pcm_dump_fp && (s->core->pcm_dump_option & PA_PCM_DUMP_OPTION_SEPARATED) && suspending) { + if (s->pcm_dump_fp && (s->core->pcm_dump & PA_PCM_DUMP_SEPARATED) && suspending) { fclose(s->pcm_dump_fp); pa_log_info("%s closed", s->dump_path); pa_xfree(s->dump_path); diff --git a/src/utils/pactl.c b/src/utils/pactl.c index 6e430bb..a196f1c 100644 --- a/src/utils/pactl.c +++ b/src/utils/pactl.c @@ -34,6 +34,10 @@ #include +#ifdef TIZEN_PCM_DUMP +#include +#endif + #include #include @@ -100,6 +104,11 @@ static int actions = 0; static bool nl = false; +#ifdef TIZEN_PCM_DUMP +static uint32_t pcm_dump_type = 0; +static int pcm_dump_type_enable; +#endif + static enum { NONE, EXIT, @@ -131,6 +140,9 @@ static enum { SET_SINK_FORMATS, SET_PORT_LATENCY_OFFSET, SUBSCRIBE +#ifdef TIZEN_PCM_DUMP + ,SET_PCM_DUMP +#endif } action = NONE; static void quit(int ret) { @@ -1436,6 +1448,11 @@ static void context_state_callback(pa_context *c, void *userdata) { NULL); break; +#ifdef TIZEN_PCM_DUMP + case SET_PCM_DUMP: + o = pa_context_set_pcm_dump(c, pcm_dump_type, pcm_dump_type_enable, simple_callback, NULL); + break; +#endif default: pa_assert_not_reached(); } @@ -1596,6 +1613,9 @@ static void help(const char *argv0) { printf("%s %s %s %s\n", argv0, _("[options]"), "set-sink-formats", _("#N FORMATS")); printf("%s %s %s %s\n", argv0, _("[options]"), "set-port-latency-offset", _("CARD-NAME|CARD-#N PORT OFFSET")); printf("%s %s %s\n", argv0, _("[options]"), "subscribe"); +#ifdef TIZEN_PCM_DUMP + printf("%s %s %s %s\n", argv0, _("[options]"), "set-pcm-dump", _("[TYPE] 1|0")); +#endif printf(_("\nThe special names @DEFAULT_SINK@, @DEFAULT_SOURCE@ and @DEFAULT_MONITOR@\n" "can be used to specify the default sink, source and monitor.\n")); @@ -2066,6 +2086,49 @@ int main(int argc, char *argv[]) { ret = 0; goto quit; } +#ifdef TIZEN_PCM_DUMP + else if (pa_streq(argv[optind], "set-pcm-dump")) { + int i, b; + + action = SET_PCM_DUMP; + + if (argc == optind+2) { + pcm_dump_type |= PA_PCM_DUMP_SINK_INPUT | PA_PCM_DUMP_SINK; + pcm_dump_type |= PA_PCM_DUMP_SOURCE | PA_PCM_DUMP_SOURCE_OUTPUT; + } else { + for (i = optind+1; i < argc-1; i++) { + if (pa_streq(argv[i], "playback")) { + pcm_dump_type |= PA_PCM_DUMP_SINK_INPUT | PA_PCM_DUMP_SINK; + } else if (pa_streq(argv[i], "sink-input")) { + pcm_dump_type |= PA_PCM_DUMP_SINK_INPUT; + } else if (pa_streq(argv[i], "sink")) { + pcm_dump_type |= PA_PCM_DUMP_SINK; + } else if (pa_streq(argv[i], "capture")) { + pcm_dump_type |= PA_PCM_DUMP_SOURCE | PA_PCM_DUMP_SOURCE_OUTPUT; + } else if (pa_streq(argv[i], "source")) { + pcm_dump_type |= PA_PCM_DUMP_SOURCE; + } else if (pa_streq(argv[i], "source-output")) { + pcm_dump_type |= PA_PCM_DUMP_SOURCE_OUTPUT; + } else if (pa_streq(argv[i], "separate")) { + pcm_dump_type |= PA_PCM_DUMP_SEPARATED; + } else { + pa_log(_("Specify nothing, or one of: %s"), "playback, " + "sink-input, sink, capture, source, source-output, separate"); + } + } + } + + if ((b = pa_parse_boolean(argv[argc-1])) < 0) { + pa_log(_("Invalid dump specification.")); + goto quit; + } + + pcm_dump_type_enable = !!b; + + if (!pcm_dump_type) + goto quit; + } +#endif } if (action == NONE) { -- 2.7.4