問題描述:
每次播放切臺剛開始播放的時候,容易出馬賽克。
之前流程:
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的變化,如果變化,則重播。