130 lines
5.3 KiB
C
130 lines
5.3 KiB
C
#ifndef _SNDVIRT_H_
|
|
#define _SNDVIRT_H_
|
|
|
|
#include "sndlst2.h"
|
|
|
|
/*handle to functions*/
|
|
typedef long (SND_CALL *td_pfn_lPlaySxd)(tduRefRes,SoundParam*,long,SND_td_pfn_vSoundCallback,long);
|
|
typedef void (SND_CALL *td_pfn_vPauseSxd)(long);
|
|
typedef void (SND_CALL *td_pfn_vResumeSxd)(long);
|
|
typedef SndBool (SND_CALL *td_pfn_bSetParamSxd)(long,SoundParam*);
|
|
typedef void (SND_CALL *td_pfn_vStopSxd)(long);
|
|
typedef SndReal (SND_CALL *td_pfn_rGetPosSxd)(long);
|
|
typedef SndReal (SND_CALL *td_pfn_rGetLengthSxd)(long);
|
|
typedef void (SND_CALL *td_pfn_vRemoveCallbackSxd)(long);
|
|
typedef SndBool (SND_CALL *td_pfn_bTestIsPlayingSxd)(long);
|
|
|
|
|
|
/*typedefs*/
|
|
SNDLST2_M_DynamicUseListOf(SND_tdhVirtualModule);
|
|
|
|
typedef struct _virtual_voice *p_virtual_voice;
|
|
|
|
SNDLST2_M_DynamicUseListOf(p_virtual_voice);
|
|
|
|
typedef struct _audible_voice *p_audible_voice;
|
|
|
|
SNDLST2_M_DynamicUseListOf(p_audible_voice);
|
|
|
|
typedef struct _dead_voice *p_dead_voice;
|
|
|
|
SNDLST2_M_DynamicUseListOf(p_dead_voice);
|
|
|
|
typedef struct _virtual_voice_list *p_virtual_voice_list;
|
|
|
|
typedef struct _virtual_voice{
|
|
long lVoice; /*retour du PlaySxdWave;C_PLAY_FAILED si pas de Stop necessaire*/
|
|
SndReal rNorme; /*norme permettant le classement des voies (+/- distance au micro)*/
|
|
long lPrio; /*priority level*/
|
|
long lInstance; /*instace (+/- ordre d'arrivee)*/
|
|
SND_td_pfn_vSoundCallback pfnCallback;/*fonction de callback haut-niveau (passee à SND_fn_lPlayVirt)*/
|
|
long lParamCallback;
|
|
tduRefRes tduRes; /*ressource virtuellement associee à l voie (passee à SND_fn_lPlayVirt)*/
|
|
long lSizeParam; /*taille du suivant*/
|
|
SoundParam* pstParam; /*copy du dernier SetParam*/
|
|
SndBool_field_decl(bHardCallback); /*TRUE if Callback called by hard-leve, FALSE if called by SNDVIRT*/
|
|
SndBool_field_decl(bUsed); /*FALSE si aucune reference n'a encore ete rendue publique = destrction immediate toleree*/
|
|
SndBool_field_decl(bPaused); /*TRUE si en pause*/
|
|
/*---*/
|
|
p_audible_voice audible; /*!=NULL si voie audible*/
|
|
p_dead_voice dead; /*!=NULL si voie audible*/
|
|
SNDLST2_M_DynamicElementDeclaration(p_virtual_voice)
|
|
} virtual_voice;
|
|
|
|
typedef struct _virtual_voice_list{
|
|
SNDLST2_M_DynamicAnchorDeclaration(p_virtual_voice) pList;
|
|
} virtual_voice_list;
|
|
|
|
/*liste des audibles*/
|
|
typedef struct _audible_voice{
|
|
p_virtual_voice voice;
|
|
SndBool bCheck;
|
|
SNDLST2_M_DynamicElementDeclaration(p_audible_voice)
|
|
} audible_voice;
|
|
|
|
typedef struct _audible_voice_list{
|
|
SNDLST2_M_DynamicAnchorDeclaration(p_audible_voice) pList;
|
|
} audible_voice_list;
|
|
|
|
/*liste des voies tuees (à desallouee ou à reutiliser pour une nouvelle voie*/
|
|
typedef struct _dead_voice{
|
|
p_virtual_voice voice;
|
|
SNDLST2_M_DynamicElementDeclaration(p_dead_voice)
|
|
} dead_voice;
|
|
|
|
typedef struct _dead_voice_list{
|
|
SNDLST2_M_DynamicAnchorDeclaration(p_dead_voice) pList;
|
|
} dead_voice_list;
|
|
|
|
typedef struct _ptr_virtualfunction
|
|
{
|
|
td_pfn_lPlaySxd pfn_lPlaySxd;
|
|
td_pfn_vStopSxd pfn_vStopSxd;
|
|
td_pfn_bSetParamSxd pfn_bSetParamSxd;
|
|
td_pfn_vPauseSxd pfn_vPauseSxd;
|
|
td_pfn_vResumeSxd pfn_vResumeSxd;
|
|
td_pfn_rGetPosSxd pfn_rGetPosSxd;
|
|
td_pfn_rGetLengthSxd pfn_rGetLengthSxd;
|
|
td_pfn_vRemoveCallbackSxd pfn_vRemoveCallbackSxd;
|
|
td_pfn_bTestIsPlayingSxd pfn_bTestIsPlayingSxd;
|
|
} ptr_virtualfunction;
|
|
|
|
/*liste des module Virtual*/
|
|
typedef struct _virtual_module{
|
|
/*liste des voies virtuelles = id retournes par PlayVitual*/
|
|
virtual_voice_list virtual_voices;
|
|
/*liste des voies physique = id retournes par PlaySnd*/
|
|
audible_voice_list audible_voices;
|
|
/*liste des voies desallouees*/
|
|
dead_voice_list dead_voices;
|
|
long g_lInstance;
|
|
long g_lNbSxdAudible;
|
|
ptr_virtualfunction stPtrFunctions;
|
|
SNDLST2_M_DynamicElementDeclaration(SND_tdhVirtualModule)
|
|
} virtual_module;
|
|
|
|
typedef struct _virtual_module_list{
|
|
SNDLST2_M_DynamicAnchorDeclaration(SND_tdhVirtualModule) pList;
|
|
} virtual_module_list;
|
|
|
|
|
|
/*functions*/
|
|
long SND_fn_lPlaySxdVirtual(SND_tdhVirtualModule module,tduRefRes res,SoundParam *par,long prio,SND_td_pfn_vSoundCallback fn_callback,long par_callback);
|
|
void SND_fn_vRemoveCallbackSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
SndBool SND_fn_bSetParamSxdVirtual(SND_tdhVirtualModule module,long voice,SoundParam *par);
|
|
SndBool SND_fn_bTestIsPlayingSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
void SND_fn_vStopSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
void SND_fn_vPauseSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
void SND_fn_vResumeSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
void SND_fn_vSynchroSxdVirtual(SND_tdhVirtualModule module);
|
|
|
|
SndReal SND_fn_rGetPosSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
SndReal SND_fn_rGetLengthSxdVirtual(SND_tdhVirtualModule module,long voice);
|
|
|
|
SND_tdhVirtualModule SND_fn_lInitSxdVirtual(long nb_audible,ptr_virtualfunction* functions);
|
|
SndBool SND_fn_bTestInitSxdVirtual(SND_tdhVirtualModule module);
|
|
void SND_fn_vDesInitSxdVirtual(SND_tdhVirtualModule module);
|
|
void SND_fn_vChangeNbVoiceWishedSxdVirtual(SND_tdhVirtualModule module,long nb_audible);
|
|
|
|
#endif /*_SNDVIRT_H_*/
|