亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inter_b.c

?? H264EncPlayer,H264協議解碼與播放代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
            vec.refno = refl1;
            T264_predict_mv(t, 1, 0, 4, &vec); 
            copy_nvec(&vec, &vec_direct[1][0], 4, 4, 4);
        }

        // colZeroFlag
        T264_try_get_col_zero_mv(t, vec_direct, refl0, refl1);
		
		t->mb.mb_part = mb_part;	//restore
    }
    else
    {
        assert(0);
    }    
}

uint32_t
T264_mode_decision_inter_direct_16x16b(_RW T264_t* t, T264_vector_t predVec[2][4 * 4], uint8_t* pred, uint8_t* part)
{
    uint32_t sad;

	T264_get_direct_mv(t,predVec);
	T264_mb4x4_interb_mc(t,predVec,pred);
	sad = t->cmp[MB_16x16](pred,16,t->mb.src_y,t->stride);
	*part = B_DIRECT_16x16;

	return sad;
}

uint32_t
T264_mode_decision_inter_16x16b(_RW T264_t* t, T264_vector_t vec_best[2][2], uint8_t* pred, uint8_t* part)
{
    DECLARE_ALIGNED_MATRIX(pred_l1, 16, 16, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(pred_bi, 16, 16, uint8_t, CACHE_SIZE);
    
    T264_vector_t vec[5 + 10];  // NOTE: max 10 refs
    T264_search_context_t context;
    int32_t num;
    uint32_t sad_min, sad;
    uint8_t* pred_l0 = pred;
    uint8_t* p_min = pred_l0;
    T264_vector_t vec_median;
    int32_t i;
    uint8_t* p_buf = pred_l1;

    context.height = 16;
    context.width  = 16;
    context.limit_x= t->param.search_x;
    context.limit_y= t->param.search_y;
    context.vec    = vec;
    context.mb_part= MB_16x16;
    context.offset = (t->mb.mb_y << 4) * t->edged_stride + (t->mb.mb_x << 4);

    // list 0
    vec[0].refno = 0;
    get_pmv(t, 0, vec, MB_16x16, 0, 4, &num);
    context.vec_num= num;
    context.list_index = 0;

    sad_min = t->search(t, &context);
    sad_min+= REFCOST(context.vec_best.refno);
    sad_min = T264_quarter_pixel_search(t, 0, t->mb.src_y, t->ref[0][context.vec_best.refno], context.offset, 
        &context.vec_best, &vec[0], sad_min, 16, 16, p_min, MB_16x16);
    for(i = 1 ; i < t->refl0_num ; i ++)
    {
        T264_vector_t vec_best_bak, vec_median_bak;
        
        vec_median_bak = vec[0];
        vec_best_bak = context.vec_best;
        
        vec[0].refno = i;
        get_pmv(t, 0, vec, MB_16x16, 0, 4, &num);
        context.vec_num= 1;
        sad = t->search(t, &context);
        sad+= REFCOST(context.vec_best.refno);
        sad = T264_quarter_pixel_search(t, 0, t->mb.src_y, t->ref[0][i], context.offset, 
            &context.vec_best, &vec[0], sad, 16, 16, p_buf, MB_16x16);
        if (sad < sad_min)
        {
            SWAP(uint8_t, p_buf, p_min);
            sad_min = sad;
        }
        else
        {
            vec[0] = vec_median_bak;
            context.vec_best = vec_best_bak;
        }
    }
    if (p_min != pred_l0)
    {
        memcpy(pred_l0, p_min, sizeof(uint8_t) * 16 * 16);
    }

    vec_best[0][0] = context.vec_best;
    vec_median = vec[0];
    *part = B_L0_16x16;

    // list 1
    vec_best[0][1].refno = -1;
    vec_best[0][1].x = 0;
    vec_best[0][1].y = 0;
    if (t->refl1_num > 0)
    {
        uint32_t sad_l1, sad_bi;

        vec[0].refno = 0;
        get_pmv(t, 1, vec, MB_16x16, 0, 4, &num);
        context.vec_num = num;
        context.list_index = 1;

        sad_l1 = t->search(t, &context);
        sad_l1+= REFCOST1(context.vec_best.refno);
        sad_l1 = T264_quarter_pixel_search(t, 1, t->mb.src_y, t->ref[1][context.vec_best.refno], context.offset, 
            &context.vec_best, &vec[0], sad_l1, 16, 16, pred_l1, MB_16x16);
        vec_best[0][1] = context.vec_best;

        t->pia[MB_16x16](pred_l0, pred_l1, 16, 16, pred_bi, 16);
        sad_bi = t->cmp[MB_16x16](t->mb.src_y, t->stride, pred_bi, 16) + t->mb.lambda *
            (eg_size_se(t->bs, vec_best[0][0].x - vec_median.x) +
             eg_size_se(t->bs, vec_best[0][0].y - vec_median.y) +
             eg_size_se(t->bs, vec_best[0][1].x - vec[0].x) +
             eg_size_se(t->bs, vec_best[0][1].y - vec[0].y)) +
             REFCOST(vec_best[0][0].refno);

        if (sad_bi < sad_min)
        {
            sad_min = sad_bi;
            *part = B_Bi_16x16;
            memcpy(pred_l0, pred_bi, 256 * sizeof(uint8_t));
        }
        if (sad_l1 < sad_min)
        {
            sad_min = sad_l1;
            *part = B_L1_16x16;
            memcpy(pred_l0, pred_l1, 256 * sizeof(uint8_t));

            vec_best[0][0].refno = -1;
            vec_best[0][0].x = 0;
            vec_best[0][0].y = 0;
        }
        if (*part == B_L0_16x16)
        {
            vec_best[0][1].refno = -1;
            vec_best[0][1].x = 0;
            vec_best[0][1].y = 0;
        }
    }
//    t->mb.is_copy = T264_detect_direct_16x16(t, vec_best[0]);

    return sad_min;
}

uint32_t
T264_mode_decision_inter_16x8b(_RW T264_t* t, T264_vector_t vec_best[2][2], uint8_t* pred, uint8_t* part)
{
    DECLARE_ALIGNED_MATRIX(pred_l1_m, 16, 16, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(pred_bi_m, 16, 16, uint8_t, CACHE_SIZE);

    T264_vector_t vec[5 + 10];  // NOTE: max 10 refs
    T264_search_context_t context;
    int32_t num;
    uint32_t sad_min;
    uint32_t sad_all = 0;
    uint8_t* pred_l0 = pred;
    uint8_t* pred_l1 = pred_l1_m;
    uint8_t* pred_bi = pred_bi_m;
    T264_vector_t vec_median;
    uint8_t old_part = t->mb.mb_part;
    int32_t i;
    uint8_t* src;

    t->mb.mb_part = MB_16x8;

    context.height = 8;
    context.width  = 16;
    context.limit_x= t->param.search_x;
    context.limit_y= t->param.search_y;
    context.vec    = vec;
    context.mb_part= MB_16x8;
    context.offset = (t->mb.mb_y << 4) * t->edged_stride + (t->mb.mb_x << 4);
    src = t->mb.src_y;

    for (i = 0 ; i < 2 ; i ++)
    {
        // list 0
        vec[0].refno = vec_best[0][0].refno;
        get_pmv(t, 0, vec, MB_16x8, luma_index[8 * i], 4, &num);
        context.vec_num= num;
        context.list_index = 0;

        sad_min = t->search(t, &context);
        sad_min+= REFCOST(context.vec_best.refno);
        sad_min = T264_quarter_pixel_search(t, 0, src, t->ref[0][context.vec_best.refno], context.offset, 
            &context.vec_best, &vec[0], sad_min, 16, 8, pred_l0, MB_16x8);
        vec_best[i][0] = context.vec_best;
        vec_median = vec[0];
        part[i] = B_L0_16x8;

        // list 1
        vec_best[i][1].refno = -1;
        vec_best[i][1].x = 0;
        vec_best[i][1].y = 0;
        if (t->refl1_num > 0)
        {
            uint32_t sad_l1, sad_bi;

            vec[0].refno = 0;
            get_pmv(t, 1, vec, MB_16x8, luma_index[8 * i], 4, &num);
            context.vec_num = num;
            context.list_index = 1;

            sad_l1 = t->search(t, &context);
            sad_l1+= REFCOST1(context.vec_best.refno);
            sad_l1 = T264_quarter_pixel_search(t, 1, src, t->ref[1][context.vec_best.refno], context.offset, 
                &context.vec_best, &vec[0], sad_l1, 16, 8, pred_l1, MB_16x8);
            vec_best[i][1] = context.vec_best;

            t->pia[MB_16x8](pred_l0, pred_l1, 16, 16, pred_bi, 16);
            sad_bi = t->cmp[MB_16x8](src, t->stride, pred_bi, 16) + t->mb.lambda *
                (eg_size_se(t->bs, vec_best[i][0].x - vec_median.x) +
                eg_size_se(t->bs, vec_best[i][0].y - vec_median.y) +
                eg_size_se(t->bs, vec_best[i][1].x - vec[0].x) +
                eg_size_se(t->bs, vec_best[i][1].y - vec[0].y)) +
                REFCOST(vec_best[i][0].refno);

            if (sad_bi < sad_min)
            {
                sad_min = sad_bi;
                part[i] = B_Bi_16x8;
                memcpy(pred_l0, pred_bi, sizeof(uint8_t) * 16 * 8);
            }
            if (sad_l1 < sad_min)
            {
                sad_min = sad_l1;
                part[i] = B_L1_16x8;
                memcpy(pred_l0, pred_l1, sizeof(uint8_t) * 16 * 8);

                vec_best[i][0].refno = -1;
                vec_best[i][0].x = 0;
                vec_best[i][0].y = 0;
            }
            if (part[i] == B_L0_16x8)
            {
                vec_best[i][1].refno = -1;
                vec_best[i][1].x = 0;
                vec_best[i][1].y = 0;
            }
        }

        pred_l0 += 16 * 8;
        pred_l1 += 16 * 8;
        pred_bi += 16 * 8;
        t->mb.vec_ref[VEC_LUMA + 8].vec[0] = vec_best[i][0];
        t->mb.vec_ref[VEC_LUMA + 8].vec[1] = vec_best[i][1];
        context.offset += 8 * t->edged_stride;
        src += 8 * t->stride;
        sad_all += sad_min;
    }
    t->mb.mb_part = old_part;

    return sad_all;
}

uint32_t
T264_mode_decision_inter_8x16b(_RW T264_t* t, T264_vector_t vec_best[2][2], uint8_t* pred, uint8_t* part)
{
    DECLARE_ALIGNED_MATRIX(pred_l1_m, 16, 16, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(pred_bi_m, 16, 16, uint8_t, CACHE_SIZE);

    T264_vector_t vec[5 + 10];  // NOTE: max 10 refs
    T264_search_context_t context;
    int32_t num;
    uint32_t sad_min;
    uint32_t sad_all = 0;
    uint8_t* pred_l0 = pred;
    uint8_t* pred_l1 = pred_l1_m;
    uint8_t* pred_bi = pred_bi_m;
    T264_vector_t vec_median;
    uint8_t old_part = t->mb.mb_part;
    int32_t i;
    uint8_t* src;

    t->mb.mb_part = MB_8x16;

    context.height = 16;
    context.width  = 8;
    context.limit_x= t->param.search_x;
    context.limit_y= t->param.search_y;
    context.vec    = vec;
    context.mb_part= MB_8x16;
    context.offset = (t->mb.mb_y << 4) * t->edged_stride + (t->mb.mb_x << 4);
    src = t->mb.src_y;

    for (i = 0 ; i < 2 ; i ++)
    {
        // list 0
        vec[0].refno = vec_best[0][0].refno;
        get_pmv(t, 0, vec, MB_8x16, luma_index[4 * i], 2, &num);
        context.vec_num= num;
        context.list_index = 0;

        sad_min = t->search(t, &context);
        sad_min+= REFCOST(context.vec_best.refno);
        sad_min = T264_quarter_pixel_search(t, 0, src, t->ref[0][context.vec_best.refno], context.offset, 
            &context.vec_best, &vec[0], sad_min, 8, 16, pred_l0, MB_8x16);
        vec_best[i][0] = context.vec_best;
        vec_median = vec[0];
        part[i] = B_L0_8x16;

        // list 1
        vec_best[i][1].refno = -1;
        vec_best[i][1].x = 0;
        vec_best[i][1].y = 0;
        if (t->refl1_num > 0)
        {
            uint32_t sad_l1, sad_bi;

            vec[0].refno = 0;
            get_pmv(t, 1, vec, MB_8x16, luma_index[4 * i], 2, &num);
            context.vec_num = num;
            context.list_index = 1;

            sad_l1 = t->search(t, &context);
            sad_l1+= REFCOST1(context.vec_best.refno);
            sad_l1 = T264_quarter_pixel_search(t, 1, src, t->ref[1][context.vec_best.refno], context.offset, 
                &context.vec_best, &vec[0], sad_l1, 8, 16, pred_l1, MB_8x16);
            vec_best[i][1] = context.vec_best;

            t->pia[MB_8x16](pred_l0, pred_l1, 16, 16, pred_bi, 16);
            sad_bi = t->cmp[MB_8x16](src, t->stride, pred_bi, 16) + t->mb.lambda *
                (eg_size_se(t->bs, vec_best[i][0].x - vec_median.x) +
                eg_size_se(t->bs, vec_best[i][0].y - vec_median.y) +
                eg_size_se(t->bs, vec_best[i][1].x - vec[0].x) +
                eg_size_se(t->bs, vec_best[i][1].y - vec[0].y)) +
                REFCOST(vec_best[i][0].refno);

            if (sad_bi < sad_min)
            {
                sad_min = sad_bi;
                part[i] = B_Bi_8x16;
                t->memcpy_stride_u(pred_bi, 8, 16, 16, pred_l0, 16);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自产自拍| 成人av在线网站| 久久爱www久久做| 成人黄页毛片网站| 欧美日韩黄色影视| 国产精品午夜免费| 精品午夜久久福利影院| 欧美在线短视频| 欧美高清一级片在线观看| 日韩黄色片在线观看| caoporm超碰国产精品| 精品久久久久久久久久久久包黑料| 亚洲日本一区二区三区| 国产精选一区二区三区 | 国产综合色产在线精品| 日本精品视频一区二区三区| 欧美国产日韩a欧美在线观看| 麻豆91免费看| 欧美日韩不卡一区| 一区二区三区国产精品| gogo大胆日本视频一区| 国产免费久久精品| 精品亚洲aⅴ乱码一区二区三区| 欧美亚洲综合久久| 亚洲精品视频一区| 91伊人久久大香线蕉| 日本一区二区视频在线观看| 韩国一区二区三区| 日韩精品一区在线观看| 日本不卡123| 日韩欧美激情一区| 久久精品国产免费| 久久新电视剧免费观看| 韩国精品久久久| 精品不卡在线视频| 国产精品99久| 欧美激情自拍偷拍| 成人美女在线观看| 国产精品污网站| 91麻豆国产福利在线观看| 亚洲精品综合在线| 欧美午夜精品免费| 奇米一区二区三区| 久久久影院官网| 成人精品电影在线观看| 成人免费小视频| 欧美午夜不卡视频| 美女网站色91| 久久蜜桃av一区精品变态类天堂 | 久久久www成人免费无遮挡大片| 久久久不卡网国产精品二区 | 国产最新精品免费| 精品国产免费人成电影在线观看四季 | 亚洲一区二区五区| 久久99国产精品免费| 色婷婷综合激情| 精品美女在线播放| 中文字幕日本乱码精品影院| 日韩中文字幕91| 99re热视频这里只精品| 久久女同互慰一区二区三区| 性久久久久久久久久久久| 99在线精品视频| 中文字幕一区二区三区不卡 | 日韩一区二区三免费高清| 亚洲电影激情视频网站| 一本一本大道香蕉久在线精品| 日韩精品一区二区三区老鸭窝| 亚洲一区二区三区四区在线| 99精品热视频| 亚洲午夜免费电影| 4438x成人网最大色成网站| 亚洲一区在线电影| 欧美精品18+| 精品一区二区在线播放| 久久精品免视看| 欧美手机在线视频| 日本一区二区三区在线观看| 亚洲天堂av老司机| 成人免费va视频| 91精品国产综合久久香蕉的特点 | 日韩欧美成人一区| 亚洲黄色录像片| 在线观看国产精品网站| 日本不卡一区二区三区| 久久在线观看免费| 欧美一级高清片| 久久99精品久久只有精品| 精品久久五月天| 蓝色福利精品导航| 精品成人a区在线观看| 国产aⅴ综合色| 一区二区三区四区国产精品| 日本福利一区二区| 精品一区二区三区在线播放 | 国产一区二区三区美女| 亚洲韩国精品一区| 91精品国产高清一区二区三区蜜臀| 亚洲综合激情另类小说区| 久久综合五月天婷婷伊人| 成人精品一区二区三区四区| 欧美国产丝袜视频| 99精品欧美一区二区三区小说| 日韩国产在线观看一区| 日韩理论在线观看| 国产精品欧美一级免费| 欧美午夜精品一区二区三区| 国产麻豆精品95视频| 国产精品国产三级国产aⅴ中文| 国产一区二区三区综合| 亚洲国产裸拍裸体视频在线观看乱了 | 久久99精品久久只有精品| 亚洲欧美色图小说| 一区二区三国产精华液| 婷婷激情综合网| 免费观看30秒视频久久| 狠狠色狠狠色综合系列| 国产福利91精品一区| 成人视屏免费看| 在线观看三级视频欧美| 欧美色视频一区| 久久久国际精品| 亚洲午夜电影在线| 粉嫩av一区二区三区粉嫩| 91黄色在线观看| 精品免费日韩av| 亚洲尤物视频在线| 国产乱码一区二区三区| 91美女片黄在线| 欧美大黄免费观看| 一区二区视频免费在线观看| 麻豆91小视频| 91精品久久久久久久久99蜜臂| 国产亚洲成aⅴ人片在线观看| 亚洲麻豆国产自偷在线| 激情文学综合丁香| 欧美午夜精品一区| 中文字幕一区二区视频| 麻豆精品在线看| 欧美日本一区二区三区四区| 国产精品色婷婷| 国产成人啪午夜精品网站男同| 日韩美一区二区三区| 亚洲视频在线一区| 国产不卡视频一区二区三区| 日韩精品一区二区三区四区| 亚洲国产精品久久人人爱蜜臀| av高清不卡在线| 国产精品国产三级国产普通话蜜臀 | 在线观看视频一区二区| 亚洲乱码中文字幕| 在线视频一区二区三| 亚洲精品视频一区| 欧美日韩亚洲综合在线| 亚洲国产裸拍裸体视频在线观看乱了 | 久久综合久久久久88| 国产乱码精品一区二区三区av| 欧美成人a在线| 懂色av中文一区二区三区| 亚洲色图欧洲色图| 欧美日韩二区三区| 老司机午夜精品| 国产欧美日韩中文久久| 色综合亚洲欧洲| 免费看欧美美女黄的网站| www久久精品| 色综合久久中文综合久久牛| 亚洲女子a中天字幕| 91精品国产综合久久香蕉麻豆 | 亚洲国产成人porn| 亚洲欧洲性图库| 欧美丰满少妇xxxxx高潮对白 | 婷婷综合在线观看| 中文字幕免费观看一区| 91精品啪在线观看国产60岁| 成人精品免费网站| 精品一区二区三区不卡| 午夜精品久久久久久久久久久| 国产三级一区二区| www国产亚洲精品久久麻豆| 欧美日韩中字一区| 91免费精品国自产拍在线不卡| 久久99久久精品| 午夜成人免费电影| 一区二区三区久久| 国产精品国产三级国产aⅴ中文| 久久综合久久鬼色| 日韩欧美亚洲一区二区| 91.麻豆视频| 欧美日韩和欧美的一区二区| 99国内精品久久| 91影院在线免费观看| 91成人看片片| 欧美三级视频在线| 欧美日韩一区二区三区高清 | eeuss鲁片一区二区三区| av色综合久久天堂av综合| 国产精品亚洲综合一区在线观看| 国产美女久久久久| 福利一区二区在线|