如何解决使用IOCTL将音频数据从用户模式发送到Sysvad虚拟音频驱动程序
在我的应用程序(用户模式)中,我接收音频数据并使用以下功能将其保存:
VOID CSoundRecDlg::ProcessHeader(WAVEHDR * pHdr)
{
MMRESULT mRes=0;
TRACE("%d",pHdr->dwUser);
if(WHDR_DONE==(WHDR_DONE &pHdr->dwFlags))
{
mmioWrite(m_hOPFile,pHdr->lpData,pHdr->dwBytesRecorded);
mRes=waveInAddBuffer(m_hWaveIn,pHdr,sizeof(WAVEHDR));
if(mRes!=0)
StoreError(mRes,TRUE,"File: %s,Line Number:%d",__FILE__,__LINE__);
}
}
pHdr指针指向音频数据(字节[11025]) 如何使用IOCTL在sysvad中获取此数据。感谢您的帮助。
解决方法
如果我理解正确,那么您的音频缓冲区比您要发送的音频缓冲区要多得多,以便在sysvad中输出。在这种情况下,您将不得不使用“ writebytes”写入黄油 请查看此示例以获取更多详细信息。
更新
回答您的评论
循环缓冲区并不是必须的,它实际上取决于您要执行的实现,重点是要在内存中获取缓冲区,编写它就像这样
pip install tf-nightly
理想情况下,您应该将关注点与彼此独立的读写逻辑使用,而缓冲对象只是在它们之间传递
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。