[alsa-plugins,1/2] Allow to specify a client name as parameters
diff mbox

Message ID 9900E8BE2ADAAB43B2A4471493EDB7F94B3EFB@IRSMSX104.ger.corp.intel.com
State Accepted
Delegated to: Takashi Iwai
Headers show

Commit Message

Corfu, ValentinX Feb. 26, 2014, 2:03 p.m. UTC
Hi Takashi,

I reworked the patches and hope to be the final ones.  J
You will find attached at each of the emails.

Kind Regards,
Valentin Corfu
Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052

Comments

Takashi Iwai Feb. 26, 2014, 3:23 p.m. UTC | #1
At Wed, 26 Feb 2014 14:03:56 +0000,
Corfu, ValentinX wrote:
> 
> Hi Takashi,
> 
> I reworked the patches and hope to be the final ones.  J
> You will find attached at each of the emails.

OK, I applied the first patch with cleanup and reformatting, and
pushed out to git tree.

But the second patch is certainly buggy, so please resubmit after
fixing the following:

- You can't assign a compound to an integer
	num_channels = n;
  Code it correctly.

- Use "channels" instead of "nchan"

- Align the tab level.  We use 8 chars hard tabs.

- Rebase your patch with the latest alsa-plugins git tree.


thanks,

Takashi

Patch
diff mbox

From eba0b4ebeb34250f49f34776b288432fb782e092 Mon Sep 17 00:00:00 2001
From: Valentin Corfu <valentinx.corfu@intel.com>
Date: Tue, 11 Feb 2014 04:06:36 -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@intel.com>

diff --git a/jack/pcm_jack.c b/jack/pcm_jack.c
index c51fe84..983878f 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);
@@ -369,7 +376,7 @@  static int snd_pcm_jack_open(snd_pcm_t **pcmp, const char *name,
 		snd_pcm_jack_free(jack);
 		return -ENOENT;
 	}
-	
+
 	jack->areas = calloc(jack->channels, sizeof(snd_pcm_channel_area_t));
 	if (! jack->areas) {
 		snd_pcm_jack_free(jack);
@@ -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