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

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

?? muxers.c

?? 絕對好的源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    return 0;}#endifint open_file_bsf( char *psz_filename, hnd_t *p_handle ){    if ((*p_handle = fopen(psz_filename, "w+b")) == NULL)        return -1;    return 0;}int set_param_bsf( hnd_t handle, x264_param_t *p_param ){    return 0;}int write_nalu_bsf( hnd_t handle, uint8_t *p_nalu, int i_size ){    if (fwrite(p_nalu, i_size, 1, (FILE *)handle) > 0)        return i_size;    return -1;}int set_eop_bsf( hnd_t handle,  x264_picture_t *p_picture ){    return 0;}int close_file_bsf( hnd_t handle ){    if ((handle == NULL) || (handle == stdout))        return 0;    return fclose((FILE *)handle);}/* -- mp4 muxing support ------------------------------------------------- */#ifdef MP4_OUTPUTtypedef struct{    GF_ISOFile *p_file;    GF_AVCConfig *p_config;    GF_ISOSample *p_sample;    int i_track;    uint32_t i_descidx;    int i_time_inc;    int i_time_res;    int i_numframe;    int i_init_delay;    uint8_t b_sps;    uint8_t b_pps;} mp4_t;void recompute_bitrate_mp4(GF_ISOFile *p_file, int i_track){    u32 i, count, di, timescale, time_wnd, rate;    u64 offset;    Double br;    GF_ESD *esd;    esd = gf_isom_get_esd(p_file, i_track, 1);    if (!esd) return;    esd->decoderConfig->avgBitrate = 0;    esd->decoderConfig->maxBitrate = 0;    rate = time_wnd = 0;    timescale = gf_isom_get_media_timescale(p_file, i_track);    count = gf_isom_get_sample_count(p_file, i_track);    for (i=0; i<count; i++) {        GF_ISOSample *samp = gf_isom_get_sample_info(p_file, i_track, i+1, &di, &offset);        if (samp->dataLength>esd->decoderConfig->bufferSizeDB) esd->decoderConfig->bufferSizeDB = samp->dataLength;        if (esd->decoderConfig->bufferSizeDB < samp->dataLength) esd->decoderConfig->bufferSizeDB = samp->dataLength;        esd->decoderConfig->avgBitrate += samp->dataLength;        rate += samp->dataLength;        if (samp->DTS > time_wnd + timescale) {            if (rate > esd->decoderConfig->maxBitrate) esd->decoderConfig->maxBitrate = rate;            time_wnd = samp->DTS;            rate = 0;        }        gf_isom_sample_del(&samp);    }    br = (Double) (s64) gf_isom_get_media_duration(p_file, i_track);    br /= timescale;    esd->decoderConfig->avgBitrate = (u32) (esd->decoderConfig->avgBitrate / br);    /*move to bps*/    esd->decoderConfig->avgBitrate *= 8;    esd->decoderConfig->maxBitrate *= 8;    gf_isom_change_mpeg4_description(p_file, i_track, 1, esd);    gf_odf_desc_del((GF_Descriptor *) esd);}int close_file_mp4( hnd_t handle ){    mp4_t *p_mp4 = (mp4_t *)handle;    if (p_mp4 == NULL)        return 0;    if (p_mp4->p_config)        gf_odf_avc_cfg_del(p_mp4->p_config);    if (p_mp4->p_sample)    {        if (p_mp4->p_sample->data)            free(p_mp4->p_sample->data);        gf_isom_sample_del(&p_mp4->p_sample);    }    if (p_mp4->p_file)    {        recompute_bitrate_mp4(p_mp4->p_file, p_mp4->i_track);        gf_isom_set_pl_indication(p_mp4->p_file, GF_ISOM_PL_VISUAL, 0x15);        gf_isom_set_storage_mode(p_mp4->p_file, GF_ISOM_STORE_FLAT);        gf_isom_close(p_mp4->p_file);    }    free(p_mp4);    return 0;}int open_file_mp4( char *psz_filename, hnd_t *p_handle ){    mp4_t *p_mp4;    *p_handle = NULL;    if ((p_mp4 = (mp4_t *)malloc(sizeof(mp4_t))) == NULL)        return -1;    memset(p_mp4, 0, sizeof(mp4_t));    p_mp4->p_file = gf_isom_open(psz_filename, GF_ISOM_OPEN_WRITE, NULL);    if ((p_mp4->p_sample = gf_isom_sample_new()) == NULL)    {        close_file_mp4( p_mp4 );        return -1;    }    gf_isom_set_brand_info(p_mp4->p_file, GF_ISOM_BRAND_AVC1, 0);    *p_handle = p_mp4;    return 0;}int set_param_mp4( hnd_t handle, x264_param_t *p_param ){    mp4_t *p_mp4 = (mp4_t *)handle;    p_mp4->i_track = gf_isom_new_track(p_mp4->p_file, 0, GF_ISOM_MEDIA_VISUAL,        p_param->i_fps_num);    p_mp4->p_config = gf_odf_avc_cfg_new();    gf_isom_avc_config_new(p_mp4->p_file, p_mp4->i_track, p_mp4->p_config,        NULL, NULL, &p_mp4->i_descidx);    gf_isom_set_track_enabled(p_mp4->p_file, p_mp4->i_track, 1);    gf_isom_set_visual_info(p_mp4->p_file, p_mp4->i_track, p_mp4->i_descidx,        p_param->i_width, p_param->i_height);    p_mp4->p_sample->data = (char *)malloc(p_param->i_width * p_param->i_height * 3 / 2);    if (p_mp4->p_sample->data == NULL)        return -1;    p_mp4->i_time_res = p_param->i_fps_num;    p_mp4->i_time_inc = p_param->i_fps_den;    p_mp4->i_init_delay = p_param->i_bframe ? (p_param->b_bframe_pyramid ? 2 : 1) : 0;    p_mp4->i_init_delay *= p_mp4->i_time_inc;    fprintf(stderr, "mp4 [info]: initial delay %d (scale %d)\n",        p_mp4->i_init_delay, p_mp4->i_time_res);    return 0;}int write_nalu_mp4( hnd_t handle, uint8_t *p_nalu, int i_size ){    mp4_t *p_mp4 = (mp4_t *)handle;    GF_AVCConfigSlot *p_slot;    uint8_t type = p_nalu[4] & 0x1f;    int psize;    switch(type)    {    // sps    case 0x07:        if (!p_mp4->b_sps)        {            p_mp4->p_config->configurationVersion = 1;            p_mp4->p_config->AVCProfileIndication = p_nalu[5];            p_mp4->p_config->profile_compatibility = p_nalu[6];            p_mp4->p_config->AVCLevelIndication = p_nalu[7];            p_slot = (GF_AVCConfigSlot *)malloc(sizeof(GF_AVCConfigSlot));            p_slot->size = i_size - 4;            p_slot->data = (char *)malloc(p_slot->size);            memcpy(p_slot->data, p_nalu + 4, i_size - 4);            gf_list_add(p_mp4->p_config->sequenceParameterSets, p_slot);            p_slot = NULL;            p_mp4->b_sps = 1;        }        break;    // pps    case 0x08:        if (!p_mp4->b_pps)        {            p_slot = (GF_AVCConfigSlot *)malloc(sizeof(GF_AVCConfigSlot));            p_slot->size = i_size - 4;            p_slot->data = (char *)malloc(p_slot->size);            memcpy(p_slot->data, p_nalu + 4, i_size - 4);            gf_list_add(p_mp4->p_config->pictureParameterSets, p_slot);            p_slot = NULL;            p_mp4->b_pps = 1;            if (p_mp4->b_sps)                gf_isom_avc_config_update(p_mp4->p_file, p_mp4->i_track, 1, p_mp4->p_config);        }        break;    // slice, sei    case 0x1:    case 0x5:    case 0x6:        psize = i_size - 4 ;        memcpy(p_mp4->p_sample->data + p_mp4->p_sample->dataLength, p_nalu, i_size);        p_mp4->p_sample->data[p_mp4->p_sample->dataLength + 0] = (psize >> 24) & 0xff;        p_mp4->p_sample->data[p_mp4->p_sample->dataLength + 1] = (psize >> 16) & 0xff;        p_mp4->p_sample->data[p_mp4->p_sample->dataLength + 2] = (psize >> 8) & 0xff;        p_mp4->p_sample->data[p_mp4->p_sample->dataLength + 3] = (psize >> 0) & 0xff;        p_mp4->p_sample->dataLength += i_size;        break;    }    return i_size;}int set_eop_mp4( hnd_t handle, x264_picture_t *p_picture ){    mp4_t *p_mp4 = (mp4_t *)handle;    uint64_t dts = (uint64_t)p_mp4->i_numframe * p_mp4->i_time_inc;    uint64_t pts = (uint64_t)p_picture->i_pts;    int32_t offset = p_mp4->i_init_delay + pts - dts;    p_mp4->p_sample->IsRAP = p_picture->i_type == X264_TYPE_IDR ? 1 : 0;    p_mp4->p_sample->DTS = dts;    p_mp4->p_sample->CTS_Offset = offset;    gf_isom_add_sample(p_mp4->p_file, p_mp4->i_track, p_mp4->i_descidx, p_mp4->p_sample);    p_mp4->p_sample->dataLength = 0;    p_mp4->i_numframe++;    return 0;}#endif/* -- mkv muxing support ------------------------------------------------- */typedef struct{    mk_Writer *w;    uint8_t   *sps, *pps;    int       sps_len, pps_len;    int       width, height, d_width, d_height;    int64_t   frame_duration;    int       fps_num;    int       b_header_written;    char      b_writing_frame;} mkv_t;int write_header_mkv( mkv_t *p_mkv ){    int       ret;    uint8_t   *avcC;    int  avcC_len;    if( p_mkv->sps == NULL || p_mkv->pps == NULL ||        p_mkv->width == 0 || p_mkv->height == 0 ||        p_mkv->d_width == 0 || p_mkv->d_height == 0)        return -1;    avcC_len = 5 + 1 + 2 + p_mkv->sps_len + 1 + 2 + p_mkv->pps_len;    avcC = malloc(avcC_len);    if (avcC == NULL)        return -1;    avcC[0] = 1;    avcC[1] = p_mkv->sps[1];    avcC[2] = p_mkv->sps[2];    avcC[3] = p_mkv->sps[3];    avcC[4] = 0xff; // nalu size length is four bytes    avcC[5] = 0xe1; // one sps    avcC[6] = p_mkv->sps_len >> 8;    avcC[7] = p_mkv->sps_len;    memcpy(avcC+8, p_mkv->sps, p_mkv->sps_len);    avcC[8+p_mkv->sps_len] = 1; // one pps    avcC[9+p_mkv->sps_len] = p_mkv->pps_len >> 8;    avcC[10+p_mkv->sps_len] = p_mkv->pps_len;    memcpy( avcC+11+p_mkv->sps_len, p_mkv->pps, p_mkv->pps_len );    ret = mk_writeHeader( p_mkv->w, "x264", "V_MPEG4/ISO/AVC",                          avcC, avcC_len, p_mkv->frame_duration, 50000,                          p_mkv->width, p_mkv->height,                          p_mkv->d_width, p_mkv->d_height );    free( avcC );    p_mkv->b_header_written = 1;    return ret;}int open_file_mkv( char *psz_filename, hnd_t *p_handle ){    mkv_t *p_mkv;    *p_handle = NULL;    p_mkv  = malloc(sizeof(*p_mkv));    if (p_mkv == NULL)        return -1;    memset(p_mkv, 0, sizeof(*p_mkv));    p_mkv->w = mk_createWriter(psz_filename);    if (p_mkv->w == NULL)    {        free(p_mkv);        return -1;    }    *p_handle = p_mkv;    return 0;}int set_param_mkv( hnd_t handle, x264_param_t *p_param ){    mkv_t   *p_mkv = handle;    int64_t dw, dh;    if( p_param->i_fps_num > 0 )    {        p_mkv->frame_duration = (int64_t)p_param->i_fps_den *                                (int64_t)1000000000 / p_param->i_fps_num;        p_mkv->fps_num = p_param->i_fps_num;    }    else    {        p_mkv->frame_duration = 0;        p_mkv->fps_num = 1;    }    p_mkv->width = p_param->i_width;    p_mkv->height = p_param->i_height;    if( p_param->vui.i_sar_width && p_param->vui.i_sar_height )    {        dw = (int64_t)p_param->i_width  * p_param->vui.i_sar_width;        dh = (int64_t)p_param->i_height * p_param->vui.i_sar_height;    }    else    {        dw = p_param->i_width;        dh = p_param->i_height;    }    if( dw > 0 && dh > 0 )    {        int64_t a = dw, b = dh;        for (;;)        {            int64_t c = a % b;            if( c == 0 )              break;            a = b;            b = c;        }        dw /= b;        dh /= b;    }    p_mkv->d_width = (int)dw;    p_mkv->d_height = (int)dh;    return 0;}int write_nalu_mkv( hnd_t handle, uint8_t *p_nalu, int i_size ){    mkv_t *p_mkv = handle;    uint8_t type = p_nalu[4] & 0x1f;    uint8_t dsize[4];    int psize;    switch( type )    {    // sps    case 0x07:        if( !p_mkv->sps )        {            p_mkv->sps = malloc(i_size - 4);            if (p_mkv->sps == NULL)                return -1;            p_mkv->sps_len = i_size - 4;            memcpy(p_mkv->sps, p_nalu + 4, i_size - 4);        }        break;    // pps    case 0x08:        if( !p_mkv->pps )        {            p_mkv->pps = malloc(i_size - 4);            if (p_mkv->pps == NULL)                return -1;            p_mkv->pps_len = i_size - 4;            memcpy(p_mkv->pps, p_nalu + 4, i_size - 4);        }        break;    // slice, sei    case 0x1:    case 0x5:    case 0x6:        if( !p_mkv->b_writing_frame )        {            if( mk_startFrame(p_mkv->w) < 0 )                return -1;            p_mkv->b_writing_frame = 1;        }        psize = i_size - 4 ;        dsize[0] = psize >> 24;        dsize[1] = psize >> 16;        dsize[2] = psize >> 8;        dsize[3] = psize;        if( mk_addFrameData(p_mkv->w, dsize, 4) < 0 ||            mk_addFrameData(p_mkv->w, p_nalu + 4, i_size - 4) < 0 )            return -1;        break;    default:        break;    }    if( !p_mkv->b_header_written && p_mkv->pps && p_mkv->sps &&        write_header_mkv(p_mkv) < 0 )        return -1;    return i_size;}int set_eop_mkv( hnd_t handle, x264_picture_t *p_picture ){    mkv_t *p_mkv = handle;    int64_t i_stamp = (int64_t)(p_picture->i_pts * 1e9 / p_mkv->fps_num);    p_mkv->b_writing_frame = 0;    return mk_setFrameFlags( p_mkv->w, i_stamp,                             p_picture->i_type == X264_TYPE_IDR );}int close_file_mkv( hnd_t handle ){    mkv_t *p_mkv = handle;    int   ret;    if( p_mkv->sps )        free( p_mkv->sps );    if( p_mkv->pps )        free( p_mkv->pps );    ret = mk_close(p_mkv->w);    free( p_mkv );    return ret;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道综合亚洲| 精品国产制服丝袜高跟| 91精品国产综合久久婷婷香蕉 | 久久99精品久久久久久| 99精品久久只有精品| 日韩一区二区免费在线观看| 国产精品久久久久桃色tv| 美腿丝袜在线亚洲一区| 色婷婷国产精品| 欧美国产一区在线| 国内成人自拍视频| 在线综合亚洲欧美在线视频| 中文字幕在线播放不卡一区| 久久成人久久爱| 欧美日韩综合色| 亚洲精选视频免费看| 国产v日产∨综合v精品视频| 精品乱人伦一区二区三区| 亚洲国产一区二区三区青草影视| www.日韩精品| 国产视频一区在线观看| 精品一区二区三区在线观看国产| 在线看日本不卡| 亚洲精品中文在线| 92国产精品观看| 国产精品视频麻豆| 国产99久久久国产精品潘金| 26uuu成人网一区二区三区| 午夜精品福利一区二区蜜股av | 欧美日韩国产首页在线观看| 一区二区三区四区精品在线视频| 成人动漫中文字幕| 国产精品妹子av| 99综合电影在线视频| 国产精品美日韩| 91免费观看视频在线| 成人欧美一区二区三区| 一本一道波多野结衣一区二区 | 欧美极品aⅴ影院| 国产精品一区二区久久精品爱涩 | 欧美妇女性影城| 亚洲国产精品综合小说图片区| 欧美中文字幕亚洲一区二区va在线| 最新不卡av在线| 91黄色免费版| 日韩**一区毛片| 精品久久人人做人人爽| 国产成人免费视频网站 | av在线播放成人| 亚洲欧洲美洲综合色网| 欧美唯美清纯偷拍| 五月激情综合婷婷| 精品国免费一区二区三区| 国产精品资源网| 亚洲少妇30p| 欧美酷刑日本凌虐凌虐| 久久99精品久久久久| 国产欧美一区二区精品性| 91在线免费播放| 日韩国产一区二| 久久久久亚洲蜜桃| 在线一区二区三区四区| 美女www一区二区| 日本一区二区成人| 欧美丝袜丝交足nylons| 久久99这里只有精品| 国产亚洲精品7777| 欧美少妇bbb| 国产一区二区主播在线| 另类的小说在线视频另类成人小视频在线| 国产精品区一区二区三区| 亚洲成人av在线电影| 日韩美女视频在线| 国产成人av网站| 一区二区三区不卡视频| 精品福利一区二区三区免费视频| 成人av中文字幕| 蜜桃久久av一区| 日韩美女啊v在线免费观看| 666欧美在线视频| 成人国产精品视频| 亚洲超丰满肉感bbw| 中文幕一区二区三区久久蜜桃| 欧美日韩国产区一| 波多野结衣精品在线| 免费不卡在线视频| 亚洲一区视频在线观看视频| 国产校园另类小说区| 777色狠狠一区二区三区| 99久久免费精品| 久久99精品久久久久久国产越南| 亚洲国产aⅴ天堂久久| 国产精品免费看片| 久久综合一区二区| 欧美一级日韩一级| 在线观看日韩国产| 色综合一个色综合亚洲| 国产91丝袜在线观看| 蜜臀va亚洲va欧美va天堂| 一区二区三区久久| 国产精品国产成人国产三级| 久久九九全国免费| 精品国产一区二区亚洲人成毛片| 欧美日韩国产精品自在自线| 色婷婷亚洲婷婷| 99久久夜色精品国产网站| 国产成人免费av在线| 九九热在线视频观看这里只有精品| 无吗不卡中文字幕| 亚洲成人久久影院| 午夜不卡av在线| 无吗不卡中文字幕| 日韩精品乱码av一区二区| 亚洲成人精品一区二区| 亚洲成人av电影在线| 一区二区三区精品视频在线| 一区二区三区色| 亚洲成国产人片在线观看| 亚洲综合久久av| 亚洲愉拍自拍另类高清精品| 亚洲激情欧美激情| 一区二区久久久| 图片区小说区国产精品视频| 性做久久久久久免费观看欧美| 亚洲高清一区二区三区| 丝袜亚洲精品中文字幕一区| 无码av免费一区二区三区试看| 日韩高清不卡一区二区三区| 免费的成人av| 国产成人亚洲综合色影视| 99免费精品在线观看| 色综合欧美在线| 欧美视频在线观看一区二区| 日韩视频在线观看一区二区| 精品日韩成人av| 欧美国产一区二区在线观看| 亚洲免费在线电影| 婷婷六月综合亚洲| 国产一区二区三区在线观看精品 | 日韩码欧中文字| 亚洲最新视频在线观看| 天堂成人免费av电影一区| 国产综合色在线视频区| av在线不卡免费看| 欧美精品在线观看播放| 国产亚洲一区二区三区四区| 亚洲欧美自拍偷拍| 丝袜美腿高跟呻吟高潮一区| 国产黄人亚洲片| 在线区一区二视频| 精品久久免费看| 亚洲美女在线国产| 免费在线观看一区| 成人av网站在线观看免费| 欧美伦理视频网站| 欧美国产激情二区三区| 五月综合激情网| 国产精品自拍一区| 欧美精品第1页| 国产精品美女久久久久久久| 视频一区二区三区入口| av电影在线观看一区| 欧美电视剧免费全集观看| 亚洲精品欧美综合四区| 精品亚洲成av人在线观看| 色婷婷综合久久久中文字幕| 久久久噜噜噜久噜久久综合| 婷婷中文字幕综合| caoporen国产精品视频| 日韩片之四级片| 一区二区三区成人| 成人性生交大片免费看中文| 91麻豆精品国产自产在线观看一区| 国产精品久久久久7777按摩| 另类中文字幕网| 欧美亚洲一区三区| 欧美精彩视频一区二区三区| 美女在线观看视频一区二区| 91福利国产精品| 国产精品久久久久久亚洲毛片| 麻豆国产精品777777在线| 欧美日韩成人在线| 亚洲乱码中文字幕| youjizz久久| 久久精品视频在线看| 久久国产精品色| 日韩一区二区三区视频| 亚洲第一主播视频| 欧美一a一片一级一片| 一区二区三区四区国产精品| 91在线国内视频| 亚洲欧洲无码一区二区三区| 成人在线视频一区二区| 久久久久久久久久久久电影| 国内精品视频一区二区三区八戒| 欧美日韩国产bt| 日韩综合一区二区| 9191久久久久久久久久久| 亚洲h精品动漫在线观看| 欧美四级电影网|