Seite 1 von 1

[DirectX] interne Fehler bei XACT / XAudio2 abfangen ?

Verfasst: 05.01.2012, 18:54
von ponx
hallo Leute,
ich hab wieder ein Problem mit meiner Musik-Engine: Die benutzt intern das XACT von DirectX, und das intern wiederum XAudio2. XACT liest zur Lufzeit mehrere Files ein, und wenn man da beim Umkopieren einen Fehler gemacht hat, passiert folgendes: in der Release-Version gibt's nur die fehlerhafte Audio-Wiedergabe, aber beim Debuggen bliebt man an einem internen Breakpoint hängen, und zwar in Xact->DoWork(). Und im Output-Fenster steht dann z.B. sowas wie folgendes:

XAUDIO2: x2voicewma.cpp:356: ERROR: AudioBytes must be at least the WMA format's block size
XAUDIO2: x2voicewma.cpp:361: ERROR: AudioBytes not aligned to the WMA format's block size
XAUDIO2: x2voicewma.cpp:366: ERROR: AudioBytes must equal number WMA packets submitted multiplied by the WMA format's block size
XAUDIO2: x2voicewma.cpp:465: ERROR: Invalid WMA source buffer

Ich muss da irgendwie drauf reagieren und das in eine vernünftige Fehlermeldung umwandeln. Die HRESULTs aller Xact-Funktionen inklusive DoWork() fang ich aber immer ab, und die sind immer alle gesund.
Jetzt die Frage: Gibt's ne Chance, das trotzdem irgendwie abzufangen ? Wieso wird das nicht nach außen weitergereicht ? Die DoWork()-API Referenz schweigt sich leider aus :/ Oder gibts vielleicht irgendne versteckte DirectX-Fehlerbehandlungs-Technik, um sowas weiterzuleiten ? (ich klammer mich schon an Strohhalme)

Dankbar für jede Idee:
ponx

Re: [DirectX] interne Fehler bei XACT / XAudio2 abfangen ?

Verfasst: 05.01.2012, 19:12
von simbad
Wenn da was murksig ist solltest du versuchen herauszubekommen, woher das kommt.
Ich denke mal das da ein Buffer schief steht. Wenn du wirklich irgendwo über den Buffer schreibst oder anderweitig im Speicher rum schmierst, also nicht mit Absicht natürlich, dann wird die Software früher oder später abschmieren.

Re: [DirectX] interne Fehler bei XACT / XAudio2 abfangen ?

Verfasst: 05.01.2012, 19:40
von ponx
Ich weiß sehr wahrscheinlich woher es kommt: Beim Umkopieren der einzelnen Files hat jemand Mist gebaut. Das würd ich gerne irgendwie ins Logfile meiner Library schreiben.. nur, wie merk ich das, dass der Fehler aufgetreten ist ? Zumal ohne Debug-Config nicht mal mehr der XAudio2-Fehlertext ins stdout geschrieben wird.. :-/

Re: [DirectX] interne Fehler bei XACT / XAudio2 abfangen ?

Verfasst: 05.01.2012, 19:49
von simbad
Eine Plausibilisierungsfunktion bauen, die die Gültigkeit der Daten vor der Verwendung prüft. Das dürfte, wenn du sonst nur OK Meldungen bekommst, die einzige Lösung sein.

Re: [DirectX] interne Fehler bei XACT / XAudio2 abfangen ?

Verfasst: 06.01.2012, 16:39
von ponx
ok ich fürchte auch.. danke dir, simbad !