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

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

?? movenc.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    put_be16(pb, 0x0100); /* reserved (preferred volume) 1.0 = normal */    put_be16(pb, 0); /* reserved */    put_be32(pb, 0); /* reserved */    put_be32(pb, 0); /* reserved */    /* Matrix structure */    put_be32(pb, 0x00010000); /* reserved */    put_be32(pb, 0x0); /* reserved */    put_be32(pb, 0x0); /* reserved */    put_be32(pb, 0x0); /* reserved */    put_be32(pb, 0x00010000); /* reserved */    put_be32(pb, 0x0); /* reserved */    put_be32(pb, 0x0); /* reserved */    put_be32(pb, 0x0); /* reserved */    put_be32(pb, 0x40000000); /* reserved */    put_be32(pb, 0); /* reserved (preview time) */    put_be32(pb, 0); /* reserved (preview duration) */    put_be32(pb, 0); /* reserved (poster time) */    put_be32(pb, 0); /* reserved (selection time) */    put_be32(pb, 0); /* reserved (selection duration) */    put_be32(pb, 0); /* reserved (current time) */    put_be32(pb, maxTrackID+1); /* Next track id */    return 0x6c;}static int mov_write_udta_tag(ByteIOContext *pb, MOVContext* mov,                              AVFormatContext *s){    int pos = url_ftell(pb);    int i;    put_be32(pb, 0); /* size */    put_tag(pb, "udta");    /* Requirements */    for (i=0; i<MAX_STREAMS; i++) {        if(mov->tracks[i].entry <= 0) continue;        if (mov->tracks[i].enc->codec_id == CODEC_ID_AAC ||            mov->tracks[i].enc->codec_id == CODEC_ID_MPEG4) {            int pos = url_ftell(pb);            put_be32(pb, 0); /* size */            put_tag(pb, "\251req");            put_be16(pb, sizeof("QuickTime 6.0 or greater") - 1);            put_be16(pb, 0);            put_buffer(pb, "QuickTime 6.0 or greater",                       sizeof("QuickTime 6.0 or greater") - 1);            updateSize(pb, pos);            break;        }    }    /* Encoder */    if(!(mov->tracks[0].enc->flags & CODEC_FLAG_BITEXACT))    {        int pos = url_ftell(pb);        put_be32(pb, 0); /* size */        put_tag(pb, "\251enc");        put_be16(pb, sizeof(LIBAVFORMAT_IDENT) - 1); /* string length */        put_be16(pb, 0);        put_buffer(pb, LIBAVFORMAT_IDENT, sizeof(LIBAVFORMAT_IDENT) - 1);        updateSize(pb, pos);    }    if( s->title[0] )    {        int pos = url_ftell(pb);        put_be32(pb, 0); /* size */        put_tag(pb, "\251nam");        put_be16(pb, strlen(s->title)); /* string length */        put_be16(pb, 0);        put_buffer(pb, s->title, strlen(s->title));        updateSize(pb, pos);    }    if( s->author[0] )    {        int pos = url_ftell(pb);        put_be32(pb, 0); /* size */        put_tag(pb, /*"\251aut"*/ "\251day" );        put_be16(pb, strlen(s->author)); /* string length */        put_be16(pb, 0);        put_buffer(pb, s->author, strlen(s->author));        updateSize(pb, pos);    }    if( s->comment[0] )    {        int pos = url_ftell(pb);        put_be32(pb, 0); /* size */        put_tag(pb, "\251des");        put_be16(pb, strlen(s->comment)); /* string length */        put_be16(pb, 0);        put_buffer(pb, s->comment, strlen(s->comment));        updateSize(pb, pos);    }    return updateSize(pb, pos);}static int mov_write_moov_tag(ByteIOContext *pb, MOVContext *mov,                              AVFormatContext *s){    int pos, i;    pos = url_ftell(pb);    put_be32(pb, 0); /* size placeholder*/    put_tag(pb, "moov");    mov->timescale = globalTimescale;    for (i=0; i<MAX_STREAMS; i++) {        if(mov->tracks[i].entry <= 0) continue;        if(mov->tracks[i].enc->codec_type == CODEC_TYPE_VIDEO) {            mov->tracks[i].timescale = mov->tracks[i].enc->frame_rate;            mov->tracks[i].sampleDuration = mov->tracks[i].enc->frame_rate_base;        }        else if(mov->tracks[i].enc->codec_type == CODEC_TYPE_AUDIO) {            /* If AMR, track timescale = 8000, AMR_WB = 16000 */            if(mov->tracks[i].enc->codec_id == CODEC_ID_AMR_NB) {                mov->tracks[i].sampleDuration = 160;  // Bytes per chunk                mov->tracks[i].timescale = 8000;            }            else {                mov->tracks[i].timescale = mov->tracks[i].enc->sample_rate;                mov->tracks[i].sampleDuration = mov->tracks[i].enc->frame_size;            }        }        mov->tracks[i].trackDuration =             mov->tracks[i].sampleCount * mov->tracks[i].sampleDuration;        mov->tracks[i].time = mov->time;        mov->tracks[i].trackID = i+1;    }    mov_write_mvhd_tag(pb, mov);    //mov_write_iods_tag(pb, mov);    for (i=0; i<MAX_STREAMS; i++) {        if(mov->tracks[i].entry > 0) {            mov_write_trak_tag(pb, &(mov->tracks[i]));        }    }    mov_write_udta_tag(pb, mov, s);    return updateSize(pb, pos);}int mov_write_mdat_tag(ByteIOContext *pb, MOVContext* mov){    mov->mdat_pos = url_ftell(pb);     put_be32(pb, 0); /* size placeholder*/    put_tag(pb, "mdat");    return 0;}/* TODO: This needs to be more general */int mov_write_ftyp_tag(ByteIOContext *pb, AVFormatContext *s){    MOVContext *mov = s->priv_data;    put_be32(pb, 0x14 ); /* size */    put_tag(pb, "ftyp");    if ( mov->mode == MODE_3GP )        put_tag(pb, "3gp4");    else        put_tag(pb, "isom");    put_be32(pb, 0x200 );    if ( mov->mode == MODE_3GP )        put_tag(pb, "3gp4");    else        put_tag(pb, "mp41");    return 0x14;}static int mov_write_header(AVFormatContext *s){    ByteIOContext *pb = &s->pb;    MOVContext *mov = s->priv_data;    int i;    /* Default mode == MP4 */    mov->mode = MODE_MP4;    if (s->oformat != NULL) {        if (!strcmp("3gp", s->oformat->name)) mov->mode = MODE_3GP;        else if (!strcmp("mov", s->oformat->name)) mov->mode = MODE_MOV;        if ( mov->mode == MODE_3GP || mov->mode == MODE_MP4 )            mov_write_ftyp_tag(pb,s);    }    for (i=0; i<MAX_STREAMS; i++) {        mov->tracks[i].mode = mov->mode;    }    put_flush_packet(pb);    return 0;}static int mov_write_packet(AVFormatContext *s, int stream_index,                            const uint8_t *buf, int size, int64_t pts){    MOVContext *mov = s->priv_data;    ByteIOContext *pb = &s->pb;    AVCodecContext *enc = &s->streams[stream_index]->codec;    MOVTrack* trk = &mov->tracks[stream_index];    int cl, id;    unsigned int samplesInChunk = 0;    if (url_is_streamed(&s->pb)) return 0; /* Can't handle that */    if (!size) return 0; /* Discard 0 sized packets */    if (enc->codec_type == CODEC_TYPE_VIDEO ) {        samplesInChunk = 1;    }    else if (enc->codec_type == CODEC_TYPE_AUDIO ) {        if( enc->codec_id == CODEC_ID_AMR_NB) {            /* We must find out how many AMR blocks there are in one packet */            static uint16_t packed_size[16] =                {13, 14, 16, 18, 20, 21, 27, 32, 6, 0, 0, 0, 0, 0, 0, 0};            int len = 0;            while (len < size && samplesInChunk < 100) {                len += packed_size[(buf[len] >> 3) & 0x0F];                samplesInChunk++;            }        }        else if(enc->codec_id == CODEC_ID_PCM_ALAW) {            samplesInChunk = size/enc->channels;        }	else if(enc->codec_id == CODEC_ID_PCM_S16BE || enc->codec_id == CODEC_ID_PCM_S16LE) {	    samplesInChunk = size/(2*enc->channels);        }	            else {            samplesInChunk = 1;        }    }    if ((enc->codec_id == CODEC_ID_MPEG4 || enc->codec_id == CODEC_ID_AAC)        && trk->vosLen == 0) {//        assert(enc->extradata_size);        trk->vosLen = enc->extradata_size;        trk->vosData = av_malloc(trk->vosLen);        memcpy(trk->vosData, enc->extradata, trk->vosLen);    }    cl = trk->entry / MOV_INDEX_CLUSTER_SIZE;    id = trk->entry % MOV_INDEX_CLUSTER_SIZE;    if (trk->ents_allocated <= trk->entry) {        trk->cluster = av_realloc(trk->cluster, (cl+1)*sizeof(void*));         if (!trk->cluster)            return -1;        trk->cluster[cl] = av_malloc(MOV_INDEX_CLUSTER_SIZE*sizeof(MOVIentry));        if (!trk->cluster[cl])            return -1;        trk->ents_allocated += MOV_INDEX_CLUSTER_SIZE;    }    if (mov->mdat_written == 0) {        mov_write_mdat_tag(pb, mov);        mov->mdat_written = 1;        mov->time = s->timestamp;    }    trk->cluster[cl][id].pos = url_ftell(pb);    trk->cluster[cl][id].samplesInChunk = samplesInChunk;    trk->cluster[cl][id].size = size;    trk->cluster[cl][id].entries = samplesInChunk;    if(enc->codec_type == CODEC_TYPE_VIDEO) {        trk->cluster[cl][id].key_frame = enc->coded_frame->key_frame;        if(enc->coded_frame->pict_type == FF_I_TYPE)            trk->hasKeyframes = 1;    }    trk->enc = enc;    trk->entry++;    trk->sampleCount += samplesInChunk;    trk->mdat_size += size;    put_buffer(pb, buf, size);    put_flush_packet(pb);    return 0;}static int mov_write_trailer(AVFormatContext *s){    MOVContext *mov = s->priv_data;    ByteIOContext *pb = &s->pb;    int res = 0;    int i, j;    offset_t moov_pos = url_ftell(pb);    /* Write size of mdat tag */    for (i=0, j=0; i<MAX_STREAMS; i++) {        if(mov->tracks[i].ents_allocated > 0) {            j += mov->tracks[i].mdat_size;        }    }    url_fseek(pb, mov->mdat_pos, SEEK_SET);    put_be32(pb, j+8);    url_fseek(pb, moov_pos, SEEK_SET);    mov_write_moov_tag(pb, mov, s);    for (i=0; i<MAX_STREAMS; i++) {        for (j=0; j<mov->tracks[i].ents_allocated/MOV_INDEX_CLUSTER_SIZE; j++) {            av_free(mov->tracks[i].cluster[j]);        }        av_free(mov->tracks[i].cluster);        if( mov->tracks[i].vosLen ) av_free( mov->tracks[i].vosData );        mov->tracks[i].cluster = NULL;        mov->tracks[i].ents_allocated = mov->tracks[i].entry = 0;    }    put_flush_packet(pb);    return res;}static AVOutputFormat mov_oformat = {    "mov",    "mov format",    NULL,    "mov",    sizeof(MOVContext),    CODEC_ID_AAC,    CODEC_ID_MPEG4,    mov_write_header,    mov_write_packet,    mov_write_trailer,};static AVOutputFormat _3gp_oformat = {    "3gp",    "3gp format",    NULL,    "3gp",    sizeof(MOVContext),    CODEC_ID_AMR_NB,    CODEC_ID_H263,    mov_write_header,    mov_write_packet,    mov_write_trailer,};static AVOutputFormat mp4_oformat = {    "mp4",    "mp4 format",    "application/mp4",    "mp4,m4a",    sizeof(MOVContext),    CODEC_ID_AAC,    CODEC_ID_MPEG4,    mov_write_header,    mov_write_packet,    mov_write_trailer,};int movenc_init(void){    av_register_output_format(&mov_oformat);    av_register_output_format(&_3gp_oformat);    av_register_output_format(&mp4_oformat);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色偷偷88欧美精品久久久 | 日韩视频在线一区二区| 一区二区三区在线不卡| 色综合天天综合色综合av | 精品国产免费人成在线观看| 免费高清在线一区| 欧美精品一区二区蜜臀亚洲| 国产成人精品午夜视频免费| 国产精品理论片在线观看| 日本伦理一区二区| 图片区小说区国产精品视频| 日韩一区和二区| 粉嫩嫩av羞羞动漫久久久| 亚洲人成精品久久久久| 欧美日韩国产三级| 久久97超碰色| 中文字幕制服丝袜一区二区三区| 91国产视频在线观看| 六月丁香综合在线视频| 国产精品美女久久久久久久久久久 | 精品少妇一区二区| 国产69精品久久99不卡| 一区二区三区中文字幕电影| 欧美精品1区2区3区| 国产一区二区三区精品视频| 亚洲丝袜另类动漫二区| 欧美一区二区视频观看视频| 国产精品1024久久| 午夜私人影院久久久久| 国产欧美日韩在线| 欧美精品成人一区二区三区四区| 成人妖精视频yjsp地址| 天天影视网天天综合色在线播放 | 在线不卡a资源高清| 国产成人精品亚洲日本在线桃色| 亚洲一区在线播放| 久久久不卡影院| 欧美挠脚心视频网站| 国产xxx精品视频大全| 亚洲电影第三页| 国产精品美女www爽爽爽| 欧美一区二区免费观在线| 99久久99久久免费精品蜜臀| 久久99国产精品免费| 亚洲成在人线在线播放| 国产精品日韩成人| 精品乱人伦一区二区三区| 欧美综合一区二区| 成人av在线电影| 国内精品写真在线观看| 日韩国产欧美一区二区三区| 亚洲精品v日韩精品| 久久久久久久免费视频了| 日韩丝袜美女视频| 欧美日韩一区二区三区四区| av在线一区二区三区| 国产一区二区主播在线| 青青草视频一区| 亚瑟在线精品视频| 亚洲综合在线五月| 亚洲人成在线播放网站岛国| 国产精品视频一二三区| 久久久久久久久久久久电影| 欧美成人国产一区二区| 日韩一区二区在线看| 欧美电影在线免费观看| 精品视频色一区| 欧美影视一区二区三区| 91久久一区二区| 91国偷自产一区二区三区观看| 99久久婷婷国产| 91丝袜美女网| 色婷婷亚洲婷婷| 91国在线观看| 欧美视频一区二区三区在线观看| 97成人超碰视| 在线免费亚洲电影| 欧美性xxxxx极品少妇| 欧美图区在线视频| 欧美日本在线观看| 欧美精品少妇一区二区三区| 在线播放欧美女士性生活| 欧美乱妇15p| 欧美刺激脚交jootjob| 精品国产免费人成电影在线观看四季 | 亚洲色图20p| 一区二区三区四区亚洲| 亚洲国产婷婷综合在线精品| 亚洲精品乱码久久久久久久久 | 国产精品一区二区黑丝| 国产精品99久久久久久久vr| 成人深夜福利app| 色综合久久中文字幕| 欧美三级电影精品| 日韩三级电影网址| 日本一区二区电影| 亚洲尤物视频在线| 九色综合国产一区二区三区| 国产精品99久久不卡二区| 99久久99久久精品国产片果冻| 色综合久久综合中文综合网| 欧美日韩你懂得| 欧美精品一区二区精品网| 国产清纯在线一区二区www| 亚洲天天做日日做天天谢日日欢| 亚洲第一精品在线| 国产精品一区2区| 一本久道久久综合中文字幕| 51精品秘密在线观看| 日韩精品在线看片z| 欧美国产精品久久| 天天操天天干天天综合网| 极品少妇一区二区三区精品视频| 成人av手机在线观看| 制服丝袜亚洲色图| 中文字幕国产一区二区| 午夜精品久久久久| 成人精品电影在线观看| 欧美日本韩国一区二区三区视频 | 久久精品久久99精品久久| 不卡高清视频专区| 6080yy午夜一二三区久久| 亚洲欧洲精品一区二区三区| 视频一区中文字幕国产| 成人手机在线视频| 欧美不卡一区二区| 亚洲一区二三区| 国产电影一区二区三区| 91精品国产综合久久久久久漫画| 国产精品国产a| 精品一区二区在线观看| 欧美三区在线观看| 亚洲欧美综合网| 国产在线一区二区| 4438成人网| 亚洲一区二区黄色| 99久久久精品免费观看国产蜜| 日韩小视频在线观看专区| 17c精品麻豆一区二区免费| 韩国av一区二区三区四区| 欧美日韩视频在线第一区| 亚洲三级小视频| 成人午夜在线播放| 久久久91精品国产一区二区精品| 日韩国产在线观看| 欧美日韩在线免费视频| 亚洲视频在线一区观看| 国产91精品精华液一区二区三区| 日韩美一区二区三区| 日韩精品免费视频人成| 欧美日韩高清在线播放| 亚洲第一成年网| 在线精品观看国产| 亚洲日本韩国一区| 成人一级视频在线观看| 国产欧美精品在线观看| 国内偷窥港台综合视频在线播放| 日韩午夜激情视频| 亚洲成a人片在线不卡一二三区 | 91精品国产一区二区三区| 午夜欧美一区二区三区在线播放| av在线不卡免费看| 国产精品福利在线播放| 高清国产午夜精品久久久久久| 精品美女被调教视频大全网站| 日本aⅴ亚洲精品中文乱码| 欧美高清性hdvideosex| 天天色天天爱天天射综合| 91精品国产一区二区| 看电视剧不卡顿的网站| 欧美不卡一二三| 国内外成人在线| 国产日韩欧美高清在线| 成人av第一页| 亚洲欧美偷拍另类a∨色屁股| 91蝌蚪porny九色| 亚洲一区二区在线免费看| 欧美喷潮久久久xxxxx| 日本sm残虐另类| 久久久国产精华| 99久久国产免费看| 一区二区三区欧美亚洲| 欧美日韩一区三区| 麻豆91免费看| 国产网红主播福利一区二区| 成人av在线播放网站| 一级女性全黄久久生活片免费| 欧美视频一区二区在线观看| 日韩激情在线观看| 久久久久久久久久久久电影| 成人午夜又粗又硬又大| 一区二区三区 在线观看视频| 欧美精品精品一区| 国产一区 二区 三区一级| 国产精品二三区| 欧美日韩精品一区二区三区 | 亚洲国产成人av好男人在线观看| 欧美嫩在线观看| 国产精品一区二区视频| 夜夜操天天操亚洲|