[发明专利]一种解码器和解码方法有效
申请号: | 200810118000.6 | 申请日: | 2008-08-19 |
公开(公告)号: | CN101340191A | 公开(公告)日: | 2009-01-07 |
发明(设计)人: | 邓昊;王箫程 | 申请(专利权)人: | 北京中星微电子有限公司 |
主分类号: | H03M7/30 | 分类号: | H03M7/30 |
代理公司: | 北京银龙知识产权代理有限公司 | 代理人: | 许静 |
地址: | 100083北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解码器 解码 方法 | ||
技术领域
本发明涉及解码领域,尤其涉及一种解码器和解码方法。
背景技术
目前比较常见的音频流压缩格式包括MP3、AAC等,其中不同压缩格式 的码流的比特封装顺序可能不同,均由其相应的规范文档确定。码流通常采用 的比特封装顺序是:从目标字节(destination)的空闲最高数据位(MSB)开 始,将码流中的语义项的各比特从高位向低位依次写入,在目标字节写满时, 将所述语义项的剩余比特从下一个字节的最高数据位开始写入。
如图1所示为现有技术中在ACC空码流中写入一个语义项的方法示意图, 以在AAC空码流中写入4比特值“12”[b1100]为例,其写入方法为:将“1100” 顺序写入0字节的空闲最高数据位(即第7~4号比特)。如图2所示为现有技 术中在ACC空码流中连续写入两个语义项的方法示意图,以在AAC空码流 中依次写入4比特值“12”[b1100]和7比特值“17”[b0010001]为例,具体的, 按照图1所示的方法将“1100”写入后,再将“0010001”顺序写入0字节的 剩余其他比特位(即第3~0号比特),在0字节写满时,从下一字节的最高位 开始顺序写入剩余的比特。上述图1和图2中各字节的7号比特和0号比特分 别对应字节的最高位(MSB)和最低位(LSB),“X”表示空闲比特位。
码流经过特定的封装方法编码后,在需要读取时,需要对码流进行解码操 作,现有技术中的解码器多对应上述编码方式,即:依次从码流的低字节向高 字节读取,在字节内从高位向低位读取。
Ogg Vorbis是一种目益流行的免费音频压缩流格式,其采用与常见音频流 不同的比特封装顺序,具体是:从目标字节(destination)的空闲最低数据位 (LSB)开始,将码流中的语义项的各比特从低位向高位依次写入,目标字节 写满后,将所述语义项的剩余比特从下一个字节的最低数据位开始写入。
如图3所示为现有技术中在Ogg Vorbis空码流中写入一个语义项的方法示 意图,以在Ogg Vorbis空码流中写入4比特值“12”[b1100]为例,其写入方 法为:将“1100”顺序写入0字节的空闲最低数据位(即第0~3号比特)。如 图4所示为现有技术中在Ogg Vorbis空码流中连续写入两个语义项的方法示意 图,以在Ogg Vorbis空码流中依次写入4比特值“12”[b1100]和7比特值“17” [b0010001]为例,具体的,按照图3所示的方法将“1100”写入后,再将“0010001” 顺序写入0字节的剩余其他比特位(即第4~7号比特),在0字节写满时,从 下一字节的最低位开始顺序写入剩余的比特。同样的,上述图3和图4中各字 节的7号比特和0号比特分别对应字节的最高位(MSB)和最低位(LSB), “X”表示空闲比特位。
由于Ogg Vorbis格式的码流的封装顺序与常用压缩格式的封装顺序不同, 因此,其解码的顺序也不同,利用现有技术中的解码器无法进行正确的解码。
发明内容
有鉴于此,本发明实施例的目的在于提供一种解码器和解码方法,可以快 速有效的对Ogg Vorbis封装格式的码流进行解码。
为达到上述目的,本发明实施例提供一种解码器,用于从外部存储器中读 取码流并进行解码,所述码流的封装格式为:从目标字节的空闲最低数据位开 始,将所述码流中的语义项的各比特从低位向高位依次写入,所述目标字节写 满后,将所述语义项的剩余比特从下一个字节的最低数据位开始写入,所述存 储器的存储方式为:按照接收的顺序,将所述码流从低地址字节向高地址字节 存储,所述解码器包括:
第一缓存,用于存储从所述存储器读取的码流,所述第一缓存的存储方式 为:将从所述存储器中读取的低地址字节码流存储在空闲最低数据位;
处理模块,用于从所述第一缓存中读取指定长度个最低数据位码流并输 出,并将所述第一缓存中的数据右移所述指定长度位,所述指定长度为第一长 度和第二长度中较小的值,所述第一长度为当前需要解码的语义项的比特长 度,所述第二长度为所述第一缓存中当前存储的数据的有效比特长度;
读取模块,用于在所述第二长度为零时,从所述存储器的可用码流中读取 码流并存储到所述第一缓存中;
第一更新模块,用于在所述第一长度大于所述第二长度时,获取所述第一 长度与所述第二长度的差作为新的第一长度,并发送给所述处理模块;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中星微电子有限公司,未经北京中星微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810118000.6/2.html,转载请声明来源钻瓜专利网。