pactl: Adds set-pcm-dump command 56/231656/6
authorJaechul Lee <jcsing.lee@samsung.com>
Thu, 23 Apr 2020 08:08:00 +0000 (17:08 +0900)
committerJaechul Lee <jcsing.lee@samsung.com>
Tue, 28 Apr 2020 08:08:50 +0000 (17:08 +0900)
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 <jcsing.lee@samsung.com>
13 files changed:
packaging/pulseaudio.spec
src/Makefile.am
src/map-file
src/pulse/introspect.c
src/pulse/introspect.h
src/pulsecore/core.c
src/pulsecore/core.h
src/pulsecore/protocol-native.c
src/pulsecore/sink-input.c
src/pulsecore/sink.c
src/pulsecore/source-output.c
src/pulsecore/source.c
src/utils/pactl.c

index e688e91..ea96d9d 100644 (file)
@@ -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
index 4097d4b..89aeab5 100644 (file)
@@ -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
index 5eff4bd..218f455 100644 (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;
index d868655..40b3644 100644 (file)
@@ -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
index 7d3b8d9..fd9eb35 100644 (file)
@@ -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
 
 /** @} */
index ba12dbc..eca2dde 100644 (file)
@@ -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;
index e6ba518..2d9c27d 100644 (file)
@@ -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
 };
index 4d098b7..9b702da 100644 (file)
@@ -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,
index aee8764..6edf57f 100644 (file)
@@ -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);
index 4e8d328..acf347e 100644 (file)
@@ -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);
index 2b3fa09..10bffd1 100644 (file)
@@ -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);
index 7f097db..23d39bf 100644 (file)
@@ -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);
index 6e430bb..a196f1c 100644 (file)
 
 #include <sndfile.h>
 
+#ifdef TIZEN_PCM_DUMP
+#include <pulsecore/core.h>
+#endif
+
 #include <pulse/pulseaudio.h>
 #include <pulse/ext-device-restore.h>
 
@@ -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) {