音频解码方法及音频解码装置制造方法
【专利摘要】本发明提供一种音频解码的方法,其在音频数据的每个封包数据前插入同步字元及相对应的封包档头,而后依据同步字元确认该封包数据的位置,并依据该封包档头的信息对该封包数据进行解码。藉此,当解码过程有错误发生时,能立刻跳到下一个封包数据进行解码而避免解码出杂音。此外,快转时能直接读取封包档头取得封包数据的解码信息,进而进行解码。
【专利说明】音频解码方法及音频解码装置【技术领域】
[0001]本发明有关于一种音频数据解码的方法,特别有关于一种应用于视窗媒体音频(Windows Media Audio, WMA)数据解码的方法。
【背景技术】
[0002]WMA是微软公司开发的一种音频压缩格式,具有档案小、音质高的特点,特别适合应用于网络串流及移动装置。此外,由于WMA格式支援数字著作权的管理(Digital RightsManagement, DRM),也使其被大部分的线上音乐商店所采用。随着数字音乐产业的兴起与网络技术的发展,尤其是无线传输以及手持式移动通讯装置的普及,视窗媒体音频格式遂逐渐成为音频压缩格式的主流之一。
[0003]请参考图1,其所绘示为WMA的格式结构示意图。
[0004]WMA属于进阶串流格式(Advanced Streaming Format, ASF)的一种,其档案结构至少包含数据部份以及档头部份。数据部份包含所有的音频内容,其由多个连续的封包数据组成。档头部份则包含WMA档案的各项信息,如档案大小、影音串流数、封包数据的解码信息等。
[0005]已知技术在进行WMA档案解码时,先读取档头部份的解码信息后,即对数据部分的封包数据进行连续解码。请参考图2A,其所绘示为已知技术进行WMA解码的示意图。解码器进行解码时需先读取档头部份,该档头部份包含数据部份内所有封包数据的解码信息,解码器即据以依序对每一个封包数据进行解码,直到播放结束。请参考图2B,其所绘示为已知技术进行WMA解码时遇到 快转状况的示意图。当快转至封包数据M所对应的播放时间时,解码器需再次读取档头部份,该档头部份内包含数据部份内所有封包数据的解码信息,解码器即据以由封包数据M开始,向后依序对每一个封包数据进行解码,直到播放结束。
[0006]由上述可知,已知技术在进行WMA解码时,无论自任何时间点开始解码,都会先读取档案最前端的档头部份,并依据其所包含的解码信息,自该时间点向后依序进行解码。但档头部份除了包含解码信息外,尚包含大量其他相关信息如:档案格式、封面、著作权相关信息等,因此档头部份通常较大,以130万位元组的WMA档案为例来说明,其档头大小约为数千位元组。
[0007]请参考图3,其所绘示为已知技术进行WMA档案解码的流程图。解码时,首先进行步骤S300解析WMA档案,将其区分为一档头部份及多个封包数据,再进行步骤S310解析档头部份的内容并取得其中的解码信息,接着进行步骤S320依据解码信息对由第一个封包数据开始依序进行解码。解码过程中并透过步骤S330检查是否有收到快转指令,若收到快转指令,则进行步骤S340 ;反之,则进行步骤S350。在步骤S340中,产生一快转讯息,其具有一时间信息,用以指定快转后的播放位置,并回到步骤S310,使解码器依据快转讯息内的时间信息重新解析档头部份,以取得快转后播放位置相对应的封包数据的解码信息,再进行步骤S320,自前述快转后播放位置相对应的封包数据开始向后解码。在步骤S350中,若未收到快转指令,则检查目前封包数据是否已解码完毕,若目前封包数据尚未解码完毕,则回到步骤S320继续解码目前封包数据;反之,若目前封包数据已解码完毕则进行步骤S360。在步骤S360中,判断目前封包是否为最后一个封包,若非最后一个封包,则回到步骤S320以继续解码下一封包数据;反之,若目前封包为最后一个封包,则进行步骤S370,结束解码。
[0008]前述已知技术的解码流程,由于封包数据连续传送至解码器,解码器需由整个档头部份的信息中判读每个封包边界的位置,但档头部份内的信息相当庞大,解析档头部份以取得所需的信息需花费相当时间,因此当解码过程中有错误发生时,解码器无法即时且正确的判断封包边界所在位置,因而无法进行任何补救,最终可能因连续错误的解码而产生连续的杂音。此外,由于无论自任何时间点开始解码,都需重新读取档头部份的解码信息,快转时亦然,因档头部份包含的内容较多,需花费较长时间读取及解析该档头部份以取得其中的解码信息,再者,重新依据解码信息自数据部份找到欲解码的封包数据亦须要一段时间。综上所述,已知技术具有两项显着的缺点,其一为遇到错误时将解码出连续的杂音影响使用者感受,其二则为快转时需要较长的时间方能正确解码。
【发明内容】
[0009]有鉴于此,本发明的目的在于,提出一种音频解码的方法,使其在解码过程发生错误时能避免输出杂音,以及快转时能更快速地开始进行解码。
[0010]根据本发明的音频解码方法的一实施例,其包含步骤:将一音频数据区分为一档头部份与一数据部份;依据该档头部份内的信息自该数据部份中决定一第一封包数据;依据该档头部份内的信息产生对应该第一封包数据的一第一封包档头;利用一同步字元、该第一封包档头、以及该第一封包数据产生一第一中间数据;以及检测该第一中间数据内的该同步字元,以确认该第一封包数据的位置,并依据该第一封包档头解码该第一封包数据。
[0011]在本发明的一较佳实施例中,上述方法还包含步骤:检测解码过程是否发生错误,当错误发生时产生一错误讯息;依据该档头部份内的信息及该错误讯息自该数据部份中决定一第二封包数据;依据该档头部份内的信息产生对应该第二封包数据的一第二封包档头;利用该同步字元、该第二封包档头、以及该第二封包数据形成一第二中间数据;以及检测该该第二中间数据内的该同步字元,并依据该第二封包档头解码该第二封包数据。因此,当解码过程发生错误时,将直接选择发生错误的封包数据之后的下一个封包数据进行解码,避免输出杂音。
[0012]在本发明的另一较佳实施例中,上述方法还包含步骤:检测解码过程是否收到一快转指令,当收到该快转指令时产生一快转讯息;依据该档头部份内的信息及该快转讯息自该数据部份中决定一第三封包数据;依据该档头部份内的信息产生对应该第三封包数据的一第三封包档头;利用该同步字元、该第三封包档头以及该第三封包数据形成一第三中间数据;以及检测该该第三中间数据内的该同步字元,并依据该第三封包档头解码该第三封包数据。因此,当解码过程收到快转指令时,将直接决定一封包数据,并依据该封包数据前的封包档头内的解码信息解码该封包数据,免除重新读取档头部份的解码信息所花费的时间。
[0013]本发明还提出一种音频解码的装置,其包含一分析单元、一封包档头插入单元以及一解码单元。分析单元将一音频数据区分为一档头部份与一数据部份。封包档头插入单元依据该档头部份内的信息自该数据部份中决定一第一封包数据、依据该档头部份内的信息产生对应该第一封包数据的一第一封包档头,并利用一同步字元、该第一封包档头以及该第一封包数据形成一第一中间数据。解码单元检测第一中间数据内的该同步字元,以确认该第一封包数据的位置,并依据该第一封包档头解码该第一封包数据。
[0014]在本发明的一较佳实施例中,上述音频解码的装置还包含一检测单元,用以检测解码过程发生的错误,于错误发生时产生一错误讯息,并检测解码过程是否收到一快转指令,于收到该快转指令时产生一快转讯息。如此,当解码过程发生错误或时,将直接选择发生错误的封包数据后的下一个封包数据进行解码,而避免产生杂音输出。当解码过程收到快转指令时,将直接决定一封包数据,并依据该封包数据前的封包档头内的解码信息解码该封包数据,免除重新读取档头部份的解码信息所花费的时间。
[0015]为对本发明的上述及其他方面有更佳的了解,特举较佳实施例,并配合附图,作详细说明如下:
【专利附图】
【附图说明】
[0016]图1所绘示为WMA的格式结构示意图
[0017]图2A所绘示为已知技术进行WMA解码的示意图
[0018]图2B所绘示为已知技术进行WMA解码时遇到快转状况的示意图
[0019]图3所绘示为已知技术进行WMA档案解码的流程图
[0020]图4A所绘示为本发明的音频解码装置的方块图
[0021]图4B所绘示为图4A音频解码装置中的封包档头插入单元的一实施例的方块图。
[0022]图4C所绘示为图4A音频解码装置中的解码单元的一实施例的方块图。
[0023]图4D所绘示为图4A音频解码装置中的检测单元的一实施例的方块图。
[0024]图5A所绘示为本发明的一中间数据的数据结构示意图
[0025]图5B所绘示为本发明中快转至封包档头M时产生的一中间数据的数据结构示意图
[0026]图6所绘示为本发明的音频解码方法的一实施例的流程图。
[0027]主要元件符号说明
[0028]410:音频解码装置
[0029]420:分析单元
[0030]430:封包档头插入单元
[0031]432:封包数据边界分析单元
[0032]434:封包档头形成单元
[0033]436:合成单元
[0034]440:解码单元
[0035]442:同步字元检测单元
[0036]444:封包档头读取单元
[0037]446:封包解码单元
[0038]450:检测单元
[0039]452:快转检测单元[0040]454:错误检测单元【具体实施方式】
[0041]请参考图4A,其所绘示为本发明的音频解码装置的一实施例的方块图。音频解码装置410包含一分析单元420、一封包档头插入单元430、一解码单元440、以及一检测单元450。分析单元420对一 WMA档案f?内的数据进行分析后,将其区分为档头部份与数据部份,并传送给封包档头插入单元430。档头部份包含多个封包数据边界信息与多个解码信息,数据部分则包含多个连续的封包数据。封包档头插入单元430依据档头部份与数据部份的信息,在每一个封包数据前插入一预先定义的同步字元以及一与封包数据对应的封包档头,形成一中间数据i,并将中间数据i传送至解码单元440进行解码,而每一封包档头内包含其对应的封包数据解码时所需的信息。解码单元440收到中间数据i后,可藉由检测同步字元找到其内封包档头及封包数据的正确位置,再依据封包档头内的解码数据对封包数据进行解码。解码单元440在解码过程中发生错误时,将停止解码,并传送一错误通知给检测单元450,检测单元450可分辨前述错误的类别,并产生相对应的讯息回传至封包档头插入单元430以决定后续动作。此外,检测单元450亦随时检测是否收到一快转指令,并于收到快转指令时产生相对应的快转讯息回传至封包档头插入单元430以决定后续动作。
[0042]请参考图4B,其所绘示为图4A音频解码装置中的封包档头插入单元的一实施例的方块图。封包档头插入单元430包含一封包数据边界分析单元432、一封包档头形成单元434以及一合成单元436。封包数据边界分析单元432依据档头部份中的封包数据边界信息,例如每一封包数据的位元数等信息,自数据部分决定各个封包数据的边界,使本发明的音频解码的装置能够据以从原本连续排放的封包数据中辨别出封包数据与封包数据间的边界。封包档头形成单元434依据档头部份所包含的信息产生多个封包档头,每一封包档头包含其对应封包数据的解码信息,例如通道个数、取样频率、每秒传递位元组、每区块包含位元组、以及编码选项等,且 一对一对应至该些封包数据,使解码单元440能据以解码封包数据。为了降低封包档头的大小,封包档头形成单元434仅将解码一封包数据所需的解码信息置入其对应的封包档头内,以130万位元组的WMA档案为例来说明,该些封包档头的大小各约为数十位元组,相对于已知技术需读取数千位元组的档头部份,读取及解析时自可节省大量时间。合成单元436针对每一封包,利用一预设的同步字元S、该封包对应的封包档头以及封包数据,依据一特定的顺序摆放形成中间数据i,并传送至解码单元440进行解码。请参考图5A,其所绘示为本发明的中间数据i的数据结构示意图。如图5A所示,在每一个封包数据前,皆插入一同步字元s以及对应于该封包数据的封包档头。
[0043]请参考图4C,其所绘示为图4A图音频解码装置中之解码单元之一实施例的方块图。解码单元440包含一同步字元检测单元442、一封包档头读取单元444、以及一封包解码单元446。同步字元检测单元442可依据检测同步字元s找到每一中间数据i,并据以得知每一中间数据i的中封包档头的起始及结束位置,以及封包数据的起始位置。当封包档头的位置确认后,封包档头读取单元444则自封包档头中取得封包数据解码信息,并从中得知到封包数据的结束位置。封包解码单元446系依据封包数据的解码信息对封包数据进行解码,以输出数据X。若解码过程发生错误,则立刻停止解码该封包数据,并传递一错误通知给检测单元450。[0044]请参考图4D,其所绘示为图4A音频解码装置中的检测单元的一实施例的方块图。检测单元450包含一快转检测单元452、以及一错误检测单元454。快转检测单元452用以检测是否收到一快转指令,并于收到快转指令时产生一快转讯息,该快转讯息包含快转后所在位置的时间信息,快转检测单元452将快转讯息传至封包档头插入单元430,以使封包档头插入单元430根据快转讯息内的时间信息找到快转后所对应的封包数据,并据以产生中间数据i,传送至解码单元440。也就是说,同步字元检测单元442搜寻到的下一个同步字元s即为快转后位置所对应的中间信息i,而后续的解码将从快转后所在位置开始进行。错误检测单元454可以接受封包解码单元446所传递的错误通知,并且辨识解码过程所发生错误的类别,其错误主要有两类。一类为错误检测单元446发现封包大小发生错误,与封包档头内所列信息不符,另一类错误类别则为封包解码单元446解码过程出现的其他错误,例如预先在中间数据i的封包数据内设有特定的除错位元,在解码过程中即可藉由检测该除错位元来判断封包数据是否存在错误。又例如封包解码单元446已解码达封包大小却仍未解码完毕,或者封包解码单元446已解码完毕却尚未达封包大小等。当判定为封包大小发生错误时,错误侦测单元454产生一错误讯息传送至封包档头插入单元430,该错误讯息包含一停止信息,令封包档头插入单元430停止传送中间数据i至解码单元440,于是跳过所有封包数据,结束解码。当判定为其他类型的错误时,错误检测单元454产生一错误讯息传送至封包档头插入单元430,该错误讯息包含一时间信息,令封包档头插入单元430立刻传送下一组中间数据i给解码单元440。也就是说,同步字元检测单元442搜寻到的下一个同步字元s即为下一组中间信息i,而后续的解码将从下一个封包数据开始向后解码。
[0045]请参考图6,其所绘示为本发明的音频解码方法的一实施例的流程图。解码时,首先进行步骤S600,由分析单元420分析一 WMA档案,并据以将WMA档案区分为档头部份及数据部份。接着进行步骤S610,由封包数据边界分析单元432以及封包档头形成单元434解析档头部份的信息并据以决定各个封包数据的边界及相对应的封包档头。接着进行步骤S612,由合成单元436在每一封包数据前插入同步字元s及相对应的封包档头以形成中间数据i。中间数据i传至解码单元440后,进行步骤S614,由同步字元检测单元442搜寻同步字元s以确认封包档头及封包数据的位置,接着进行步骤S616,由封包档头读取单元444读取封包档头以取得封包数据的解码信息。步骤S620中,封包解码单元446系依据解码信息对封包数据进行解码。
[0046]于解码过程中进行步骤S630,由一快转检测单元452检测是否收到一快转指令,若收到快转指令则执行步骤S640,反之,则执行步骤S632。于步骤S640中,快转检测单元452产生一包含时间讯息的快转讯息,并传给封包档头插入单元430,并回到步骤S612,使封包档头插入单元430根据快转讯息中的时间讯息找到快转后所对应的封包数据,并据以产生中间数据i,以及回传给同步字元检测单元442使其据以进行步骤S614,搜寻同步字元来确认快转后要解码的封包数据的位置,并重复前述解码流程。请再参考图5B,其所绘示为本发明中快转至封包档头M时产生之一中间数据的示意图。由图5B可知,其所绘示为本发明中快转至封包档头M时产生的一中间数据的数据结构示意图。快转至封包档头M时,由快转检测单元452回传此讯息给封包档头插入单元430,封包档头插入单元430即产生一自封包数据M起始的中间数据,每一封包数据前并有一同步字元以及与的相对应的封包档头。于步骤S632中,判断封包解码单元446在解码过程是否发生错误,若封包解码单元446在解码过程未发生错误,则进行步骤S650,反之,则执行步骤S634,且立刻停止解码目前封包数据,并传递一错误通知给错误检测单元454进行错误种类的辨别。在步骤S634中,若错误检测单元454判别该错误种类为封包大小错误,则执行步骤638,若出现其他种类错误,则进行步骤S636。步骤S638中,错误检测单元454产生一包含时间讯息的错误讯息,回传给封包档头插入单元430,令封包档头插入单元430停止传送中间数据i至解码单元440,于是进行步骤638跳过所有封包数据,并进行步骤S670结束解码。步骤636中,错误检测单元454产生一错误讯息传送至封包档头插入单元430,该错误讯息包含一时间信息,令封包档头插入单元430执行步骤S612立刻传送下一组中间数据i给解码单元440,接着回到步骤S614,重复执行解码流程。
[0047]步骤S650中,确认目前封包是否已解码完毕,若尚未解码完毕,则执行步骤S620,继续解码目前封包,若已解码完毕,则执行步骤S660。步骤S660中,确认目前封包是否为最后一个封包。若为最后一个封包,则执行步骤S670,反之,若非最后一个封包数据,则执行步骤S614,由同步字元检测单元442搜寻下一个同步字元s以确认下一个封包数据的位置,并重复前述解码流程。步骤S670中,结束解码。
[0048]由以上说明可知,透过本发明进行WMA解码时,由于预先将对应的封包档头置于封包数据前,因此快转时,能藉由直接读取封包数据所对应的仅包含解码必要信息的封包档头来取得解码信息,而无须重新读取庞大且包含许多非解码必要信息的档头部份,故能有效节省时间;此外,由于每一个封包数据前皆有同步字元以及对应的封包档头,因此发生错误时能直接透过同步字元找到下一个封包数据进行解码,并跳过错误的部分以避免输出连续杂音,影响使用者的感受。当然,本发明的音频解码装置并不限于解码WMA档案,其亦可用于解码其他音频档案格式如自适应多速率音频压缩格式(Adaptive mult1-Ratecompression, AMR)、或者 OggVorbis 格式的档案等。
[0049]综上所述,虽然本发明已将较佳实施例揭示如上,然其并非用以限定本发明。本发明所属【技术领域】中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当以权利要求书界定为准。
【权利要求】
1.一种音频解码的方法,其包含步骤: 将一音频数据区分为一档头部份与一数据部份; 依据该档头部份内的信息自该数据部份中决定一第一封包数据; 依据该档头部份内的信息产生对应该第一封包数据的一第一封包档头; 利用一同步字元、该第一封包档头、以及该第一封包数据产生一第一中间数据;以及检测该第一中间数据内的该同步字元,以确认该第一封包数据的位置,并依据该第一封包档头解码该第一封包数据。
2.如权利要求1所述的音频解码的方法,其特征在于,该档头部份包含多个封包数据边界信息与多个解码信息。
3.如权利要求2所述的音频解码的方法,其特征在于,依据该档头部份内的信息自该数据部份中决定一第一封包数据的步骤,依据该些封包数据边界信息决定该第一封包数据。
4.如权利要求2所述的音频解码的方法,其特征在于,依据该档头部份内的信息产生对应该第一封包数据的一第一封包档头的步骤,依据该些解码信息产生该第一封包档头。
5.如权利要求1所述的音频解码的方法,其特征在于,该音频数据的格式为视窗媒体音频、自适应多速率音频压缩、以及Ogg Vorbis等格式中的一种。
6.如权利要求1所述的音频解码的方法,其特征在于,该第一封包档头包含解码该第一封包数据所需的解码信息。
7.如权利要求1所述的音频解码的方法,其特征在于,还包含步骤: 检测解码过程是否发生错误,当错误发生时产生一错误讯息; 依据该档头部份内的信息及该错误讯息自该数据部份中决定一第二封包数据; 依据该档头部份内的信息产生对应该第二封包数据的一第二封包档头; 利用该同步字元、该第二封包档头、以及该第二封包数据产生一第二中间数据;以及 检测该该第二中间数据内的该同步字元,并依据该第二封包档头解码该第二封包数据。
8.如权利要求1所述的检测解码过程的方法,其特征在于,还包含步骤: 检测解码过程是否收到一快转指令,当收到该快转指令时产生一快转讯息; 依据该档头部份内的信息及该快转讯息自该数据部份中决定一第三封包数据; 依据该档头部份内的信息产生对应该第三封包数据的一第三封包档头; 利用该同步字元、该第三封包档头、以及该第三封包数据产生一第三中间数据;以及 检测该该第三中间数据内的该同步字元,并依据该第三封包档头解码该第三封包数据。
9.一种音频解码的装置,包含: 一分析单元,将一音频数据区分为一档头部份与一数据部份; 一封包档头插入单元,依据该档头部份内的信息自该数据部份中决定一第一封包数据,依据该档头部份内的信息产生对应该第一封包数据的一第一封包档头,并利用一同步字元、该第一封包档头、以及该第一封包数据产生一第一中间数据;以及 一解码单元,检测该第一中间数据内的该同步字元,以确认该第一封包数据的位置,并依据该第一封包档头解码该第一封包数据。
10.如权利要求9所述的音频解码的装置,其特征在于,该档头部份包含多个封包数据边界信息与多个解码信息。
11.如权利要求10所述的音频解码的装置,其特征在于,该封包档头插入单元包含: 一封包数据边界分析单元,依据该些封包数据边界信息决定该第一封包数据; 一封包档头形成单元,依据该些解码信息产生该第一封包档头;以及一合成单元,利用该同步字元、该第一封包档头、以及该第一封包数据,产生该第一中间数据。
12.如权利要求9所述的音频解码的装置,其特征在于,该解码单元包含: 一同步字元检测单元,检测该第一中间数据内的该同步字元; 一封包档头读取单元,取得该第一中间数据内该第一封包档头的内容;以及 一封包解码单元,利用该第一封包档头的内容解码该第一封包数据。
13.如权利要求9所述的音频解码的装置,其特征在于,该音频数据的格式为视窗媒体音频、自适应多速率音频压缩、以及Ogg Vorbis等格式中的一种。
14.如权利要求9所述的音频解码的装置,其特征在于,该第一封包档头包含解码该第一封包数据所需的解码信息。
15.如权利要求9所述的音频解码的装置,其特征在于,还包含: 一检测单元,检测解码过程是否发生错误,于错误发生时产生一错误讯息。
16.如权利要求9所述的音频解码的装置,其特征在于,还包含: 一检测单元,检测解码过程是否收到一快转指令,于收到该快转指令时产生一快转讯肩、O
【文档编号】G10L19/00GK103474073SQ201210186441
【公开日】2013年12月25日 申请日期:2012年6月7日 优先权日:2012年6月7日
【发明者】柯俊言 申请人:晨星软件研发(深圳)有限公司, 晨星半导体股份有限公司