问题描述:
每次播放切台刚开始播放的时候,容易出马赛克。
之前流程:
1 硬件DEMUX过滤PAT,PMT,得到AV PID
2 设置PID到底层,播放.
遇到问题:
在硬件DEMUX过滤PSI的过程中,这些数据会被扔掉,不会放到audio/video es buffer,毕竟这个时候PID都还不知道,怎么可能完成TS-PES-ES的转换呢?
如果不幸这些丢掉的数据中包含MPEG2 I帧,连I帧都没有了,那么B,P帧找谁去参考。所以切台后,非常容易出马赛克。
马赛克和静帧的选择:
当解码发现先ERROR的时候,究竟是现实马赛克还是静止现实上次的完整帧,个人觉得,静帧是个不错的选择。毕竟人的眼睛是个很容易欺骗的东西,每秒播放25帧,就会觉得流畅的不得了。
第一次修改方案:
让用户在马赛克和静帧中做一个选择。
答曰:都不接受.
第二次修改方案:
1 让用户软件过滤PSI,这样可以不丢掉任何数据。
2 然后设置PID,播放节目。
3 在硬件DEMUX上过滤并监控PAT,PMT的变化,如果变化,则重播。