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

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

?? cavlc.c

?? 文件為H.264編解碼器 僅供參考 包括windows版本和DM642版本
?? 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一区二区三区免费野_久草精品视频
国产一区二区三区精品视频| 色婷婷激情一区二区三区| 亚洲精品乱码久久久久久久久| 久久夜色精品国产噜噜av| 91精品国产入口| 欧美精品欧美精品系列| 69精品人人人人| 日韩一区和二区| 久久亚洲一区二区三区明星换脸| 亚洲精品一区二区三区四区高清 | 日本高清无吗v一区| 99久久精品费精品国产一区二区| av高清久久久| 欧美日韩综合不卡| 欧美不卡视频一区| 国产日本一区二区| 亚洲欧美区自拍先锋| 天堂蜜桃91精品| 国产一区二三区| 色又黄又爽网站www久久| 欧美日本一区二区三区| 日韩免费看的电影| 日本一区二区三区在线观看| 国产天堂亚洲国产碰碰| 亚洲四区在线观看| 琪琪一区二区三区| 国产99久久久国产精品潘金网站| 一本到高清视频免费精品| 在线综合+亚洲+欧美中文字幕| 亚洲精品在线三区| 一区二区成人在线视频| 男女激情视频一区| 91麻豆国产福利精品| 日韩精品一区在线观看| 久久久高清一区二区三区| 亚洲综合男人的天堂| 久久99国内精品| 在线观看欧美精品| 久久婷婷综合激情| 亚洲国产综合色| 国产一区二区不卡老阿姨| 欧美三级在线看| 国产亚洲精品7777| 男女男精品视频网| 91视视频在线观看入口直接观看www| 337p亚洲精品色噜噜| 国产精品美女久久久久aⅴ国产馆| 亚洲激情图片小说视频| 久久99在线观看| 91在线云播放| 久久这里只有精品6| 一二三四社区欧美黄| 高清国产一区二区三区| 欧美午夜电影一区| 欧美国产一区二区在线观看| 奇米影视7777精品一区二区| 欧美在线一二三| 亚洲欧洲成人av每日更新| 国产美女精品在线| 日韩欧美成人激情| 性感美女极品91精品| 色综合久久久久久久久| 国产精品毛片无遮挡高清| 国内精品久久久久影院色| 欧美裸体bbwbbwbbw| 亚洲成av人在线观看| 欧美在线免费观看亚洲| 一区二区三区欧美久久| 色婷婷精品久久二区二区蜜臀av| 国产精品毛片a∨一区二区三区| 国产露脸91国语对白| 久久午夜电影网| 国产精品亚洲а∨天堂免在线| 精品国产露脸精彩对白| 精品一区二区三区蜜桃| 久久久美女艺术照精彩视频福利播放| 麻豆一区二区三区| 精品福利av导航| 国产成人自拍在线| 国产精品无人区| 91在线观看成人| 亚洲一区二区在线免费看| 欧美欧美午夜aⅴ在线观看| 调教+趴+乳夹+国产+精品| 日韩欧美国产1| 国产成人aaa| 亚洲精品中文字幕乱码三区| 色噜噜狠狠一区二区三区果冻| 一区二区三区国产豹纹内裤在线| 91浏览器在线视频| 亚洲一区二区三区三| 欧美一区二区三区在线视频| 麻豆一区二区三区| 国产精品视频观看| 色综合天天综合在线视频| 视频一区二区中文字幕| 精品国产乱码久久久久久浪潮 | 国产黄色成人av| 国产欧美一区二区三区在线看蜜臀 | 亚洲国产一区二区视频| 91精品国产全国免费观看| 国产成人综合亚洲网站| 一区二区三区日韩精品| 日韩精品一区在线| 91免费看视频| 久久国产精品99久久人人澡| 国产精品视频观看| 日韩一区二区三区av| 成人av在线播放网址| 日韩激情av在线| 国产精品视频在线看| 欧美日产在线观看| 成人免费av网站| 日韩精品免费专区| 国产精品乱人伦中文| 欧美美女一区二区三区| 国产精品乡下勾搭老头1| 五月天激情综合| 国产精品美女久久久久aⅴ | 欧美在线观看视频一区二区| 九九在线精品视频| 亚洲综合一二区| 久久在线免费观看| 欧美群妇大交群中文字幕| 成人免费高清在线观看| 久久99在线观看| 日韩二区在线观看| 亚洲精品日韩综合观看成人91| 精品国内片67194| 欧美日韩成人综合在线一区二区| eeuss鲁一区二区三区| 国产一区二区三区在线观看免费视频 | 午夜影院久久久| 国产精品电影一区二区三区| 精品福利视频一区二区三区| 欧美一区二区日韩| 欧美日韩在线一区二区| 日本久久电影网| 99国产麻豆精品| av网站一区二区三区| 成人精品小蝌蚪| 国产精品夜夜嗨| 国产在线精品一区在线观看麻豆| 亚洲成年人网站在线观看| 悠悠色在线精品| 亚洲美女少妇撒尿| 一区二区三区在线免费视频| 日韩伦理免费电影| 国产精品第四页| 国产免费观看久久| 亚洲欧洲日韩在线| 日韩一区欧美一区| 亚洲欧美日韩在线| 亚洲欧洲一区二区在线播放| 国产精品国产自产拍高清av| 国产精品久久毛片av大全日韩| 中文av一区特黄| 中文字幕一区二区三中文字幕| 国产精品午夜免费| 亚洲另类春色校园小说| 亚洲午夜久久久久久久久电影网 | 日韩精品视频网| 精品一区二区三区的国产在线播放| 日韩电影在线一区二区三区| 麻豆91免费观看| 国产激情一区二区三区| 国产成人av影院| 色综合中文字幕国产| 成人精品免费看| 91美女视频网站| 欧美三级电影在线看| 欧美大尺度电影在线| 国产日产亚洲精品系列| 亚洲精品国产视频| 免费欧美高清视频| 成人av电影在线网| 欧美日韩久久一区| 久久久久久一级片| 夜夜嗨av一区二区三区| 久久精品国内一区二区三区| 成人av免费网站| 欧美一区国产二区| 国产精品你懂的| 青青草成人在线观看| 丁香婷婷综合色啪| 91精品国产综合久久国产大片| 国产亚洲欧洲一区高清在线观看| 亚洲人123区| 激情综合网激情| 欧美艳星brazzers| 国产蜜臀av在线一区二区三区| 一区二区三区在线高清| 国产一区二区精品久久99| 日本精品视频一区二区三区| 日韩三级视频在线观看| 亚洲免费看黄网站| 国产精品综合久久| 正在播放亚洲一区| 一区二区三区视频在线看| 国产**成人网毛片九色|