Bonjour,
depuis quelques semaines je travaille sur DirectSound.
Je peux donc lire des fichiers WAVES linéaires 8 et 16 bits.
Cependant, j'ai besoin de concevoir un Buffer identique au Buffer DirectSound (inaccessible sur certaines propriétés).
Ma question :
Je charge un fichier WAVE à partir d'un TFileStream que je transmet au Buffer directSound :
1 2 3 4 5 6 7 8 9 10 11 12 13
| DSBuffer.Lock(BeginPos,
BuffLength,
AudioPTR1,
AudioBytes1,
AudioPTR2,
AudioBytes2,
0);
Datas.Read(AudioPTRtmp8[0],AudioBytes1);
CopyMemory(AudioPTR1, AudioPTRtmp8, BuffTransLength);
DSBuffer.Unlock(AudioPTR1,AudioBytes1,audioptr2,audiobytes2); |
BeginPos : Position dans le fichier à partir de laquelle je veux envoyer les données à DSound.
BuffLength : Taille du buffer souhaité
AudioPTR1 : Pointeur vers la zone mémoire locked où je transfere les données
AudioBytes1: Taille que DSOund a pu charger.
Comment dois-je faire pour avoir strictement le même buffer que DSound ?
Pour le moment je faisais :
CopyMemory( @Buf8 [BeginPos], AudioPTR, Length);
Est-ce que c'est ca ? Ou non ?
Je n'ai pas de moyens de vérifier.
Enfin, dernière question, comment obtenir la position générale dans le fichier (et non dans le Buffer) ?
Meric de votre aide
Partager