Ga naar inhoud

IDirectSoundNotify werkt alleen met grote WAVbuffers :?


Aanbevolen berichten

Programmeerbroeders. Ik heb weer eens een probleem, dit keer met DirectSound Notify-Events in Delphi. Ik heb een stukje code opgesteld dat een IDirectSoundBuffer afspeelt, en op bepaalde punten (bytenrs) in die buffer wordt het event Event aangeroepen. Het frappante is alleen, dat dit wel gebeurt bij brass.wav, een wavje van 7 seconden, en niet bij 19long.wav, een wavje van 3 seconden. Dan worden de events niet 'wakker' en blijft hij steeds in de WaitForSingleObject hangne. Ik dacht: wat is er verschillend aan die wavjes? Nou, brass.wav was langer. Ik maak 19long dus langer, 10 seconden, en voila het werkt. Maar.. dit moet niet zo. He tmoet ook met kortere wavjes werken. Heeft iemand gezien wat ik fout doe ? ---------------------------------------------------------------------------- var noti: IDirectSoundNotify; // pointer to the interface waitresult: DWord; i: Integer; PosNots : array[0..1] of TDSBPOSITIONNOTIFY; Event: Integer; begin //(47059, 130633) voor 19long.wav //(90192, 176795) voor brass.wav setupDirectSoundBuffer('19long.wav'); // setupDirectSoundBuffer('brass.wav'); Event := CreateEvent(nil, false, false, nil); PosNots[0].dwOffset := 47059 * 4; // dwOffset is in bytes, 1smp = 4 bytes PosNots[1].dwOffset := 130633 * 4; PosNots[0].hEventNotify := Event; PosNots[1].hEventNotify := Event; DSErrorLog('Querying IDD_IDirectSoundNotify interface', // noti wordt aangemaakt buffers[0].QueryInterface(IID_IDirectSoundNotify, noti)); noti.SetNotificationPositions(2, @PosNots); buffers[0].Play(0,0,0); // mijn IDirectSoundBuffer Log('Waiting for event 1'); waitresult := WaitForSingleObject(Event, INFINITE); WaitErrorLog('waitresult: ', waitresult); Log('Ready'); Log('Waiting for event 2'); WaitErrorLog('waitresult: ', waitresult); waitresult := WaitForSingleObject(Event, INFINITE); Log('Ready'); end; ----------------------------------------------------------------------------
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...