音频处理方法及系统技术方案

技术编号:14412618 阅读:54 留言:0更新日期:2017-01-12 00:36
本发明专利技术公开一种音频处理方法和系统;方法包括:为DMA缓冲区分配内存空间,所述DMA缓冲区包括混音播放缓冲区和混音录制缓冲区;声明处理混音的软中断的名称以及对应的处理函数;在混音的软中断中获取播放缓冲区地址和录制缓冲区地址,调用混音处理函数进行混音处理,将处理混音后的数据保存在所述混音播放缓冲区。采用本发明专利技术,能够减少Android设备的耳返时间。

【技术实现步骤摘要】

本专利技术涉及嵌入式平台领域的音频技术,尤其涉及一种音频处理方法及系统
技术介绍
伴随着顶部(OTT,OverTheTop)机顶盒业务的兴起,在机顶盒上安装K歌软件来实现在家庭里面里面实现卡拉OK的需求倍增。而目前基于Android的设备上,耳返(声音从麦克风输入的时间到从电视里面输出的延时)的时间都在120毫秒(ms)以上,相对于IOS系统的40ms的耳返来说,较大耳返时间影响了用户使用体验。对于有效减小基于Android设备的耳返时间,相关技术尚无有效解决方案。
技术实现思路
本专利技术实施例提供一种音频处理方法及系统,能够减少Android设备的耳返时间。本专利技术实施例的技术方案是这样实现的:本专利技术实施例提供一种音频处理方法,所述方法包括:为直接内存读取(DMA)缓冲区分配内存空间,所述DMA缓冲区包括混音播放缓冲区和混音录制缓冲区;声明处理混音的软中断的名称以及对应的处理函数;在混音的软中断中获取播放缓冲区地址和录制缓冲区地址,调用混音处理函数进行混音处理,将处理混音后的数据保存在所述混音播放缓冲区。优选地,所述方法还包括:将所述混音播放缓冲区的地址赋值给DMA功能指针的源地址;所述混音播放缓冲区的地址用于支持所述DMA功能从所述混音播放缓冲区的地址数据到虚拟声卡的先入先出(FIFO)队列。优选地,所述方法还包括:在DMA功能的中断回调函数中,将所述混音播放缓冲区的数据拷贝到所述混音录制缓冲区中,所述混音录制缓冲区用于支持应用层通过打开虚拟声卡读取混音后的音频数据。优选地,在内存空间分配混音播放缓冲区和混音录制缓冲区之前,所述方法还包括:注册虚拟声卡驱动和虚拟声卡;注册平台设备和平台设备驱动;注册编解码器(Codec)设备、Codec驱动和Codec数字音频接口(DAI)。优选地,所述方法还包括:为所述DMA缓冲区分配内存空间正常播放缓冲区,所述正常播放缓冲区用于支持应用层通过打开虚拟声卡写入需要播放的音频数据;为所述DMA缓冲区分配正常录制缓冲区,所述正常录制缓冲区用于支持应用层通过打开所述虚拟声卡读取麦克风输入的原始音频数据。本专利技术实施例提供一种音频处理系统,所述系统包括:缓冲区单元,用于为DMA缓冲区分配内存空间,所述DMA缓冲区包括混音播放缓冲区和混音录制缓冲区;软中断声明单元,声明处理混音的软中断的名称以及对应的处理函数;软中断处理单元,用于在混音的软中断中获取播放缓冲区地址和录制缓冲区地址,调用混音处理函数进行混音处理,将处理混音后的数据保存在所述混音播放缓冲区。优选地,所述系统还包括:混音播放处理单元,用于将所述混音播放缓冲区的地址赋值给DMA功能指针的源地址;所述混音播放缓冲区的地址用于支持所述DMA功能从所述混音播放缓冲区的地址数据到虚拟声卡的FIFO队列。优选地,所述系统还包括:混音录制处理单元,用于在DMA功能的中断回调函数中,将所述混音播放缓冲区的数据拷贝到所述混音录制缓冲区中,所述混音录制缓冲区用于支持应用层通过打开虚拟声卡读取混音后的音频数据。优选地,所述系统还包括:注册单元,用于在所述缓冲区单元内存空间分配混音播放缓冲区和混音录制缓冲区之前,执行以下操作;注册虚拟声卡驱动和虚拟声卡;注册平台设备和平台设备驱动;注册编解码器设备、Codec驱动和CodecDAI。优选地,所述缓冲区单元还用于为所述DMA缓冲区分配内存空间正常播放缓冲区,所述正常播放缓冲区用于支持应用层通过打开虚拟声卡写入需要播放的音频数据;所述缓冲区单元还用于为所述DMA缓冲区分配正常录制缓冲区,所述正常录制缓冲区用于支持应用层通过打开所述虚拟声卡读取麦克风输入的原始音频数据。本专利技术实施例中,通过混音的软中断中获取播放缓冲区地址和录制缓冲区地址,调用混音处理函数进行混音处理,例如当在ARM处理器上运行Android操作系统时,实现了在Linux内核层面的混音处理(代替了相关技术在应用层实现的混音处理),将混音处理结果提供给应用层,无需应用层自行进行混音处理,较相关技术的应用层自行进行混音处理大大缩短了耳返延时。附图说明图1为本专利技术实施例中音频处理方法的实现流程示意图;图2为本专利技术实施例中基于ASoC的音频处理方法的流程图;图3为本专利技术实施例中soc_probe函数的调用流程图;图4为本专利技术实施例中soc_probe_dai_link()函数流程图;图5为本专利技术实施例中snd_soc_instantiate_card函数调用流程图;图6为本专利技术实施例中虚拟声卡挂载在snd_card下的示意图;图7为本专利技术实施例中tasklet混音流程图;图8为本专利技术实施例中音频处理系统的功能结构示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。Android设备的音频系统拥有一个比较标准和健全的架构处理音频,架构包括:应用层、Javaframework服务AudioMananger、本地服务AudioFlinger、抽象层AlsaHAL、本地库、用外部(external)的Alsa-lib支持库、底层的编码(Codec)驱动;因为音频数据在上述架构中经过了太多的处理而导致最终得到的音频延时增加,这样复杂的系统架构是不能满足实时性要求很高的场景的使用需求,例如网络K歌,需要将混音后的数据发送给网络上的其他点播用户,较大的延迟影响了用户使用体验。本专利技术实施例记载的技术方案基于高级Linux音频架构(ALSA,AdvancedLinuxSoundArchitecture)的Android系统,Android系统基于高级精简指令集机器(ARM,AdvancedRISCMachine)处理器,在Linux内核的设备链表中添加设置虚拟声卡,使用虚拟声卡直接截取音频数据(例如用户通过麦克风输入的音频数据)和背景音频数据(歌曲播放的背景音)来进行混音处理,应用层可以直接获取混音数据,无需由应用层自身进行混音处理,减少了耳返时间;为实现上述目的,本专利技术实施例中,针对已有的Linux内核下不能进行混音的不足,在Linux系统的设备链表上添加虚拟声卡设备(简称虚拟声卡),将虚拟声卡的资源注册进Linux内核,由Linux内核统一管理;本专利技术实施例基于ALSA架构的片上系统(SOC)也即ASoC在Linux内核层面中进行音频处理,ASoC设置有虚拟声卡、Platform、虚拟声卡Codec和虚拟声卡Codec驱动,由虚拟声卡实现在Linux内核层面(代替应用层)对音频数据进行处理,ASoC添加设置有正常播放缓冲区、正常录制缓冲区、混音播放缓冲区和混音录制缓冲区,用于在不同的应用场景存储音频数据,在录制数据和播放数据到达时通过软中断的方式将两路数据进行混音处理,应用层可以直接读取混音数据。在Linux的驱动管理和注册机制下开发虚拟声卡的驱动,包括:定义虚拟声卡对应的平台设备(platform_device)结构体、注册虚拟声卡对应的platform_device结构体、定义虚拟声卡对应的平台驱动(platform_driver)结构体、以及注册虚拟声卡的platform本文档来自技高网...
音频处理方法及系统

【技术保护点】
一种音频处理方法,其特征在于,所述方法包括:为直接内存读取DMA缓冲区分配内存空间,所述DMA缓冲区包括混音播放缓冲区和混音录制缓冲区;声明处理混音的软中断的名称以及对应的处理函数;在混音的软中断中获取播放缓冲区地址和录制缓冲区地址,调用混音处理函数进行混音处理,将处理混音后的数据保存在所述混音播放缓冲区。

【技术特征摘要】
1.一种音频处理方法,其特征在于,所述方法包括:为直接内存读取DMA缓冲区分配内存空间,所述DMA缓冲区包括混音播放缓冲区和混音录制缓冲区;声明处理混音的软中断的名称以及对应的处理函数;在混音的软中断中获取播放缓冲区地址和录制缓冲区地址,调用混音处理函数进行混音处理,将处理混音后的数据保存在所述混音播放缓冲区。2.如权利要求1所述的方法,其特征在于,所述方法还包括:将所述混音播放缓冲区的地址赋值给DMA功能指针的源地址;所述混音播放缓冲区的地址用于支持所述DMA功能从所述混音播放缓冲区的地址数据到虚拟声卡的先入先出FIFO队列。3.如权利要求1所述的方法,其特征在于,所述方法还包括:在DMA功能的中断回调函数中,将所述混音播放缓冲区的数据拷贝到所述混音录制缓冲区中,所述混音录制缓冲区用于支持应用层通过打开虚拟声卡读取混音后的音频数据。4.如权利要求1所述的方法,其特征在于,在内存空间分配混音播放缓冲区和混音录制缓冲区之前,所述方法还包括:注册虚拟声卡驱动和虚拟声卡;注册平台设备和平台设备驱动;注册编解码器Codec设备、Codec驱动和Codec数字音频接口DAI。5.如权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:为所述DMA缓冲区分配内存空间正常播放缓冲区,所述正常播放缓冲区用于支持应用层通过打开虚拟声卡写入需要播放的音频数据;为所述DMA缓冲区分配正常录制缓冲区,所述正常录制缓冲区用于支持应用层通过打开所述虚拟声卡读取麦克风输入的原始音频数据。6.一种音频处理系统,其特征在于,所述系统包括:缓冲区单元,用于为直接内存读取DM...

【专利技术属性】
技术研发人员:杨爱民于光海
申请(专利权)人:深圳市中兴微电子技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1