audio streaming的project告一段落,总结一下 关键技术: 1。mp3编码器的改进 1)将interleave细化到了huffman code部分 2)将critical,scf,huffman分开处理,可以根据重要 性不同加以不同保护 3)将huffman部分分层处理,根据perceptual effect分成2部 分 4)对于critical 部分采取了bit reserver技术,使cirtical 的error propagatiojn可能进一步降低 2。mp3解码器的error concealment 1)置0比重复效果好的多! 2)利用上一个frame的scf恢复丢失的scf部分(简单的copy) 效果出人意料的好 3。网络适配 1)重传,对于critical部分采取重传,reason是 数据量很小,只有4%左右,但是至关重要。而且 改进后的mp3决定了至少需要64个frame的delay,这段时间 可以被充分利用重传 2)Forward Error Correction:简单的xor,和duplication duplication用于网络状况很差的时候,并且在dupliation 时候原frame再次被interleave,两个包的丢失最多只会 造成1个frame的丢失 3)enhance layer的huffmancode可以被discard 实现: 1。环境: winxp,centrino adhoc无线网络 2。将所有工作线程和socket 接受线程分开,减轻负担。 3。改进后mp3需要60个frame同时解码,那段时间cpu占用 很大,可能会影响socket(代码优化以后问题解决)。 如果以后再遇到类似情况,可以把一个解码过程分成 数段,放到不同时间去做。 4。bcb的timer太不精确,不过本项目中影响不大,以后改 用multimedia专用的那个。。。 5。出错处理,包括缓冲区上下溢,解码失败,播放器要预料到 这种情况。。。否则。。。 问题教训: 1。adhoc的丢包不是和距离成正比,而是到了一点以后突然 下降无数。。。导致数据无法采集 2。同一个地方的丢包情况在不同时候极其不同,虽然程序 可以应付这种突变,但是这种数据实在不适合试验。最终 只好用error pattern file去模拟,sign 3。模板不要乱用,采用模板的结果是:对于调用者没有感觉, 但是实现者的编程工作量不会减少,还有增多。只有继承可 以减少代码量。(除非要配合stl。。。) 4。用extern的变量做接口很方便,而且有效。 |
audio streaming的项目总结
最新推荐文章于 2024-09-08 07:52:40 发布