3 Stimmen

Das Abspielen einer Wave-Datei wird sofort beendet (C++, Windows)

Ich habe die folgende Situation. Auf einer Maschine gibt es eine Fritz ISDN Karte. Es gibt einen Prozess, der für das Abspielen einer bestimmten Wave-Datei auf dem Wave-Ausgang dieses Geräts verantwortlich ist ( ISDN die Verbindung wird beim Start hergestellt und bleibt bestehen). Das Szenario ist einfach: Der Prozess ruft bei Bedarf waveOutWrite() auf dem zuvor geöffneten Wave-Gerät (natürlich alles ohne Probleme initialisiert) und eine Callback-Funktion wartet auf MM_WOM_DONE msg, um zu wissen, dass die Wiedergabe beendet ist.

Seit ein paar Tagen jedoch (es hat sich weder am Prozess noch an der Maschine etwas geändert) ist die MM_WOM_DONE Die Nachricht kommt unmittelbar nach dem Aufruf von waveOutWrite() auch wenn die Welle nur ein paar Sekunden dauert. Auch hier wird kein Fehler gemeldet, es sieht so aus, als ob die Datei abgespielt wurde, aber keine Länge hatte (was nicht der Fall ist). Ich bin auch sicher, dass waveOutReset() wurde von meinem Prozess nicht aufgerufen (es würde auch das Senden der genannten Nachricht auslösen). Ich hatte in der Vergangenheit bereits einige merkwürdige Probleme, die sich durch eine Neuinstallation von TAPI Fahrer. Diesmal ist es aus irgendeinem Grund problematisch für mich, das noch einmal durchzuführen, und ich versuche einen analytischeren Ansatz :). Irgendwelche Vorschläge, was so ein Verhalten verursachen könnte? Vielleicht etwas am anderen Ende der ISDN Linie?

3voto

Jack Bolding Punkte 3771

Ihrer Beschreibung nach spielen Sie asynchron. Sind Sie sicher, dass der Hintergrundspeicher für die Wav-Datei in dieser Zeit nicht bereinigt wird?

2voto

Stu Punkte 15215

Ich habe nicht die Zeit, zu viel zu googeln, aber ich weiß, dass entweder Larry Osterman oder Raymond Chen über eine ähnliche Situation gebloggt haben.

Ich werde mich später noch einmal melden, wenn ich mehr Zeit habe, um zu sehen, ob diese Frage noch offen ist.

0 Stimmen

0voto

Aidan Ryan Punkte 11109

Was ist der Rückgabewert, wenn der Ton nicht abgespielt wird? Wenn Sie MMSYSERR_NOERROR erhalten, deutet dies darauf hin, dass der Treiber dem Betriebssystem fälschlicherweise meldet, dass der Puffer verarbeitet wurde.

Hat sich die WAV-Datei selbst geändert? Diese Blogeintrag deutet darauf hin, dass die Metadaten ziemlich gründlich validiert werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X