CSDN博客

img zergbird

audio streaming的项目总结

发表于2004/6/30 21:45:00  674人阅读

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的变量做接口很方便,而且有效。

0 0

相关博文

我的热门文章

img
取 消
img