一种aac音频实时解码容错控制方法

文档序号:586010阅读:354来源:国知局
专利名称:一种aac音频实时解码容错控制方法
技术领域
本发明涉及一种AAC音频实时解码容错控制方法,其容错控制方法可以保证输出 音频的不间断性,属于通信领域。
背景技术
先进音频编码(Advanced Audio Coding,简称AAC)是在MP3基础上发展起来的新 一代感知音频压缩编解码技术,该技术综合了多种主流音频编解码技术的优点,具有信号 压缩比高,重建音质好,编解码过程高度模块化和声道配置灵活等特点。在实际应用中,需要保证AAC解码输出音频的不间断性。但AAC码流在传输过程 中,不可以避免地会出现数据误码、丢失的情况,如果没有相应的容错控制机制,就无法保 证输出音频的不间断性。

发明内容
为了保证AAC输出音频的不间断性,本发明提出了一种AAC音频实时解码容错控 制方法。该容错控制方法主要包括AAC解码输入先入先出的数据缓存器(First In First Out,简称FIFO),该FIFO可以容纳2帧AAC码流,防止突发情况下因AAC解码器无法实时取 走数据所造成的AAC码流丢失;AAC解码输出FIFO,该FIFO可以容纳3. 5帧解码后的脉冲 编码调制(Pulse Code Modulation,简称PCM)数据,当此FIFO数据量小于2帧时,AAC解 码器对解码后的PCM数据进行插值后再发送到解码输出FIFO,防止因AAC码流在数据传输 过程中因存在数据误码、丢失所引起的输出音频中断;预留缓冲区,预留一帧PCM数据,在 突发情况下,解码输出FIFO即将为空时产生中断信号,AAC解码器接收到该中断信号后立 即将预留缓冲区数据发送到解码输出FIFO,防止输出音频中断。具体步骤如下步骤一 AAC码流进入FPGA中的AAC解码输入FIFO,如该FIFO数据量大于等于一 帧时,将对应的指示信号1置为高电平,如不满一帧数据,则将该指示信号1置为低电平;步骤二 DSP中的AAC解码器检测到对应的指示信号1为高电平时,从AAC解码输 入FIFO取出数据进行解码,如为低电平,则继续检测,直至为高电平;步骤三DSP中AAC解码器完成解码后,检测对应的指示信号2的电平值,如为高电 平,则对解码后的PCM数据进行插值,然后将预留缓冲区数据和插值后的前若干PCM数据, 共计10 点,发送到解码输出FIFO,并将剩余数据存入预留缓冲区,如为低电平,则检测预 留缓冲区是否为满,如满,则将预留缓冲区数据发送到解码输出FIFO,然后将解码后的PCM 数据存入预留缓冲区,如不满,则对解码后的PCM数据进行插值,然后将预留缓冲区数据和 插值后的前若干PCM数据,共计10M点,发送到解码输出FIFO,并将剩余数据存入预留缓冲 区;步骤四检测解码输出FIFO数据量,如其值大于等于2帧,则对应的指示信号2置 为低电平,如其值小于2帧且大于等于64,则对应的指示信号2置为高电平,如其值小于 64,则产生中断信号,AAC解码器接收到该中断信号后,立即将预留缓冲区数据发送到解码输出FIFO。其中,所述的步骤一中FPGA采用 Altera 公司的 Cyclone EP1C12Q240C8 ;FIFO 深 度为1024,宽度为32。其中,所述的步骤二中对应的指示信号1的高低电平值是通过将DSP的通 用 IO 口(General-Purpose IO Ports,简称 GPI0)与 FPGA 的 10 相连,并由 DSP 检测其 GPIO电平值来实现,DSP为TI公司的TMS320C6727B,使用双通道数据搬移加速控制器 (Dual DataMovement Accelerator,简称 dMAX)通过夕卜部存储器接口 (External Memory Interface,简称EMIF)从FPGA取数,EMIF总线为32位。其中,所述的步骤三中对应的指示信号2的高低电平值是通过将DSP的GPIO与 FPGA的10相连,并由DSP检测其GPIO电平值来实现,对应的插值为每隔512个PCM数据点 进行1插值,即一帧PCM数据由原来的10M点变为10 点。其中,所述的步骤四中当接收到中断信号后,即使预留缓冲区数据不满一帧,也 将发送到解码输出FIFO,防止输出音频中断。本发明的原理通过增加AAC音频3帧的延时来保证输出音频的不间断性。本发明与现有技术相比的优点在于1、容错控制方法简单、有效;2、即使在突发情况下也可以保证输出音频的不间断性。


图1是本发明提出的容错控制方法的整体流程图;图2是本发明提出的容错控制方法解码输入端FPGA握手流程图;图3是本发明提出的容错控制方法解码输入端DSP握手流程图;图4是本发明提出的容错控制方法解码输出端DSP握手流程图;图5是本发明在指示信号2为高电平时预留缓冲区处理示意图;图6是本发明在指示信号2为低电平时预留缓冲区处理示意图;图7是本发明提出的容错控制方法解码输出端FPGA握手流程图;图8是本发明的中断处理流程图。
具体实施例方式下面结合附图,对本发明的技术方案做进一步说明。本发明提供了一种AAC音频实时解码容错控制方法。该容错控制方法主要包括 AAC解码输入先入先出的数据缓存器(First In First Out,简称FIFO),该FIFO可以容纳 2帧AAC码流,防止突发情况下因AAC解码器无法实时取走数据所造成的AAC码流丢失;AAC 解码输出FIFO,该FIFO可以容纳3. 5帧解码后的脉冲编码调制(Pulse Code Modulation, 简称PCM)数据,当此FIFO数据量小于2帧时,AAC解码器对解码后的PCM数据进行插值后 再发送到解码输出FIFO,防止因AAC码流在数据传输过程中因存在数据误码、丢失所引起 的输出音频中断;预留缓冲区,预留一帧PCM数据,在突发情况下,解码输出FIFO即将为空 时产生中断信号,AAC解码器接收到该中断信号后立即将预留缓冲区数据发送到解码输出 FIFO,防止输出音频中断。
参见附图1,AAC码流进入FPGA中的AAC解码输入FIFO(IOl) ;DSP中的AAC解码 器使用dMAX通过EMIF总线从AAC解码输入FIFO取出AAC码流数据并进行解码(102) ;DSP 中的AAC解码器在完成解码后,将预留缓冲区中的数据发送到解码输出FIFO,接着将解码 得到的PCM数据存入预留缓冲区(103);解码输出FIFO将PCM数据送入DA(105),同时检测 解码输出FIFO的数据量,并以此决定是否将指示信号2置为高电平或产生中断信号(104)。为防止突发情况下因AAC解码器无法实时取走FIFO中的数据所造成的AAC码流 丢失,在101中本发明采用了如下握手机制。AAC码流进入解码输入FIFCK201);接着检测 解码输入FIFO的数据量是否大于等于一帧Q02);如果大于等于一帧则将对应的指示信号 1置为高电平003),正常情况下,AAC解码器如检测到指示信号1为高电平,就会将数据取 走进行解码,如发生不可预知的突发情况,AAC解码器无法及时取走数据,AAC码流数据也 不会溢出丢失,允许AAC解码器在一帧的时间内恢复正常,如果在一帧时间内AAC解码器仍 无法恢复正常,则会出现丢失AAC码流的情况;如果小于一帧则将对应的指示信号1置为低 电平(204)。为配合101中的握手机制,在102中本发明采用了如下握手机制。AAC解码器通过 检测对应的指示信号1的电平值来决定下一步的行为(301);如为高电平,则使用dMAX通 过EMIF总线将AAC码流数据从解码输入FIFO中取走进行解码(302),如为低电平,则继续 检测,直至其为高电平。为防止DA输出音频的中断,本发明在103采用了如下握手机制。AAC解码器在获 得AAC码流数据后进行解码001),解码完成后检测对应的指示信号2的电平值002),检 测其是否为高电平G03);如为高电平,则对解码后的PCM数据进行每隔512个数据点进行 1插值的操作,即插值后的PCM数据点由原来的10M点变成10 点(404);之后将预留缓 冲区数据及插值后的前若干PCM数据,共计10 数据点,发送到解码输出FIFO,并将剩余 数据存入预留缓冲区G05);如为低电平,则检测预留缓冲区中的数据量006),检测其是 否为满G07);如为满,则将预留缓冲区数据发送到解码输出FIFO,并将解码后的数据存入 预留缓冲区(408);如不满,则对解码后的PCM数据进行每隔512个数据点进行1插值的操 作,即插值后的PCM数据点由原来的10M点变成10 点009);最后将预留缓冲区数据和 插值后的前若干PCM数据,共计1024数据点,发送到解码输出FIFO,并将剩余数据存入预留 缓冲区。405中预留缓冲区的处理示意图如501所示。如预留缓冲区为满,则只需要将插值 后的前2个PCM数据点放在预留缓冲区的尾部,组成10 个数据点发送到解码输出FIFO ; 如缓冲区不满,则将插值后的前若干O <值<=1026)个PCM数据点放在预留缓冲区的尾 部,组成10 个数据点发送到解码输出FIFO。410中预留缓冲区的处理示意图如601所示,将插值后的前若干O <值< = 1024)个PCM数据点放在预留缓冲区的尾部,组成10M个数据点发送到解码输出FIFO。为配合103中的握手机制,在104中本发明采用了如下握手机制。首先检测解码 输出FIFO中的数据量(701);检测其值是否大于等于2帧(702);如果输出FIFO中的数据 量大于等于2帧,则将对应的指示信号2置为高电平(703),如果输出FIFO中的数据量小于 2帧,则继续判断其值是否大于等于64 (704),如果输出FIFO中的数据量大于等于64点,则 将对应的指示信号2置为低电平(705);如果输出FIFO中的数据量小于64点,则产生中断信号(706)。706产生的中断信号主要用于在有些突发情况下,防止DA输出音频的中断。如解 码输出FIFO数据即将为空时,AAC解码器正在进行解码,无法及时将数据发送到解码输出 FIFO。当706产生中断信号后,AAC解码器接收到该中断信号,促发中断(801);接着进行现 场保护(802);然后将预留缓冲区中的数据发送到解码输出FIFO,不论预留缓冲区数据是 否为满都发送数据(803);最后结束中断(804);恢复现场。说明书附图中出现的英文缩写,其含义如下FIFO 先入先出的数据缓存器;PCM 脉冲编码调制;DA 数模转换器件;dMAX 双通道数据搬移加速控制器;EMIF 外部存储器接口。
权利要求
1.一种AAC音频实时解码容错控制方法,其特征在于该方法具体包括以下步骤(I)AAC码流进入FPGA中的AAC解码输入FIFO,如该FIFO数据量大于等于一帧时,将对应的指示信号1置为高电平,如不满一帧数据,则将该指示信号1置为低电平;O)DSP中的AAC解码器检测到对应的指示信号1为高电平时,从AAC解码输入FIFO取 出数据进行解码,如为低电平,则继续检测,直至为高电平;(3)DSP中AAC解码器完成解码后,检测对应的指示信号2的电平值,如为高电平,则对 解码后的PCM数据进行插值,然后将预留缓冲区数据和插值后的前若干PCM数据,共计10 点,发送到解码输出FIFO,并将剩余数据存入预留缓冲区,如为低电平,则检测预留缓冲区 是否为满,如满,则将预留缓冲区数据发送到解码输出FIFO,然后将解码后的PCM数据存入 预留缓冲区,如不满,则对解码后的PCM数据进行插值,然后将预留缓冲区数据和插值后的 前若干PCM数据,共计IOM点,发送到解码输出FIFO,并将剩余数据存入预留缓冲区;(4)检测解码输出FIFO的数据量,如其值大于等于2帧,则将对应的指示信号2置为低 电平,如其值小于2帧且大于等于64,则将对应的指示信号2置为高电平,如其值小于64, 则产生中断信号,AAC解码器接收到该中断信号后,立即将预留缓冲区数据发送到解码输出 FIFO。
2.根据权利要求1所述的一种AAC音频实时解码容错控制方法,其特征在于所述的 步骤(1)中=FPGA 采用 Altera 公司的 Cyclone EP1C12Q240C8 ;FIFO 深度为 1024,宽度为 32。
3.根据权利要求1所述的一种AAC音频实时解码容错控制方法,其特征在于所述的 步骤O)中对应的指示信号1的高低电平值是通过将DSP的GPIO与FPGA的10相连,并 由DSP检测其GPIO电平值来实现,DSP为TI公司的TMS320C6727B,使用dMAX通过EMIF总 线从FPGA取数,EMIF总线为32位。
4.根据权利要求1所述的一种AAC音频实时解码容错控制方法,其特征在于所述的 步骤(3)中对应的指示信号2的高低电平值是通过将DSP的GPIO与FPGA的10相连,并 由DSP检测其GPIO电平值来实现,对应的插值为每隔512个PCM数据点进行1插值,即一 帧PCM数据由原来的10M点变为10 点。
5.根据权利要求1所述的一种AAC音频实时解码容错控制方法,其特征在于所述的 步骤中当接收到中断信号后,即使预留缓冲区数据不满一帧,也将发送到解码输出 FIFO,防止输出音频中断。
全文摘要
本发明提供了一种AAC音频实时解码容错控制方法。该容错控制方法主要包括AAC解码输入FIFO,该FIFO可以容纳2帧AAC码流,防止突发情况下因AAC解码器无法实时取走数据所造成的AAC码流丢失;AAC解码输出FIFO,该FIFO可以容纳3.5帧解码后的PCM数据,当此FIFO的数据量小于2帧时,AAC解码器对解码后的PCM数据进行插值再发送到解码输出FIFO,防止因AAC码流在数据传输过程中因存在数据误码、丢失所引起的输出音频中断;预留缓冲区,预留一帧PCM数据,在突发情况下,解码输出FIFO即将为空时产生中断信号,AAC解码器接收到该中断信号后立即将预留缓冲区的数据发送到解码输出FIFO,防止输出音频中断。
文档编号G10L19/00GK102063906SQ20101028774
公开日2011年5月18日 申请日期2010年9月19日 优先权日2010年9月19日
发明者毛峡, 邵伟国 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1