大佬教程收集整理的这篇文章主要介绍了linux – 从ALSA录制 – 了解内存映射,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在尝试什么:
该设备似乎正确打开并接受各种参数.经过一些设置后,循环运行如下:
snd_pcm_avail_update snd_pcm_mmap_begin memcpy data from mmap buffer to array of short snd_pcm_mmap_commit@H_389_16@memcpy是指向short数组的指针,并以每次传递返回的帧数递增.
在此记录几秒钟后,我将其关闭并将后续缓冲区写入磁盘,作为每行的单个短值.我期待的是在1200和2300 Hz之间变化的PCM数据中的第二或两个.我得到的是一些有很多零的数据.
我想知道的是:我对缓冲和期间理性的价值观是什么?有没有人成功使用ALSA的内存映射输出?
编辑:一些代码
const snd_pcm_chAnnel_area_t *areas; snd_pcm_uframes_t offset,frames,size; short* pCID = (short*)malloc( 50000 * sizeof( short )); short* ppCID = pCID; while( size > 0 ) { frames = size; snd_pcm_mmap_begin (device,&areas,&offset,&frames); short* pd = (short*)areas[0].addr; memcpy( ppCID,(pd + (offset*sizeof(short))),frames * sizeof( short )); ppCID += frames; snd_pcm_mmap_commit(device,offset,frames); size -= frames; }
以上是大佬教程为你收集整理的linux – 从ALSA录制 – 了解内存映射全部内容,希望文章能够帮你解决linux – 从ALSA录制 – 了解内存映射所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。