原创 VVC代碼學習1:xCompressCU函數

一、函數簡述 xCompressCU這個函數通過遞歸的調用自己來完成對整個CTU的劃分和每個CU的模式選擇。與HEVC中該函數不同的是,VVC中加入了很多新的模式,比如幀間Affine模式,幀內IBC模式等。 亮度塊最大允許尺寸爲

原创 VVC參考軟件——VTM的安裝和編譯

VVC參考軟件VTM安裝教程 一、官網下載VTM 【VTM下載官網】(https://jvet.hhi.fraunhofer.de/) 現在VTM版本更新到5.0,通過SVN只能下載2.0之前的版本,所以用官網給的gitlab鏈接

原创 HM參數設置多slice、多tile

如下隨便打開一個cfg文件,Slices和Tiles部分是設置多slice和多tile的一些參數 SliceMode和SliceArgument是兩個配套參數 1.當SliceMode等於0時關閉幀內slice的劃分 2.當Sl

原创 VVC/H.266幀間模式(一):Extended merge prediction

在VTM6.0中,通過按順序包括以下五種類型的候選者來構造Merge候選者列表 1)從空域相鄰CU獲取空域MVP 2)從同位CU獲取時域MVP 3)從一張FIFO(先進先出)表中獲取基於歷史記錄的MVP 4)Pairwise av

原创 VVC/H.266幀間模式(二):Merge mode with MVD (MMVD)

一、MMVD綜述 在VVC中引入了具有運動矢量差的合併模式(MMVD),merge模式的運動信息將會用於當前CU的預測樣值得生成。在傳送skip標誌和merge標誌位之後立刻傳送MMVD標誌來表明是否對當前CU使用MMVD模式。

原创 H.266/VVC幀間模式新增工具

對於每個幀間預測的CU,由運動矢量,參考幀索引和參考幀列表使用索引組成的運動參數,以及VVC的新編碼功能所需要的其他信息, 可以以顯式或隱式方式用信號發送運動參數。當以跳過模式對CU進行編碼時,CU與一個PU相關聯,並且沒有殘差係

原创 SSE/AVX指令集學習筆記

​ 因爲最近在做SSE/AVX指令集優化視頻編碼的某些模塊,所以要學習SSE指令集的用法。本帖主要記錄本人用到的函數的用法。 一、SSE指令(128位寄存器) __m128i _mm_load_si128 (__m128i *

原创 VVC代碼學習2:幀內亮度預測函數estIntraPredLumaQT

一、estIntraPredLumaQT調用結構 xCheckRDCostIntra:幀內預測的入口函數,會調用estIntraPredLumaQT進行亮度的預測,調用estIntraPredChromaQT進行色度的預測。 e

原创 劍指offer:最小的K個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 思路 快速排序取前K個數 class Solution { public: vector

原创 劍指offer:兩個鏈表的第一個公共結點

題目描述 輸入兩個鏈表,找出它們的第一個公共結點。(注意因爲傳入數據是鏈表,所以錯誤測試數據的提示是用其他方式顯示的,保證傳入數據是正確的) 方法一:雙指針 方法二:set裝入第一個鏈表的所有結點,遍歷第二個鏈表看set中是否已有

原创 劍指offer:跳臺階&&變態跳臺階

跳臺階 題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。 思路: 1.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n-1個臺階

原创 劍指offer:刪除鏈表中重複的結點

題目描述 在一個排序的鏈表中,存在重複的結點,請刪除該鏈表中重複的結點,重複的結點不保留,返回鏈表頭指針。 例如,鏈表1->2->3->3->4->4->5 處理後爲 1->2->5 代碼: /* struct ListNode

原创 二叉樹的前序,中序,後序,層序遍歷(對應Leetcode)

C++實現二叉樹的前序,中序,後序,層序遍歷(對應Leetcode144,94,145,102題) 記錄C++實現二叉樹的幾種遍歷方式,包括遞歸和非遞歸方式。話不多說,直接上代碼 一、二叉樹的前序遍歷 /** * Definit