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

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

?? me.c

?? 法國人的264代碼 大家看看啊,里面有很多可以借鑒的東西啊
?? C
?? 第 1 頁 / 共 3 頁
字號:
            static const int x264_pixel_size_shift[7] = { 0, 1, 1, 2, 3, 3, 4 };            int ucost1, ucost2;            int cross_start = 1;            /* refine predictors */            ucost1 = bcost;            DIA1_ITER( pmx, pmy );            if( pmx || pmy )                DIA1_ITER( 0, 0 );            if(i_pixel == PIXEL_4x4)                goto me_hex2;            ucost2 = bcost;            if( (bmx || bmy) && (bmx!=pmx || bmy!=pmy) )                DIA1_ITER( bmx, bmy );            if( bcost == ucost2 )                cross_start = 3;            omx = bmx; omy = bmy;            /* early termination */#define SAD_THRESH(v) ( bcost < ( v >> x264_pixel_size_shift[i_pixel] ) )            if( bcost == ucost2 && SAD_THRESH(2000) )            {                COST_MV_X4( 0,-2, -1,-1, 1,-1, -2,0 );                COST_MV_X4( 2, 0, -1, 1, 1, 1,  0,2 );                if( bcost == ucost1 && SAD_THRESH(500) )                    break;                if( bcost == ucost2 )                {                    int range = (i_me_range>>1) | 1;                    CROSS( 3, range, range );                    COST_MV_X4( -1,-2, 1,-2, -2,-1, 2,-1 );                    COST_MV_X4( -2, 1, 2, 1, -1, 2, 1, 2 );                    if( bcost == ucost2 )                        break;                    cross_start = range + 2;                }            }            /* adaptive search range */            if( i_mvc )            {                /* range multipliers based on casual inspection of some statistics of                 * average distance between current predictor and final mv found by ESA.                 * these have not been tuned much by actual encoding. */                static const int range_mul[4][4] =                {                    { 3, 3, 4, 4 },                    { 3, 4, 4, 4 },                    { 4, 4, 4, 5 },                    { 4, 4, 5, 6 },                };                int mvd;                int sad_ctx, mvd_ctx;                if( i_mvc == 1 )                {                    if( i_pixel == PIXEL_16x16 )                        /* mvc is probably the same as mvp, so the difference isn't meaningful.                         * but prediction usually isn't too bad, so just use medium range */                        mvd = 25;                    else                        mvd = abs( m->mvp[0] - mvc[0][0] )                            + abs( m->mvp[1] - mvc[0][1] );                }                else                {                    /* calculate the degree of agreement between predictors. */                    /* in 16x16, mvc includes all the neighbors used to make mvp,                     * so don't count mvp separately. */                    int i_denom = i_mvc - 1;                    mvd = 0;                    if( i_pixel != PIXEL_16x16 )                    {                        mvd = abs( m->mvp[0] - mvc[0][0] )                            + abs( m->mvp[1] - mvc[0][1] );                        i_denom++;                    }                    for( i = 0; i < i_mvc-1; i++ )                        mvd += abs( mvc[i][0] - mvc[i+1][0] )                             + abs( mvc[i][1] - mvc[i+1][1] );                    mvd /= i_denom; //FIXME idiv                }                sad_ctx = SAD_THRESH(1000) ? 0                        : SAD_THRESH(2000) ? 1                        : SAD_THRESH(4000) ? 2 : 3;                mvd_ctx = mvd < 10 ? 0                        : mvd < 20 ? 1                        : mvd < 40 ? 2 : 3;                i_me_range = i_me_range * range_mul[mvd_ctx][sad_ctx] / 4;            }            /* FIXME if the above DIA2/OCT2/CROSS found a new mv, it has not updated omx/omy.             * we are still centered on the same place as the DIA2. is this desirable? */            CROSS( cross_start, i_me_range, i_me_range/2 );            /* 5x5 ESA */            omx = bmx; omy = bmy;            if( bcost != ucost2 )                COST_MV_X4(  1, 0,  0, 1, -1, 0,  0,-1 );            COST_MV_X4(  1, 1, -1, 1, -1,-1,  1,-1 );            COST_MV_X4(  2,-1,  2, 0,  2, 1,  2, 2 );            COST_MV_X4(  1, 2,  0, 2, -1, 2, -2, 2 );            COST_MV_X4( -2, 1, -2, 0, -2,-1, -2,-2 );            COST_MV_X4( -1,-2,  0,-2,  1,-2,  2,-2 );            /* hexagon grid */            omx = bmx; omy = bmy;            for( i = 1; i <= i_me_range/4; i++ )            {                static const int hex4[16][2] = {                    {-4, 2}, {-4, 1}, {-4, 0}, {-4,-1}, {-4,-2},                    { 4,-2}, { 4,-1}, { 4, 0}, { 4, 1}, { 4, 2},                    { 2, 3}, { 0, 4}, {-2, 3},                    {-2,-3}, { 0,-4}, { 2,-3},                };                if( 4*i > X264_MIN4( mv_x_max-omx, omx-mv_x_min,                                     mv_y_max-omy, omy-mv_y_min ) )                {                    for( j = 0; j < 16; j++ )                    {                        int mx = omx + hex4[j][0]*i;                        int my = omy + hex4[j][1]*i;                        if(    mx >= mv_x_min && mx <= mv_x_max                            && my >= mv_y_min && my <= mv_y_max )                            COST_MV( mx, my );                    }                }                else                {                    COST_MV_X4( -4*i, 2*i, -4*i, 1*i, -4*i, 0*i, -4*i,-1*i );                    COST_MV_X4( -4*i,-2*i,  4*i,-2*i,  4*i,-1*i,  4*i, 0*i );                    COST_MV_X4(  4*i, 1*i,  4*i, 2*i,  2*i, 3*i,  0*i, 4*i );                    COST_MV_X4( -2*i, 3*i, -2*i,-3*i,  0*i,-4*i,  2*i,-3*i );                }            }            goto me_hex2;        }    case X264_ME_ESA:        {            const int min_x = X264_MAX( bmx - i_me_range, mv_x_min);            const int min_y = X264_MAX( bmy - i_me_range, mv_y_min);            const int max_x = X264_MIN( bmx + i_me_range, mv_x_max);            const int max_y = X264_MIN( bmy + i_me_range, mv_y_max);            int mx, my;#if 0            /* plain old exhaustive search */            for( my = min_y; my <= max_y; my++ )                for( mx = min_x; mx <= max_x; mx++ )                    COST_MV( mx, my );#else            /* successive elimination by comparing DC before a full SAD,             * because sum(abs(diff)) >= abs(diff(sum)). */            const int stride = m->i_stride[0];            const int dw = x264_pixel_size[i_pixel].w;            const int dh = x264_pixel_size[i_pixel].h * stride;            static uint8_t zero[16*16] = {0,};            const int enc_dc = h->pixf.sad[i_pixel]( m->p_fenc[0], FENC_STRIDE, zero, 16 );            const uint16_t *integral_base = &m->integral[ -1 - 1*stride ];            for( my = min_y; my <= max_y; my++ )            {                int mvs[3], i_mvs=0;                for( mx = min_x; mx <= max_x; mx++ )                {                    const uint16_t *integral = &integral_base[ mx + my * stride ];                    const uint16_t ref_dc = integral[  0 ] + integral[ dh + dw ]                                          - integral[ dw ] - integral[ dh ];                    const int bsad = bcost - BITS_MVD(mx,my);                    if( abs( ref_dc - enc_dc ) < bsad )                    {                        if( i_mvs == 3 )                        {                            COST_MV_X4_ABS( mvs[0],my, mvs[1],my, mvs[2],my, mx,my );                            i_mvs = 0;                        }                        else                            mvs[i_mvs++] = mx;                    }                }                for( i=0; i<i_mvs; i++ )                    COST_MV( mvs[i], my );            }#endif        }        break;    }    /* -> qpel mv */    if( bpred_cost < bcost )    {        m->mv[0] = bpred_mx;        m->mv[1] = bpred_my;        m->cost = bpred_cost;    }    else    {        m->mv[0] = bmx << 2;        m->mv[1] = bmy << 2;        m->cost = bcost;    }    /* compute the real cost */    m->cost_mv = p_cost_mvx[ m->mv[0] ] + p_cost_mvy[ m->mv[1] ];    if( bmx == pmx && bmy == pmy && h->mb.i_subpel_refine < 3 )        m->cost += m->cost_mv;        /* subpel refine */    if( h->mb.i_subpel_refine >= 2 )    {        int hpel = subpel_iterations[h->mb.i_subpel_refine][2];        int qpel = subpel_iterations[h->mb.i_subpel_refine][3];        refine_subpel( h, m, hpel, qpel, p_halfpel_thresh, 0 );    }}#undef COST_MVvoid x264_me_refine_qpel( x264_t *h, x264_me_t *m ){    int hpel = subpel_iterations[h->mb.i_subpel_refine][0];    int qpel = subpel_iterations[h->mb.i_subpel_refine][1];    if( m->i_pixel <= PIXEL_8x8 && h->sh.i_type == SLICE_TYPE_P )        m->cost -= m->i_ref_cost;	    refine_subpel( h, m, hpel, qpel, NULL, 1 );}#define COST_MV_SAD( mx, my ) \{ \    int stride = 16; \    uint8_t *src = h->mc.get_ref( m->p_fref, m->i_stride[0], pix[0], &stride, mx, my, bw, bh ); \    int cost = h->pixf.sad[i_pixel]( m->p_fenc[0], FENC_STRIDE, src, stride ) \             + p_cost_mvx[ mx ] + p_cost_mvy[ my ]; \    COPY3_IF_LT( bcost, cost, bmx, mx, bmy, my ); \}#define COST_MV_SATD( mx, my, dir ) \if( b_refine_qpel || (dir^1) != odir ) \{ \    int stride = 16; \    uint8_t *src = h->mc.get_ref( m->p_fref, m->i_stride[0], pix[0], &stride, mx, my, bw, bh ); \    int cost = h->pixf.mbcmp[i_pixel]( m->p_fenc[0], FENC_STRIDE, src, stride ) \             + p_cost_mvx[ mx ] + p_cost_mvy[ my ]; \    if( b_chroma_me && cost < bcost ) \    { \        h->mc.mc_chroma( m->p_fref[4], m->i_stride[1], pix[0], 8, mx, my, bw/2, bh/2 ); \        cost += h->pixf.mbcmp[i_pixel+3]( m->p_fenc[1], FENC_STRIDE, pix[0], 8 ); \        if( cost < bcost ) \        { \            h->mc.mc_chroma( m->p_fref[5], m->i_stride[1], pix[0], 8, mx, my, bw/2, bh/2 ); \            cost += h->pixf.mbcmp[i_pixel+3]( m->p_fenc[2], FENC_STRIDE, pix[0], 8 ); \        } \    } \    if( cost < bcost ) \    {                  \        bcost = cost;  \        bmx = mx;      \        bmy = my;      \        bdir = dir;    \    } \}static void refine_subpel( x264_t *h, x264_me_t *m, int hpel_iters, int qpel_iters, int *p_halfpel_thresh, int b_refine_qpel ){    const int bw = x264_pixel_size[m->i_pixel].w;    const int bh = x264_pixel_size[m->i_pixel].h;    const int16_t *p_cost_mvx = m->p_cost_mv - m->mvp[0];    const int16_t *p_cost_mvy = m->p_cost_mv - m->mvp[1];    const int i_pixel = m->i_pixel;    const int b_chroma_me = h->mb.b_chroma_me && i_pixel <= PIXEL_8x8;    DECLARE_ALIGNED( uint8_t, pix[4][16*16], 16 );    int omx, omy;    int i;    int bmx = m->mv[0];    int bmy = m->mv[1];    int bcost = m->cost;    int odir = -1, bdir;    /* try the subpel component of the predicted mv */    if( hpel_iters && h->mb.i_subpel_refine < 3 )    {        int mx = x264_clip3( m->mvp[0], h->mb.mv_min_spel[0], h->mb.mv_max_spel[0] );        int my = x264_clip3( m->mvp[1], h->mb.mv_min_spel[1], h->mb.mv_max_spel[1] );        if( mx != bmx || my != bmy )            COST_MV_SAD( mx, my );    }    /* halfpel diamond search */    for( i = hpel_iters; i > 0; i-- )    {        int omx = bmx, omy = bmy;        int costs[4];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区在线老狼 | 依依成人综合视频| 亚洲线精品一区二区三区八戒| 久久精品国产一区二区| 成人av综合在线| 日韩欧美资源站| 一区二区三区免费网站| 精品中文字幕一区二区小辣椒| 色综合天天综合狠狠| 久久久久久久久久电影| 日韩成人精品在线| 日本韩国欧美三级| 亚洲精品一二三四区| 成人毛片在线观看| 国产欧美日韩视频一区二区| 久久99精品久久久久久国产越南 | 亚洲国产成人av好男人在线观看| 成人午夜大片免费观看| 亚洲精品在线电影| 久久精品国产精品亚洲综合| 欧美福利视频一区| 图片区日韩欧美亚洲| 色系网站成人免费| 亚洲黄网站在线观看| 久久九九久久九九| 久久99久久99小草精品免视看| 制服丝袜亚洲网站| 亚洲国产精品尤物yw在线观看| 色综合久久久久综合体| 亚洲伦理在线精品| 欧美性三三影院| 午夜精品久久久久久久久| 欧美日韩午夜影院| 免费欧美在线视频| 精品国产欧美一区二区| 国产福利91精品一区二区三区| 久久久久久亚洲综合影院红桃 | 国产嫩草影院久久久久| 国产一区二区美女诱惑| 久久精品一区蜜桃臀影院| 国产精品综合av一区二区国产馆| 国产片一区二区| 91丨九色porny丨蝌蚪| 一区二区三区欧美激情| 欧美日韩成人高清| 极品美女销魂一区二区三区免费| 国产亚洲福利社区一区| 成年人国产精品| 午夜影院在线观看欧美| 日韩一级视频免费观看在线| 国产一区二区精品久久| 国产精品高清亚洲| 欧美日韩精品一二三区| 黄色精品一二区| 亚洲精品成人在线| 91精品国产欧美日韩| 国产91精品久久久久久久网曝门| 亚洲人被黑人高潮完整版| 91精品久久久久久蜜臀| 国产成人午夜高潮毛片| 亚洲成a人片在线观看中文| 精品国产成人系列| 99久久99久久精品国产片果冻 | 高清在线成人网| 一区二区三区四区在线免费观看| 欧美一区日韩一区| 99久久久久免费精品国产 | 亚洲国产精品久久一线不卡| 欧美一级日韩不卡播放免费| 成人av免费在线| 日本美女一区二区三区| 中文字幕永久在线不卡| 日韩一区二区三区av| 成人福利视频在线看| 免费xxxx性欧美18vr| 亚洲视频在线观看一区| 久久综合色8888| 欧美人妇做爰xxxⅹ性高电影| 国产福利91精品一区二区三区| 亚洲va欧美va天堂v国产综合| 国产亚洲一区二区三区在线观看| 欧美日韩国产三级| 91在线视频播放地址| 国产一区二区不卡| 日本美女视频一区二区| 一级日本不卡的影视| 欧美韩日一区二区三区| 日韩一区二区影院| 欧美日韩成人综合| av在线播放一区二区三区| 精品一区二区三区视频在线观看| 亚洲中国最大av网站| 国产精品不卡在线| 亚洲国产精品二十页| 日韩精品一区在线观看| 91麻豆精品国产91久久久资源速度 | 国产一区 二区| 日本中文字幕一区| 亚洲成a人片在线不卡一二三区| 亚洲视频免费观看| 国产精品人成在线观看免费| 久久婷婷久久一区二区三区| 欧美一区二视频| 欧美日韩成人一区二区| 欧美午夜一区二区三区| 色哟哟国产精品免费观看| 99麻豆久久久国产精品免费| 国产999精品久久久久久绿帽| 精品一区二区久久久| 麻豆精品在线视频| 久久狠狠亚洲综合| 丝袜脚交一区二区| 亚洲成av人综合在线观看| 亚洲成人三级小说| 亚洲成a人在线观看| 午夜欧美在线一二页| 日韩精品一区第一页| 久久精品噜噜噜成人av农村| 精品一区二区三区在线观看 | 18成人在线视频| 国产精品成人网| 亚洲日韩欧美一区二区在线| 亚洲天堂久久久久久久| 一区二区高清视频在线观看| 一级日本不卡的影视| 三级成人在线视频| 老司机免费视频一区二区三区| 久久精品国产99久久6| 国产成人av一区二区三区在线 | 老色鬼精品视频在线观看播放| 精品亚洲免费视频| 国产美女av一区二区三区| 国产盗摄一区二区三区| 91麻豆免费视频| 在线不卡中文字幕| 久久久午夜电影| 亚洲视频小说图片| 青青草精品视频| 国产精品中文字幕欧美| 色域天天综合网| 欧美成人猛片aaaaaaa| 久久久精品影视| 一个色综合av| 久久精品免费观看| 91视频一区二区三区| 在线中文字幕不卡| 国产99久久久国产精品潘金| 91国产视频在线观看| 精品处破学生在线二十三| 不卡的电影网站| 欧美高清精品3d| 久久精品一区蜜桃臀影院| 亚洲综合免费观看高清完整版在线 | 国产suv一区二区三区88区| 在线免费观看日本一区| 精品日韩一区二区三区| 亚洲免费毛片网站| 国精产品一区一区三区mba视频| 日本国产一区二区| 欧美国产精品久久| 一本大道综合伊人精品热热| 91精品国产综合久久香蕉麻豆| 中文字幕欧美国产| 麻豆国产精品一区二区三区| 91丨porny丨首页| 欧美激情一区二区三区| 美女视频黄 久久| 色噜噜狠狠一区二区三区果冻| 久久综合久久99| 日韩福利视频导航| 一本久久精品一区二区| 亚洲精品一区二区精华| 视频一区中文字幕国产| 色婷婷av一区二区三区软件| 国产三级三级三级精品8ⅰ区| 秋霞午夜av一区二区三区| 色婷婷久久99综合精品jk白丝| 久久久精品欧美丰满| 日韩avvvv在线播放| 91久久奴性调教| 亚洲女人的天堂| 成人亚洲精品久久久久软件| 日韩三级在线观看| 日日嗨av一区二区三区四区| 91福利在线观看| 亚洲欧美国产77777| 白白色 亚洲乱淫| 欧美国产欧美综合| 国产乱码精品1区2区3区| 精品免费一区二区三区| 男女男精品视频| 亚洲精品欧美专区| 91亚洲精品久久久蜜桃| 国产精品国产三级国产a| 国产成人8x视频一区二区| 久久天天做天天爱综合色| 精品一区二区三区欧美| 26uuu久久天堂性欧美| 黄页网站大全一区二区| 国产日韩v精品一区二区|