[alsa-devel] [alsa-plugins] [PATCH 1/2] Allow to specify a client name as parameters

Corfu, ValentinX valentinx.corfu at intel.com
Fri Jan 31 15:05:42 CET 2014


>From 1ac8268330df7564edf252a542a27f3cf4f4472f Mon Sep 17 00:00:00 2001
From: Valentin Corfu <valentinx.corfu at intel.com>
Date: Fri, 31 Jan 2014 08:06:23 -0500
Subject: [PATCH 1/2] Allow to specify a client name as parameters

The current jack client name contains the process id of the application providing the audio samples.
This leads to unpredictable jack client names which makes handling of the connections by a controlling application very hard.
This modification now, allows to specify a client name as parameters in the configuration file.
The implementation is backward compatible and simply adds a new configuration option to the plugin.

Signed-off-by: Valentin Corfu <valentinx.corfu at intel.com>

diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c
index c51fe84..475c619 100644
--- a/jack/pcm_jack.c
+++ b/jack/pcm_jack.c
@@ -355,12 +355,19 @@ static int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name,
         snd_pcm_jack_free(jack);
         return -EINVAL;
     }
-
-    if (snprintf(jack_client_name, sizeof(jack_client_name), "alsa-jack.%s%s.%d.%d", name,
-             stream == SND_PCM_STREAM_PLAYBACK ? "P" : "C", getpid(), num++)
-        >= (int)sizeof(jack_client_name)) {
-        fprintf(stderr, "%s: WARNING: JACK client name '%s' truncated to %d characters, might not be unique\n",
-            __func__, jack_client_name, (int)strlen(jack_client_name));
+    if ( name == NULL ) {
+        if (snprintf(jack_client_name, sizeof(jack_client_name), "alsa-jack.%s%s.%d.%d", name,
+                stream == SND_PCM_STREAM_PLAYBACK ? "P" : "C", getpid(), num++)
+            >= (int)sizeof(jack_client_name)) {
+                fprintf(stderr, "%s: WARNING: JACK client name '%s' truncated to %d characters, might not be unique\n",
+                __func__, jack_client_name, (int)strlen(jack_client_name));
+        }
+    } else {
+        if (snprintf(jack_client_name, sizeof(jack_client_name), "%s", name)
+            >= (int)sizeof(jack_client_name)) {
+                fprintf(stderr, "%s: WARNING: JACK client name '%s' truncated to %d characters, might not be unique\n",
+                __func__, jack_client_name, (int)strlen(jack_client_name));
+        }
     }

     jack->client = jack_client_new(jack_client_name);
@@ -423,6 +430,10 @@ SND_PCM_PLUGIN_DEFINE_FUNC(jack)
             continue;
         if (strcmp(id, "comment") == 0 || strcmp(id, "type") == 0 || strcmp(id, "hint") == 0)
             continue;
+        if (strcmp(id, "name") == 0) {
+            snd_config_get_string(n, &name);
+            continue;
+        }
         if (strcmp(id, "playback_ports") == 0) {
             if (snd_config_get_type(n) != SND_CONFIG_TYPE_COMPOUND) {
                 SNDERR("Invalid type for %s", id);
--
1.8.1.4

--------------------------------------------------------------
Intel Shannon Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263
Business address: Dromore House, East Park, Shannon, Co. Clare

This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.




More information about the Alsa-devel mailing list