Fișierul de valuri de redare se termină imediat (C ++, Windows)

Am urmatoarea situatie. Pe o mașină există un card Fritz ISDN . Există un proces care este responsabil pentru redarea unui anumit fișier val la ieșirea de pe acest dispozitiv (conexiunea ISDN se face la pornire și este persistentă). Scenariul este ușor, ori de câte ori este necesar, procesul solicită waveOutWrite() pe dispozitivul cu val deschis anterior (totul inițializat fără probleme) și o funcție de apel invocă mesajul MM_WOM_DONE să știți că redarea a fost terminată.

Deoarece câteva zile însă (nimic nu sa schimbat nici în proces, nici în mașină) mesajul MM_WOM_DONE a venit imediat după ce a sunat waveOutWrite() , chiar dacă valul durează câteva secunde. Din nou, nu se înregistrează nici o eroare, se pare că fișierul a fost redat, dar avea o lungime zero (ceea ce nu este cazul). De asemenea, sunt sigur că waveOutReset() nu a fost apelată de procesul meu (ar declanșa de asemenea trimiterea mesajului menționat). Am folosit deja unele probleme ciudate în trecut, care au fost rezolvate pur și simplu prin reinstalarea driver-elor TAPI . De data aceasta, dintr-un anumit motiv, este dificil pentru mine să realizez asta încă o dată și încerc o abordare analitică mai amplă :). Orice sugestii care ar putea provoca un astfel de comportament? Poate ceva de cealaltă parte a liniei ISDN ?

0
fr hi bn

3 răspunsuri

Care este valoarea returnată atunci când sunetul nu se redă? Dacă obțineți MMSYSERR_NOERROR care indică faptul că driverul a raportat incorect la sistemul de operare în care a fost procesat buffer-ul.

Sa schimbat chiar fișierul WAV? Acest intrarea pe blog indică faptul că se efectuează o validare în profunzime a metadatelor.

0
adăugat

Pe baza descrierii dvs., faceți jocul asincron. Sunteți sigur că memoria de backing pentru fișierul wav nu este curățată în acel moment?

0
adăugat

Nu am timp prea mult pentru Google pentru asta, dar știu că fie Larry Osterman, fie Raymond Chen au blogat despre o situație similară.

Voi verifica mai târziu când mai am timp să văd dacă această întrebare este încă deschisă.

0
adăugat