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

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

?? mp4esynt.c

?? Linux下的基于intel的ipp庫的MPEG4編碼程序
?? C
字號:
/******************************************************************************
//               INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in accordance with the terms of that agreement.
//        Copyright (c) 2003 Intel Corporation. All Rights Reserved.
//
//  Description:    Stream syntax generation functions of MPEG-4 video encoder
//                  sample code for Intel(R) Integrated Performance Primitives.
//  Functions List:
//		create_voandvol_header_mpeg4()
//		create_vop_header_mpeg4()
//		create_mb_mpeg4()
******************************************************************************/

#include "sampmp4.h"

/******************************************************************************
// Name:            create_voandvol_header_mpeg4
// Description:     Create visual object and visual object layer header in
//                  bitstream
// Input Arguments:
//      enc_state   - Pointer to the general state structure of MPEG-4 encoder
//
//  Output Arguments:
//      stream_buf  - Pointer to the updated output video stream after the VO
//                    and VOL header is generated
//      enc_state   - Pointer to the updated general state structure of MPEG-4
//                    encoder
//
//  Returns:    
//      SAMPLE_STATUS_NOERR             If succeeds
//
******************************************************************************/
sample_status create_voandvol_header_mpeg4(sample_bitstream *stream_buf,
                                           mp4_enc_state    *enc_state)
{
    Ipp32u code;
    
     
    /* video_object_start_code */    
    code = MPEG4_VOSC | 0x01;
    put_bits_mpeg4(stream_buf, code, 32);    
    
    enc_state->short_head = 0;

    /* video_object_layer_start_code */
    code = MPEG4_VOLSC | 0x0;
    put_bits_mpeg4(stream_buf, code, 32);

    /* random_accessible_vol */
    code = 0;
    put_bits_mpeg4(stream_buf, code , 1);

    /* video_object_type_indication */
    code = 4; /* Main Object Type */
    put_bits_mpeg4(stream_buf, code, 8);

    if (2 == enc_state->vol_verid) {
        /* is_object_layer_identifier */
        code = 1;        
        put_bits_mpeg4(stream_buf, code, 1);
        /* video_object_layer_verid */
        code = enc_state->vol_verid;
        put_bits_mpeg4(stream_buf, code, 4);
        /* video_object_layer_priority */
        code = 1;   /* highest priority */
        put_bits_mpeg4(stream_buf, code, 3);
    } else {
        /* is_object_layer_identifier */
        code = 0;
        put_bits_mpeg4(stream_buf, code, 1);
    }

    /* aspect_ratio_info */
    code = 1; /* 1:1 (square) */
    put_bits_mpeg4(stream_buf, code, 4);

    /* vol_control_parameters */
    code = 0;
    put_bits_mpeg4(stream_buf, code, 1);

    /* video_object_layer_shape */
    code = enc_state->vol_shape_type;
    put_bits_mpeg4(stream_buf, code, 2);

    /* marker_bit */
    INSERT_MARKER_BIT(stream_buf);
    
    /* vop_time_increment_resolution */
    code = enc_state->frame_rate;
    put_bits_mpeg4(stream_buf, code, 16);
    
    enc_state->numbits_time_incr = 1;
    if (1 < code) {
        code -= 1;
        while (1 < code) {
            code = code >> 1;
            enc_state->numbits_time_incr ++;
        }
    }

    /* marker_bit */
    INSERT_MARKER_BIT(stream_buf);

    /* fixed_vop_rate */
    code = 0;
    put_bits_mpeg4(stream_buf, code, 1);

    if (BINARYONLY != enc_state->vol_shape_type) {        
        if (RECTANGULAR == enc_state->vol_shape_type) {
            /* marker_bit */
            INSERT_MARKER_BIT(stream_buf);

            /* video_object_layer_width */
            code = enc_state->vol_display_width;
            put_bits_mpeg4(stream_buf, code, 13);

            /* marker_bit */
            INSERT_MARKER_BIT(stream_buf);

            /* video_object_layer_height */
            code = enc_state->vol_display_height;
            put_bits_mpeg4(stream_buf, code, 13);

            /* marker_bit */
            INSERT_MARKER_BIT(stream_buf);            
        }
        
        /* interlaced */
        code = 0;
        put_bits_mpeg4(stream_buf, code, 1);

        /* obmc_disable */
        code = enc_state->obmc_disabled;
        put_bits_mpeg4(stream_buf, code, 1);

        code = enc_state->sprite_type;
        if (1 == enc_state->vol_verid) {
            put_bits_mpeg4(stream_buf, code, 1);
        } else {
            put_bits_mpeg4(stream_buf, code, 2);
        }

        if (enc_state->sprite_type) {
            /* add extra source codes if sprite_enable == "static" || "GMC" */
        }
        
        if ((1 != enc_state->vol_verid) && (RECTANGULAR
            != enc_state->vol_shape_type)) {
            /* sadct_disable */
            code = enc_state->sadct_disabled;
            put_bits_mpeg4(stream_buf, code, 1);
        }

        /* not_8_bit */
        code = 0;
        put_bits_mpeg4(stream_buf, code, 1);

        if (code) {
            /* add extra source codes if not 8 bits per pixel */
        }

        if (GRAYSCALE == enc_state->vol_shape_type) {
            /* add extra source codes if vol_shape_type == "grayscale" */
        }
        
        /* quant_type */
        code = enc_state->quant_type;
        put_bits_mpeg4(stream_buf, code, 1);

        if (Q_MPEG4 == enc_state->quant_type) {
            /* load_intra_quant_mat */
            code = 0; /* use default intra_quant_mat */
            put_bits_mpeg4(stream_buf, code, 1);
            
            /* load_nonintra_quant_mat */
            code = 0; /* use default nonintra_quant_mat */
            put_bits_mpeg4(stream_buf, code, 1);

            if (GRAYSCALE == enc_state->vol_shape_type) {
                /* add extra source codes if vol_shape_type == "grayscale" */
            }
        }

        if (1 != enc_state->vol_verid) {
            /* quater_sample */
            code = enc_state->quater_sample;
            put_bits_mpeg4(stream_buf, code, 1);
        }

        /* complexity_estimation_disable */
        code = enc_state->complex_est_disable;
        put_bits_mpeg4(stream_buf, code, 1);

        /* resync_marker_disable */
        code = enc_state->resync_disabled;
        put_bits_mpeg4(stream_buf, code, 1);

        /* data_partitioned */
        code = enc_state->data_patitioned;
        put_bits_mpeg4(stream_buf, code, 1);

        if (enc_state->data_patitioned) {
            /* add extra source codes if data_partitioned == 1 */
        }

        if (1 != enc_state->vol_verid) {
            /* newpred_enable */
            code = enc_state->new_pred;
            put_bits_mpeg4(stream_buf, code, 1);

            if (enc_state->new_pred) {
                /* add extra source codes if newpred_enable == 1 */
            }
            
            /* reduced_resolution_vop_enable */
            code = enc_state->reduced_resolution;
            put_bits_mpeg4(stream_buf, code, 1);
        }
        
        /* scalability */
        code = enc_state->scalable;
        put_bits_mpeg4(stream_buf, code, 1);

        if (enc_state->scalable) {
            /* add extra source codes if scalability == 1 */
        }
    } else {
        /* add extra source code if video_object_shape_type == "binary only" */
    }

    /* fill stuffing bits */
    if (stream_buf->bs_cur_bitoffset) {
        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++;
    }

    return SAMPLE_STATUS_NOERR;
}

/******************************************************************************
// Name:            create_vop_header_mpeg4
// Description:     Create video object plane header in bitstream
// Input Arguments: 
//      enc_state   - Pointer to the general state struct of MPEG-4 encoder
//      vop_infor   - Pointer to the vop information struct
//
//  Output Arguments:
//      stream_buf  - Pointer to the updated output video stream after the VOP
//                    header is generated
//      enc_state   - Pointer to the updated general state struct of MPEG-4
//                    encoder
//      vop_infor   - Pointer to the updated vop information struct
//
//  Returns:
//      SAMPLE_STATUS_NOERR             If succeeds
******************************************************************************/
sample_status create_vop_header_mpeg4 (sample_bitstream  *stream_buf,
                                       mp4_enc_state     *enc_state,
                                       mp4_enc_vop_infor *vop_infor)
{
    Ipp32u  code;
    int     cur_sec, modulo_frame, modulo_time_base;

    /* 32 bit vop_start_code */
    code = (MPEG4_PREFIX_SC << 8) | (MPEG4_SUFFIX_VOPSC);
    put_bits_mpeg4(stream_buf, code, 32);

    /* 2 bit vop_coding_type */
    code = enc_state->vop_coding_type;
    put_bits_mpeg4(stream_buf, code, 2);

    /* modulo_time_base */
    cur_sec = 0;
    modulo_frame = enc_state->vop_indx;
    while (modulo_frame >= enc_state->frame_rate) {
        modulo_frame -= enc_state->frame_rate;
        cur_sec ++;
    }

    modulo_time_base = cur_sec - enc_state->modulo_base_decd;
    while (modulo_time_base--) {
        put_bits_mpeg4(stream_buf, 1, 1);
    }
    put_bits_mpeg4(stream_buf, 0, 1);
    enc_state->modulo_base_disp = enc_state->modulo_base_decd;
    enc_state->modulo_base_decd = cur_sec;

    /* marker_bit */
    INSERT_MARKER_BIT(stream_buf);

    /* vop_time_increment */
    code = modulo_frame;
    put_bits_mpeg4(stream_buf, code, enc_state->numbits_time_incr);

    /* marker_bit */
    INSERT_MARKER_BIT(stream_buf);

    /* 1 bit vop_coded */
    code = enc_state->vop_coded;
    put_bits_mpeg4(stream_buf, code, 1);
    if (0 == code) {
        return SAMPLE_STATUS_NOERR;
    }

    /* 1 bit vop_rounding_type */
    /* video_object_layer_shape can't be "binary only" and vop_coding_type
    // can't be "SVOP" */
    if (PVOP == enc_state->vop_coding_type) {
        code = enc_state->rounding;
        put_bits_mpeg4(stream_buf, code, 1);
    }

    if (BINARYONLY != enc_state->vol_shape_type) {
        /* 3 bit intra_dc_vlc_thr */
        code = enc_state->intra_dc_thr;
        put_bits_mpeg4(stream_buf, code, 3);
    }

    if (BINARYONLY != enc_state->vol_shape_type) {
        
        /* 5 bit vop_quant if not_8_bit is zero */
        code = vop_infor->cur_qp;
        put_bits_mpeg4(stream_buf, code, 5);

        if (IVOP != enc_state->vop_coding_type) {
            /* 3 bit vop_fcode_forward */
            code = vop_infor->fcode_fwd;
            put_bits_mpeg4(stream_buf, code, 3);
        }
    }

    return SAMPLE_STATUS_NOERR;
}

/******************************************************************************
// Name:            create_mb_mpeg4
// Description:     Create the MB header in bitstream
// Input Arguments: 
//      vop_infor   - Pointer to the vop information struct
//
//  Output Arguments:
//      stream_buf  - Pointer to the updated output video stream after the MB
//                    header is generated
//      vop_infor   - Pointer to the updated vop information struct
//
//  Returns:    
//      SAMPLE_STATUS_NOERR     If succeeds
//      SAMPLE_STATUS_ERR       If stream parsing error occurs
******************************************************************************/
sample_status create_mb_mpeg4(sample_bitstream  *stream_buf,
                              mp4_enc_state     *enc_state,
                              mp4_enc_vop_infor *vop_infor)
{
    Ipp32u code = 0;
    int    size = 0, dquant = 0;

    if (BINARYONLY != enc_state->vol_shape_type) {
        
        /* RECTANGULAR shape only */
        if (IVOP != enc_state->vop_coding_type) {
            
            /* 1 bit not_coded */
            code = vop_infor->mb_not_coded;
            put_bits_mpeg4(stream_buf, code, 1);
        }

        if ((IVOP == enc_state->vop_coding_type) || (!vop_infor->mb_not_coded))
        {
            /* mcbpc */
            if (IVOP == enc_state->vop_coding_type) {                
                code = vlc_mcbpc_ivop_tbl[(vop_infor->mb_type - 3) * 4
                    + vop_infor->cbpc].value;
                size = vlc_mcbpc_ivop_tbl[(vop_infor->mb_type - 3) * 4
                    + vop_infor->cbpc].numbit;
                put_bits_mpeg4(stream_buf, code, size);

            } else {
                code = vlc_mcbpc_pvop_tbl[vop_infor->mb_type * 4
                    + vop_infor->cbpc].value;
                size = vlc_mcbpc_pvop_tbl[vop_infor->mb_type * 4
                    + vop_infor->cbpc].numbit;
                put_bits_mpeg4(stream_buf, code, size);
            }

            if ((IPP_VIDEO_INTRA == vop_infor->mb_type) || (IPP_VIDEO_INTRA_Q
                == vop_infor->mb_type)) {

                /* 1 bit ac_pred_flag */
                code = vop_infor->ac_pred_flag;
                size = 1;
                put_bits_mpeg4(stream_buf, code, size);

                /* cbpy */
                /* four non_tranparent blocks in each macroblock */
                code = vlc_cbpy_tbl[vop_infor->cbpy].value;
                size = vlc_cbpy_tbl[vop_infor->cbpy].numbit;
                put_bits_mpeg4(stream_buf, code, size);
            } else {
                /* cbpy */
                /* four non_tranparent blocks in each macroblock */
                code = vlc_cbpy_tbl[15 - vop_infor->cbpy].value;
                size = vlc_cbpy_tbl[15 - vop_infor->cbpy].numbit;
                put_bits_mpeg4(stream_buf, code, size);
            }

            if ((IPP_VIDEO_INTER_Q == vop_infor->mb_type)
                || (IPP_VIDEO_INTRA_Q == vop_infor->mb_type)) {
                /* 2 bit dquant */
                dquant = vop_infor->delta_qp;
                if (dquant) {
                    if (0 < dquant) {
                        code =  1 + dquant;
                    } else {
                        code = -1 - dquant;
                    }
                }                
                size = 2;
                put_bits_mpeg4(stream_buf, code, size);
            }
        }
    }

    return SAMPLE_STATUS_NOERR;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美福利电影网| 亚洲大尺度视频在线观看| 国产精品成人在线观看| 午夜精品久久久| 国产精品99久久久久久似苏梦涵| 欧美性受极品xxxx喷水| 久久久久久久综合狠狠综合| 天使萌一区二区三区免费观看| 福利一区二区在线观看| 日韩欧美国产一区二区三区| 亚洲一区免费视频| av电影在线观看完整版一区二区 | 视频一区视频二区中文| a亚洲天堂av| 久久亚洲精品国产精品紫薇| 婷婷国产v国产偷v亚洲高清| 在线观看视频91| 国产精品久久久久影视| 国产成人a级片| 久久久三级国产网站| 日韩成人dvd| 欧美人妖巨大在线| 亚洲不卡av一区二区三区| www.日韩精品| 国产精品视频第一区| 国产中文字幕精品| 精品国产一二三| 日韩av在线播放中文字幕| 欧美亚洲综合久久| 亚洲一区在线电影| 欧美日韩国产综合一区二区三区 | www.99精品| 亚洲欧洲国产日韩| 成人av高清在线| 国产精品美女久久久久aⅴ| 成人免费视频免费观看| 久久久不卡影院| 国产精品一二三在| 日本一区二区三区免费乱视频| 国产精品一区专区| 欧美国产一区二区| 波多野结衣欧美| 亚洲女同一区二区| 欧美日韩日本视频| 日韩不卡一区二区| 精品成人免费观看| 国产999精品久久久久久| 国产精品久久久久久久浪潮网站 | 一本色道久久综合亚洲91 | 26uuu色噜噜精品一区二区| 国产真实乱子伦精品视频| 久久久久久久久一| 成人免费黄色大片| 亚洲人成精品久久久久久| 在线免费观看日韩欧美| 午夜精品视频一区| 精品国产一区二区三区av性色| 国模少妇一区二区三区| 国产精品久久777777| 欧美亚洲一区二区在线观看| 蜜臀国产一区二区三区在线播放 | 国产精品久久久久久久久图文区 | 久久综合综合久久综合| 中文字幕乱码亚洲精品一区| 在线免费一区三区| 精品一区二区三区免费观看| 欧美国产日韩亚洲一区| 精品视频全国免费看| 国产一区二区三区久久久| 亚洲精品中文在线影院| 日韩免费电影一区| 99久久国产综合精品色伊| 午夜久久电影网| 国产欧美视频一区二区| 欧美日韩国产高清一区二区三区| 国产一区免费电影| 午夜精品福利一区二区蜜股av| 26uuu精品一区二区| 欧美视频一二三区| 成人看片黄a免费看在线| 日韩电影在线观看网站| 亚洲欧美一区二区三区久本道91| 欧美一区二区免费视频| 91久久精品一区二区三区| 精品一区二区在线播放| 亚洲在线中文字幕| 国产精品狼人久久影院观看方式| 91精品免费在线观看| 96av麻豆蜜桃一区二区| 国产一区三区三区| 日韩在线观看一区二区| 亚洲精品免费在线播放| 久久久久国产精品人| 制服丝袜激情欧洲亚洲| 色老综合老女人久久久| 东方aⅴ免费观看久久av| 日本中文字幕一区二区有限公司| 亚洲乱码日产精品bd| 中文字幕欧美区| 2020国产精品久久精品美国| 91麻豆精品国产91久久久更新时间| av日韩在线网站| 福利一区福利二区| 国产精品一二三四五| 狠狠色丁香久久婷婷综合_中 | 精品亚洲欧美一区| 日韩精品免费专区| 亚洲v精品v日韩v欧美v专区| 国产精品第13页| 国产精品色一区二区三区| 久久蜜桃一区二区| 久久精品视频一区二区| 精品久久久久一区| 精品女同一区二区| 日韩欧美国产一区二区三区| 欧美一区二区三区系列电影| 欧美剧在线免费观看网站 | 国产精品欧美精品| 日本一区二区不卡视频| 国产日产精品一区| 日本一区二区电影| 国产精品免费视频网站| 国产精品欧美精品| 亚洲欧美色综合| 亚洲乱码国产乱码精品精98午夜 | 欧美精品 日韩| 欧美日韩一区不卡| 9191久久久久久久久久久| 欧美另类一区二区三区| 欧美一区二区免费| 337p粉嫩大胆噜噜噜噜噜91av| 久久人人爽爽爽人久久久| 国产三级欧美三级日产三级99 | 国产中文字幕精品| 成人一区二区视频| 一本久久a久久精品亚洲| 欧美日韩久久一区| 欧美r级在线观看| 国产亚洲欧美在线| 日韩伦理电影网| 亚洲成精国产精品女| 理论电影国产精品| 成人精品鲁一区一区二区| 一本到一区二区三区| 欧美久久婷婷综合色| 久久久五月婷婷| 亚洲乱码一区二区三区在线观看| 日韩极品在线观看| 国产黄色91视频| 色视频成人在线观看免| 日韩视频免费直播| 亚洲国产精品av| 亚洲3atv精品一区二区三区| 久草热8精品视频在线观看| 丁香婷婷综合色啪| 欧美日韩国产一区| 国产午夜久久久久| 亚洲妇女屁股眼交7| 国产精品一区二区在线播放 | 91精品中文字幕一区二区三区| 欧美电影精品一区二区| 综合精品久久久| 免费观看在线综合| 日本二三区不卡| 久久久噜噜噜久久人人看| 亚洲综合清纯丝袜自拍| 激情都市一区二区| 欧美精品丝袜中出| 最新日韩av在线| 精品亚洲porn| 欧美在线播放高清精品| 欧美激情一区二区在线| 日本不卡一区二区三区高清视频| 成人av网在线| 久久亚洲私人国产精品va媚药| 亚洲综合成人在线| 粉嫩久久99精品久久久久久夜| 欧美伦理电影网| 亚洲欧美偷拍另类a∨色屁股| 精一区二区三区| 91.com在线观看| 亚洲精品视频在线观看网站| 国产a区久久久| 久久嫩草精品久久久精品一| 全部av―极品视觉盛宴亚洲| 欧美日韩你懂的| 一区二区视频免费在线观看| jlzzjlzz国产精品久久| 国产视频一区二区在线观看| 久久超级碰视频| 日韩欧美色综合| 日本不卡不码高清免费观看| 欧美日韩在线精品一区二区三区激情| 国产精品国产三级国产普通话三级| 国产一区二区三区久久久| 日韩视频在线观看一区二区| 欧美96一区二区免费视频| 7878成人国产在线观看| 午夜精品久久久久久不卡8050| 欧美亚洲动漫精品|