AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia DirectSound Buffer - Create geht nicht
Thema durchsuchen
Ansicht
Themen-Optionen

DirectSound Buffer - Create geht nicht

Ein Thema von Cicaro · begonnen am 30. Okt 2011 · letzter Beitrag vom 31. Okt 2011
Antwort Antwort
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#1

DirectSound Buffer - Create geht nicht

  Alt 30. Okt 2011, 23:03
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

Geändert von Cicaro (31. Okt 2011 um 11:00 Uhr)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#2

AW: DirectSound Buffer - Create geht nicht

  Alt 31. Okt 2011, 09:54
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.
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#3

AW: DirectSound Buffer - Create geht nicht

  Alt 31. Okt 2011, 10:10
Habe mich an diese Tutorial gehalten: Tutorial
Da steht "must be 0" / "must be null"
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#4

AW: DirectSound Buffer - Create geht nicht

  Alt 31. Okt 2011, 10:49
Das mit den PrimaryBuffers hatte ich überlesen. Müsste dann als Flag nicht auch DSBCAPS_PRIMARYBUFFER gesetzt werden?
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#5

AW: DirectSound Buffer - Create geht nicht

  Alt 31. Okt 2011, 11:11
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) ...

Geändert von Cicaro (31. Okt 2011 um 13:25 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz