FF/FR)MuteVolume 2?数据流程 图2.表示了数据在系統中的流程.?3?如何使用rf3实现系统. 3.1?系统结构概要. 应用rf3使该系统的设计变得十分的简单,图3描述了 rf3把mp3解码为pcm编码的整个流程,rf3中的DSP/BIOS SWI线程处理来处悝比特流,为了扩展处理器的性能我们使用了两个SWI线程来做数据处理. 在piprx
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) Latency)
要开始播放和暫停后继续播放你需要清除输入pipe中的垃圾信息,用pip_get函数来实现然而,pip_get函数会在清除的处理过程