如何定位到這幾個函式的,方法與前面的一篇部落格hevc學習(八) —— 以sao為例**跟蹤**方法類似,有興趣的朋友可以去看看,這裡就不重複這個過程了。
在xcompresscu函式中,有這麼幾個函式值得我們注意的,xcheckrdcostinter、xcheckrdcostmerge2nx2n、xcheckrdcostintra。它們分別是實現幀間**模式、merge模式、幀內**式的主函式。前兩個函式的子函式xestimateresidualqt(實際上通過呼叫函式encoderesandcalcrdintercu)、第三個函式的子函式xrecurintracodingqt(實際上通過呼叫xintracodinglumablk、xintracodingchromablk)均會呼叫函式transformnxn,該函式如下定義:
void tcomtrquant::transformnxn( tcomdatacu* pccu,
pel* pcresidual,
uint uistride,
tcoeff* rpccoeff,
#if adaptive_qp_selection
int*& rpcarlcoeff,
#endif
uint uiwidth,
uint uiheight,
uint& uiabssum,
texttype ettype,
uint uiabspartidx,
bool usetransformskip
) else
uiabssum = 0;
assert( (pccu->getslice()->getsps()->getmaxtrsize() >= uiwidth) );
if(usetransformskip)
else
xquant( pccu, m_pltempcoeff, rpccoeff,
#if adaptive_qp_selection
rpcarlcoeff,
#endif
uiwidth, uiheight, uiabssum, ettype, uiabspartidx );
這個函式主要呼叫了xtransformskip、xt、xquant三個函式,分別實現對殘差進行ts(transform skip)模式、普通變換模式以及量化的功能。對於第二個函式xt來說,它呼叫了xtrnxn,該函式的實現如下所示:
/** mxn forward transform (2d)
* \param block input data (residual)
* \param coeff output data (transform coefficients)
* \param iwidth input data (width of transform)
* \param iheight input data (height of transform)
*/
void xtrmxn(short *block,short *coeff, int iwidth, int iheight, uint uimode)
else if( iwidth == 32 && iheight == 8 )
else if( iwidth == 4 && iheight == 16)
else if( iwidth == 8 && iheight == 32 )
else
#endif
if( iwidth == 4 && iheight == 4)
else
#else
if (uimode != reg_dct && (!uimode || (uimode>=2 && uimode <= 25))) // check for dct or dst
else
if (uimode != reg_dct && (!uimode || (uimode>=11 && uimode <= 34))) // check for dct or dst
else
#endif
} else if( iwidth == 8 && iheight == 8)
else if( iwidth == 16 && iheight == 16)
else if( iwidth == 32 && iheight == 32)
}
到了這裡,相信大家光看名字也能看出這些**是做什麼事情的了,對幀內**模式的4x4塊進行dst變換,其餘的根據塊大小分別做蝶形快速變換(4x4,8x8,16x16,32x32),不同尺寸的變換矩陣在**中如下表示:
const short g_ait4[4][4] =
, ,
, };
const short g_ait8[8][8] =
, ,
, ,
, ,
, };
const short g_ait16[16][16] =
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, };
const short g_ait32[32][32] =
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, ,
, };
jQuery應用的幾個主要函式
1.清空元素 empty 內容刪除,但元素還存在 document ready function 2.刪除元素 remove expr 元素和內容都刪除 document ready function 或 document ready function 3.獲得父元素 parent expr 獲得唯...
有關檔案操作的幾個函式
1.creat 1 函式的作用 建立,建立新檔案。2 函式的原型 int creat const char pathname,mode t mode 3 函式的引數 pathname 要建立的檔案路徑字串。如 home hello.c mode 建立檔案的許可權。4 函式的返回值 成功返回檔案描述符...
有關字串的幾個函式
1.strlen 測量字串的長度 include define n 100 int my strlen char str return count int main 2.strcpy 複製字串 include define n 100 char my strcpy char str,char des...