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" );
x11_vlc_jack.diff
Description: Binary data