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

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

?? mp4evops.c

?? Linux下的基于intel的ipp庫的MPEG4編碼程序
?? C
?? 第 1 頁 / 共 2 頁
字號:

			vop_infor->tranp_buf += 4;
			if (0 == mby_indx) {
				for(i=0;i<4;i++){
					vop_infor->tranp_buf[i] = IPP_VIDEO_OPAQUE;
				}
			}			
            mv_cur_mb += 4;
            type_cur_mb ++;

            vop_infor->qp_buf ++;
            vop_infor->qp_buf[0] = vop_infor->cur_qp;
        
        } /* loop for each row */

        /* position the 1st MB in the next row of the VOP */
        vop_infor->cur_mb.y_ptr  += enc_state->frame_step_set.y_step
            * SAMPLE_VIDEO_MB_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_MB_SIZE;
        vop_infor->cur_mb.cb_ptr += enc_state->frame_step_set.cb_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->cur_mb.cr_ptr += enc_state->frame_step_set.cr_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;

        vop_infor->rec_mb.y_ptr  += enc_state->frame_step_set.y_step
            * SAMPLE_VIDEO_MB_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_MB_SIZE;
        vop_infor->rec_mb.cb_ptr += enc_state->frame_step_set.cb_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->rec_mb.cr_ptr += enc_state->frame_step_set.cr_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;

        vop_infor->fwd_ref_mb.y_ptr  += enc_state->frame_step_set.y_step
            * SAMPLE_VIDEO_MB_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_MB_SIZE;
        vop_infor->fwd_ref_mb.cb_ptr += enc_state->frame_step_set.cb_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->fwd_ref_mb.cr_ptr += enc_state->frame_step_set.cr_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;

        vop_infor->fwd_ref_rec_mb.y_ptr  += enc_state->frame_step_set.y_step
            * SAMPLE_VIDEO_MB_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_MB_SIZE;
        vop_infor->fwd_ref_rec_mb.cb_ptr += enc_state->frame_step_set.cb_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->fwd_ref_rec_mb.cr_ptr += enc_state->frame_step_set.cr_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;

        /* update dc coefficient of the 4th block in the last MB each row */
        vop_infor->coef_buf_row.y_ptr[-8] = vop_infor->coef_buf_col.y_ptr[8];

        /* restore ac/dc prediction coefficient row buffer ptrs */
        vop_infor->coef_buf_row.y_ptr  = enc_state->coef_buf_row.y_ptr
            + SAMPLE_VIDEO_MB_SIZE;
        vop_infor->coef_buf_row.cb_ptr = enc_state->coef_buf_row.cb_ptr
            + SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->coef_buf_row.cr_ptr = enc_state->coef_buf_row.cr_ptr
            + SAMPLE_VIDEO_BLOCK_SIZE;

        /* restore the dc coefficient on the left border */
        vop_infor->coef_buf_col.y_ptr [0] = -1;
        vop_infor->coef_buf_col.y_ptr [8] = -1;
        vop_infor->coef_buf_col.cb_ptr[0] = -1;
        vop_infor->coef_buf_col.cr_ptr[0] = -1;

        /* restore qp_buf ptr */
        vop_infor->qp_buf    = enc_state->qp_buf;
        vop_infor->qp_buf[0] = enc_state->qp_buf[enc_state->mb_per_row];

        vop_infor->tranp_buf = enc_state->tranp_buf;
        mv_cur_mb += 2 * 4;
    
    } /* loop for each column */
	return SAMPLE_STATUS_NOERR;
}

/******************************************************************************
// Name:        encode_ivop_mpeg4
// Desicription:
//      Encode the IVOP data in non-ER mode
//
//  Input Arguments:
//      stream_buf  - Pointer to the output video bitstream
//      enc_state   - Pointer to the general state struct of MPEG-4 encoder
//      vop_infor   - Pointer to the vop information struct of MPEG-4 encoder
//
//  Output Arguments:
//      stream_buf  - Pointer to the updated output video bitstream after
//                    compression
//      enc_state   - Pointer to the updated general state struct of MPEG-4
//                    encoder
//      vop_infor   - Pointer to the updated vop information struct of MPEG-4
//                    encoder
//
//  Returns:
//      SAMPLE_STATUS_NOERR      If succeeds
//      SAMPLE_STATUS_ERR        If encoding fails
//  Note:
//  
******************************************************************************/
sample_status encode_ivop_mpeg4(sample_bitstream  *stream_buf,
                                mp4_enc_state     *enc_state,
                                mp4_enc_vop_infor *vop_infor)
{
    int mby_indx = 0, mbx_indx = 0;
    sample_status ret_code;

    /* initialize high-level encoder state */
    init_vop_infor_enc_mpeg4(enc_state, vop_infor);
    
    /* dump vop header information into output stream */
    create_vop_header_mpeg4(stream_buf, enc_state, vop_infor);
    
    /* loop for each column */
    for (mby_indx = 0; mby_indx < enc_state->mb_per_col; mby_indx++) {
        /* loop for each row */
        for (mbx_indx = 0; mbx_indx < enc_state->mb_per_row; mbx_indx++) {
            
            /* determine the mb_type */
            /* rate control is not supported, so quant para doesn't change with
            // macroblocks or frames and mb_type is always IPP_VIDEO_INTRA */
            if (vop_infor->delta_qp) {
                vop_infor->mb_type = IPP_VIDEO_INTRA_Q;
            } else {
                vop_infor->mb_type = IPP_VIDEO_INTRA;
            }
            
            ret_code = encode_intra_mb_mpeg4(stream_buf, enc_state, vop_infor);
            if (SAMPLE_STATUS_NOERR != ret_code) {
                return ret_code;
            }

            vop_infor->mb_indx ++;

            vop_infor->cur_mb.y_ptr  += SAMPLE_VIDEO_MB_SIZE;
            vop_infor->cur_mb.cb_ptr += SAMPLE_VIDEO_BLOCK_SIZE;
            vop_infor->cur_mb.cr_ptr += SAMPLE_VIDEO_BLOCK_SIZE;

            vop_infor->rec_mb.y_ptr  += SAMPLE_VIDEO_MB_SIZE;
            vop_infor->rec_mb.cb_ptr += SAMPLE_VIDEO_BLOCK_SIZE;
            vop_infor->rec_mb.cr_ptr += SAMPLE_VIDEO_BLOCK_SIZE;
            
            vop_infor->coef_buf_row.y_ptr  += SAMPLE_VIDEO_MB_SIZE;
            vop_infor->coef_buf_row.cb_ptr += SAMPLE_VIDEO_BLOCK_SIZE;
            vop_infor->coef_buf_row.cr_ptr += SAMPLE_VIDEO_BLOCK_SIZE;

            /* update qp_buf ptr */
            vop_infor->qp_buf++;
            vop_infor->qp_buf[0] = vop_infor->cur_qp;
        }

        /* position the 1st MB in the next row of the VOP */
        vop_infor->cur_mb.y_ptr  += enc_state->frame_step_set.y_step
            * SAMPLE_VIDEO_MB_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_MB_SIZE;
        vop_infor->cur_mb.cb_ptr += enc_state->frame_step_set.cb_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->cur_mb.cr_ptr += enc_state->frame_step_set.cr_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;

        vop_infor->rec_mb.y_ptr  += enc_state->frame_step_set.y_step
            * SAMPLE_VIDEO_MB_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_MB_SIZE;
        vop_infor->rec_mb.cb_ptr += enc_state->frame_step_set.cb_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->rec_mb.cr_ptr += enc_state->frame_step_set.cr_step
            * SAMPLE_VIDEO_BLOCK_SIZE - enc_state->mb_per_row
            * SAMPLE_VIDEO_BLOCK_SIZE;


        /* update dc coefficient of the 4th block in the last MB each row */
        vop_infor->coef_buf_row.y_ptr[-8] = vop_infor->coef_buf_col.y_ptr[8];

        /* restore ac/dc prediction coefficient row buffer ptrs */
        vop_infor->coef_buf_row.y_ptr  = enc_state->coef_buf_row.y_ptr
            + SAMPLE_VIDEO_MB_SIZE;
        vop_infor->coef_buf_row.cb_ptr = enc_state->coef_buf_row.cb_ptr
            + SAMPLE_VIDEO_BLOCK_SIZE;
        vop_infor->coef_buf_row.cr_ptr = enc_state->coef_buf_row.cr_ptr
            + SAMPLE_VIDEO_BLOCK_SIZE;

        /* restore the dc coefficient on the left border */
        vop_infor->coef_buf_col.y_ptr [0] = -1;
        vop_infor->coef_buf_col.y_ptr [8] = -1;
        vop_infor->coef_buf_col.cb_ptr[0] = -1;
        vop_infor->coef_buf_col.cr_ptr[0] = -1;

        /* restore qp_buf ptr */
        vop_infor->qp_buf    = enc_state->qp_buf;
        vop_infor->qp_buf[0] = enc_state->qp_buf[enc_state->mb_per_row];
    }

    return SAMPLE_STATUS_NOERR;    
}

/******************************************************************************
// Name:            encode_mpeg4
// Description:     Frame encoding function for MPEG-4 baseline encoder,
//                  it includes preprocess for preparing VOP encoding,
//                  VOP encoding and postprocess for preparing output
//
// Input Arguments: 
//      stream_buf      Pointer to the output video bitstream
//      enc_state       Pointer to the general state struct of MPEG-4 encoder
//
//  Output Arguments:
//      stream_buf      Pointer to the updated output video bitstream after
//                      compression.
//      enc_state       Pointer to the updated general state struct of MPEG-4
//                      encoder.
//
//  Returns:    
//      SAMPLE_STATUS_NOERR             If succeeds
//      SAMPLE_STATUS_ERR               If encoding fails
******************************************************************************/

sample_status encode_mpeg4(sample_bitstream *stream_buf,
                           mp4_enc_state    *enc_state)
{
    mp4_enc_vop_infor   vop_infor;
    sample_status       ret_code;

    /* determine the vop_coding_type*/
    if (0 == (enc_state->vop_indx % (enc_state->ivop_interval + 1))) {
        enc_state->vop_coding_type = IVOP;
        ret_code = encode_ivop_mpeg4(stream_buf, enc_state, &vop_infor);
    } else {
        enc_state->vop_coding_type = PVOP;
        expand_frame_enc_mpeg4(enc_state);
        ret_code = encode_pvop_mpeg4(stream_buf, enc_state, &vop_infor);        
    }

    if (SAMPLE_STATUS_NOERR != ret_code) {
        return ret_code;
    }

    /* fill stuffing bits */
    if (!stream_buf->bs_cur_bitoffset) {
        stream_buf->bs_cur_byte[0]  = 0x7F;
    } else {
        stream_buf->bs_cur_byte[0] |=
            bits_stuf_tbl[7 - stream_buf->bs_cur_bitoffset];
        stream_buf->bs_cur_bitoffset = 0;
    }
    stream_buf->bs_cur_byte++;

    /* exchange between current and reference frame */
    set_ref_frame_enc_mpeg4(enc_state);

    /* update input info pic pointers */
    enc_state->info_pic->pic_plane[0] = enc_state->cur_frame.y_ptr;
    enc_state->info_pic->pic_plane[1] = enc_state->cur_frame.cb_ptr;
    enc_state->info_pic->pic_plane[2] = enc_state->cur_frame.cr_ptr;

    enc_state->vop_indx++;

    return SAMPLE_STATUS_NOERR;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www激情久久| 91精品国产一区二区人妖| 日本亚洲电影天堂| 亚洲综合丝袜美腿| 亚洲激情五月婷婷| 亚洲激情自拍偷拍| 亚洲一区二区综合| 午夜精品一区二区三区三上悠亚 | 91亚洲精品久久久蜜桃| 成人app下载| 9人人澡人人爽人人精品| av在线播放成人| 色综合天天性综合| 91豆麻精品91久久久久久| 欧美天天综合网| 欧美日韩在线精品一区二区三区激情| 91久久一区二区| 制服丝袜亚洲播放| 精品粉嫩超白一线天av| 精品久久免费看| 国产欧美综合在线| 夜夜嗨av一区二区三区四季av | 欧美亚洲一区二区在线| 欧美日韩日日骚| 欧美videossexotv100| 欧美高清在线一区| 亚洲美女屁股眼交3| 天天操天天干天天综合网| 蜜臂av日日欢夜夜爽一区| 国产一区二区三区日韩| 91亚洲精品一区二区乱码| 欧美日韩一卡二卡三卡| 国产亚洲人成网站| 一区二区三区小说| 国产自产视频一区二区三区| 成人免费电影视频| 欧美日本在线视频| 欧美国产一区二区在线观看| 亚洲1区2区3区4区| 岛国精品一区二区| 日韩一卡二卡三卡四卡| 国产精品美女久久福利网站| 奇米综合一区二区三区精品视频| 国产精品911| 欧美麻豆精品久久久久久| 欧美韩国日本综合| 另类小说欧美激情| 欧洲一区二区三区免费视频| 久久综合成人精品亚洲另类欧美 | 狠狠色丁香婷综合久久| 99re这里只有精品6| 日韩午夜电影在线观看| 日韩一区中文字幕| 国产一区二区视频在线| 欧美三级日韩在线| 国产精品乱子久久久久| 久久aⅴ国产欧美74aaa| 欧美三级日韩三级国产三级| 国产欧美一区二区精品忘忧草| 午夜精品在线看| 在线播放91灌醉迷j高跟美女| 中文字幕日韩av资源站| 国产一区视频导航| 日韩视频免费观看高清完整版| 一区二区三区国产精品| av欧美精品.com| 久久久久国产精品麻豆ai换脸| 亚洲图片欧美色图| 日韩专区一卡二卡| 91美女在线观看| 欧美三级中文字幕在线观看| 欧美一区二区日韩| 五月天激情综合| 欧美视频一区在线观看| 亚洲最新在线观看| 在线亚洲一区二区| 久久色在线观看| 日韩国产高清影视| 免费观看在线综合色| 国产精品白丝在线| 精品国产一区二区三区不卡 | 欧美一级二级三级乱码| 国产91清纯白嫩初高中在线观看| 亚洲综合激情小说| 国产欧美一区二区精品性| 欧美日韩国产高清一区| www.色综合.com| 国产一区视频在线看| 亚洲午夜免费电影| 1024精品合集| 国产无人区一区二区三区| 日韩一区二区三区电影在线观看| 91蝌蚪porny| 国产成人夜色高潮福利影视| 免费精品视频最新在线| 亚洲韩国精品一区| 亚洲人成亚洲人成在线观看图片 | 欧美亚洲动漫精品| 国产91丝袜在线播放九色| 看片的网站亚洲| 午夜视频在线观看一区二区三区| 国产精品久久精品日日| 久久综合九色综合欧美98| 欧美一区二区三区思思人| 欧美三电影在线| 色综合久久久网| 不卡视频免费播放| 国产91露脸合集magnet| 国产成人精品午夜视频免费| 日本不卡在线视频| 日本美女一区二区三区视频| 亚洲综合精品自拍| 亚洲成av人片一区二区| 一区二区三区国产精华| 亚洲精品ww久久久久久p站| 亚洲天堂精品视频| 中文字幕视频一区| 亚洲女人小视频在线观看| 国产精品久久久久久久久免费相片 | 欧美伊人久久久久久午夜久久久久| 成人av在线看| 不卡免费追剧大全电视剧网站| 成人性视频免费网站| 99re热视频这里只精品| 91女人视频在线观看| 色综合久久天天综合网| 欧美在线免费观看视频| 欧美色窝79yyyycom| 这里是久久伊人| 欧美成人三级电影在线| 亚洲精品一区二区三区四区高清| 欧美精品一区二区蜜臀亚洲| 久久亚洲影视婷婷| 国产精品黄色在线观看| 亚洲综合免费观看高清在线观看 | 欧美高清在线精品一区| 中国色在线观看另类| 亚洲欧美日韩系列| 午夜精品国产更新| 精品写真视频在线观看| 国产91高潮流白浆在线麻豆| 91社区在线播放| 欧美精品免费视频| 久久精品一区二区三区不卡 | 精品国产制服丝袜高跟| 国产女同性恋一区二区| 一区二区三区小说| 精品无人区卡一卡二卡三乱码免费卡| 国内久久婷婷综合| 白白色 亚洲乱淫| 欧美优质美女网站| 日韩精品最新网址| 国产精品久久久久一区二区三区| 亚洲欧美另类久久久精品| 亚洲妇女屁股眼交7| 九色|91porny| 91免费观看国产| 欧美电影免费观看完整版| 国产精品女主播av| 天堂影院一区二区| 国产99久久久国产精品| 欧美日韩在线播放三区四区| 久久久久久久av麻豆果冻| 亚洲国产日韩综合久久精品| 福利视频网站一区二区三区| 欧美日韩国产综合一区二区三区| 国产三级久久久| 美女www一区二区| 色噜噜狠狠成人网p站| wwwwxxxxx欧美| 亚洲国产精品嫩草影院| www.在线成人| 精品国产乱码久久久久久免费| 国产精品自产自拍| 精品视频在线免费| 国产精品不卡在线观看| 九九**精品视频免费播放| 欧美中文字幕一区二区三区亚洲| 精品国产一区二区三区久久影院 | 男人操女人的视频在线观看欧美| 99re成人精品视频| 精品蜜桃在线看| 午夜成人在线视频| 91久久免费观看| 中文字幕亚洲区| 国产麻豆精品theporn| 欧美丰满美乳xxx高潮www| 国产精品久久久久久久久晋中| 久久成人免费日本黄色| 69久久99精品久久久久婷婷| 亚洲线精品一区二区三区八戒| www..com久久爱| 中文字幕av一区 二区| 国产精品一卡二| 国产天堂亚洲国产碰碰| 国产麻豆视频精品| 久久久国产精品不卡| 国产一区二区精品久久| 久久理论电影网| 国产精一品亚洲二区在线视频|