网站大量收购独家精品文档,联系QQ:2885784924

dsp实现mp3解码.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
dsp实现mp3解码

概要: Ti dsp实现mp3解码 ??    该报告主要介绍了如何应用Ti的TMS320C54X系列DSP实现mp3和AAC的播放器,该播放器基于Ti的reference framework lever 3,该系统的最大的挑战是把比特流的输入转换成pcm码的输出。Rf中提供了大量的重用代码,使开发者能非常轻松的开发。 MP3: ISO-MPEG Audio Layer-3 standard (ISO/IEC 11172-3, 13818-3) AAC: ISO-MPEG2 Advanced Audio Coding standard (ISO/IEC 13818-7) 1.?介绍 1.1 该程序用TMS320DSC25,他是基于c54x的一个的功率的可编程dsp平台,他有一个ARM7TDMI的核心,和一个图象加速器(所以好像有写人把他用在dc上).   该系统我们使用TI TLV320AIC23连接到TMS320DSC25的mcbsp串口, TLV320AIC23包含了高性能的A/D和D/A转换器,当然,由于我们使用rf3,所以你也能使用其他的解码器. 下图是TMS320DSC25的结构图.???? ? 1.2?系统特征: Start Stop Fast-Forward Fast-Rewind Pause Resume(from Pause) Resume(from FF/FR) Mute Volume 2?数据流程   图2.表示了数据在系统中的流程. ? 3?如何使用rf3实现系统. 3.1?系统结构概要.   应用rf3使该系统的设计变得十分的简单,图3描述了 rf3把mp3解码为pcm编码的整个流程,rf3中的DSP/BIOS SWI线程处理来处理比特流,为了扩展处理器的性能我们使用了两个SWI线程来做数据处理.   在piprx pip中,swiDecode线程把压缩的音乐比特流中转换成pcm编码, swiDecode一次释放一个mp3帧,并把它解码为1152的16比特的pcm编码,对于AAC来说, swiDecode把AAC帧转解码成2048的16比特流的pcm编码,同时,pipdec pip的带宽(注:一次传输16bit)同MP3和AAC解码后的大小一样,,而piprx pip的的带宽明显比pipdec pip的带宽大,也就是说每当swiDecode线程运行一次的时候能完成输出一个解码后的帧,但是不能完成一个输入的帧(很简单的道理,因为mp3和AAC编码都是经过压缩后的,所以执行一次解码,解码后会产生更多的编码)   而同时swiPcmproc线程主要是负责取样频率的转换,音量的控制,和解码后的16比特pcm编码的滤波,,此线程运行一次处理16比特的pcm编码(一个WORD 等于16bit ),同样的, swiPcmproc线程不能一次完成一个帧的输入,但是能完成一个帧的输出,,很显然的, swiPcmproc线程的优先级比前一个线程的优先级高.   以上我们也提到了,在poprx和pipdec中消费和生产不能同步.见图3 ? 3.2?两个线程的同步.   Rf3 使用DSP/BIOS 数据管道的提醒功能来实现时间线程,在rf3中,时间提醒功能不直接造成软件的中断,而是他从SWI的信箱中清除专有的比特信息. ?   对于输入输出信息量不改变的系统而言是很简单的,但是,解压压缩比特流和采用频率的变化改变了输入和输出的数据大小.   也就是说,一个MP3解码器捕获了一个mp3的帧(这是长度可变的)然后解压到1152的pcm编码,解码线程把输入的帧标记为lock状态,知道解压完整个帧,所以只有解码线程知道mp3帧的信息,同时,解码器对应一个输入帧生成了多若干的输出帧.   为了应付上述情况,解码器线程将把一个输入帧的状态置为lock,直到该帧的所有相关的操作全部完成.当一个输入帧的状态标记为lock后,解码器线程将会自动从”信箱(mailbox)”中清理该帧的”(notifyReader)”, 3.3?管道中止通知(Disabling Pipe Notification)   为了实现停止和暂停的功能,你应该为你的电路增加一个开关(见图6),也就是增加一个使能端,你可以用” 管道中止通知(Disabling Pipe Notification)””停止”比特流的处理.主要该管道中止通知(Disabling Pipe Notification)紧紧是一个消息,他并没有真正的中止. ? 3.4?Notification 的存取(Notification Latency)   要开始播放和暂停后继续播放,你需要清除输入pipe中的垃圾信息,用pip_get函数来实现。然而,pip_get函数会在清除的处理过程

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档