Hallo.
Ich arbeite gerade an DirectSound und kann nicht einen primären Buffer erzeugen.
DirectX schmeißt mir beim Create (3) einen Fehler aus. Kennt sich jemand aus und kann mir weiterhelfen ?
Wichtig für mich: Ich möchte DirectSound direkt über die
DirectX API initialisieren also mit den Funktionen der dlls und den Methoden der herauskommenden Objekte. Ich verwende die Headerdateien von DelphiX.
Delphi-Quellcode:
var List: TStringList; a: TDSBUFFERDESC; ErrorCode: Integer;
begin
inherited Create();
List := TStringList.Create();
// 1, DirectSound erstellen
ErrorCode := DirectSoundCreate(
GUID, FIDirectSound,
nil);
if (ErrorCode = DS_OK)
then
List.Add('
1) idirectsound create erfolgreich')
else
List.Add('
1) idirectsound create fehlgeschlagen: ' + IntToHex(ErrorCode, 8));
// 2, CooperativeLevel einstellen
ErrorCode := FIDirectSound.SetCooperativeLevel(Wnd, DSSCL_NORMAL);
if (ErrorCode = DS_OK)
then
List.Add('
2) SetCooperativeLevel erfolgreich')
else
List.Add('
2) SetCooperativeLevel fehlgeschlagen: ' + IntToHex(ErrorCode, 8));
// 3, SoundBuffer erstellen, geht nicht
a.dwSize := SizeOf(TDSBUFFERDESC);
a.dwFlags := DSBCAPS_CTRLALL;
a.dwBufferBytes := 0;
a.lpwfxFormat :=
nil;
ErrorCode := FIDirectSound.CreateSoundBuffer(a, FIDirectSoundBuffer,
nil);
if (ErrorCode = DS_OK)
then
List.Add('
3) idirectsoundbuffer create erfolgreich')
else
List.Add('
3) idirectsoundbuffer create fehlgeschlagen: ' + IntToHex(ErrorCode, 8));
// ende
List.SaveToFile('
C:\dsound.log');
end;
Beim 3. Schritt gibt er mir den Fehlercode = $80070057 bzw. 0x80070057. Leider kann ich nicht herausfinden, was der Fehler genau bedeutet. Der soll auch sonst öfters bei Audiowiedergabe unter Windows vorkommen. Aber mein
DirectX ist korrekt installiert und hat eine passende Version. Ich kann Audio ohne Probleme abspielen.
So, wo liegt nun der Fehler ? ^^
Habe mich an diese Tutorial gehalten: http://edn.embarcadero.com/article/20941
List ist zum Protokolieren da und die Ausgabe ist:
Code:
1) idirectsound create erfolgreich
2) SetCooperativeLevel erfolgreich
3) idirectsoundbuffer create fehlgeschlagen: 80070057
MfG