h.264標準中由於分為巨集塊分割塊(8x8),子巨集塊分割塊(4x4),所以各種各樣的求解過程比較繁瑣
下面整理出標準中mvp的求解過程
已知條件有當前塊的屬性:位置、塊型別
需要得到當前塊的mvp
已知條件(當前塊位置,型別)
||8.4.1.3.2 (步驟1)
|得到相鄰塊(abc(4x4))的mv與refidx
||8.4.1.3.1 或 8.4.1.3 後半段 (步驟2)
|得到mvp
另外還需要注意的一點是,mvp是具有方向性的。意思是說在**b slice的mvp時,需要分為前向mvp:mvl0;後向mvp:mvl1;他們分別對應的參考影象索引為refidxl0與refidxl1。也就是說,當在進行前向運動**時,計算mvp階段得到的是mvl0以及refidxl0;當在進行後向運動**時,計算mvp階段得到的是mvl1以及refidxl1。
規定乙個d塊作為備用
呼叫6.4.8.5得到abc塊位置
6.4.8.5
子巨集塊分割塊a,b,c中包含有以下畫素點(xn,yn)
$\begin xn &= x + xs + xd\\ yn &= y + ys + yd \end$
他們各自有以下特點
predpartwidth計算方式如下
當mb_type為p_8x8或p_8x8ref0, $predpartwidth = submbpartwidth( sub_mb_type[ mbpartidx ] )$
否則 predpartwidth = mbpartwidth( mb_type )
得到(xn,yn)之後需要知道(xn,yn)所在的巨集塊mbaddrn以及其在巨集塊內的位址(xw,yw),即從相對位址轉換到絕對位址
6.4.9
這一小節會通過(xn,yn)的相對位址得到它們的絕對位址。
首先需要知道巨集塊大小
所在的巨集塊mbaddrn,根據mbaffframeflag不同,有不同求法
6.4.9.1
表6-3得到mbaddrn
表6-4,即mbaff的情況,可以通過腦補獲得,大概比b_direct時容易
從mbaddrn得到該巨集塊是否可用
從(xw,yw)得到該子巨集塊分割塊(4x4)位置,如果mbaddrn不可用則該4x4塊不可用,如果該4x4塊未解碼那麼也不可用
本小節的目的是得到得到a,b,c的參考影象索引refidxlxn(refidxlxa,refidxlxb,refidxlxc)以及運動向量mvlxn(mvlxa,mvlxb,mvlxc)。不過由於我們已經得到了a、b、c塊的位置,因此他們的這兩個引數肯定是能獲取得到的,除非出現以下的狀況
首先,如果c不可用則用d來代替(4x4)
a,b,c的運動向量mvlxn以及參考影象索引refidxlxn在下面的情況下會進行特殊處理
則mvlxn的兩個分量均置為0且refidxlxn置為−1
(注:一般來說mv以4x4為單位,refidx以8x8為單位)
進一步處理:
8*16以及16*8的情況,參照表8-3
至於jm,由於採用的是4x4塊的計數方式,所以很容易就可以得到相鄰塊的位置,然後用所得相鄰塊mv與ref進行比較得到mvp
得到(xn,yn)之後需要知道(xn,yn)所在的巨集塊mbaddrn以及其在巨集塊內的位址(xw,yw)
即從相對位址轉換到絕對位址
H 264效能優化
h.264 優化 2007 05 24 2 20 h.264的dsp實現流程分為三個階段 第乙個階段產生和評估c 第二個階段優化和評估c 第三個階段編寫和評估線性彙編。每個階段完成任務如下 第一階段 首先,產生c 並進行時間評估。一般情況下,這個階段的 效能很低。如果經過評估後,仍然滿足不了實時要求...
h 264優化筆記
目前 h.264編解碼器的實現可以採用以下幾種方式 採用奔騰 pentium 四代機實現 h.264 編譯碼最早就是在 pc 平台上實現 的 由於簡單易開發 基於該平台的研究得到最多 jvt 的 jm 參考 是就是基於 pc 平台的 此方案的優點是利用當前最新的 pc 資源 以及較強的軟體工具 in...
H264編碼原理
條件 1.yuv格式為yuv420 2.解析度為640 480 3.幀率為15 建議碼流500kbps,通過計算可以得到h264壓縮比約為1 100。gop中幀與幀之間的差別小 有失真壓縮包括幀內壓縮和幀間壓縮,幀內壓縮解決的是空域資料冗餘問題,幀間壓縮解決的是時域資料冗餘的問題。無失真壓縮包括dc...