2008-08-13 58 views
3

我有以下情況。在一臺機器上有一個Fritz ISDN卡。有一個過程負責播放該設備波形中的某個波形文件(ISDN連接在啓動時進行並持續)。該方案是容易的,只要所需要的過程中,先前打開波設備(無需一切當然任何問題初始化)的調用waveOutWrite()和一個回調函數等待MM_WOM_DONE味精知道播放已經完成。播放波形文件立即結束(C++,Windows)

因爲幾天然而(在過程和機器中都沒有改變),MM_WOM_DONE消息在調用waveOutWrite()後立即發出,即使該波持續幾秒鐘。再次沒有錯誤報告,它看起來像文件播放,但長度爲零(事實並非如此)。我也確信waveOutReset()沒有被我的進程調用(它也會觸發發送提到的消息)。過去我已經習慣了一些奇怪的問題,只需重新安裝TAPI驅動程序即可解決問題。這次由於某種原因,我再次執行這個操作會產生問題,我正在嘗試更多的分析方法:)。任何可能導致這種行爲的建議?也許在ISDN線的另一端?

回答

2

我沒有時間去谷歌太多了,但我知道,無論是拉里·奧斯特曼或雷蒙德陳的博客上講述了類似的情況。

我稍後再回來檢查時,我有更多的時間來看看,如果這個問題仍然是開放的。

+0

http://blogs.msdn.com/larryosterman/archive/2009/02/19/playsound-xxx-snd-memory-snd-async-is-almost-always-a-bad-idea.aspx – 2010-04-13 00:42:34

0

聲音不播放時的返回值是多少?如果您收到MMSYSERR_NOERROR,指向驅動程序錯誤地向操作系統報告已處理緩衝區。

WAV文件本身是否改變了?這個blog entry表示對元數據進行了一些非常深入的驗證。

0

什麼是返回值時聲音不玩?如果您收到MMSYSERR_NOERROR,指向驅動程序錯誤地向操作系統報告已處理緩衝區。

如果我得到一個錯誤導致的一切會更容易:)。不幸的是我得到了MMSYSERR_NOERROR。 wavefile每次都會生成,但它發生的方式並沒有改變。所以,看起來由於某種原因,系統報告錯誤,或者沒有報告所有內容。我會試着仔細看看生成的文件。

我沒有太多時間讓Google知道這件事,但我知道Larry Osterman或Raymond Chen在類似的情況上發表了博文。

我去了拉里和雷蒙德的博客,但沒有找到有用的東西。只有一些拉里的帖子解釋如何使用波形輸出。然而,這並沒有幫助解決這個問題。

+0

您應該避免發佈這樣的答案,除非你真的解決了這個問題。這些回覆屬於評論。爲了記錄,拉里奧斯特曼的這篇文章是:http://blogs.msdn.com/larryosterman/archive/2009/02/19/playsound-xxx-snd-memory-snd-async-is-almost-always-a -bad-idea.aspx – 2010-04-13 00:47:24

3

根據您的描述,您asynchonously做遊戲。你確定在那個時候wav文件的後備內存沒有被清理嗎?