Ik heb een programmatje in Delphi 3 geschreven wat meerdere IDirectSound buffers achterelkaar moet spelen. De bedoeling is dus dat buffer x pas begint met spelen als buffer x-1, indien aanwezig, klaar is met spelen.
Normaal los je dit op door te triggeren op de waarde verkregen door IDirectSoundBuffer.GetStatus. Deze geeft 'DSBSTATUS_PLAYING ' aan als hij aan het spelen is. Maar... wat doet mijn programmatje ? Ik vraag de status op direct achter het play-commando (wat als een thread werkt), en de status is steeds DS_OK !!! Daar hbe ik dus ook niks aan, gezien dat ook de waarde is als de buffer niet speelt.
Weten jullie hoe dit probleem komt en /of kunnen julile mij er mee helpen ??
Mijn code versimpeld:
Bij voorbaat dank !
Normaal los je dit op door te triggeren op de waarde verkregen door IDirectSoundBuffer.GetStatus. Deze geeft 'DSBSTATUS_PLAYING ' aan als hij aan het spelen is. Maar... wat doet mijn programmatje ? Ik vraag de status op direct achter het play-commando (wat als een thread werkt), en de status is steeds DS_OK !!! Daar hbe ik dus ook niks aan, gezien dat ook de waarde is als de buffer niet speelt.
Weten jullie hoe dit probleem komt en /of kunnen julile mij er mee helpen ??
Mijn code versimpeld:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| -------------------------------------------------------------------------------------------------------- procedure speelSequensieel var i, a: integer; buffer, currentBuffer: IDirectSoundBuffer; begin stopall; // procedure om bij alle buffers stop() aan te roepen currentBuffer := nil; for i := 0 to Buffers.Count -1 do begin if (currentBuffer <> nil) then begin while currentBuffer.GetStatus(a) = DSBSTATUS_PLAYING do begin sleep(10); end; end; buffer := buffers[i]; buffer.play(0,0,0); Log('Playing sample ' + inttostr(i)); LogStatus(buffer.GetStatus(a)); // is dus steeds DS_OK en nooit DSBSTATUS_PLAYING !! currentBuffer := buffer; end; end; -------------------------------------------------------------------------------------------------------- |
Bij voorbaat dank !
[ Voor 2% gewijzigd door Glimi op 02-04-2003 17:31 ]