手机音频播放方法技术

技术编号:3642464 阅读:185 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及了一种手机音频播放方法,采用多音频播放的音频驱动程序,包括:应用程序或进程直接调用;应用程序或进程在音频驱动程序创建的播放列表内控制写入对应声音数据及其优先级;音频驱动程序按优先级将声音数据搬移至播放缓冲区;通过播放缓冲区给音频设备传送声音数据并播放。这种方法,在音频驱动程序内部增加记录多个并行声音数据的播放列表,选择高优先级的声音数据播放,进一步还可选择需要同时播放的声音数据与其混音后再播放,避免由单一声音服务程序管理所造成的复杂的进程间通讯、同步以及大量数据传输的工作,加上使用扩展的通用标准接口函数,使得程序移植相对简单,充分满足了手机的声音播放管理要求。

【技术实现步骤摘要】

本专利技术涉及一种嵌入式操作系统的声音管理,尤其涉及一种无线移动终 端中音频插j欠方法。
技术介绍
目前,手机、PDA终端上的最典型嵌入式操作系统是Linux和WinCE。 以Linux为例, 一般应用程序播放声音,通常调用Linux操作系统中open()、 ioctl()、 write()、 read()、 close()等声音接口函数,由音频驱动程序操作音频 设备完成具体播放。音频驱动程序被应用程序调用时,可以在内存中创建DMA数据緩冲区, 如图1,包括若干緩冲单元。现有音频驱动程序的播放声音方法,如图2, 包括210)开始;220)判断DMA数据緩冲区是否有声音数据;是,转入 步骤230);否,进入下一步;221)等待数据,返回步骤220) ; 230)播 放该声音数据;240)结束。为避免控制冲突,该音频驱动程序对应的open() 接口函数,具体如图3,包括310)开始;320)判断该音频设备是否空闲? 是,进入下一步;否,转入步骤331) ; 330 )设置该音频设备被占用,返 回成功;转入步骤340) ; 331)阻塞或返回出错;340)结束。因此,这种 音频驱动程序不能被多个应用程序同时调用、控制,这使得①简单的音频 设备不允许被多个应用程序同时使用、播放各自声音,后一应用程序只有等 前一应用程序使用、关闭完音频设备后才能使用;②虽然允许同时播放和录 音,但是不支持播放和录音采取不同的采样率,即正在播放的应用程序和正 在录音的应用程序是互相影响的,比如,正在播放的程序设置采样率为 44100,此时如果录音程序将采样率设置成了 8000,则我们听到的声音会变 成很低沉的慢声,变调了。典型的手机、PDA终端,用户使用时会有众多场景,比如来电、打电话中、MP3播放中、来短消息、响闹铃中等等。这些场景可能并发,因此手机软件开发时,必然遇到如来电铃音、按键音、闹铃音、短消息提示音、MP3音乐等等各种声音需要播放,而且这些声音又有各自特点①来电铃 音,实时、优先级最高,不论当时在做什么,只要有来电,就必须马上播铃 音提示,并且不能被中间打断;②按键音的特点是经常要与其它声音同时播 放,不论是否正在播放其它声音, 一按键,就应该有声音提示;③MP3音 乐的特点是播放时间一般很长,在播放期间,可能发生其它很多事情,有很 多其它声音需要播放, 一般来说,MP3音乐此时应该暂停。因此,必须能 够优先播放和同时播放。上述问题可以这样解决①增加声卡硬件设备,多个应用程序同时打开 不同的声卡,但这样增加手机终端成本;②采用混音技术,将所有要播放的 声音进行混音,这就可以解决不能同时播放的问题和播放录音互相影响的问 题;目前的PC上办法就是使用一个单独的服务程序,负责对声卡设备进行 管理,对各种声音进行有优先级的排队,优先级高的声音先播放。对声卡的 操作都交由此服务程序完成,其它任何应用不应该自己操作声卡,其它应用 只能通过向服务程序发消息的方法通知服务程序执行相应的操作。不过这种 方法应用到手机、PDA等终端的嵌入式操作系统有两个明显缺点(-)该服 务程序实现复杂,要考虑多种情况简单的铃音,可以直接使用文件名做消 息参数,由服务程序调用codec解压,直接操作声卡播放;MP3音乐,由 于MP3播放器已经调用codec解压了 ,因此服务程序只须将解开的数据直 接写到声卡播放,但是需要考虑数据如何从媒体播放器传递到服务程序是个 问题,由于是两个不同的进程并且需要传输的数据量又非常大,这样就需要 复杂的进程间通讯和同步机制以及进程间大量数据传输机制;(二)该方法不便 于移植现有的其它手机程序,由于现有的其它手机程序都是直接操作声卡播 放声音的,因此会与该系统沖突,给移植带来很大的麻烦。
技术实现思路
本专利技术需要解决的技术问题是,如何提供一种,可以 实现声音按优先级播放,同时可以避免复杂的进程间通讯和同步机制以及进程间大量数据传输机制,适合于简单的无线移动终端或智能终端;进一步还 可实现多种声音的同时播放;进一步还可解决程序移植问题。本专利技术技术问题这样解决,提供一种,采用统一管理 音频设备多音频播放的音频驱动程序,包括以下步骤1.1) 应用程序或进程直接调用所述音频驱动程序;1.2) 应用程序或进程在所述音频驱动程序创建的播放列表对应位置控 制写入对应声音数据及其优先级;1.3) 所述音频驱动程序按所述优先级从高到低将所述声音数据搬移至 播放緩冲区;1.4) 通过所述播放緩冲区给所述音频设备传送声音数据并发出指令控 制音频设备播放。按照本专利技术提供的音频播放方法,每一应用程序或进程对应所述播放列 表的一记录,其对应声音数据和优先级写入该记录的声音数据项和优先级项。按照本专利技术提供的音频播放方法,所述声音数据项是声音数据写入播放 緩冲区之前的数据緩冲区。按照本专利技术提供的音频播放方法,所述调用包括首次调用和后续调用。按照本专利技术提供的音频播放方法,所述首次调用包括创建所述播放列表 及其中对应首次调用音频驱动程序的应用程序或进程的记录。按照本专利技术提供的音频播放方法,所述后续调用仅包括创建所述播放列 表中对应调用音频驱动程序的应用程序或进程的记录。按照本专利技术提供的音频播放方法,该方法还包括应用程序或进程关闭其 调用的所述音频驱动程序,所述关闭包括在先释放和末次关闭音频驱动程序 方式。按照本专利技术提供的音频播放方法,所述在先释放音频驱动程序方式包 括删除该应用程序或进程在所述播放列表中对应的记录;判断所述播放列 表不空,直接返回成功。按照本专利技术提供的音频播放方法,所述末次关闭音频驱动程序方式包括删除该应用程序或进程在所述播放列表中对应的记录;判断所述播放列 表为空;删除该播放列表,关闭音频设备;返回成功。按照本专利技术提供的音频播放方法,所述播放列表可以是数组、单向链表 或双向链表。本专利技术提供的一种,在音频驱动程序内部增加记录多 个并行声音数据的播放列表,播放时选择高优先级的声音数据播放,进一步 还可选择需要同时播放的声音数据与高优先级的声音数据混音后再播放,在 此基础上各类应用程序调用该音频驱动程序完成当前声音播放,可以避免由 单一声音服务程序管理所造成的复杂的进程间通讯、同步以及大量数据传输 的工作,加上使用扩展的通用标准接口函数,使得程序移植相对简单,充分 满足了手机、PDA终端声音播放管理要求。附图说明图1是音频驱动程序在内存中创建的DMA緩冲区结构示意图。图2是通常的音频驱动程序的声音播放流程示意图。图3是与通常的音频驱动程序对应的open()函数的流程示意图。图4是本专利技术音频驱动程序在内存中创建的播放列表和DMA緩沖区结 构示意图。图5是本专利技术音频驱动程序的声音播放流程示意图。图6是与本专利技术音频驱动程序对应的扩展open()函数的流程示意图。图7是与本专利技术音频驱动程序对应的扩展close()函数的流程示意图。具体实施例方式首先,说明本专利技术的设计思想在音频驱动程序层对整个系统的所有声 音进行统一管理,不同应用程序或进程直接调用该音频驱动程序,实现多个 声音播放的同步和协调,互不干扰。其次,说明本专利技术的关键在音频驱动程序内部增加管理模块,主要是 增加一个播放列表,存储记录正在播放的声音,结构如图4所示,包括若干 声音记录,每一本文档来自技高网
...

【技术保护点】
一种手机音频播放方法,其特征在于,采用统一管理音频设备多音频播放的音频驱动程序,包括以下步骤:1.1)应用程序或进程直接调用所述音频驱动程序;1.2)应用程序或进程在所述音频驱动程序创建的播放列表对应位置控制写入对应声音数据 及其优先级;1.3)所述音频驱动程序按所述优先级从高到低将所述声音数据搬移至播放缓冲区;1.4)通过所述播放缓冲区给所述音频设备传送声音数据并发出指令控制音频设备播放。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘亮
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:94[中国|深圳]

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

1
相关领域技术
  • 暂无相关专利