h 264 mvp求解過程

2021-09-06 16:01:46 字數 2089 閱讀 6095

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...