我做了一个语音通讯程序:用WAVEIN录入,ACM压缩成GSM,UDP传送,DIRECTSOUND回放,不知为何程序的时延会变大?
我跟踪了里面的数据,发现是回放的队列略有增大,增大回放线程的优先级效果并不明显。
还有从任务管理器看到内存一直不断增大。我怀疑是有内存泄露,查看代码又找不到,请各位高手给点idea.

解决方案 »

  1.   

    不,用UDP来进行语音传输是最好的方式之一.楼主可以试试将WAVE数据分段
      

  2.   

    udp传送时可能丢码,但是在网络不是很差的情况下丢码的机率不大,不应该是搂主所说问题的原因。
      

  3.   

    eatingfish(高侃绪) ,能不能讲明白一点呢?
      

  4.   

    我来接着问问题吧吧:
    acmStreamConvert老返回512的错误,即#define ACMERR_BASE         (512),头几次解压不出错,但到后来它的源数据没有用完,返回那个错误,不知道是什么原因我是边采集边压缩,因为是测试,又有解码及播放程序,在解压的时候,ACMSTREAMHEADER结构中的输入缓冲因为是边采集压缩的,有可能填不满,在解压的过程中,开始的几个压缩块能顺利解压并播放,但后来acmStreamConvert解压的时候就出错,描述如上,具休是什么原因也不知道。我怀疑是输入缓冲没有满的原因,但信不足,另外还怀疑压缩的时候是不是有什么特殊的要求,因为我是采集以后就压缩,也有输入缓冲填不满的时候,但压缩不报错,压缩后的块解压的时候就出了那个鬼问题,搞了很久也不知道是什么原因