[vlc] Problem in switching audio between 2 VLC instances.
Mauro Carosso
mauro.carosso at email.it
Wed Apr 16 16:30:36 CEST 2008
I'm sorry for the third consecutive repost, but I had problems with my email
server.
Now the post should be OK.
I apologize again to all subscribers.
Hallo,
I'm trying to build a win32 application that launches 2 instances of VLC,
and then select only one audio track by muting the unwanted one.
To do this I write this small sample that loads in memory libvlc.dll,
creates 2 vlc_t structures, puts them on playing (the same file
video.mpg),wait for ten seconds and then mutes the first instance.
I expect to hear only one audio source(the one coming from the second
instance), but this does not happen : in fact, after muting the first audio
source, also the second audio source has been muted too (!), I don't hear
nothing anymore.
How can I do ? What I'm doing wrong ?
This is my sample compiled with mingw
#include "windows.h"
#include "stdio.h"
#include "conio.h"
#include "string.h"
HMODULE p_libvlc;
typedef char const *(*P_VLC_COMPILER)();
typedef int (*P_VLC_CREATE)();
typedef int (*P_VLC_DESTROY)( int id);
typedef int (*P_VLC_CLEANUP)( int id);
typedef int (*P_VLC_INIT)( int id, int n_comm, char **p_block);
typedef int (*P_VLC_ADDINTF)( int id, char const *str, int parm1, int
parm2);
typedef int (*P_VLC_PLAY)( int id);
typedef int (*P_VLC_STOP)( int id);
typedef int (*P_VLC_PAUSE)( int id);
typedef int (*P_VLC_VOLUMESET)(int, int);
#define MAX_N_REG 10
P_VLC_CREATE VLC_Create;
P_VLC_INIT VLC_Init;
P_VLC_PLAY VLC_Play;
P_VLC_STOP VLC_Stop;
P_VLC_DESTROY VLC_Destroy;
P_VLC_CLEANUP VLC_Cleanup;
P_VLC_VOLUMESET VLC_VolumeSet;
P_VLC_PAUSE VLC_Pause;
#define N_ARG 7
int main( int i_argc, char *ppsz_argv[] )
{
int id_vlc1;
int id_vlc2;
int esito=0;
char ch;
char *argomenti[N_ARG];
char arg1[]="a.exe";
char arg2[]="file://video.mpg";
char arg3[]=":width=352";
char arg4[]=":height=288";
char arg5[80]=":video-x=0";
char arg6[80]=":video-y=0";
char arg7[]="-R";
argomenti[0]=arg1;
argomenti[1]=arg2;
argomenti[2]=arg3;
argomenti[3]=arg4;
argomenti[4]=arg5;
argomenti[5]=arg6;
argomenti[6]=arg7;
p_libvlc = LoadLibrary("libvlc.dll");
if (p_libvlc == NULL) {
printf("rnlibvlc not found");
return(0);
}
VLC_Create=( P_VLC_CREATE)GetProcAddress( p_libvlc,"VLC_Create");
VLC_Init=( P_VLC_INIT)GetProcAddress( p_libvlc,"VLC_Init");
VLC_Destroy=( P_VLC_DESTROY)GetProcAddress( p_libvlc,"VLC_Destroy");
VLC_Play=( P_VLC_PLAY)GetProcAddress( p_libvlc,"VLC_Play");
VLC_Stop=( P_VLC_STOP)GetProcAddress( p_libvlc,"VLC_Stop");
VLC_Cleanup=( P_VLC_CLEANUP)GetProcAddress( p_libvlc,"VLC_CleanUp");
VLC_VolumeSet=( P_VLC_VOLUMESET)GetProcAddress( p_libvlc,"VLC_VolumeSet");
VLC_Pause=( P_VLC_PAUSE)GetProcAddress( p_libvlc,"VLC_Pause");
id_vlc1=(VLC_Create());
esito=(VLC_Init( id_vlc1, N_ARG,argomenti));
if (esito<0){
printf("rnVLC_Init ERROR");
VLC_Destroy( id_vlc1);
return(0);
}
(VLC_Play( id_vlc1));
id_vlc2=(VLC_Create());
sprintf( arg5,":video-x=370");
sprintf( arg6,":video-y=0");
esito=(VLC_Init( id_vlc2, N_ARG,argomenti));
if (esito<0){
printf("rnVLC_Init ERROR");
VLC_Destroy( id_vlc2);
return(0);
}
(VLC_Play( id_vlc2));
Sleep(10000);
// NOW I MUTE THE FIRST INSTANCE BUT AFTER ALSO THE SECOND AUDIO INSTANCE IS
MUTED
VLC_VolumeSet( id_vlc1, 0);
Sleep(10000);
VLC_Pause( id_vlc1);
VLC_Stop( id_vlc1);
Sleep(1000);
VLC_Pause( id_vlc2);
VLC_Stop( id_vlc2);
Sleep(1000);
VLC_Cleanup( id_vlc1);
VLC_Destroy( id_vlc1);
VLC_Cleanup( id_vlc2);
VLC_Destroy( id_vlc2);
FreeLibrary( p_libvlc);
Sleep(5000);
return 0;
}
--
Email.it, the professional e-mail, gratis per te: http://www.email.it/f
Sponsor:
Scopri le tue passioni con Leonardo.it!
Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=7656&d=20080416
More information about the vlc
mailing list