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

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

?? cavlc.c

?? H264EncPlayer,H264協議解碼與播放代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
        }
        if( ABS( level[i] ) > ( 3 << ( i_suffix_length - 1 ) ) && i_suffix_length < 6 )
        {
            i_suffix_length++;
        }
    }

	//encode total zeros [i_total-1][i_total_zero]
    if( i_total < i_count )
    {
        if( i_idx == BLOCK_INDEX_CHROMA_DC )
        {
            eg_write_vlc(h->bs, x264_total_zeros_dc[i_total-1][i_total_zero]);
        }
        else
        {
            eg_write_vlc(h->bs, x264_total_zeros[i_total-1][i_total_zero]);
        }
    }

	//encode each run of zeros
    for( i = 0, i_zero_left = i_total_zero; i < i_total - 1; i++ )
    {
        int i_zl;

        if( i_zero_left <= 0 )
        {
            break;
        }

        i_zl = T264_MIN( i_zero_left - 1, 6 );

		eg_write_vlc(h->bs, x264_run_before[i_zl][run[i]]);

        i_zero_left -= run[i];
    }
}

void 
T264_macroblock_write_cavlc(T264_t *t)
{
    int32_t mb_mode = t->mb.mb_mode;
    int32_t i;
    int32_t offset;

    if (t->slice_type == SLICE_I)
    {
        offset = 0;
    }
    else if (t->slice_type == SLICE_P)
    {
        offset = 5;
    }
    else if (t->slice_type == SLICE_B)
    {
        offset = 23;
    }

    if(t->slice_type != SLICE_I)
    {
        eg_write_ue(t->bs, t->skip);  /* skip run */
        t->skip = 0;
    }

    if (mb_mode == I_4x4)
    {
        // mb_type
        eg_write_ue(t->bs, offset + 0);
        /* Prediction: Luma */
        for (i = 0 ; i < 16; i ++) /* i : Inverse raster scan */
        {
            int8_t pred = T264_mb_predict_intra4x4_mode(t, i);
            int8_t mode = t->mb.mode_i4x4[i];

            if( pred == mode)
            {
                eg_write_direct1(t->bs, 1);	/* b_prev_intra4x4_pred_mode */
            }
            else
            {
                eg_write_direct1(t->bs, 0);	/* b_prev_intra4x4_pred_mode */
                if( mode < pred )
                {
                    eg_write_direct(t->bs, mode, 3);  /* rem_intra4x4_pred_mode */
                }
                else
                {
                    eg_write_direct(t->bs, mode - 1, 3);  /* rem_intra4x4_pred_mode */
                }
            }
        }
        //intra_chroma_pred_mode
        eg_write_ue(t->bs, t->mb.mb_mode_uv);

        // coded_block_pattern
        eg_write_ue(t->bs, intra4x4_cbp_to_golomb[( t->mb.cbp_c << 4 ) | t->mb.cbp_y]);

        //delta_qp
        if (t->mb.cbp_y > 0 || t->mb.cbp_c > 0)
        {
            eg_write_se(t->bs, t->mb.mb_qp_delta);	/* 0 = no change on qp */

            for (i = 0; i < 16 ; i ++)
            {
                if(t->mb.cbp_y & (1 << ( i / 4 )))
                {
                    block_residual_write_cavlc(t, i, t->mb.dct_y_z[i], 16);
                }
            }
        }
    }
    else if (mb_mode == I_16x16)
    {
        // mb_type
        eg_write_ue(t->bs, offset + 1 + t->mb.mode_i16x16 + 
            t->mb.cbp_c * 4 + (t->mb.cbp_y == 0 ? 0 : 12));
        // intra chroma pred mode
        eg_write_ue(t->bs, t->mb.mb_mode_uv);

        // delta qp
        eg_write_se(t->bs, t->mb.mb_qp_delta);

        // dc luma
        block_residual_write_cavlc(t, BLOCK_INDEX_LUMA_DC, t->mb.dc4x4_z, 16);

        if (t->mb.cbp_y != 0)
        {
            for(i = 0 ; i < 16 ; i ++)
            {
                if (t->mb.cbp_y & (1 << (i / 4)))
                {
                    block_residual_write_cavlc(t, i, &(t->mb.dct_y_z[i][1]), 15);
                }
            }
        }
    }
    else
    {
        T264_vector_t vec;
        if (t->slice_type == SLICE_P)
        {
            switch (t->mb.mb_part) 
            {
            case MB_16x16:
                eg_write_ue(t->bs, MB_16x16);
                if (t->ps.num_ref_idx_l0_active_minus1 > 0)
                {
                    eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][0].refno);
                }
                vec = t->mb.vec[0][0];
                T264_predict_mv(t, 0, 0, 4, &vec);
                eg_write_se(t->bs, t->mb.vec[0][0].x - vec.x);
                eg_write_se(t->bs, t->mb.vec[0][0].y - vec.y);
        	    break;
            case MB_16x8:
                eg_write_ue(t->bs, MB_16x8);
                if (t->ps.num_ref_idx_l0_active_minus1 > 0)
                {
                    eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][0].refno);
                    eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][8].refno);
                }
                vec = t->mb.vec[0][0];
                T264_predict_mv(t, 0, 0, 4, &vec);
                eg_write_se(t->bs, t->mb.vec[0][0].x - vec.x);
                eg_write_se(t->bs, t->mb.vec[0][0].y - vec.y);

                vec = t->mb.vec[0][8];
                T264_predict_mv(t, 0, 8, 4, &vec);
                eg_write_se(t->bs, t->mb.vec[0][8].x - vec.x);
                eg_write_se(t->bs, t->mb.vec[0][8].y - vec.y);
        	    break;
            case MB_8x16:
                eg_write_ue(t->bs, MB_8x16);
                if (t->ps.num_ref_idx_l0_active_minus1 > 0)
                {
                    eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][0].refno);
                    eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][luma_index[4]].refno);
                }
                vec = t->mb.vec[0][0];
                T264_predict_mv(t, 0, 0, 2, &vec);
                eg_write_se(t->bs, t->mb.vec[0][0].x - vec.x);
                eg_write_se(t->bs, t->mb.vec[0][0].y - vec.y);

                vec = t->mb.vec[0][luma_index[4]];
                T264_predict_mv(t, 0, luma_index[4], 2, &vec);
                eg_write_se(t->bs, t->mb.vec[0][luma_index[4]].x - vec.x);
                eg_write_se(t->bs, t->mb.vec[0][luma_index[4]].y - vec.y);
                break;
            case MB_8x8:
            case MB_8x8ref0:
                if (t->mb.vec[0][luma_index[0]].refno == 0 &&
                    t->mb.vec[0][luma_index[4]].refno == 0 &&
                    t->mb.vec[0][luma_index[8]].refno == 0 &&
                    t->mb.vec[0][luma_index[12]].refno == 0)
                {
                    eg_write_ue(t->bs, MB_8x8ref0);
                    for (i = 0 ; i < 4 ; i ++)
                    {
                        switch (t->mb.submb_part[luma_index[4 * i]]) 
                        {
                        case MB_8x8:
                            eg_write_ue(t->bs, 0);
                    	    break;
                        case MB_8x4:
                            eg_write_ue(t->bs, 1);
                            break;
                        case MB_4x8:
                            eg_write_ue(t->bs, 2);
                            break;
                        case MB_4x4:
                            eg_write_ue(t->bs, 3);
                            break;
                        default:
                            break;
                        }
                    }
                }
                else
                {
                    eg_write_ue(t->bs, MB_8x8);
                    for (i = 0 ; i < 4 ; i ++)
                    {
                        switch (t->mb.submb_part[luma_index[4 * i]]) 
                        {
                        case MB_8x8:
                            eg_write_ue(t->bs, 0);
                            break;
                        case MB_8x4:
                            eg_write_ue(t->bs, 1);
                            break;
                        case MB_4x8:
                            eg_write_ue(t->bs, 2);
                            break;
                        case MB_4x4:
                            eg_write_ue(t->bs, 3);
                            break;
                        default:
                            break;
                        }
                    }
                    
                    if (t->ps.num_ref_idx_l0_active_minus1 > 0)
                    {
                        eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][0].refno);
                        eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][luma_index[4]].refno);
                        eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][luma_index[8]].refno);
                        eg_write_te(t->bs, t->ps.num_ref_idx_l0_active_minus1, t->mb.vec[0][luma_index[12]].refno);
                    }
                }
                for(i = 0 ; i < 4 ; i ++)
                {
                    switch(t->mb.submb_part[luma_index[4 * i]]) 
                    {
                    case MB_8x8:
                        vec = t->mb.vec[0][luma_index[4 * i]];
                        T264_predict_mv(t, 0, luma_index[4 * i], 2, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].y - vec.y);
                	    break;
                    case MB_8x4:
                        vec = t->mb.vec[0][luma_index[4 * i]];
                        T264_predict_mv(t, 0, luma_index[4 * i], 2, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].y - vec.y);

                        vec = t->mb.vec[0][luma_index[4 * i + 2]];
                        T264_predict_mv(t, 0, luma_index[4 * i + 2], 2, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 2]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 2]].y - vec.y);
                	    break;
                    case MB_4x8:
                        vec = t->mb.vec[0][luma_index[4 * i]];
                        T264_predict_mv(t, 0, luma_index[4 * i], 1, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].y - vec.y);

                        vec = t->mb.vec[0][luma_index[4 * i + 1]];
                        T264_predict_mv(t, 0, luma_index[4 * i + 1], 1, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 1]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 1]].y - vec.y);
                        break;
                    case MB_4x4:
                        vec = t->mb.vec[0][luma_index[4 * i]];
                        T264_predict_mv(t, 0, luma_index[4 * i], 1, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i]].y - vec.y);

                        vec = t->mb.vec[0][luma_index[4 * i + 1]];
                        T264_predict_mv(t, 0, luma_index[4 * i + 1], 1, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 1]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 1]].y - vec.y);

                        vec = t->mb.vec[0][luma_index[4 * i + 2]];
                        T264_predict_mv(t, 0, luma_index[4 * i + 2], 1, &vec);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 2]].x - vec.x);
                        eg_write_se(t->bs, t->mb.vec[0][luma_index[4 * i + 2]].y - vec.y);

                        vec = t->mb.vec[0][luma_index[4 * i + 3]];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品ww久久久久久p站| 99在线视频精品| 亚洲电影第三页| 极品美女销魂一区二区三区免费| 国产精品一区二区在线观看网站| 中文一区二区在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 一区二区三区中文字幕电影| 久久久久久久综合色一本| 久久亚洲春色中文字幕久久久| 中文字幕一区二区三区视频 | 不卡大黄网站免费看| 色综合久久综合中文综合网| 午夜精品久久久久影视| 青青草成人在线观看| 国产精品一区二区三区99| 色综合天天狠狠| 欧美精品123区| 婷婷夜色潮精品综合在线| 97久久精品人人爽人人爽蜜臀 | 日韩免费电影一区| 欧美日韩一区二区在线观看视频| 久久午夜色播影院免费高清 | 欧美日韩不卡一区| 欧美韩日一区二区三区| 国产69精品久久99不卡| 国产欧美精品一区二区三区四区 | 亚洲一区二区在线免费看| 色哟哟一区二区在线观看| 亚洲视频每日更新| 色综合久久久久综合体| 久久女同性恋中文字幕| 香蕉成人啪国产精品视频综合网 | 九九九久久久精品| 91婷婷韩国欧美一区二区| 精品国产91亚洲一区二区三区婷婷| 亚洲综合色在线| 黄一区二区三区| 日本精品免费观看高清观看| 国产日韩综合av| 免费亚洲电影在线| 欧美在线一区二区三区| 久久九九影视网| 免费观看日韩av| 欧美日韩一区二区三区在线 | 成人动漫av在线| 日韩欧美国产麻豆| 午夜激情一区二区| 色偷偷88欧美精品久久久| 国产片一区二区| 国产毛片一区二区| 欧美本精品男人aⅴ天堂| 亚洲成人激情自拍| 成人v精品蜜桃久久一区| 懂色av一区二区三区蜜臀| 亚洲视频你懂的| 久久亚洲一区二区三区明星换脸| 亚洲高清视频的网址| 国产精品一区在线观看你懂的| 精品成人一区二区| 91碰在线视频| 日韩一区二区中文字幕| 91在线看国产| 99久久综合国产精品| 久久国产精品99精品国产| 日日摸夜夜添夜夜添精品视频| 中文字幕亚洲区| 国产精品三级电影| 亚洲欧洲综合另类在线| 国产三级精品三级在线专区| 日韩精品一区二区三区在线观看| 成人黄页在线观看| 天堂一区二区在线| 欧美韩国日本综合| 日韩欧美在线网站| 91免费看视频| 97久久超碰国产精品电影| 亚洲成人在线免费| 中文字幕一区在线观看| 午夜激情一区二区三区| 成人污污视频在线观看| 国产视频一区在线播放| 国产乱理伦片在线观看夜一区| 久久久久久久网| 粉嫩一区二区三区在线看| 国产亚洲一区字幕| av男人天堂一区| 亚洲美女精品一区| 在线精品视频小说1| 亚洲影视资源网| 欧美色手机在线观看| 日韩成人伦理电影在线观看| 日韩欧美专区在线| 国产一区二区三区av电影 | 天堂va蜜桃一区二区三区| 欧美久久一二区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品久久人人做人人爰| 国产精品888| eeuss鲁一区二区三区| 国产suv精品一区二区三区| 在线视频欧美区| 色www精品视频在线观看| 国产成人av一区二区三区在线 | 日本韩国一区二区三区视频| 欧美日韩一区二区三区视频| 久久免费视频色| 一区二区三区在线播放| 日本伊人色综合网| 欧美日韩国产综合一区二区三区| 中文字幕制服丝袜成人av| 日韩av高清在线观看| 国产成人精品亚洲777人妖| 福利视频网站一区二区三区| 成人av免费在线| 欧美性大战xxxxx久久久| 久久午夜老司机| 中文字幕欧美激情一区| 天堂va蜜桃一区二区三区| 国产精品一卡二| 成人av在线资源网| 日韩亚洲电影在线| 国产成人免费高清| 亚洲欧美日韩一区| 欧美一级二级三级乱码| 成人三级伦理片| 日韩不卡一区二区| 中文字幕在线观看一区二区| 欧美精品视频www在线观看| 国产综合一区二区| 亚洲一区二区三区四区在线观看 | 亚洲.国产.中文慕字在线| 欧美不卡在线视频| 欧洲一区在线电影| 国产美女精品在线| 日韩电影在线免费观看| 中文字幕日韩欧美一区二区三区| 日韩一区二区在线播放| 97se亚洲国产综合自在线观| 日本不卡的三区四区五区| 日韩一区有码在线| 欧美精品一区二区高清在线观看 | 日韩精品资源二区在线| 久久久亚洲精品石原莉奈| 亚洲欧洲国产日本综合| 日韩精品电影一区亚洲| 欧美无砖砖区免费| 亚洲高清一区二区三区| 91麻豆精品国产91久久久使用方法 | 精品在线你懂的| 日韩久久久久久| 色婷婷激情久久| 精品一区二区在线观看| 中日韩av电影| 色一情一伦一子一伦一区| 亚洲三级电影网站| 99国产精品久久| 亚洲六月丁香色婷婷综合久久| 国产精品影音先锋| 久久精品在线免费观看| 91影院在线观看| 亚洲一区二区三区小说| 欧美日韩大陆一区二区| 一区二区三区精品视频在线| 99精品国产99久久久久久白柏| 欧美亚日韩国产aⅴ精品中极品| 国产91精品一区二区麻豆网站| 日韩激情视频在线观看| 亚洲精品网站在线观看| 中文字幕一区视频| 中文字幕精品—区二区四季| 精品国产一区二区三区四区四| 欧美日韩免费电影| 欧美日韩国产综合视频在线观看| 一本色道久久综合亚洲aⅴ蜜桃| av电影在线观看完整版一区二区 | 91精品午夜视频| 欧美日韩久久一区| 欧美日韩电影在线| 这里是久久伊人| 欧美一区二区二区| 欧美一区二视频| 91精品国产91久久久久久一区二区| 欧美三级日韩三级| 欧美日韩成人一区二区| 欧美日韩国产123区| 欧美日韩黄视频| 在线成人av影院| 69p69国产精品| 日韩欧美不卡在线观看视频| 欧美zozo另类异族| 久久精品一区二区三区不卡牛牛 | 亚洲欧洲性图库| 在线精品视频小说1| 国产精品乡下勾搭老头1| 亚洲一二三四在线| 国产精品嫩草影院av蜜臀| 久久夜色精品一区| 精品国偷自产国产一区| 日韩欧美一区电影|