Hallo!
Ich habe folgendes Problem:
Ich nutze die winmm.dll zum Aufnehmen und Abspielen von Audio.
Dazu hole ich mir das Audio Device per waveInOpen(), allociere die Audio Puffer,
mache waveInPepareHeader() und waveInAddBuffer(), und lasse mir die MM_WIM_DATA
Messages an einen HWnd schicken, mache dann ein waveInUnprepareHeader() und dann
geht das wieder von vorne los.
Das Programm lauscht ständig auf den Audio Input auf diese Weise, mit insgesamt
8 Puffern die als Ring angeordnet sind.
Ab und an will ich einen Sound abspielen, und nutze dazu PlaySound().
Das ganze funktioniert auch wunderbar unter WinXP und Vista.
Unter Windows7 hingegen passiert es manchmal (zufällig, etwa 1 aus 10), dass es einen Deadlock
gibt in PlaySound(). Wenn ich PlaySound() mit SND_SYNC Flag abspiele, hängt das Programm
für genau die Länge aller meiner Puffer zusammen. Wenn ich mit SND_ASYNC abspiele,
hängt es sich komplett auf.
Hat jemand eine Ahnung woran das liegt? Ich kann doch nicht der einzige sein,
der dieses Problem hat.
Muss ich den Code beim Empfangen der MM_WIM_DATA Message per Semaphore oder
CritricalSection schützen, damit es keine Komplikationen mit gleichzeitig laufendem
PlaySound() gibt?
Viele Dank für Hinweise!
Ich habe folgendes Problem:
Ich nutze die winmm.dll zum Aufnehmen und Abspielen von Audio.
Dazu hole ich mir das Audio Device per waveInOpen(), allociere die Audio Puffer,
mache waveInPepareHeader() und waveInAddBuffer(), und lasse mir die MM_WIM_DATA
Messages an einen HWnd schicken, mache dann ein waveInUnprepareHeader() und dann
geht das wieder von vorne los.
Das Programm lauscht ständig auf den Audio Input auf diese Weise, mit insgesamt
8 Puffern die als Ring angeordnet sind.
Ab und an will ich einen Sound abspielen, und nutze dazu PlaySound().
Das ganze funktioniert auch wunderbar unter WinXP und Vista.
Unter Windows7 hingegen passiert es manchmal (zufällig, etwa 1 aus 10), dass es einen Deadlock
gibt in PlaySound(). Wenn ich PlaySound() mit SND_SYNC Flag abspiele, hängt das Programm
für genau die Länge aller meiner Puffer zusammen. Wenn ich mit SND_ASYNC abspiele,
hängt es sich komplett auf.
Hat jemand eine Ahnung woran das liegt? Ich kann doch nicht der einzige sein,
der dieses Problem hat.
Muss ich den Code beim Empfangen der MM_WIM_DATA Message per Semaphore oder
CritricalSection schützen, damit es keine Komplikationen mit gleichzeitig laufendem
PlaySound() gibt?
Viele Dank für Hinweise!
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Der_Wanderer ()