Hello.

Our current version of VLC use same static client name when
connecting to JACK effectively preventing multiple instances
to output audio:

...
/* Connect to the JACK server */
p_sys->p_jack_client = jack_client_new( "vlc" );
...

The diff below allows one to run a number of VLCs. This is a
backport from VLC git repository. See

http://git.videolan.org/?p=vlc.git;a=commitdiff;h=31439d7a63b9405d551c527fda2ba330ee31c5bd;hp=9397093e7f39aef9537ca56ce34aab20cba01b02

- Alexey.

--- Makefile.orig       Thu May  8 02:55:43 2008
+++ Makefile    Thu May  8 02:57:28 2008
@@ -213,7 +213,7 @@
 .if !${FLAVOR:L:Mno_jack}
 MULTI_PACKAGES+=-jack
 COMMENT-jack=  jackd audio output module for vlc
-FULLPKGNAME-jack=vlc-jack-${V}
+FULLPKGNAME-jack=vlc-jack-${V}p0
 CONFIGURE_ARGS+=--enable-jack
 LIB_DEPENDS-jack=jack::audio/jack
 # any FLAVOR of vlc will do
--- /dev/null   Thu May  8 03:39:30 2008
+++ patches/patch-modules_audio_output_jack_c   Thu May  8 02:57:50 2008
@@ -0,0 +1,22 @@
+$OpenBSD$
+--- modules/audio_output/jack.c.orig
++++ modules/audio_output/jack.c
+@@ -73,6 +73,7 @@
+  
*****************************************************************************/
+ static int Open( vlc_object_t *p_this )
+ {
++    char psz_name[32];
+     aout_instance_t *p_aout = (aout_instance_t *)p_this;
+     unsigned int i, i_in_ports;
+     const char **pp_in_ports;
+@@ -88,7 +89,9 @@
+     p_aout->output.p_sys = p_sys;
+
+     /* Connect to the JACK server */
+-    p_sys->p_jack_client = jack_client_new( "vlc" );
++    snprintf( psz_name, sizeof(psz_name), "vlc_%d", getpid());
++    psz_name[sizeof(psz_name) - 1] = '\0';
++    p_sys->p_jack_client = jack_client_new( psz_name );
+     if( p_sys->p_jack_client == NULL )
+     {
+         msg_Err( p_aout, "failed to connect to JACK server" );

Attachment: x11_vlc_jack.diff
Description: Binary data

Reply via email to