一种音频传输方法及电子装置
技术领域
本发明涉及计算机技术领域,尤其涉及音频传输方法及电子装置。
背景技术
随着计算机和多媒体技术的发展,各种设备上都可以播放音频文件,如手机、电脑、机器人等。音频文件的解码播放过程为中央处理器CPU对音频文件进行软解码,然后将软解码后的数据传输至解码器。
然而由于调度CPU的实时操作系统(Real-Time Operating System,RTOS)存在进程调度延时,即当CPU传输完音频文件某一帧音频数据软解码后对应的脉冲编码调制(Pulse Code Modulation,PCM)数据后,在传输下一帧音频数据软解码后对应的PCM数据时,如果CPU正在处理其他进程,则会导致PCM数据传输延迟。若提高传输PCM数据指令的优先级,使传输PCM数据指令的优先级高于当前处理的其他进程,则CPU需要等待全部数据处理完传输,再处理其他任务,但这种处理方式又会影响其他任务进程长时间得不到响应。
发明内容
本发明实施例提供一种音频传输方法及电子装置,能够实现在中央处理器对音频文件软解码后,传输PCM数据时,避免传输延时同时提高CPU利用率的目的。
第一方面,本发明实施例提供了一种音频传输方法,该方法包括:
在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;
响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。
另一方面,本发明实施例提供了一种电子装置,该电子装置包括:
发送单元,用于在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;
中断处理单元,用于响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。
本发明实施例通过在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。通过在发送PCM数据时,触发了中断请求,在中断中通过DMA控制器将除第一PCM数据以外的PCM数据发送至解码器,无需CPU控制发送第二PCM数据,实现了在中央处理器对音频文件软解码后,传输PCM数据时,避免传输延时同时提高CPU利用率的目的。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种音频传输方法的示意流程图;
图2是本发明另一实施例提供的一种音频传输方法的示意流程图;
图3是本发明实施例提供的一种电子装置的示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部 的实施例。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种音频传输方法的示意流程图。本实施例中音频传输方法的执行主体为电子装置,电子装置可以为独立的电子芯片,如单片机,也可以是手机、MP3、平板电脑等具有音频解码功能的终端。在以下实施例中,以电子装置是单片机为例进行说明。如图所示音频传输方法可包括以下步骤:
S101:在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求。
本方案适用于电子装置中的中央处理器对音频文件进行解码后传输至解码器时,音频文件可以为任意格式的音频文件,如MP3音频文件、WMA音频文件等。同时,本发明的应用场合要求电子装置具有直接内存存取(Direct Memory Access,DMA)控制器。
在中央处理器对音频文件软解码时,中央处理器可以将音频文件以帧为单位进行解码,每一帧对应一脉冲编码调制PCM数据,中央处理器是电子装置,如单片机,包含的一个处理单元。解码器可以是单片机中一个处理单元,也可以是一个单独的芯片单元,解码器用于将接收到的PCM数据进行数模转换。
通常在中央处理器对音频文件进行软解码时,可以根据内存容量解码音频文件,比如解码到内存无法继续存储后就不再继续解码,将解码后的PCM数据发送至解码器,发送完毕后再次进行解码。在中央处理器对音频文件软解码得到至少两个PCM数据时,中央处理器将第一PCM数据发送至解码器,在将第一PCM数据发送至解码器时,同时触发中断请求。上述第一PCM数据是一帧音频文件软解码后对应的PCM数据。
S102:响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。
在触发中断请求后,响应中断请求进入中断处理。上述中断处理用于将第 二PCM数据发送至解码器。具体地,通过触发直接内存存取DMA控制器来发送第二PCM数据至解码器,上述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据,即将解码得到的剩余PCM数据全部发送至解码器。第二PCM数据在软解码后存在于预设存储单元中。
上述DMA控制器是单片机包含的一个硬件单元,DMA控制器传输是将数据从一个地址空间复制到另外一个地址空间,且传输动作本身是由DMA控制器来实行和完成,不依赖CPU,传输效率高。
在这里触发DMA传输第二PCM数据就是在中断中开启DMA,通过DMA来传输第二PCM数据。
在解码器接收到PCM数据后,进行数模转换,然后将PCM数据发送至功放,功放发送至扬声器,以完成音频文件的播放。在传输PCM数据至解码器时避免传输延时,可以使得解码器发送至功放,功放发送至扬声器时避免延时,进而避免声音播放产生失真。
具体的,在实现过程中在中断处理中写入传输PCM数据的程序,因此进入到中断以后,可以根据指令传输PCM数据。
上述方案,在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。通过在发送PCM数据时,触发了中断请求,在中断中通过DMA控制器将除第一PCM数据以外的PCM数据发送至解码器,无须CPU控制发送第二PCM数据,实现了在中央处理器对音频文件软解码后,传输PCM数据时,避免传输延时同时提高CPU利用率的目的。
请参见图2,图2是本发明另一实施例提供的一种音频传输方法的示意流程图。本实施例中音频传输方法的执行主体为电子装置,电子装置可以为独立的电子芯片,如单片机,也可以是手机、MP3、平板电脑等具有音频解码功能的终端。在以下实施例中,以电子装置是单片机为例进行说明。如图所示音频传输方法可包括以下步骤:
S201:在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求。
本方案适用于电子装置中的中央处理器对音频文件进行解码后传输至解码器时,音频文件可以为任意格式的音频文件,如MP3音频文件、WMA音频文件等。同时,本发明的应用场合要求电子装置具有直接内存存取(Direct Memory Access,DMA)控制器。
在中央处理器对音频文件软解码时,中央处理器可以将音频文件以帧为单位进行解码,每一帧对应一脉冲编码调制PCM数据,中央处理器是电子装置,如单片机,包含的一个处理单元。解码器可以是单片机中一个处理单元,也可以是一个单独的芯片单元,解码器用于将接收到的PCM数据进行数模转换。
通常在单中央处理器对音频文件进行软解码时,可以根据内存容量解码音频文件,比如解码到内存无法继续存储后就不再继续解码,将解码后的PCM数据发送至解码器,发送完毕后再次进行解码。在中央处理器对音频文件软解码得到至少两个PCM数据时,中央处理器将第一PCM数据发送至解码器,在将第一PCM数据发送至解码器时,同时触发中断请求。上述第一PCM数据是一帧音频文件软解码后对应的PCM数据。
S202:响应所述中断请求,触发DMA控制器获取预设存储单元中的第二PCM数据,发送所述第二PCM数据;其中,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。
在触发中断请求后,响应中断请求进入中断处理,触发DMA控制器获取预设存储单元中的第二PCM数据,再发送第二PCM数据,第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据,即将解码得到的剩余PCM数据全部发送至解码器。
在解码器接收到PCM数据后,进行数模转换,然后将PCM数据发送至功放,功放发送至扬声器,以完成音频文件的播放。在传输PCM数据至解码器时避免传输延时,可以使得解码器发送至功放,功放发送至扬声器时避免延时,进而避免声音播放产生失真。
上述DMA控制器是单片机包含的一个硬件单元,DMA控制器传输是将数据从一个地址空间复制到另外一个地址空间,且传输动作本身是由DMA控制 器来实行和完成,不依赖CPU,传输效率高。
在这里触发DMA传输第二PCM数据就是在中断中开启DMA,通过DMA来传输第二PCM数据。
进一步地,所述触发DMA控制器发送第二PCM数据包括:向DMA控制器发送包含所述第二PCM数据存储地址的DMA请求,以使所述DMA控制器通过直接内存存取方式获取所述第二PCM数据,将所述第二PCM数据发送至所述解码器。
触发DMA控制器发送第二PCM数据具体是向DMA控制器发送DMA请求,且所述DMA请求中包含第二PCM数据存储地址。
在DMA控制器接收到DMA请求后,可以根据第二PCM数据存储地址通过直接内存存取方式获取第二PCM数据,进而将PCM数据发送至解码器。
DMA控制器接收DMA请求,进行DMA传输的过程是通过获取总线的控制权,进行数据的传输,且整个传输过程中都是由DMA控制器来完成,不会影响到其他的进程。
进一步地,所述DMA控制器还用于通过集成电路内置音频I2S总线将所述第二PCM数据发送至所述解码器。
DMA控制器可以用于将PCM数据传输至解码器,具体的可以通过集成电路内置音频(Inter—IC Sound,I2S)总线将第二PCM数据发送至解码器。通过I2S总线传输可以将数据和时钟信号分离,避免了PCM数据传输过程中的失真问题。
S203:在触发所述DMA控制器发送所述第二PCM数据后,退出所述中断处理。
在触发DMA控制器发送PCM数据之后,退出中断处理。具体是在触发DMA控制器发送PCM数据之后就立即退出中断处理,以使单片机可以继续执行其他进程。所述其他进程是指除了发送PCM数据以外的进程。由于触发DMA传输PCM数据后就立即退出中断,因此不会影响其他进程的执行。
例如在机器人进行PCM数据传输时,若接收到机器人向前行走的动作的指令,单片机进入中断触发DMA传输后就立即退出中断,返回执行机器人向前行走的动作指令。
上述方案,在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。通过在发送PCM数据时,触发了中断请求,在中断中通过DMA控制器将除第一PCM数据以外的PCM数据发送至解码器,无须CPU控制发送第二PCM数据,实现了在中央处理器对音频文件软解码后,传输PCM数据时,避免传输延时同时提高CPU利用率的目的。
在进入中断处理时,通过触发DMA控制器发送第二PCM数据,使得解码后的剩余PCM数据可以快速高效的发送至解码器,保证了PCM数据传输的连续性,避免遇到其他进程产生延时,进而使得PCM数据在由解码器发送至功放进而发送至扬声器后,不产生声音失真。同时,通过DMA控制器发送第二PCM数据不影响其他进程的执行,并且在触发DMA控制器发送第二PCM数据后退出中断处理,使得电子装置可以立即执行其他进程,提高了电子装置的CPU的利用率。
请参见图3,图3是本发明实施例提供的一种电子装置的示意框图。本实施例中的电子装置包含的各单元用于执行图1对应的各步骤,具体请参阅图1以及图1对应的实施例中的相关描述,此处不赘述。本实施例的电子装置300包括:
发送单元310,用于在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求。所述发送单元310将第一PCM数据发送至解码器,触发中断请求,将触发信号发送至中断处理单元320。
所述中断处理单元320用于接收发送单元310的触发信号,响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。
上述方案,在通过中央处理器对音频文件软解码得到至少两个脉冲编码调 制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。通过在发送PCM数据时,触发了中断请求,在中断中通过DMA控制器将除第一PCM数据以外的PCM数据发送至解码器,无须CPU控制发送第二PCM数据,实现了在中央处理器对音频文件软解码后,传输PCM数据时,避免传输延时同时提高CPU利用率的目的。
请继续参见图3,图3是本发明实施例提供的另一电子装置的的示意框图。本实施例中的电子装置所包含的各单元用于执行图2对应的各步骤,具体请参阅图2以及图2对应的实施例中的相关描述,此处不赘述。本实施例的电子装置300包括:
发送单元310,用于在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求。所述发送单元310将第一PCM数据发送至解码器,触发中断请求,将触发信号发送至中断处理单元320。
所述中断处理单元320用于接收发送单元310的触发信号,响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。
进一步地,所述中断处理单元310用于响应所述中断请求,触发DMA控制器获取预设存储单元中的第二PCM数据,发送所述第二PCM数据。
进一步地,所述中断处理单元310还用于在触发所述DMA控制器发送所述第二PCM数据后,退出所述中断处理。
进一步地,所述中断处理单元310具体用于向DMA控制器发送包含所述第二PCM数据存储地址的DMA请求,以使所述DMA控制器通过直接内存存取方式获取所述第二PCM数据,将所述第二PCM数据发送至所述解码器。
进一步地,所述DMA控制器还用于通过集成电路内置音频I2S总线将所述第二PCM数据发送至所述解码器。
上述方案,在通过中央处理器对音频文件软解码得到至少两个脉冲编码调制PCM数据时,将第一PCM数据发送至解码器,同时触发中断请求;响应所述中断请求进入中断处理;其中,所述中断处理用于触发直接内存存取DMA控制器将预设存储单元中的第二PCM数据发送至所述解码器,所述第二PCM数据为所述至少两个PCM数据中除所述第一PCM数据以外的PCM数据。通过在发送PCM数据时,触发了中断请求,在中断中通过DMA控制器将除第一PCM数据以外的PCM数据发送至解码器,无须CPU控制发送第二PCM数据,实现了在中央处理器对音频文件软解码后,传输PCM数据时,避免传输延时同时提高CPU利用率的目的。
在进入中断处理时,通过触发DMA控制器发送第二PCM数据,使得解码后的剩余PCM数据可以快速高效的发送至解码器,保证了PCM数据传输的连续性,避免遇到其他进程产生延时,进而使得PCM数据在由解码器发送至功放进而发送至扬声器后,不产生声音失真。同时,通过DMA控制器发送第二PCM数据不影响其他进程的执行,并且在触发DMA控制器发送第二PCM数据后退出中断处理,使得电子装置可以立即执行其他进程,提高了电子装置的CPU的利用率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每一个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同或者相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
值得注意的是,上述装置实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
本领域普通技术人员可以理解,实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。