DirectSound播放缓冲区长度计算

播放测试时,发现声音播放速度不对,找了不少地方,没发现错误,无奈,采用定时器,抓捕播放通知事件时间,发现每秒多了4次,这才恍然大悟,缺少对齐数。原公式为:dwPlayBufLen = iSamplesPerSec / iFrameFpsPerSec; 缺少了nBlockAlign对齐数,因为播放长度是按字节排序的,必须存在采样字长概念,而采样字长是按字节计算,每字节计为1,公式为:nBlockAlign = (nChannels  *  wBitsPerSample)  /  8; 修改播放缓冲区计算公式为:dwPlayBufLen = (iSamplesPerSec / iFrameFpsPerSec) * nBlockAlign; 播放速度正常。

posted @ 2016-04-17 15:45  hbg200  阅读(346)  评论(0编辑  收藏  举报