audio streaming的项目总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值