一种多路多标准的音频解码系统转让专利

申请号 : CN202410045396.5

文献号 : CN117558283B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 卢娜陈树陈伟胡俊应屹航

申请人 : 杭州国芯科技股份有限公司

摘要 :

本发明涉及一种多路多标准的音频解码系统。本发明的架构包括处理器CPU、音频帧解码单元、任务队列模块。处理器CPU用于对任务队列模块进行配置音频帧的解码任务,通过寄存器配置的方法配置解码任务和与解码任务关联的输入控制信息。音频帧解码单元用于将一帧音频压缩码流数据解码成一帧脉冲编码调制数据,为单任务执行单元,支持现有的多个标准音频解码。任务队列模块用于管理和实现多路音频解码的运转,任务队列模块采用先进先出的结构。本发明通过任务队列模块增加了多路多标准音频解码的灵活性,解决了多路灵活变化的应用问题。本发明灵活且易扩展,且CPU的参与大大降低,最大可能地释放CPU。

权利要求 :

1.一种多路多标准的音频解码系统,其特征在于:包括处理器CPU、音频帧解码单元、任务队列模块;

所述的处理器CPU用于对任务队列模块进行配置音频帧的解码任务,通过寄存器配置的方法配置解码任务和与解码任务关联的输入控制信息;

所述的音频帧解码单元用于将一帧音频压缩码流数据解码成一帧脉冲编码调制数据PCM;音频帧解码单元支持现有的多个标准音频解码,为单任务执行单元,在一个时刻只执行一个帧解码任务;

所述的任务队列模块用于管理和实现多路音频解码的运转,最大支持M路音频解码,每路音频解码由多个帧解码构成,任务队列模块采用先进先出的结构;

多路音频解码过程具体如下:

(1)音频帧解码单元查询任务队列是否为空,如果任务队列为空,说明当前没有解码任务,音频帧解码单元进入低功耗模式,等待特定时间后再次查询,特定时间由处理器CPU通过寄存器配置;如果任务队列不为空,则音频帧解码单元按照任务队列顺序读取一个解码任务,从低功耗模式进入正常工作模式;

(2)音频帧解码单元读取一个解码任务之后,根据这个解码任务关联的输入控制信息进行解码;

(3)音频帧解码单元在解码任务执行完成后产生解码状态和解码数据;解码任务执行的完成结果包括解码正常完成、解码错误异常和解码数据不够;如完成结果为解码正常完成,则音频帧解码单元将脉冲编码调制数据PCM按照输入控制信息的要求写入对应的内存空间;如完成结果为解码错误异常,则音频帧解码单元根据输入控制信息里面的抗误码策略进行上一帧脉冲编码调制数据PCM重复或者静音输出;如完成结果为解码数据不够,则音频帧解码单元不输出脉冲编码调制数据PCM;

(4)每个解码任务执行完成后,更新该解码任务对应的一路音频的解码信息,提供给处理器CPU;当脉冲编码调制数据PCM和解码信息都更新完毕后,音频帧解码单元向处理器CPU上报中断;

(5)处理器CPU向任务队列模块配置音频帧解码任务,每一路音源的首帧解码任务由处理器CPU主动配置,非首帧解码任务在处理器CPU收到音频帧解码单元上报的中断后,由处理器CPU被动配置。

2.如权利要求1所述的一种多路多标准的音频解码系统,其特征在于,所述的任务队列模块具有如下特征:A.M路的帧解码总时间小于任何一路的帧播放时间;

B.处理器CPU配置的音频帧解码任务与音源相关:当需要停止其中一路音频解码时,处理器CPU停止配置该路的音频帧解码任务;当需要增加一路新的音频解码时,处理器CPU增加配置该路的音频帧解码任务。

说明书 :

一种多路多标准的音频解码系统

技术领域

[0001] 本发明属于数字音视频解码和广播技术领域,涉及一种多路多标准的音频解码系统。

背景技术

[0002] 在数字电视广播(DVB,Digital Video Broadcasting)系统下,音频解码是一个重要的基础技术,用于将不同的音频压缩标准数据解码成适合播放的脉冲编码调制(PCM,Pulse Code Modulation)数据。如今,人们已经不满足于单路节目的播放,更重视多个音源的混音,比如增加语音互动,不同场景下音效的叠加,以及针对盲人等特殊人群的辅助音频解说混音。另外多屏互动功能分为多屏同时播放同一个节目,或者播放不同的节目。也就是说不同的音频输出接口需要播放同个音源,或者播放不同的音源。这些需求都需要芯片支持多路多标准的解码和混音播放。多路多标准的音频解码架构,CPU参与越多,越会增加软件的开销,影响CPU执行任务的响应时间,使得需要更高性能的CPU来满足客户体验,导致芯片成本增加。

发明内容

[0003] 本发明的目的是提供一种多路多标准的音频解码系统。
[0004] 本发明的架构包括处理器CPU、音频帧解码单元、任务队列模块。
[0005] 处理器CPU用于对任务队列模块进行配置音频帧的解码任务,通过寄存器配置的方法配置解码任务和与解码任务关联的输入控制信息。
[0006] 音频帧解码单元用于将一帧音频压缩码流(ESA,Elementary Streams Audio)数据解码成一帧脉冲编码调制数据PCM。音频帧解码单元支持现有的多个标准音频解码,为单任务执行单元,在一个时刻只执行一个帧解码任务。
[0007] 任务队列模块用于管理和实现多路音频解码的运转,最大支持M路音频解码,每路音频解码由多个帧解码构成,任务队列模块采用先进先出的结构,具有如下特征:
[0008] A.M路的帧解码总时间小于任何一路的帧播放时间。
[0009] B.处理器CPU配置的音频帧解码任务与音源相关:当需要停止其中一路音频解码时,处理器CPU停止配置该路的音频帧解码任务;当需要增加一路新的音频解码时,处理器CPU增加配置该路的音频帧解码任务。
[0010] 多路音频解码过程具体如下:
[0011] (1)音频帧解码单元查询任务队列是否为空,如果任务队列为空,说明当前没有解码任务,音频帧解码单元进入低功耗模式,等待特定时间后再次查询,特定时间由处理器CPU通过寄存器配置;如果任务队列不为空,则音频帧解码单元按照任务队列顺序读取一个解码任务,从低功耗模式进入正常工作模式。
[0012] (2)音频帧解码单元读取一个解码任务之后,根据这个解码任务关联的输入控制信息进行解码。
[0013] (3)音频帧解码单元在解码任务执行完成后产生解码状态和解码数据。解码任务执行的完成结果包括解码正常完成、解码错误异常和解码数据不够。如完成结果为解码正常完成,则音频帧解码单元将脉冲编码调制数据PCM按照输入控制信息的要求写入对应的内存空间;如完成结果为解码错误异常,则音频帧解码单元根据输入控制信息里面的抗误码策略进行上一帧脉冲编码调制数据PCM重复或者静音输出;如完成结果为解码数据不够,则音频帧解码单元不输出脉冲编码调制数据PCM。
[0014] (4)每个解码任务执行完成后,更新该解码任务对应的一路音频的解码信息,提供给处理器CPU,更新的解码信息包括解码结果状态、采样率、声道数、比特率、当前ESA帧消耗的比特数、当前PCM帧的写指针、ESA数据缺少的字节数。当脉冲编码调制数据PCM和解码信息都更新完毕后,音频帧解码单元向处理器CPU上报中断。
[0015] (5)处理器CPU向任务队列模块配置音频帧解码任务,每一路音源的首帧解码任务由处理器CPU主动配置,非首帧解码任务在处理器CPU收到音频帧解码单元上报的中断后,由处理器CPU被动配置。
[0016] 本发明通过任务队列模块增加了多路多标准音频解码的灵活性,解决了多路灵活变化的应用问题。本发明通过音频帧解码单元不处理解码任务就进入低功耗模式,有解码任务进入正常工作模式达到降低功耗,硬件自适应控制低功耗响应更及时效果更好。另外CPU只参与音频帧的解码任务配置工作,解决CPU过多参与的问题,大大地释放CPU。本发明提出的多路多标准音频解码结构,灵活且易扩展,且CPU的参与大大降低,最大可能地释放CPU,让CPU可以做更多其它的事情。

附图说明

[0017] 图1为本发明多路多标准音频解码架构示意图;
[0018] 图2为本发明音频帧解码单元的架构示意图;
[0019] 图3为本发明多路解码的音频帧解码单元的流程示意图;

具体实施方式

[0020] 一种多路多标准的音频解码架构,如图1所示,包括处理器CPU[1.1]、音频帧解码单元[1.2]、任务队列模块[1.3]。三者之间通过APB总线和AXI总线交互信息。
[0021] 处理器CPU[1.1]用于对任务队列模块[1.3]进行配置音频帧的解码任务,通过APB寄存器配置的方法配置解码任务和与解码任务关联的输入控制信息。具有如下特征:
[0022] A.处理器CPU[1.1]配置每一个解码任务的时候,需要配置一组寄存器,包括任务标识码、音频标准标识码、抗误码策略、待解码的ESA帧数据的起始地址和长度、解码之后的PCM帧数据待存放的起始地址。最后配置task_finish_flag寄存器,这样处理器CPU就将当前解码任务推进任务队列模块。
[0023] B.处理器CPU[1.1]向任务队列模块[1.3]配置音频帧解码任务,每一路音源的首帧解码任务由处理器CPU主动配置,非首帧解码任务在处理器CPU收到音频帧解码单元上报的中断后,由处理器CPU被动配置。
[0024] 音频帧解码单元[1.2]用于将一帧音频压缩码流(ESA,Elementary Streams Audio)数据解码成一帧脉冲编码调制数据PCM。音频帧解码单元支持现有的多个标准音频解码(如MPEG1&2,MPEG4_AAC,Dolby Digital Plus,Opus等),为单任务执行单元,在一个时刻只执行一个帧解码任务。具有如下特征:
[0025] I.音频帧解码单元[1.2]由任务解析模块[3.1]、码流预解析模块[3.2]、帧解码模块[3.3]三个子模块构成,如图2所示。
[0026] a.任务解析模块[3.1]根据任务队列模块[1.3]的硬连线和APB总线的交互,获取解码任务,并解析解码任务相关的信息,比如当前解码任务是什么音频标准,ESA数据对应的内存地址在哪里,PCM数据对应的存放地址在哪里。如果没有获取解码任务,则进入低功耗控制模式。
[0027] b.码流预解析模块[3.2]根据任务解析模块获得的解析信息,对当前解码任务的ESA码流数据通过AXI总线读取和缓存,并根据音频标准类型进行同步字检索和帧长的解析。这里的帧长解析不是为了解码,而是为了预先判断当前ESA数据是否足够解码出一帧PCM。如果判断发现ESA数据不够则直接结束当前解码任务,更新对应的解码信息和中断信息。如果判断发现ESA数据够则进入帧解码模块。
[0028] c.帧解码模块[3.3]根据音频标准类型选择对应的音频标准解码模块,一个解码任务只能选择一个音频标准。虽然不同的音频标准解码细节上不同,但是PCM的输出机制是一致的,都是根据任务解析模块解析的PCM内存存放信息通过AXI总线输出。另外解码异常处理根据任务解析模块解析的抗误码机制进行静音输出或者不输出。
[0029] II.音频帧解码单元[1.2]专注于处理每一个解码任务,每一个解码任务的目的就是解码一帧ESA数据输出PCM数据。音频帧解码单元不关心连续的解码任务之间的关系,因为对它来说,不管是支持多少路音频解码,音频帧解码单元的工作机制都是一样的。
[0030] 任务队列模块[1.3]用于管理和实现多路音频解码的运转,最大支持M路音频解码,每路音频解码由多个帧解码构成,任务队列模块采用先进先出的结构,具有如下特征:
[0031] 1.M路的帧解码总时间小于任何一路的帧播放时间。播放时间和采样率以及帧长有关,比如M路中最短播放时间的帧信息如下,采样率为48KHz,帧长为2048个样点,那么这帧音频数据的播放时间是2048/48ms,M路帧解码的总时间要小于2048/48ms。这样保证所有声音播放不会出现卡顿的现象。
[0032] 2.处理器CPU配置的音频帧解码任务与音源相关:当需要停止其中一路音频解码时,处理器CPU停止配置该路的音频帧解码任务;当需要增加一路新的音频解码时,处理器CPU增加配置该路的音频帧解码任务。停止或增加音频帧解码任务时,都不需要关闭或重启任务队列模块和音频帧解码单元。也就是说,多路音频解码可以实现灵活地动态地增加和减少路数,而不影响声音的播放。
[0033] 从处理器CPU的视角,多路音频解码过程如下所示:
[0034] (1)根据应用需求,处理器CPU启动第一路音频解码P1,当处理器CPU更新了P1的ESA数据后,处理器CPU向任务队列模块主动配置P1的首帧解码任务。
[0035] (2)根据应用需求,处理器CPU启动第二路音频解码P2,当处理器CPU更新了P2的ESA数据后,处理器CPU向任务队列模块主动配置P2的首帧解码任务。
[0036] (3)根据应用需求,处理器CPU启动第三路音频解码P3,当处理器CPU更新了P3的ESA数据后,处理器CPU向任务队列模块主动配置P3的首帧解码任务。
[0037] (4)处理器CPU接收音频帧解码单元上报的中断。解析中断信号来自哪一路音频解码,如果中断信号来自P1,处理器CPU在获取P1上一帧的解码信息后,向任务队列模块配置P1的下一帧解码任务。P2,P3也是同理。
[0038] (5)根据应用需求,处理器CPU需要停止第二路音频解码P2。
[0039] (6)处理器CPU接收音频帧解码单元上报的中断。解析中断信号来自哪一路音频解码,如果中断信号来自P1,处理器CPU在获取P1上一帧的解码信息后,向任务队列模块配置P1的下一帧解码任务。P3也是同理。如果中断信号来自P2,处理器CPU在获取P2上一帧的解码信息后,不再向任务队列模块配置P2的下一帧解码任务,之后处理器CPU接收音频帧解码单元上报的中断就与P2无关了。
[0040] 从音频帧解码单元的视角,多路音频解码过程如图3所示:
[0041] (1)音频帧解码单元查询任务队列是否为空,如果任务队列为空,说明当前没有解码任务,音频帧解码单元进入低功耗模式,等待特定时间后再次查询,特定时间由处理器CPU通过寄存器配置;如果任务队列不为空,则音频帧解码单元按照任务队列顺序读取一个解码任务,从低功耗模式进入正常工作模式。
[0042] (2)音频帧解码单元读取一个解码任务之后,根据这个解码任务关联的输入控制信息进行解码,输入控制信息包括音频标准标识码、抗误码策略、待解码的ESA帧数据的起始地址和长度、解码之后的PCM帧数据待存放的起始地址。
[0043] (3)音频帧解码单元在解码任务执行完成后产生解码状态和解码数据。解码任务执行的完成结果包括解码正常完成、解码错误异常和解码数据不够。如完成结果为解码正常完成,则音频帧解码单元将脉冲编码调制数据PCM按照输入控制信息的要求写入对应的内存空间;如完成结果为解码错误异常,则音频帧解码单元根据输入控制信息里面的抗误码策略进行上一帧脉冲编码调制数据PCM重复或者静音输出;如完成结果为解码数据不够,则音频帧解码单元不输出脉冲编码调制数据PCM。
[0044] (4)每个解码任务执行完成后,更新该解码任务对应的一路音频的解码信息,提供给处理器CPU,更新的解码信息包括解码结果状态、采样率、声道数、比特率、当前ESA帧消耗的比特数、当前PCM帧的写指针、ESA数据缺少的字节数。当脉冲编码调制数据PCM和解码信息都更新完毕后,音频帧解码单元向处理器CPU上报中断。
[0045] (5)重新开始(1)。