![]() |
DirectSound Buffer - Create geht nicht
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:
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.
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; So, wo liegt nun der Fehler ? ^^ Habe mich an diese Tutorial gehalten: ![]() List ist zum Protokolieren da und die Ausgabe ist:
Code:
1) idirectsound create erfolgreich
2) SetCooperativeLevel erfolgreich 3) idirectsoundbuffer create fehlgeschlagen: 80070057 MfG |
AW: DirectSound Buffer - Create geht nicht
a.dwBufferBytes := 0 kommt mir komisch vor. Hier sollte eine Puffergröße übergeben werden.
a.lpwfxFormat := nil macht auch nicht viel Sinn. Hier müssen die Formatdaten (gewünschte Samplerate usw.) übergeben werden. |
AW: DirectSound Buffer - Create geht nicht
|
AW: DirectSound Buffer - Create geht nicht
Das mit den PrimaryBuffers hatte ich überlesen. Müsste dann als Flag nicht auch DSBCAPS_PRIMARYBUFFER gesetzt werden?
|
AW: DirectSound Buffer - Create geht nicht
Also DSBCAPS_PRIMARYBUFFER und ein paar andere Parameteränderungen brachten nichts. Gleicher Fehler.
Geht es vielleicht mit einem Secondary Buffer oder wie kann man sonst mit DirectX Api einen Sound abspielen ? Möglichst ohne Streams. Nehmen wir mal an, ich hätte einen Buffer im Arbeitsspeicher zum Abspielen bereit stehen (enthält nur die Daten aus einer wav-datei ohne Header ohne SchnickSchnack, nur die Bytes für den Sound) ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz