Page 3 sur 3
ça marche tjrs pas
Publié : jeu. 09/mars/2006 21:24
par meganet
Resalut,
ça ne marche toujorus pas.
VOilà toutes ma procedure si ça peu aider.
Procedure LoadStream(System.l,URL.s)
ProcedureReturn CallFunctionFast(PB_FMOD_CreateStream,System,URL,$00000080,0,0)
EndProcedure
Si quelqu'un à la soluce?
PS: je n'utilise pas CreateSound, mais bien CreateStream, car j'ai cru comprendre dans la doc qu'il falait utiliser cette fonction pour du streaming.
Merci à tous!
Publié : jeu. 09/mars/2006 21:31
par KarLKoX
Comme je viens de te le dire, cette fonction prend
5 paramètres et non 4, le dernier param ne
peut être un zéro mais correspond au pointeur "sound" retourné par FMOD Ex.
Ce qui donne :
Code : Tout sélectionner
Procedure LoadStream(System.l,URL.s)
ProcedureReturn CallFunctionFast(PB_FMOD_CreateStream,System,URL,$00000080,0,0,@Sound)
EndProcedure
Tourjous rien!
Publié : jeu. 09/mars/2006 22:03
par meganet
Ouai, j'ai tourjour rien.
9a plante tjrs!
Voilà tout mon code
Fichier Main.pb
Enumeration
#LibFMOD
EndEnumeration
XIncludeFile("Stream.pb")
Global LibFMODName$, PB_FMOD_System_Init.l, PB_FMOD_System_CreateStream.l, FMODLoad, System.l, PB_FMOD_System_SetStreamBufferSize.l, Sound.l
LibFMODName$="C:\fmod.dll"
FMODLoad=FMOD_Load()
System=FMOD_System_Init()
FMOD_System_SetStreamBufferSize(System)
Sound=LoadStream(System,UrlStreamPlay$)
Fichier Stream.pb
Procedure FMOD_Load()
Protected DLL.l
DLL = OpenLibrary(#LibFMOD, ""+LibFMODName$+"")
If DLL = 0
MessageRequester(TitleMSG5$, Message5$, 0)
Endd()
Else
PB_FMOD_System_Init=GetFunction(#LibFMOD,"FMOD_System_Init")
PB_FMOD_System_SetStreamBufferSize=GetFunction(#LibFMOD,"FMOD_System_SetStreamBufferSize")
PB_FMOD_System_CreateStream = GetFunction(#LibFMOD,"FMOD_System_CreateStream")
ProcedureReturn DLL
EndIf
EndProcedure
Procedure FMOD_System_Init()
ProcedureReturn CallFunctionFast(PB_FMOD_System_Init,44100,1,0,0)
EndProcedure
Procedure FMOD_Close()
CloseLibrary(#LibFMOD)
EndProcedure
Procedure LoadStream(System.l,URL.s)
ProcedureReturn CallFunctionFast(PB_FMOD_CreateStream,System,URL,$00000080,0,0,@Sound)
EndProcedure
Procedure FMOD_System_SetStreamBufferSize(System.l)
ProcedureReturn CallFunctionFast(PB_FMOD_System_SetStreamBufferSize,System,64*1024,$00000008)
EndProcedure
Voilà.
Quand je compile, ça marche. Mais quand je lance l'exe, ça bug. Sauf quand je comante la ligne :
Sound=LoadStream(System,UrlStreamPlay$)
La ça ne fait pas d'erreur.
Si qqn vois le bug ça cerai kool!
Merci d'avance!
Publié : jeu. 09/mars/2006 22:06
par KarLKoX
Elle est où la fonction FMOD_System_Create ?
La voilà
Publié : jeu. 09/mars/2006 22:33
par meganet
La voilà, voilà le nouveau fichier Stream.pb
Procedure FMOD_Load()
Protected DLL.l
DLL = OpenLibrary(#LibFMOD, ""+LibFMODName$+"")
If DLL = 0
MessageRequester(TitleMSG5$, Message5$, 0)
Endd()
Else
PB_FMOD_System_Init=GetFunction(#LibFMOD,"FMOD_System_Init")
PB_FMOD_System_Create=GetFunction(#LibFMOD,"FMOD_System_Create")
PB_FMOD_System_SetStreamBufferSize=GetFunction(#LibFMOD,"FMOD_System_SetStreamBufferSize")
PB_FMOD_System_CreateStream = GetFunction(#LibFMOD,"FMOD_System_CreateStream")
ProcedureReturn DLL
EndIf
EndProcedure
Procedure FMOD_System_Init()
ProcedureReturn CallFunctionFast(PB_FMOD_System_Init,44100,1,0,0)
EndProcedure
Procedure FMOD_Close()
CloseLibrary(#LibFMOD)
EndProcedure
Procedure LoadStream(System.l,URL.s)
ProcedureReturn CallFunctionFast(PB_FMOD_CreateStream,System,URL,0,$00000080,0,Sound)
EndProcedure
Procedure FMOD_System_SetStreamBufferSize(System.l)
ProcedureReturn CallFunctionFast(PB_FMOD_System_SetStreamBufferSize,System,64*1024,$00000008)
EndProcedure
Procedure FMOD_Create()
ProcedureReturn CallFunctionFast(PB_FMOD_System_Create)
EndProcedure
(Le résultat renvoyer est stoqué dans Soudn).
Et ça bug toujrous!
Je ne comprend vraimeent rien!
DSL oublier
Publié : jeu. 09/mars/2006 22:34
par meganet
Quand je dit le résultat, c'est le résultat de FMOD_System_Create() qui est renvoyer dans Sound.
Publié : jeu. 09/mars/2006 22:51
par KarLKoX
Oui mais non, la tu fais un peu n'importe quoi, lit bien ce que je te dit : regarde le fichier fmod.h, tout à la fin, tu as toutes les fonctions ainsi que les paramètres recquis ainsi que les valeurs retournées.
Par exemple :
Le ** signifie que FMOD_System_Create à besoin de l'adresse d'un pointeur pour y stocker le system ainsi créé.
Ce qui donne en PB :
Code : Tout sélectionner
Procedure FMOD_Create(*system)
ProcedureReturn CallFunctionFast(PB_FMOD_System_Create, @*system)
EndProcedure
Donc j'enlève
Publié : jeu. 09/mars/2006 23:14
par meganet
Donc, si je mais ça, j'enlève FMOD_System_Init?
Ou je carde les deux?
Publié : jeu. 09/mars/2006 23:19
par KarLKoX
Non, tu as aussi besoin d'utiliser FMOD_System_Init que tu appels apres la création du sous système de FMOD Ex via FMOD_System_Create.