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

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

?? block.c

?? H264EncPlayer,H264協議解碼與播放代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    top_u  = &topcacheu[CACHE_SIZE];
    top_v  = &topcachev[CACHE_SIZE];
    left_u = &leftcacheu[CACHE_SIZE];
    left_v = &leftcachev[CACHE_SIZE];

    if (mode == Intra_8x8_DC)
    {
        if ((t->mb.mb_neighbour & (MB_LEFT | MB_TOP)) == (MB_LEFT | MB_TOP))
        {
            mode = Intra_8x8_DC;

            p_u = t->mb.src_u - t->edged_stride_uv;
            p_v = t->mb.src_v - t->edged_stride_uv;
            for(i = 0 ; i < 8 ; i ++)
            {
                top_u[i] = p_u[i];
                top_v[i] = p_v[i];
            }

            p_u = t->mb.src_u - 1;
            p_v = t->mb.src_v - 1;
            for(i = 0 ; i < 8 ; i ++)
            {
                left_u[i] = p_u[0];
                left_v[i] = p_v[0];
                p_u += t->edged_stride_uv;
                p_v += t->edged_stride_uv;
            }
        }
        else if(t->mb.mb_neighbour & MB_LEFT)
        {
            mode = Intra_8x8_DCLEFT;

            p_u = t->mb.src_u - 1;
            p_v = t->mb.src_v - 1;

            for(i = 0 ; i < 8 ; i ++)
            {
                left_u[i] = p_u[0];
                left_v[i] = p_v[0];
                p_u += t->edged_stride_uv;
                p_v += t->edged_stride_uv;
            }
        }
        else if(t->mb.mb_neighbour & MB_TOP)
        {
            mode = Intra_8x8_DCTOP;

            p_u = t->mb.src_u - t->edged_stride_uv;
            p_v = t->mb.src_v - t->edged_stride_uv;
            for(i = 0 ; i < 8 ; i ++)
            {
                top_u[i] = p_u[i];
                top_v[i] = p_v[i];
            }
        }
        else
        {
            mode = Intra_8x8_DC128;
        }
    }
    else
    {
        switch(mode)
        {
        case Intra_8x8_TOP:
            p_u = t->mb.src_u - t->edged_stride_uv;
            p_v = t->mb.src_v - t->edged_stride_uv;
            for(i = 0 ; i < 8 ; i ++)
            {
                top_u[i] = p_u[i];
                top_v[i] = p_v[i];
            }
            break;
        case Intra_8x8_LEFT:
            p_u = t->mb.src_u - 1;
            p_v = t->mb.src_v - 1;

            for(i = 0 ; i < 8 ; i ++)
            {
                left_u[i] = p_u[0];
                left_v[i] = p_v[0];
                p_u += t->edged_stride_uv;
                p_v += t->edged_stride_uv;
            }
            break;
        case Intra_8x8_PLANE:
            p_u = t->mb.src_u - t->edged_stride_uv;
            p_v = t->mb.src_v - t->edged_stride_uv;
            for(i = -1 ; i < 8 ; i ++)
            {
                top_u[i] = p_u[i];
                top_v[i] = p_v[i];
            }

            p_u -= 1;
            p_v -= 1;
            for(i = -1 ; i < 8 ; i ++)
            {
                left_u[i] = p_u[0];
                p_u += t->edged_stride_uv;
                left_v[i] = p_v[0];
                p_v += t->edged_stride_uv;
            }
            break;
        default:
            assert(0);
            break;
        }
    }

    t->pred8x8[mode](pred_u, 8, top_u, left_u);
    t->pred8x8[mode](pred_v, 8, top_v, left_v);
}


static void __inline
T264dec_mb_decode_i16x16_y(T264_t* t)
{
    DECLARE_ALIGNED_MATRIX(dct, 1+16, 16, int16_t, CACHE_SIZE);
 
    int32_t qp = t->qp_y;
    int32_t i;
    int16_t* curdct;
    uint8_t* src;
    
    src = t->mb.src_y;

    T264dec_mb_decode_predict_i16x16_y(t, t->mb.mode_i16x16, t->mb.pred_i16x16, src);

    unscan_zig_4x4( t->mb.dc4x4_z, dct + 256 );
    t->iquant4x4dc(dct + 256, qp);
    t->idct4x4dc(dct + 256);

    curdct = dct;
    for( i = 0; i < 16; i++ )
    {
        unscan_zig_4x4( t->mb.dct_y_z[luma_index[i]], curdct );
        t->iquant4x4( curdct, qp );
        curdct[0] = dct[256 + i];
        t->idct4x4(curdct);
        curdct += 16;
    }

    t->contract16to8add(dct, 16 / 4, 16 / 4, t->mb.pred_i16x16, src, t->edged_stride);
}

static void __inline
T264dec_mb_decode_i4x4_y(T264_t* t)
{
    DECLARE_ALIGNED_MATRIX(pred, 4, 5, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(dct, 1, 16, int16_t, 16);

    int32_t qp = t->qp_y;

    int32_t i;
    uint8_t* src;

    for(i = 0 ; i < 16 ; i ++)
    {
        int32_t row = i / 4;
        int32_t col = i % 4;

        src = t->mb.src_y + (row * t->edged_stride << 2) + (col << 2);

        T264dec_mb_decode_predict_i4x4_y(t, i, t->mb.mode_i4x4[luma_index[i]], pred, src);

        unscan_zig_4x4(t->mb.dct_y_z[luma_index[i]], dct);

        t->iquant4x4(dct, qp);
        t->idct4x4(dct);

        t->contract16to8add(dct, 4 / 4, 4 / 4, pred, src, t->edged_stride);
    }
}

void
T264dec_mb_decode_intra_y(T264_t* t)
{
    if (t->mb.mb_mode == I_4x4)
        T264dec_mb_decode_i4x4_y(t);
    else
        T264dec_mb_decode_i16x16_y(t);
}

void
T264dec_mb_decode_uv(T264_t* t, uint8_t* pred_u, uint8_t* pred_v)
{
    DECLARE_ALIGNED_MATRIX(dct, 10, 8, int16_t, CACHE_SIZE);

    int32_t qp = t->qp_uv;
    int32_t i, j;
    int16_t* curdct;
    uint8_t* start;
    uint8_t* src;

    start = pred_u;
    src   = t->mb.src_u;
    
    for(j = 0 ; j < 2 ; j ++)
    {
        unscan_zig_2x2(t->mb.dc2x2_z[j], dct + 64);
        t->iquant2x2dc(dct + 64, qp);
        t->idct2x2dc(dct + 64);

        curdct = dct;
        for(i = 0 ; i < 4 ; i ++)
        {
            unscan_zig_4x4(t->mb.dct_uv_z[j][i], curdct);
            t->iquant4x4(curdct, qp);
            curdct[0] = dct[64 + i];
            t->idct4x4(curdct);
            curdct += 16;
        }

        t->contract16to8add(dct, 8 / 4, 8 / 4, start, src, t->edged_stride_uv);

        //
        // change to v
        //
        start = pred_v;
        src   = t->mb.src_v;
    }
}

void
T264dec_mb_decode_intra_uv(T264_t* t)
{
    T264dec_mb_decode_predict_i8x8_y(t, t->mb.mb_mode_uv, t->mb.pred_i8x8u, t->mb.pred_i8x8v);

    T264dec_mb_decode_uv(t, t->mb.pred_i8x8u, t->mb.pred_i8x8v);
}

void
T264dec_mb_decode_interp_mc(T264_t* t, uint8_t* ref)
{
    T264_vector_t vec;
    uint8_t* tmp;
    int32_t x, y;
    int32_t i;
    int32_t list_index = 0;

    static const int8_t index[4][4][6] = 
    {
        {{0, 0, 0, 0, 0, 0}, {0, 1, 0, 0, 0, 0}, {1, 1, 0, 0, 0, 0}, {1, 0, 0, 0, 1, 0}},
        {{0, 2, 0, 0, 0, 0}, {1, 2, 0, 0, 0, 0}, {1, 3, 0, 0, 0, 0}, {1, 2, 0, 0, 1, 0}},
        {{2, 2, 0, 0, 0, 0}, {2, 3, 0, 0, 0, 0}, {3, 3, 0, 0, 0, 0}, {3, 2, 0, 0, 1, 0}},
        {{2, 0, 0, 0, 0, 1}, {2, 1, 0, 0, 0, 1}, {3, 1, 0, 0, 0, 1}, {1, 2, 0, 1, 1, 0}}
    };

    switch(t->mb.mb_part)
    {
    case MB_16x16:
        vec = t->mb.vec[0][0];
        x = (vec.x & 3);
        y = (vec.y & 3);

        if (index[y][x][0] == index[y][x][1])
        {
            tmp = t->ref[list_index][vec.refno]->Y[index[y][x][0]] + ((t->mb.mb_y << 4) + (vec.y >> 2)) * t->edged_stride + 
                ((t->mb.mb_x << 4) + (vec.x >> 2));
            t->memcpy_stride_u(tmp, 16, 16, t->edged_stride, ref, 16);
        }
        else
        {
            t->pia[MB_16x16](t->ref[list_index][vec.refno]->Y[index[y][x][0]] + ((t->mb.mb_y << 4) + (vec.y >> 2) + index[y][x][3]) * t->edged_stride + (t->mb.mb_x << 4) + (vec.x >> 2) + index[y][x][2], 
                t->ref[list_index][vec.refno]->Y[index[y][x][1]] + ((t->mb.mb_y << 4) + (vec.y >> 2) + index[y][x][5]) * t->edged_stride + (t->mb.mb_x << 4) + (vec.x >> 2) + index[y][x][4],
                t->edged_stride, t->edged_stride, ref, 16);
        }
        break;
    case MB_16x8:
        vec = t->mb.vec[0][0];
        x = (vec.x & 3);
        y = (vec.y & 3);

        if (index[y][x][0] == index[y][x][1])
        {
            tmp = t->ref[list_index][vec.refno]->Y[index[y][x][0]] + ((t->mb.mb_y << 4) + (vec.y >> 2)) * t->edged_stride + 
                ((t->mb.mb_x << 4) + (vec.x >> 2));
            t->memcpy_stride_u(tmp, 16, 8, t->edged_stride, ref, 16);
        }
        else
        {
            t->pia[MB_16x8](t->ref[list_index][vec.refno]->Y[index[y][x][0]] + ((t->mb.mb_y << 4) + (vec.y >> 2) + index[y][x][3]) * t->edged_stride + (t->mb.mb_x << 4) + (vec.x >> 2) + index[y][x][2], 
                t->ref[list_index][vec.refno]->Y[index[y][x][1]] + ((t->mb.mb_y << 4) + (vec.y >> 2) + index[y][x][5]) * t->edged_stride + (t->mb.mb_x << 4) + (vec.x >> 2) + index[y][x][4],
                t->edged_stride, t->edged_stride, ref, 16);
        }

        vec = t->mb.vec[0][8];
        x = (vec.x & 3);
        y = (vec.y & 3);

        if (index[y][x][0] == index[y][x][1])
        {
            tmp = t->ref[list_index][vec.refno]->Y[index[y][x][0]] + ((t->mb.mb_y << 4) + (vec.y >> 2) + 8) * t->edged_stride + 
                ((t->mb.mb_x << 4) + (vec.x >> 2));
            t->memcpy_stride_u(tmp, 16, 8, t->edged_stride, ref + 16 * 8, 16);
        }
        else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久国产精品免费看| 亚洲国产精品黑人久久久| 成人av电影免费在线播放| 激情综合亚洲精品| 日韩高清国产一区在线| 午夜影院在线观看欧美| 无码av免费一区二区三区试看| 亚洲精品乱码久久久久久| 一区二区国产视频| 亚洲一区在线观看视频| 亚洲最大色网站| 午夜欧美大尺度福利影院在线看 | 亚洲视频一区在线观看| 国产精品久久久久久久久久免费看 | 国产精品久久夜| 国产精品亲子伦对白| 一区二区中文字幕在线| 综合欧美亚洲日本| 亚洲愉拍自拍另类高清精品| 亚洲国产成人高清精品| 丝袜美腿高跟呻吟高潮一区| 亚洲成人tv网| 狠狠色综合日日| 国产成人av福利| 色综合色综合色综合| 日本精品视频一区二区| 欧美精品久久99久久在免费线| 91麻豆精品国产自产在线观看一区| 欧美精品乱人伦久久久久久| 欧美大胆一级视频| 国产日产精品一区| 亚洲精品视频免费看| 午夜精品一区二区三区免费视频| 日韩av电影免费观看高清完整版 | 欧美极品另类videosde| 中文字幕一区二区三区四区| 亚洲女厕所小便bbb| 偷窥国产亚洲免费视频| 久久精品国产澳门| jvid福利写真一区二区三区| 在线欧美一区二区| 日韩三级.com| 中文字幕一区二区在线播放| 日韩激情在线观看| 国产精品香蕉一区二区三区| 色吊一区二区三区| 日韩久久久久久| 亚洲精品综合在线| 看电影不卡的网站| 91在线观看地址| 日韩精品一区二区三区视频播放 | 成人一区在线观看| 欧美日韩另类一区| 国产欧美一区二区在线| 亚洲超丰满肉感bbw| 国产美女主播视频一区| 欧美网站一区二区| 国产日韩欧美精品综合| 天堂成人免费av电影一区| 国产成人99久久亚洲综合精品| 欧美丝袜丝交足nylons| 国产免费久久精品| 日韩二区在线观看| 91免费观看在线| 久久综合狠狠综合久久综合88| 一区二区三区四区精品在线视频| 国产在线不卡一卡二卡三卡四卡| 欧美系列亚洲系列| 国产精品高清亚洲| 精品一区二区影视| 欧美日本一区二区在线观看| 中文字幕一区在线观看| 国产一区91精品张津瑜| 884aa四虎影成人精品一区| 亚洲视频一区二区在线| 国内成人精品2018免费看| 欧美日韩不卡视频| 亚洲精品国产一区二区精华液| 国模一区二区三区白浆| 日韩一区二区三区电影在线观看| 有码一区二区三区| av激情综合网| 中文字幕精品三区| 国产综合色精品一区二区三区| 在线不卡的av| 亚洲高清在线精品| 日本福利一区二区| 自拍偷拍亚洲综合| 成人美女在线观看| 欧美国产丝袜视频| 国产精品中文字幕一区二区三区| 日韩欧美国产wwwww| 首页国产欧美日韩丝袜| 欧洲人成人精品| 亚洲精品免费电影| 91色视频在线| 亚洲男人都懂的| 色综合天天性综合| 成人免费在线播放视频| aa级大片欧美| ...xxx性欧美| 91美女在线观看| 亚洲日本青草视频在线怡红院| 不卡的av在线| 综合激情成人伊人| 99久久精品费精品国产一区二区| 国产精品成人免费精品自在线观看| 高清成人在线观看| 国产精品色婷婷| a亚洲天堂av| 亚洲少妇30p| 在线观看国产91| 亚洲风情在线资源站| 555夜色666亚洲国产免| 免费人成精品欧美精品| 日韩午夜电影av| 国模套图日韩精品一区二区| 久久久亚洲精品石原莉奈| 国产一区二区三区不卡在线观看| 国产婷婷色一区二区三区 | 欧美xxxxx裸体时装秀| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品少妇一区二区三区| 国产成人综合在线| 综合自拍亚洲综合图不卡区| 91黄色免费观看| 日韩电影在线免费看| 26uuu久久天堂性欧美| 成人一区二区三区视频在线观看| 1024成人网| 欧美日韩国产成人在线91| 天天av天天翘天天综合网| 欧美大胆一级视频| 成人av在线看| 亚洲图片欧美综合| 日韩免费性生活视频播放| 国产1区2区3区精品美女| 亚洲码国产岛国毛片在线| 欧美日韩一区中文字幕| 紧缚捆绑精品一区二区| 国产精品美女久久久久aⅴ| 欧美亚洲丝袜传媒另类| 麻豆91免费看| 国产精品第13页| 欧美另类videos死尸| 国产精品一区二区黑丝| 一区二区三区毛片| 欧美刺激脚交jootjob| fc2成人免费人成在线观看播放| 亚洲国产精品影院| 国产女人水真多18毛片18精品视频 | 国产福利一区二区三区视频| 一区二区三国产精华液| 日韩午夜av电影| 91免费观看视频| 精品亚洲aⅴ乱码一区二区三区| 亚洲图片另类小说| 日韩欧美一级在线播放| 色噜噜狠狠色综合中国| 激情综合五月天| 亚洲精品国产a久久久久久| 久久夜色精品一区| 欧美亚洲自拍偷拍| 成人深夜福利app| 久久超碰97中文字幕| 亚洲人亚洲人成电影网站色| 精品噜噜噜噜久久久久久久久试看 | 一区二区三区在线观看欧美| 精品国产电影一区二区| 在线看国产一区二区| 国产精品1区二区.| 日韩国产精品久久久久久亚洲| 日本一区二区三区视频视频| 欧美精品v国产精品v日韩精品| 97久久精品人人做人人爽50路 | 91福利小视频| 成年人国产精品| 久久99深爱久久99精品| 亚洲综合成人在线| 亚洲欧洲成人精品av97| 精品欧美一区二区在线观看| 欧美三级韩国三级日本三斤| 成人av电影在线观看| 国产一区二区不卡| 另类专区欧美蜜桃臀第一页| 亚洲一区二区三区激情| 国产精品色眯眯| 中文字幕免费在线观看视频一区| 日韩欧美的一区二区| 在线成人av网站| 欧美性高清videossexo| 色系网站成人免费| 成人免费黄色在线| 成人一区二区三区视频在线观看| 国内精品嫩模私拍在线| 激情综合色播五月| 久久国产精品露脸对白| 日韩国产成人精品| 日韩高清在线一区| 琪琪久久久久日韩精品|