http://www.cnblogs.com/xkfz007/archive/2012/07/30/2614723.html
視頻編解碼學習之五:差錯控制及傳輸
第12章 差錯控制
1. 視頻傳輸錯誤
視頻傳輸的信道有可能是不可靠的
無線信道
Internet
傳輸錯誤
數據包丟失
局域網數據包衝突
延遲
緩衝區溢出
噪聲干擾
比特反置、比特插入、比特丟失
隨機的比特錯誤
突發錯誤(Bursty Error)
2. 差錯控制的目的
目的
克服由於信道傳輸錯誤及有這些錯誤產生的影響
差錯控制技術可以應用在
信源編碼
信道編碼
解碼端
3. 差錯控制技術
數據重傳(Retransmission)
前向糾錯(Forward Error Correction,FEC)
差錯隱藏(Error Concealment)
差錯恢復(Error Resilience)
信道編碼
數據重傳,FEC
信源編碼
差錯隱藏,差錯恢復
4. 糾錯
完美糾錯
比特差錯檢測和糾錯
FEC
自動重傳請求(Automatic Retransmission Request,ARQ)
有損糾錯
利用HVS的圖像後處理
5. 圖像錯誤
條帶結構減少空域差錯蔓延
條帶間解碼獨立,差錯不能在條帶間蔓延
條帶內解碼相關,差錯能在條帶內蔓延
幀間預測增加時域差錯蔓延
用有差錯區域作爲參考的編碼塊不能被解碼出正確的圖像塊
6. 重傳
條件
編解碼器之間的信道爲反饋類型信道
方法
解碼器向編碼器反饋信息,通知編碼器重傳丟失的數據
優點
僅僅需要發送丟失的數據,可以節省帶寬
適於變帶寬的信道傳輸
缺點
延遲,重傳數據需要一定時間,重傳次數增加,傳輸效率下降
不適合單工信道傳輸,如廣播,多播信道
7. 改進重傳的算法
改進重傳算法
有選擇的優先傳輸重要的數據
視頻編碼數據的重要程度不同
基本層:最重要
增強層:層次越高,重要性越低
I幀:最重要
P幀:重要
B幀:一般
編碼圖像類型的重要性
縮放編碼的不同層次的重要性
僅重傳能夠及時到達的數據
有限延遲重傳
優先級重傳
8. 前向糾錯碼
FEC
增加冗餘數據用於恢復差錯
FEC由兩部分組成,前面K字節稱爲信息碼,後面N-K字節稱爲校驗碼
常用的FEC是Reed-Solomon碼
應用範圍:
存儲設備糾錯,VCD,DVD
衛星通信,無線通信
數字電視廣播
9. 循環冗餘碼CRC
循環冗餘碼(n,k)的編碼規則:
將k比特的信息碼左移r位(r=n-k),生成新碼字
用一個r比特的校驗碼生成多項式g(x)模2除以新生成的碼字,得到的餘數作爲校驗碼
校驗碼附加在信息碼的後面構成循環冗餘碼
模2除運算:
在除法計算中採用模2加法運算
模2加法運算就是沒有進位的加法計算,即對應位的異或運算
0+0=1+1=0,1+0=0+1=1
例:校驗碼生成多項式爲g(x)=x4+ x3+ x2+1,計算信息碼110的(7,3)循環冗餘碼
110左移4生成新碼字1100000
校驗碼生成多項式碼字爲11101
新碼字1100000模2除校驗碼生成碼字11101得到校驗碼1001(餘數)
得到循環冗餘碼
1100000 + 1001 =1101001
10. 海明碼
11. 差錯隱藏
多媒體通信不需要所有數據被精確接收
HVS對少量的視頻錯誤不敏感
一些視頻解碼差錯可以根據HVS的特點被隱藏起來
視頻編碼差錯隱藏
估計損失的數據,隱藏損失數據帶來的圖像差錯
在解碼端對解碼圖像做差錯隱藏
對編碼碼流沒有影響,因此不增加額外的比特
通常利用圖像空域和時域上的相關性做差錯隱藏
12. 空域差錯隱藏
空域插值
利用圖像內部的信息估計出損失的象素
邊緣適應性插值
13. 時域差錯隱藏
時域插值
當前圖像上損失的象素用其相鄰圖像上空間位置相同的象素代替
缺點:只適合靜態場景圖像,不適合動態場景圖像,降低圖像質量
運動補償插值
當前圖像上損失的象素用其相鄰圖像上運動補償後的象素代替
14. 差錯恢復
在編碼端通過編碼算法改變碼流,增強碼流的恢復差錯的能力
導致差錯的兩個原因
解碼器不知道下一個解碼的比特屬於哪一個語法元素
解決方法:
例如:VLC
跳過出錯的數據
重新同步
失去同步
差錯傳遞
編解碼端不匹配,導致不同的預測,使差錯傳遞
失去同步
插入同步碼字(起始碼)
能夠限制差錯傳遞到下一個同步碼字
同步碼字應該和其它碼字區別開
同步碼字可以插入到圖像,條帶的起始位置
碼流中任何差錯都可能會導致失去同步
解決方法:
15. RVLC
傳統的VLC僅僅從前向唯一的解碼
當一個VLC碼字出錯,則從當前解碼碼字開始到下一個同步碼字之間的碼字不能解碼都要丟掉
RVLC既可以前向解碼,也可以後向解碼
如果一個RVLC碼字出錯,跳到下一個同步碼字前,從後向解碼,部分恢復數據
MPEG-4,H.263+標準支持RVLC的差錯恢復
RVLC
前綴碼的第一個和最後一個比特設爲"1"
前綴碼的偶比特位設爲"0"
前綴碼的奇比特位用來識別不同的碼字
16. 數據分區(Data Partitioning)
將數據分成重要數據和一般數據分別放在碼流的不同位置
一般數據:AC係數
重要數據:編碼模式,MV,DC係數
重要的數據緊跟着放在同步字的後邊
一般數據放在重要數據的後邊
重要數據先於一般數據解碼
17. 差錯傳遞問題
編解碼器不匹配產生不正確的預測,導致差錯傳遞
例如:運動補償預測,DC預測
18. 差錯傳遞限制
週期的插入I幀
差錯可以被I幀阻止
降低編碼效率
在空間預測幀中插入I宏塊
可以在空間預測幀中差錯傳遞較大的地方採用Intra宏塊編碼阻止差錯進一步傳遞
編碼效率比I幀高
19. 反饋編碼
如果編解碼之間的信道爲反饋信道,可以根據解碼器的反饋信息重新預測編碼
編碼器重新編碼出錯幀爲I幀,重傳給解碼器
比周期插入I幀更簡單,能及時避免誤差傳遞
編碼效率低
編碼器用其它正確的參考幀做預測
編碼器和解碼器都緩存有多個以前解碼的圖像
編碼器在多個以前解碼的圖像中選擇正確的作爲參考幀來作爲當前圖像的參考幀
缺點:需要高速的信道傳輸,否則產生延遲
20. 多描述編碼(Multiple Description Coding,MDC)
視頻輸入到並行的信道,劃分成幾部分,經過同樣的編碼,產生不同的碼流,有同樣的編碼質量
圖像可以用任意一個碼流恢復
多個碼流合並可以得到更高的圖像質量
21. 多描述編碼技術
空域下采樣
變換域下采樣
多描述標量量化(Multimedia Description Scalar Quantizer,MDSQ)
22. 傳輸層差錯控制
魯棒性打包
編碼模式被重複的放入連續的數據包中
空間塊交織打包
空間連續的塊被放如不連續的數據包中
加倍傳輸重要信息
圖像類型,編碼模式,運動矢量
23. 交互差錯控制
選擇編碼
避免用差錯區域作爲預測編碼
對於高誤碼率的傳輸,用更多的Intra宏塊編碼和更短的條帶編碼
無等待重傳
象素即使出現差錯,仍繼續解碼,記錄差錯象素位置
直到重傳數據到達,糾正出錯的象素
能無延遲的完美重構出解碼圖像
多重複重傳
對於誤碼率高的傳輸信道,多次重複的傳輸數據
第13 章 視頻傳輸
1. 多媒體傳輸
多媒體數據通過信道從一端到另一端的通信
2. 多媒體傳輸特點
延遲敏感(Delay Sensitive)
端到端延遲
抖動延遲
數據損失容忍(Loss Tolerant)
少量的多媒體數據損失是可以接受的
HVS對多媒體數據的延遲比數據損失更加敏感
多媒體數據與一般數據不同
一般數據不允許有損失,但可以有延遲
3. 多媒體傳輸存在的問題
帶寬:
有限的帶寬
時變的帶寬
延遲:
解碼器得不到解碼需要的數據
傳輸數據損失
壓縮數據對數據損失非常敏感
可以通過差錯控制技術來減少傳輸數據損失
4. 多媒體傳輸應用
存儲多媒體數據傳輸
VCD,DVD
實時多媒體數據傳輸
數字電視廣播,電視會議,視頻監控
流媒體
IPTV,網絡視頻點播
5. 多媒體傳輸考慮的因素
差錯控制
服務質量(Quality of Service,QoS)
延遲
帶寬
丟包率
誤碼率
實時性
同步
視頻,音頻同步
實現代價
6. 網絡七層協議
7. 網絡通信
層次結構
不同通信任務安排在不同的層次上完成
層與層之間通過很好的接口定義來通信
層次結構利於通信協議的設計和實現
層次越高,邏輯上越接近用戶
層次越低,越接近物理信號傳輸
8. 電路交換網(Circuit-Switched Network)
電路交換網
在一個物理信道可以有幾個時分複用的數據連接
在一個數據連接工作期間,一個專門用於該數據連接的電路被建立
9. 信號複用
電路交換網的特點
帶寬不變
傳輸延遲短
小的延遲抖動
電路交換網使用案例
公共交換電話網(Public Switch Telephone Network,PSTN)
綜合業務數字網(Integer Service Digital Network,ISDN)
優點
音頻流
CBR視頻
有固定帶寬,適合實時應用
缺點
文件傳輸,電子郵件,網頁瀏覽
VBR視頻
不適合突發的應用
20. 包交換網(Packet-Switched Network)
數據以包的形式在信道中傳輸
數據包
冗餘信息或校驗信息
打包的有效數據
包ID,包長度,IP地址,同步字,傳輸協議等
包頭
數據載荷
包尾
無連接的
丟失可重傳
包交換網的特點
通信連接給多個用戶共享,來自不同用戶的數據包共享同一個網絡資源
允許更多的用戶使用網絡
每個數據包可以佔用信道的整個帶寬
如果信道繁忙,則新的數據包將被放到緩衝區隊列中
如果緩衝區隊列充滿,則數據包丟失
包交換網的特點
數據包長度可變
大的傳輸延遲
大的延遲抖動
包交換網使用案例
通用無線分組業務(General Packet Radio Service,GPRS)
Internet
以太網:IEEE 802.3
令牌環:IEEE 802.5
局域網
廣域網
移動網
優點
數據
VBR視頻
適合需要動態帶寬的應用
缺點
實時音視頻傳輸
不適合實時的應用
21. 電路交換與包交換
連接帶寬1Mb/s
每個用戶佔用帶寬100kb/s
電路交換網最大只能有10個用戶
包交換網
如果大於10用戶同時使用網絡的概率小於0.004
可以支持35個用戶使用,服務質量和電路交換網一樣好
22. 包延遲
處理延遲
數據校驗,糾錯
頭部檢查
排隊延遲
傳輸前在隊列中的等待時間
轉發延遲
發送比特到信道的時間
傳輸延遲
在信道中傳輸的時間
23. 視頻傳輸協議
網絡傳輸協議
TCP
UDP
RTP/RTCP:運行在UDP上的傳輸層協議
視頻傳輸協議基於網絡傳輸協議
採用RTP/RTCP協議傳輸視頻
24. TCP和UDP
TCP:傳輸控制協議(Transmission Control Protocol)
每個數據包的傳輸都需要應答
提供可靠的數據包傳輸
長延遲
面向連接的協議
UDP:用戶數據報協議(User Diagram Protocol)
數據包傳輸無應答
提供儘量好的數據傳輸
無連接的簡單協議
25. RTP
RTP:實時傳輸協議(Real-time Transport Protocol)
H.261,MPEG-1,H.262(MPEG-2)
在UDP上運行的實時傳輸協議
時間戳機制解決延遲抖動
數據包序列號機制爲接受的數據包排序
數據載荷類型信息識別數據載荷的格式
26. RTCP
RTCP:實時傳輸控制協議(Real-time Transport Control Protocol)
與RTP配套使用的控制協議
用於監視網絡的QoS並傳輸一些上層信息
發送和接收監控信息,例如:往返傳輸延遲,數據包丟失率,數據到達抖動,
27. 視頻數據封裝
28. 視頻的網絡傳輸
29. 流媒體
流媒體存儲在服務器端,通過信道傳輸到客戶端
流媒體特點
連續實時傳輸
不必等到流媒體文件全部下載完畢才傳輸,用戶只需等待幾秒,十幾秒的啓動延時即可觀看,啓動延時大大減少
流媒體文件傳輸和觀看同時進行
不需要客戶端有很大的存儲空間
流媒體交互功能
保存過去幾十秒的媒體數據,提供快速回放的功能
長時間回放則需要數據重傳
有暫停、回放、快進、快退、拖動等功能
只需十幾秒的初始延遲
操作延時只有1,2秒鐘
客戶端的回放緩衝
例子:
網絡直播電臺
體育賽事網絡直播
和一般流媒體一樣在客戶端有回放緩衝
交互:
無快進功能
可以回放,暫停
30. 流媒體面臨的挑戰
帶寬
網絡帶寬是時變的
需要控制碼流適應帶寬
端到端延遲
用緩衝區控制處理延遲和延遲抖動
傳輸數據丟失
壓縮的碼流對數據丟失非常敏感
需要錯誤控制來恢復丟失的數據
31. 多媒體系統結構
應用層
原始的未壓縮的視頻、音頻
壓縮層
壓縮的視頻基本流,音頻基本流
傳送層
將基本流打包成基本流數據包,並實現音視頻的基本流數據包複用,組成複用的傳送流
傳輸層
信道編碼,載波調製產生信號發送到信道中並傳輸
32. 音頻複用
音頻和視頻碼流通過複用實現同步
33. 碼率控制
碼率
不同是視頻圖像有不同的編碼比特數
CBR
每幀圖像採用相同的比特數編碼,碼率固定
每幀圖像的質量(PSNR)不固定
ISDN,DTV
VBR
每幀圖像採用不同的比特數編碼
每幀圖像的質量固定
DVD,無線網絡,Internet
視頻存儲編碼的碼率控制
編碼固定時間的視頻到固定比特數爲R的碼流
例如:DVD,4.7GB的空間存儲兩小時的電影
限定比特數的碼率控制方法
視頻存儲編碼沒有實時的要求
存在質量不穩定的問題
分配相等的比特數到每一幀,R/N bit/frame
多趟編碼
可以反覆檢查整個視頻序列並且重新編碼
能提供比單趟編碼更好的編碼碼率控制性能
視頻碼率可以通過以下方法控制
調整量化參數(最常用)
調整幀率
調整空間分辨率
增加或丟棄增強層(用於可分級編碼)
存儲視頻的多趟編碼方法
找到視頻序列的複雜部分
從新爲複雜的圖像分配比特數
從新編碼整個視頻序列
圖像質量及編碼比特數
採用VBR編碼整個視頻序列
收集並分析編碼的統計信息
如果所有編碼比特數大於限定的最大比特數
數字電視信道
如果緩衝區水平太高,增加量化步長
如果緩衝區水平太低,減少量化步長
20Mb/s帶寬
CBR
通過對緩衝區情況的反饋來控制產生比特率
34. 緩衝區管理
編解碼緩衝區
使用緩衝區的好處
減少抖動
通過重傳進行差錯恢復
通過交織編碼進行差錯恢復
平滑輸入輸出波動
緩衝區問題
上溢
下溢
假設參考模型(Hypothetical Reference Decoder,HRD)
用於H.263,MPEG,H.264
漏斗參數
R:峯值傳輸碼率
B:緩衝區大小
F:初始解碼緩衝區的充滿度
HRD的使用
解碼壓縮碼流,不考慮緩衝區的上溢和下溢,找到緩衝區存儲碼流的最高層High和最底層Low
Bmin=High-Low,Fmin=-Low
編碼器編碼完一段視頻序列後能發現一個(R,B,F)參數三元組,將其發送給解碼器,使解碼器使用這些參數有效的解碼該視頻序列
解碼器可以根據這些參數確定是否能解碼一個碼流,並且知道初始的延時是多少
HRD算法:給定壓縮碼流{b0, b1, …, bN-1}和碼率R,發現最小的緩衝區大小Bmin和最小的初始緩衝區的充滿度Fmin
HRD的例子:幀率30fps,序列編碼比特bi={5k,2k,4k,5k},傳輸碼率R=60kbps è2kb/frame
HRD的例子:解碼器緩衝區的解碼狀態
初始延遲:10kb/60kbps=1/6秒