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

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

?? utils.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:
/* * various utility functions for use within FFmpeg * Copyright (c) 2000, 2001, 2002 Fabrice Bellard * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */#include "avformat.h"#include "libavcodec/opt.h"#include "libavutil/avstring.h"#include "riff.h"#include <sys/time.h>#include <time.h>#undef NDEBUG#include <assert.h>/** * @file libavformat/utils.c * various utility functions for use within FFmpeg */static void av_frac_init(AVFrac *f, int64_t val, int64_t num, int64_t den);static void av_frac_add(AVFrac *f, int64_t incr);/** head of registered input format linked list */AVInputFormat *first_iformat = NULL;/** head of registered output format linked list */AVOutputFormat *first_oformat = NULL;AVInputFormat  *av_iformat_next(AVInputFormat  *f){    if(f) return f->next;    else  return first_iformat;}AVOutputFormat *av_oformat_next(AVOutputFormat *f){    if(f) return f->next;    else  return first_oformat;}void av_register_input_format(AVInputFormat *format){    AVInputFormat **p;    p = &first_iformat;    while (*p != NULL) p = &(*p)->next;    *p = format;    format->next = NULL;}void av_register_output_format(AVOutputFormat *format){    AVOutputFormat **p;    p = &first_oformat;    while (*p != NULL) p = &(*p)->next;    *p = format;    format->next = NULL;}int match_ext(const char *filename, const char *extensions){    const char *ext, *p;    char ext1[32], *q;    if(!filename)        return 0;    ext = strrchr(filename, '.');    if (ext) {        ext++;        p = extensions;        for(;;) {            q = ext1;            while (*p != '\0' && *p != ',' && q-ext1<sizeof(ext1)-1)                *q++ = *p++;            *q = '\0';            if (!strcasecmp(ext1, ext))                return 1;            if (*p == '\0')                break;            p++;        }    }    return 0;}AVOutputFormat *guess_format(const char *short_name, const char *filename,                             const char *mime_type){    AVOutputFormat *fmt, *fmt_found;    int score_max, score;    /* specific test for image sequences */#ifdef CONFIG_IMAGE2_MUXER    if (!short_name && filename &&        av_filename_number_test(filename) &&        av_guess_image2_codec(filename) != CODEC_ID_NONE) {        return guess_format("image2", NULL, NULL);    }#endif    /* Find the proper file type. */    fmt_found = NULL;    score_max = 0;    fmt = first_oformat;    while (fmt != NULL) {        score = 0;        if (fmt->name && short_name && !strcmp(fmt->name, short_name))            score += 100;        if (fmt->mime_type && mime_type && !strcmp(fmt->mime_type, mime_type))            score += 10;        if (filename && fmt->extensions &&            match_ext(filename, fmt->extensions)) {            score += 5;        }        if (score > score_max) {            score_max = score;            fmt_found = fmt;        }        fmt = fmt->next;    }    return fmt_found;}AVOutputFormat *guess_stream_format(const char *short_name, const char *filename,                             const char *mime_type){    AVOutputFormat *fmt = guess_format(short_name, filename, mime_type);    if (fmt) {        AVOutputFormat *stream_fmt;        char stream_format_name[64];        snprintf(stream_format_name, sizeof(stream_format_name), "%s_stream", fmt->name);        stream_fmt = guess_format(stream_format_name, NULL, NULL);        if (stream_fmt)            fmt = stream_fmt;    }    return fmt;}enum CodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,                            const char *filename, const char *mime_type, enum CodecType type){    if(type == CODEC_TYPE_VIDEO){        enum CodecID codec_id= CODEC_ID_NONE;#ifdef CONFIG_IMAGE2_MUXER        if(!strcmp(fmt->name, "image2") || !strcmp(fmt->name, "image2pipe")){            codec_id= av_guess_image2_codec(filename);        }#endif        if(codec_id == CODEC_ID_NONE)            codec_id= fmt->video_codec;        return codec_id;    }else if(type == CODEC_TYPE_AUDIO)        return fmt->audio_codec;    else        return CODEC_ID_NONE;}AVInputFormat *av_find_input_format(const char *short_name){    AVInputFormat *fmt;    for(fmt = first_iformat; fmt != NULL; fmt = fmt->next) {        if (!strcmp(fmt->name, short_name))            return fmt;    }    return NULL;}/* memory handling */void av_destruct_packet(AVPacket *pkt){    av_free(pkt->data);    pkt->data = NULL; pkt->size = 0;}void av_init_packet(AVPacket *pkt){    pkt->pts   = AV_NOPTS_VALUE;    pkt->dts   = AV_NOPTS_VALUE;    pkt->pos   = -1;    pkt->duration = 0;    pkt->flags = 0;    pkt->stream_index = 0;    pkt->destruct= av_destruct_packet_nofree;}int av_new_packet(AVPacket *pkt, int size){    uint8_t *data;    if((unsigned)size > (unsigned)size + FF_INPUT_BUFFER_PADDING_SIZE)        return AVERROR(ENOMEM);    data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);    if (!data)        return AVERROR(ENOMEM);    memset(data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);    av_init_packet(pkt);    pkt->data = data;    pkt->size = size;    pkt->destruct = av_destruct_packet;    return 0;}int av_get_packet(ByteIOContext *s, AVPacket *pkt, int size){    int ret= av_new_packet(pkt, size);    if(ret<0)        return ret;    pkt->pos= url_ftell(s);    ret= get_buffer(s, pkt->data, size);    if(ret<=0)        av_free_packet(pkt);    else        pkt->size= ret;    return ret;}int av_dup_packet(AVPacket *pkt){    if (pkt->destruct != av_destruct_packet) {        uint8_t *data;        /* We duplicate the packet and don't forget to add the padding again. */        if((unsigned)pkt->size > (unsigned)pkt->size + FF_INPUT_BUFFER_PADDING_SIZE)            return AVERROR(ENOMEM);        data = av_malloc(pkt->size + FF_INPUT_BUFFER_PADDING_SIZE);        if (!data) {            return AVERROR(ENOMEM);        }        memcpy(data, pkt->data, pkt->size);        memset(data + pkt->size, 0, FF_INPUT_BUFFER_PADDING_SIZE);        pkt->data = data;        pkt->destruct = av_destruct_packet;    }    return 0;}int av_filename_number_test(const char *filename){    char buf[1024];    return filename && (av_get_frame_filename(buf, sizeof(buf), filename, 1)>=0);}static AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max){    AVInputFormat *fmt1, *fmt;    int score;    fmt = NULL;    for(fmt1 = first_iformat; fmt1 != NULL; fmt1 = fmt1->next) {        if (!is_opened == !(fmt1->flags & AVFMT_NOFILE))            continue;        score = 0;        if (fmt1->read_probe) {            score = fmt1->read_probe(pd);        } else if (fmt1->extensions) {            if (match_ext(pd->filename, fmt1->extensions)) {                score = 50;            }        }        if (score > *score_max) {            *score_max = score;            fmt = fmt1;        }else if (score == *score_max)            fmt = NULL;    }    return fmt;}AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened){    int score=0;    return av_probe_input_format2(pd, is_opened, &score);}/************************************************************//* input media file *//** * Open a media file from an IO stream. 'fmt' must be specified. */static const char* format_to_name(void* ptr){    AVFormatContext* fc = (AVFormatContext*) ptr;    if(fc->iformat) return fc->iformat->name;    else if(fc->oformat) return fc->oformat->name;    else return "NULL";}#define OFFSET(x) offsetof(AVFormatContext,x)#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C//these names are too long to be readable#define E AV_OPT_FLAG_ENCODING_PARAM#define D AV_OPT_FLAG_DECODING_PARAMstatic const AVOption options[]={{"probesize", NULL, OFFSET(probesize), FF_OPT_TYPE_INT, 32000, 32, INT_MAX, D}, /* 32000 from mpegts.c: 1.0 second at 24Mbit/s */{"muxrate", "set mux rate", OFFSET(mux_rate), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},{"packetsize", "set packet size", OFFSET(packet_size), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},{"fflags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, D|E, "fflags"},{"ignidx", "ignore index", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_IGNIDX, INT_MIN, INT_MAX, D, "fflags"},{"genpts", "generate pts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_GENPTS, INT_MIN, INT_MAX, D, "fflags"},{"track", " set the track number", OFFSET(track), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},{"year", "set the year", OFFSET(year), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, E},{"analyzeduration", "how many microseconds are analyzed to estimate duration", OFFSET(max_analyze_duration), FF_OPT_TYPE_INT, 3*AV_TIME_BASE, 0, INT_MAX, D},{"cryptokey", "decryption key", OFFSET(key), FF_OPT_TYPE_BINARY, 0, 0, 0, D},{"indexmem", "max memory used for timestamp index (per stream)", OFFSET(max_index_size), FF_OPT_TYPE_INT, 1<<20, 0, INT_MAX, D},{"rtbufsize", "max memory used for buffering real-time frames", OFFSET(max_picture_buffer), FF_OPT_TYPE_INT, 3041280, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */{"fdebug", "print specific debug info", OFFSET(debug), FF_OPT_TYPE_FLAGS, DEFAULT, 0, INT_MAX, E|D, "fdebug"},{"ts", NULL, 0, FF_OPT_TYPE_CONST, FF_FDEBUG_TS, INT_MIN, INT_MAX, E|D, "fdebug"},{NULL},};#undef E#undef D#undef DEFAULTstatic const AVClass av_format_context_class = { "AVFormatContext", format_to_name, options };static void avformat_get_context_defaults(AVFormatContext *s){    memset(s, 0, sizeof(AVFormatContext));    s->av_class = &av_format_context_class;    av_opt_set_defaults(s);}AVFormatContext *av_alloc_format_context(void){    AVFormatContext *ic;    ic = av_malloc(sizeof(AVFormatContext));    if (!ic) return ic;    avformat_get_context_defaults(ic);    ic->av_class = &av_format_context_class;    return ic;}int av_open_input_stream(AVFormatContext **ic_ptr,                         ByteIOContext *pb, const char *filename,                         AVInputFormat *fmt, AVFormatParameters *ap){    int err;    AVFormatContext *ic;    AVFormatParameters default_ap;    if(!ap){        ap=&default_ap;        memset(ap, 0, sizeof(default_ap));    }    if(!ap->prealloced_context)        ic = av_alloc_format_context();    else        ic = *ic_ptr;    if (!ic) {        err = AVERROR(ENOMEM);        goto fail;    }    ic->iformat = fmt;    ic->pb = pb;    ic->duration = AV_NOPTS_VALUE;    ic->start_time = AV_NOPTS_VALUE;    av_strlcpy(ic->filename, filename, sizeof(ic->filename));    /* allocate private data */    if (fmt->priv_data_size > 0) {        ic->priv_data = av_mallocz(fmt->priv_data_size);        if (!ic->priv_data) {            err = AVERROR(ENOMEM);            goto fail;        }    } else {        ic->priv_data = NULL;    }    if (ic->iformat->read_header) {        err = ic->iformat->read_header(ic, ap);        if (err < 0)            goto fail;    }    if (pb && !ic->data_offset)        ic->data_offset = url_ftell(ic->pb);    *ic_ptr = ic;    return 0; fail:    if (ic) {        int i;        av_freep(&ic->priv_data);        for(i=0;i<ic->nb_streams;i++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看不卡一区| 日韩女优制服丝袜电影| 日韩国产精品久久久| 久久久美女毛片| 欧美在线免费观看亚洲| 成人在线视频首页| 美腿丝袜亚洲综合| 亚洲免费观看在线观看| 久久久久久9999| 91精品国产一区二区三区蜜臀| 成人自拍视频在线观看| 精品一区免费av| 亚洲高清三级视频| 国产精品高清亚洲| 精品久久久久久无| 欧美福利视频导航| 色视频一区二区| 成+人+亚洲+综合天堂| 久久成人免费电影| 日韩av电影一区| 亚洲午夜免费福利视频| 亚洲图片另类小说| 国产精品欧美综合在线| 久久综合久久综合九色| 91精品国产一区二区人妖| 欧美三级日韩三级国产三级| 在线免费一区三区| 91免费国产在线| 成人激情校园春色| 国产69精品一区二区亚洲孕妇 | 中文一区在线播放| 精品国产免费人成电影在线观看四季 | 91精品国产综合久久久久久久久久 | 天天av天天翘天天综合网色鬼国产| 亚洲码国产岛国毛片在线| 国产精品女上位| 国产精品国产三级国产aⅴ原创| 日本一区二区综合亚洲| 国产精品麻豆视频| 欧美国产一区二区| 欧美激情在线一区二区三区| 国产视频一区二区三区在线观看| 日韩欧美一级二级| 欧美成人vr18sexvr| 欧美一区二区三区四区在线观看| 欧美片网站yy| 亚洲私人黄色宅男| 亚洲激情五月婷婷| 精品欧美一区二区在线观看| 欧美日韩精品一区视频| 六月丁香婷婷色狠狠久久| 亚洲精选在线视频| 午夜精品一区在线观看| 国产精品综合一区二区| 欧美中文字幕一区二区三区| 日韩视频123| 日韩精品91亚洲二区在线观看| 国产999精品久久| 9191久久久久久久久久久| 国产精品日韩成人| 久久成人久久爱| 欧美伊人久久大香线蕉综合69| 欧美精品一区二区蜜臀亚洲| 亚洲欧美另类久久久精品| 开心九九激情九九欧美日韩精美视频电影 | 国产精品亲子伦对白| 天天做天天摸天天爽国产一区| 成熟亚洲日本毛茸茸凸凹| 日韩一级免费一区| 亚洲欧美电影院| 国产精品99久久久| 欧美一级片在线观看| 亚洲欧美区自拍先锋| 国产成人综合亚洲91猫咪| 欧美另类z0zxhd电影| 中文字幕一区二区三区蜜月| 国产一区二区三区免费看 | 久久久国产精品麻豆| 日本一区中文字幕 | 亚洲综合丝袜美腿| 成人免费视频网站在线观看| 精品人伦一区二区色婷婷| 五月天婷婷综合| 日本精品一区二区三区四区的功能| 国产肉丝袜一区二区| 国产在线一区二区| 欧美一区二区三区电影| 亚洲大片免费看| 欧美视频在线播放| 一区二区三区在线影院| 91视频.com| 亚洲美女免费在线| av资源站一区| 国产精品国产精品国产专区不蜜| 国产成人午夜高潮毛片| 久久日韩粉嫩一区二区三区| 激情六月婷婷综合| 久久婷婷国产综合国色天香| 久久er精品视频| 欧美大片免费久久精品三p| 日韩一区精品视频| 日韩视频国产视频| 久久精品99久久久| 欧美成人一区二区三区片免费| 性做久久久久久免费观看| 欧美亚一区二区| 亚洲123区在线观看| 3atv一区二区三区| 麻豆精品在线看| 精品卡一卡二卡三卡四在线| 久88久久88久久久| 久久新电视剧免费观看| 国产成人在线视频网站| 国产精品美女久久久久av爽李琼 | 欧美视频在线一区| 97精品超碰一区二区三区| 亚洲男人的天堂av| 欧美性欧美巨大黑白大战| 日韩精品亚洲一区| 26uuu精品一区二区在线观看| 激情综合色播激情啊| 国产精品欧美久久久久一区二区| 色悠悠亚洲一区二区| 亚洲成人综合网站| 日韩免费福利电影在线观看| 国产精品一区2区| 亚洲色图.com| 欧美猛男男办公室激情| 韩国av一区二区三区在线观看| 国产欧美一区二区精品性色 | 国产精品免费视频观看| 色国产综合视频| 日韩av一级电影| 国产亚洲综合在线| 色综合久久精品| 秋霞电影网一区二区| 国产免费成人在线视频| 91精品福利视频| 久久99精品国产.久久久久久| 中文字幕欧美日韩一区| 欧洲人成人精品| 另类成人小视频在线| 国产精品女主播av| 91精品麻豆日日躁夜夜躁| 国产成人免费视频精品含羞草妖精 | 久久久久久久久久久久电影| 色婷婷亚洲精品| 精品在线一区二区| 亚洲愉拍自拍另类高清精品| 精品福利一区二区三区免费视频| 波波电影院一区二区三区| 亚洲mv在线观看| 中文字幕av一区二区三区高| 51精品国自产在线| 99re在线视频这里只有精品| 久久精品国产999大香线蕉| 亚洲欧美怡红院| 日韩精品自拍偷拍| 在线观看亚洲成人| 国产福利91精品一区二区三区| 亚洲一区二区av电影| 国产亚洲美州欧州综合国| 欧美日韩中文国产| 成人午夜碰碰视频| 久久国产欧美日韩精品| 亚洲精选视频免费看| 欧美激情一区二区三区全黄| 欧美一区二区三区四区五区| 色就色 综合激情| 成人综合激情网| 精品一区二区三区的国产在线播放| 亚洲女厕所小便bbb| 国产喷白浆一区二区三区| 777久久久精品| 欧美性一级生活| 99久久精品免费看国产免费软件| 国产一区二区三区四| 奇米在线7777在线精品| 亚洲制服丝袜一区| 国产麻豆成人传媒免费观看| 亚洲欧美另类综合偷拍| 国产精品久久久久久亚洲伦| 久久综合狠狠综合久久综合88| 欧美欧美欧美欧美| 日本高清不卡视频| 91美女在线观看| 成人精品高清在线| 国产一区二区福利| 免费成人性网站| 舔着乳尖日韩一区| 亚洲bdsm女犯bdsm网站| 亚洲国产成人高清精品| 亚洲码国产岛国毛片在线| 中文字幕欧美三区| 中文字幕免费在线观看视频一区| 亚洲精品一区二区三区蜜桃下载 | 日日夜夜精品免费视频| 亚洲夂夂婷婷色拍ww47| 亚洲一二三四在线观看| 亚洲人xxxx|