有关DirectSoundFullDuplexCreate8的问题

    有关DirectSoundFullDuplexCreate8的问题
 
    在WINXP平台我使用操作系统的AEC和NS,用DirectSoundFullDuplexCreate8来初始化对象。但在一台笔记本上发现在调用DirectSoundFullDuplexCreate8这个API时会需要几分钟时间,可能是软件冲突,对音频采集播放设备的占用冲突,也有可能这个buffer被其它程序LOCK住了。我试着换用DSSCL_PRIORITY, DSSCL_NORMAL, DSSCL_EXCLUSIVE参数和其它参数都不行。只有在DirectSoundFullDuplexCreate8去掉AEC和NS功能才可以。


     仔细观察这台笔记本的软件环境,并在另一台机器上搭建同样的平台但问题不能重现。折腾了一整天,也没结果,真是令人沮丧,MSDN也没说明有这种情况,不知网上有那位大侠能给个解释。这个API要么返回错误,要么返回正常,什么能那它堵住几分钟呢!!!!     


     解决方法只有启线程来调用DirectSoundFullDuplexCreate8,检测到超时后去掉AEC和NS再初始化。这样来保证主线程不会堵死。
    
     WINXP的AEC和NS真是个好东西,但使用时也要小心,因为WINDOW的软硬件环境太复杂了。软件在某台机器功能正常不代表所有机器都能正常运行。
    
     这个问题WINDOW7就能很好解决,因为它提供的接口更高层更安全,并且AEC和NS的较果更好,WIN7在媒体处理上还提供的更多更强大的功能,做开发的人才能真感到WIN7相比WINDOWS以前版本的好处。真是外行看热闹,内行看门道。

你可能感兴趣的:(windows平台,api,buffer,平台,windows)