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

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

?? utils.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * Various utilities for ffmpeg system * Copyright (c) 2000, 2001, 2002 Fabrice Bellard * * This library 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 of the License, or (at your option) any later version. * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include "avformat.h"#undef NDEBUG#include <assert.h>AVInputFormat *first_iformat;AVOutputFormat *first_oformat;AVImageFormat *first_image_format;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;    ext = strrchr(filename, '.');    if (ext) {        ext++;        p = extensions;        for(;;) {            q = ext1;            while (*p != '\0' && *p != ',')                 *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 */    if (!short_name && filename &&         filename_number_test(filename) >= 0 &&        guess_image_format(filename)) {        return guess_format("image", NULL, NULL);    }    /* 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;}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 *//** * Default packet destructor  */static void av_destruct_packet(AVPacket *pkt){    av_free(pkt->data);    pkt->data = NULL; pkt->size = 0;}/** * Allocate the payload of a packet and intialized its fields to default values. * * @param pkt packet * @param size wanted payload size * @return 0 if OK. AVERROR_xxx otherwise. */int av_new_packet(AVPacket *pkt, int size){    void *data = av_malloc(size + FF_INPUT_BUFFER_PADDING_SIZE);    if (!data)        return AVERROR_NOMEM;    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;}/* This is a hack - the packet memory allocation stuff is broken. The   packet is allocated if it was not really allocated */int av_dup_packet(AVPacket *pkt){    if (pkt->destruct != av_destruct_packet) {        uint8_t *data;        /* we duplicate the packet and don't forget to put the padding           again */        data = av_malloc(pkt->size + FF_INPUT_BUFFER_PADDING_SIZE);        if (!data) {            return AVERROR_NOMEM;        }        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;}/* fifo handling */int fifo_init(FifoBuffer *f, int size){    f->buffer = av_malloc(size);    if (!f->buffer)        return -1;    f->end = f->buffer + size;    f->wptr = f->rptr = f->buffer;    return 0;}void fifo_free(FifoBuffer *f){    av_free(f->buffer);}int fifo_size(FifoBuffer *f, uint8_t *rptr){    int size;    if (f->wptr >= rptr) {        size = f->wptr - rptr;    } else {        size = (f->end - rptr) + (f->wptr - f->buffer);    }    return size;}/* get data from the fifo (return -1 if not enough data) */int fifo_read(FifoBuffer *f, uint8_t *buf, int buf_size, uint8_t **rptr_ptr){    uint8_t *rptr = *rptr_ptr;    int size, len;    if (f->wptr >= rptr) {        size = f->wptr - rptr;    } else {        size = (f->end - rptr) + (f->wptr - f->buffer);    }        if (size < buf_size)        return -1;    while (buf_size > 0) {        len = f->end - rptr;        if (len > buf_size)            len = buf_size;        memcpy(buf, rptr, len);        buf += len;        rptr += len;        if (rptr >= f->end)            rptr = f->buffer;        buf_size -= len;    }    *rptr_ptr = rptr;    return 0;}void fifo_write(FifoBuffer *f, uint8_t *buf, int size, uint8_t **wptr_ptr){    int len;    uint8_t *wptr;    wptr = *wptr_ptr;    while (size > 0) {        len = f->end - wptr;        if (len > size)            len = size;        memcpy(wptr, buf, len);        wptr += len;        if (wptr >= f->end)            wptr = f->buffer;        buf += len;        size -= len;    }    *wptr_ptr = wptr;}int filename_number_test(const char *filename){    char buf[1024];    return get_frame_filename(buf, sizeof(buf), filename, 1);}/* guess file format */AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened){    AVInputFormat *fmt1, *fmt;    int score, score_max;    fmt = NULL;    score_max = 0;    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;        }    }    return fmt;}/************************************************************//* 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";}static const AVClass av_format_context_class = { "AVFormatContext", format_to_name };AVFormatContext *av_alloc_format_context(void){    AVFormatContext *ic;    ic = av_mallocz(sizeof(AVFormatContext));    if (!ic) return 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;    ic = av_alloc_format_context();    if (!ic) {        err = AVERROR_NOMEM;        goto fail;    }    ic->iformat = fmt;    if (pb)        ic->pb = *pb;    ic->duration = AV_NOPTS_VALUE;    ic->start_time = AV_NOPTS_VALUE;    pstrcpy(ic->filename, sizeof(ic->filename), 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_NOMEM;            goto fail;        }    } else {        ic->priv_data = NULL;    }    /* default pts settings is MPEG like */    av_set_pts_info(ic, 33, 1, 90000);    ic->last_pkt_pts = AV_NOPTS_VALUE;    ic->last_pkt_dts = AV_NOPTS_VALUE;    ic->last_pkt_stream_pts = AV_NOPTS_VALUE;    ic->last_pkt_stream_dts = AV_NOPTS_VALUE;        err = ic->iformat->read_header(ic, ap);    if (err < 0)        goto fail;    if (pb)        ic->data_offset = url_ftell(&ic->pb);    *ic_ptr = ic;    return 0; fail:    if (ic) {        av_freep(&ic->priv_data);    }    av_free(ic);    *ic_ptr = NULL;    return err;}#define PROBE_BUF_SIZE 2048/** * Open a media file as input. The codec are not opened. Only the file * header (if present) is read. * * @param ic_ptr the opened media file handle is put here * @param filename filename to open. * @param fmt if non NULL, force the file format to use * @param buf_size optional buffer size (zero if default is OK) * @param ap additionnal parameters needed when opening the file (NULL if default) * @return 0 if OK. AVERROR_xxx otherwise. */int av_open_input_file(AVFormatContext **ic_ptr, const char *filename,                        AVInputFormat *fmt,                       int buf_size,                       AVFormatParameters *ap){    int err, must_open_file, file_opened;    uint8_t buf[PROBE_BUF_SIZE];    AVProbeData probe_data, *pd = &probe_data;    ByteIOContext pb1, *pb = &pb1;        file_opened = 0;    pd->filename = "";    if (filename)        pd->filename = filename;    pd->buf = buf;    pd->buf_size = 0;    if (!fmt) {        /* guess format if no file can be opened  */        fmt = av_probe_input_format(pd, 0);    }    /* do not open file if the format does not need it. XXX: specific       hack needed to handle RTSP/TCP */    must_open_file = 1;    if (fmt && (fmt->flags & AVFMT_NOFILE)) {        must_open_file = 0;    }    if (!fmt || must_open_file) {        /* if no file needed do not try to open one */        if (url_fopen(pb, filename, URL_RDONLY) < 0) {            err = AVERROR_IO;            goto fail;        }        file_opened = 1;        if (buf_size > 0) {            url_setbufsize(pb, buf_size);        }        if (!fmt) {            /* read probe data */            pd->buf_size = get_buffer(pb, buf, PROBE_BUF_SIZE);            url_fseek(pb, 0, SEEK_SET);        }    }        /* guess file format */    if (!fmt) {        fmt = av_probe_input_format(pd, 1);    }    /* if still no format found, error */    if (!fmt) {        err = AVERROR_NOFMT;        goto fail;    }            /* XXX: suppress this hack for redirectors */#ifdef CONFIG_NETWORK    if (fmt == &redir_demux) {        err = redir_open(ic_ptr, pb);        url_fclose(pb);        return err;    }#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产色婷婷亚洲99精品小说| 亚洲乱码精品一二三四区日韩在线| 99免费精品在线| 日日夜夜一区二区| 亚洲欧洲一区二区三区| 欧美精品一区二区三区蜜桃| 色88888久久久久久影院野外| 国产主播一区二区| 五月天精品一区二区三区| 亚洲欧洲日韩女同| 久久综合中文字幕| 日韩一区二区免费在线电影| 在线精品亚洲一区二区不卡| www.性欧美| 国产精品自产自拍| 久久精品av麻豆的观看方式| 亚洲不卡av一区二区三区| 亚洲色大成网站www久久九九| 久久久久亚洲蜜桃| 精品少妇一区二区三区视频免付费| 欧美亚洲国产bt| 色爱区综合激月婷婷| www.亚洲在线| 51精品视频一区二区三区| 91网站在线播放| 国产乱子轮精品视频| 免费不卡在线视频| 日韩精品视频网站| 午夜精品久久久久久不卡8050| 亚洲欧美另类在线| 最新日韩av在线| 亚洲欧洲三级电影| 亚洲天堂2014| 亚洲图片激情小说| 中文字幕一区二区视频| 亚洲国产激情av| 亚洲国产精品av| 国产精品久久久久久久久果冻传媒| 久久蜜桃av一区二区天堂| 久久综合给合久久狠狠狠97色69| 91麻豆精品91久久久久同性| 91.com视频| 欧美一区二区三区影视| 欧美一区二区三区日韩| 91精品久久久久久久久99蜜臂| 制服丝袜av成人在线看| 制服丝袜中文字幕亚洲| 日韩亚洲欧美在线观看| 2023国产精品| 中文字幕精品三区| 国产精品乱码一区二区三区软件| 一区二区中文视频| 亚洲最新视频在线观看| 亚洲第一成人在线| 久久电影网站中文字幕| 国产精品亚洲第一区在线暖暖韩国| 粉嫩av一区二区三区| 成人av网站免费观看| 91福利视频网站| 欧美麻豆精品久久久久久| 欧美va日韩va| 亚洲同性同志一二三专区| 亚洲高清免费视频| 国产一区二区三区免费| 99精品国产91久久久久久| 欧美日韩国产美| 日韩视频一区二区在线观看| 国产三区在线成人av| 韩国av一区二区| 国产69精品久久99不卡| 欧洲一区二区三区在线| 欧美videofree性高清杂交| 国产精品午夜春色av| 午夜精品久久久久久久| 国产美女在线观看一区| 色呦呦网站一区| 日韩欧美电影一区| 中文字幕在线免费不卡| 奇米888四色在线精品| 成人听书哪个软件好| 欧美日韩一区二区三区不卡| 久久亚洲精精品中文字幕早川悠里| 亚洲视频一区二区在线观看| 日韩激情av在线| 成人av免费在线观看| 91精品在线观看入口| 国产精品久久久久婷婷二区次| 日韩电影在线一区二区三区| 成人精品国产免费网站| 欧美一区二区三区精品| 亚洲卡通动漫在线| 国产原创一区二区| 欧美美女直播网站| 最新日韩在线视频| 国产资源在线一区| 欧美日韩在线一区二区| 久久精品在线免费观看| 亚洲一区免费视频| 成人性色生活片| 日韩欧美久久久| 亚洲在线一区二区三区| 国产精品亚洲一区二区三区妖精 | 国产精品久久久久久久蜜臀| 亚洲综合免费观看高清完整版| 国产成人亚洲精品狼色在线 | 亚洲天堂免费在线观看视频| 久久爱www久久做| 欧美日韩一区不卡| 中文字幕一区在线| 高清日韩电视剧大全免费| 91 com成人网| 亚洲综合一区二区三区| 成人免费精品视频| www日韩大片| 精品伊人久久久久7777人| 欧美日韩久久久久久| 亚洲精品一二三四区| 99久久精品国产一区| 国产精品久久久久9999吃药| 国产91色综合久久免费分享| 精品久久久久久久久久久久久久久久久 | 91麻豆国产自产在线观看| 国产欧美一区二区在线观看| 激情五月播播久久久精品| 91精品国产91热久久久做人人| 亚洲一区二区三区中文字幕 | 亚洲第一搞黄网站| 日本福利一区二区| 一区二区三区免费网站| 色婷婷国产精品| 亚洲人成网站精品片在线观看| 成人av资源网站| 国产精品欧美久久久久一区二区| 国产乱码精品一区二区三区忘忧草| 日韩三级在线观看| 蜜臀av性久久久久蜜臀aⅴ | 日韩精品一区二区在线观看| 麻豆精品久久久| 精品乱人伦一区二区三区| 韩国成人福利片在线播放| 久久精品视频免费| 波多野结衣中文字幕一区二区三区| 国产精品视频观看| 色偷偷久久人人79超碰人人澡| 亚洲蜜臀av乱码久久精品| 欧美少妇bbb| 日韩成人免费在线| 久久尤物电影视频在线观看| 懂色一区二区三区免费观看| 国产精品久久久久久福利一牛影视| 99精品久久久久久| 亚洲国产视频一区二区| 91精品国产色综合久久不卡蜜臀| 免费成人在线播放| 国产清纯白嫩初高生在线观看91| av中文字幕亚洲| 亚洲成a人在线观看| 精品欧美一区二区久久| 国产成人午夜高潮毛片| 亚洲精品成人少妇| 91精品在线观看入口| 国产精品一二三四五| 亚洲男女一区二区三区| 欧美一级生活片| 福利电影一区二区| 亚洲一区电影777| 精品国产欧美一区二区| 成人高清在线视频| 亚洲成av人片一区二区梦乃 | 精品少妇一区二区三区在线播放 | 91精品国产丝袜白色高跟鞋| 国产伦精品一区二区三区免费 | 国产精品自产自拍| 一区二区三区欧美视频| 欧美一级免费观看| 国产成人在线看| 婷婷中文字幕一区三区| 欧美国产一区二区| 欧美日韩成人高清| 国产成人av影院| 日韩电影免费在线观看网站| 欧美激情资源网| 91麻豆精品久久久久蜜臀| 成人av资源在线观看| 另类小说一区二区三区| 亚洲伦在线观看| 久久亚洲免费视频| 欧美男同性恋视频网站| 成人免费毛片aaaaa**| 免费人成精品欧美精品| 亚洲精品v日韩精品| 国产欧美在线观看一区| 欧美一区二区免费视频| 91福利资源站| 成人激情小说乱人伦| 日本亚洲电影天堂| 一区二区三区精品在线观看| 久久久精品免费网站| 日韩一级片网址| 欧美日韩中文字幕一区|