日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JM8.5中的7种宏块模式问题

發(fā)布時(shí)間:2023/12/18 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JM8.5中的7种宏块模式问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JM8.5中的7種宏塊模式問(wèn)題 收藏
Outline:

1、? CFG文件中有關(guān)可變尺寸宏塊模式的相關(guān)選項(xiàng)
2、? 7種宏塊模式對(duì)應(yīng)的數(shù)值常量 3、? 7種宏塊模式被分成宏塊和亞宏塊 4、? 如何對(duì)宏塊和亞宏塊的運(yùn)動(dòng)估計(jì),采用一個(gè)共同的函數(shù)來(lái)處理 5、? 遺留問(wèn)題

?1、CFG文件中有關(guān)可變尺寸宏塊模式的相關(guān)選項(xiàng)

###############################################################################
#Encoder Control ############################################################################### … InterSearch16x16????? =? 1? # Inter block search 16x16 (0=disable, 1=enable)
InterSearch16x8?????? =? 1? # Inter block search 16x8? (0=disable, 1=enable) InterSearch8x16?????? =? 1? # Inter block search? 8x16 (0=disable, 1=enable) InterSearch8x8??????? =? 1? # Inter block search? 8x8? (0=disable, 1=enable) InterSearch8x4??????? =? 1? # Inter block search? 8x4? (0=disable, 1=enable) InterSearch4x8??????? =? 1? # Inter block search? 4x8? (0=disable, 1=enable) InterSearch4x4??????? =? 1? # Inter block search? 4x4? (0=disable, 1=enable)

解釋:

各種宏塊尺寸可以在程序外部進(jìn)行選擇。

2、? 7種宏塊模式對(duì)應(yīng)的數(shù)值常量

各種宏塊模式對(duì)應(yīng)的數(shù)值常量如下:
16×16-1???? 16×8-2?????? 8×16-3?????? 8×8-4??? 8×4-5???? 4×8-6????? 4×4-7?

以上的數(shù)值常量的rdopt.c的encode_one_macroblock()中的valid[]數(shù)組和mode變量中會(huì)用到,另外在mv_search.c的PartitionMotionSearch()中的blocktype變量也會(huì)用到。

?

3、?? 7種宏塊模式被分成宏塊和亞宏塊

16x16, 16x8, 8x16(,8×8)被稱為宏塊級(jí),而8×8,8×4,4×8,4×4被稱為亞宏塊級(jí)。
所用到的函數(shù)是:encode_one_macroblock(),rdopt.c 該函數(shù)的作用是編碼一個(gè)宏塊(包括幀間、幀內(nèi)、幀內(nèi)預(yù)測(cè)的方式)。 其中重要的程序段如下: //宏塊級(jí)運(yùn)動(dòng)估計(jì)
//===== MOTION ESTIMATION FOR 16x16, 16x8, 8x16 BLOCKS ===== for (min_cost=1<<20, best_mode=1, mode=1; mode<4; mode++) { if (valid[mode])//對(duì)應(yīng)于程序外部(即CFG文件中)的設(shè)置 { //對(duì)于16×16,MB只分一個(gè)塊;對(duì)于16×8和8×16,MB被分成兩個(gè)塊 for (cost=0, block=0; block<(mode==1?1:2); block++) { //塊匹配!!!lambda_motion用來(lái)求運(yùn)動(dòng)矢量消耗的碼率 PartitionMotionSearch (mode, block, lambda_motion); … //亞宏塊級(jí)運(yùn)動(dòng)估計(jì)
if (valid[P8x8]) { … //=====? LOOP OVER POSSIBLE CODING MODES FOR 8x8 SUB-PARTITION? ===== for (min_cost8x8=(1<<20), min_rdcost=1e30, index=(bframe?0:1); index<5; index++) { if (valid[mode=b8_mode_table[index]])//b8_mode_table[6] = {0, 4, 5, 6, 7}; { curr_cbp_blk = 0; if (mode==0) //--- Direct Mode --- { … } // if (mode==0) else { //--- motion estimation for all reference frames --- PartitionMotionSearch (mode, block, lambda_motion); … NOTE:從上面程序段中可以看出JM8.5中對(duì)7種宏塊模式是采用全部遍歷的方式,所以導(dǎo)致的計(jì)算復(fù)雜度很高。 4、? 如何對(duì)宏塊和亞宏塊的運(yùn)動(dòng)估計(jì),采用一個(gè)共同的函數(shù)來(lái)處理
從3中的程序可以看到,對(duì)于宏塊和亞宏塊級(jí)的運(yùn)動(dòng)估計(jì),都采用了一個(gè)共同的函數(shù):PartitionMotionSearch(), mv_search.c 其中重要的程序段如下:
…… //各種宏塊模式下的子塊的起始偏移量,相對(duì)4*4塊來(lái)講,這有利于運(yùn)動(dòng)矢量的存放
//[5]表示宏塊的類型,[4]表示各種類型下的子塊序號(hào),最多子塊情況為P8X8模式下有4個(gè) static int? bx0[5][4] = {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,2,0,2}};
static int? by0[5][4] = {{0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,0,0,0}, {0,0,2,2}};
…… int?? parttype? = (blocktype<4?blocktype:4);//亞宏塊的parttype都設(shè)為4 //step_?是用來(lái)求4*4塊級(jí)別的步長(zhǎng),

//由于parttype和blocktype的區(qū)別使得兩組步長(zhǎng)之間存在微妙的差異,為下面的循環(huán)做好了鋪墊

int?? step_h0?? = (input->blc_size[ parttype][0]>>2);
int?? step_v0?? = (input->blc_size[ parttype][1]>>2); int?? step_h??? = (input->blc_size[blocktype][0]>>2); int?? step_v??? = (input->blc_size[blocktype][1]>>2); … //===== LOOP OVER SUB MACRO BLOCK partitions //這里對(duì)于亞宏塊的循環(huán)是自適應(yīng)的, //假如小于8*8塊尺寸時(shí),自動(dòng)采取循環(huán) for (v=by0[parttype][block8x8]; v<by0[parttype][block8x8]+step_v0; v+=step_v) { pic_block_y = img->block_y + v; for (h=bx0[parttype][block8x8]; h<bx0[parttype][block8x8]+step_h0; h+=step_h) {
……

總結(jié)

以上是生活随笔為你收集整理的JM8.5中的7种宏块模式问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。