Quelqu'un pourrais me filer un coup de main sur du streaming

Programmation d'applications complexes
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

ça marche tjrs pas

Message 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!
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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 
"Qui baise trop bouffe un poil." P. Desproges
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Tourjous rien!

Message 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!
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Elle est où la fonction FMOD_System_Create ?
"Qui baise trop bouffe un poil." P. Desproges
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

La voilà

Message 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!
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

DSL oublier

Message par meganet »

Quand je dit le résultat, c'est le résultat de FMOD_System_Create() qui est renvoyer dans Sound.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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 
"Qui baise trop bouffe un poil." P. Desproges
meganet
Messages : 317
Inscription : jeu. 20/janv./2005 22:00

Donc j'enlève

Message par meganet »

Donc, si je mais ça, j'enlève FMOD_System_Init?
Ou je carde les deux?
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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.
"Qui baise trop bouffe un poil." P. Desproges
Répondre