JEM中的SIMD優化

2021-08-20 02:16:02 字數 463 閱讀 5899

simd是single instruction,multiple data的縮寫——意為單指令多資料,是inter開發的多**指令集,採用c++封裝介面,底層呼叫組合語言,因此執行效率很高。適合重複且可以並行的計算場合。

由於編碼器在計算sad操作需要反覆讀寫資料,並且適合並行執行,因此jem在計算sad的時候使用了單指令多資料的優化(simd),以16*16塊的sad計算為例:

uint getsad16x16_sse_u16(i16 **psrc, i16 *pref, int irefstride, int iyoffset, int ixoffset, uint uibestsad)}}

}return sum;

}__m128i一次性可以讀取16個位元組的資料處理,相比原先一次性讀取2個位元組的處理方式,可以明顯的減少反覆讀寫以及加減操作的次數,因此可以明顯提高編碼速度。

基於simd的編碼器優化是乙個很重要的工作方向!!!

HEVC和JEM中的掃瞄順序

為了更好地理解幀內 中的各個函式的原理過程,有必要對cu pu位址計算方法有著較好的了解,因此,本文將對這個問題先做個討論。hevc裡同樣也有光柵掃瞄順序,但是,由於它對cu採用的是遞迴劃分的方式,如果仍是採用光柵掃瞄順序,對cu的定址會很不方便,因此,hevc定義了z掃瞄順序,如下圖所示 右圖可見...

SIMD資料並行(四) 三種結構的比較

在計算機體系中,資料並行有兩種實現路徑 mimd multiple instruction multiple data,多指令流多資料流 和simd single instruction multiple data,單指令流多資料流 其中mimd的表現形式主要有多發射 多執行緒 多核心,在當代設計的...

JEM改幀內想法的時候的一些總結

嗯。距離上一次寫已經很久了。上一次的時候還在看幀間的技術,改了一點,馬馬虎虎吧。這幾周一直在改幀內的東西,把其中碰過的壁記錄一下好了。1.關於cu的寬高問題 pccu getwidth 0 進這個函式的時候,提前已經預設好了是亮度還是色度 settexttype channel type luma ...