[DirectX] interne Fehler bei XACT / XAudio2 abfangen ?
Verfasst: 05.01.2012, 18:54
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
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