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 :

Code : Tout sélectionner

FMOD_RESULT F_API FMOD_System_Create               (FMOD_SYSTEM **system); 
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.