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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nuv.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
字號:
/* * NuppelVideo demuxer. * Copyright (c) 2006 Reimar Doeffinger. * * 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 "riff.h"typedef struct {    int v_id;    int a_id;    int rtjpg_video;} NUVContext;typedef enum {    NUV_VIDEO = 'V',    NUV_EXTRADATA = 'D',    NUV_AUDIO = 'A',    NUV_SEEKP = 'R',    NUV_MYTHEXT = 'X'} frametype_t;static int nuv_probe(AVProbeData *p) {    if (!memcmp(p->buf, "NuppelVideo", 12))        return AVPROBE_SCORE_MAX;    if (!memcmp(p->buf, "MythTVVideo", 12))        return AVPROBE_SCORE_MAX;    return 0;}//! little macro to sanitize packet size#define PKTSIZE(s) (s &  0xffffff)/** * \brief read until we found all data needed for decoding * \param vst video stream of which to change parameters * \param ast video stream of which to change parameters * \param myth set if this is a MythTVVideo format file * \return 1 if all required codec data was found */static int get_codec_data(ByteIOContext *pb, AVStream *vst,                          AVStream *ast, int myth) {    frametype_t frametype;    if (!vst && !myth)        return 1; // no codec data needed    while (!url_feof(pb)) {        int size, subtype;        frametype = get_byte(pb);        switch (frametype) {            case NUV_EXTRADATA:                subtype = get_byte(pb);                url_fskip(pb, 6);                size = PKTSIZE(get_le32(pb));                if (vst && subtype == 'R') {                    vst->codec->extradata_size = size;                    vst->codec->extradata = av_malloc(size);                    get_buffer(pb, vst->codec->extradata, size);                    size = 0;                    if (!myth)                        return 1;                }                break;            case NUV_MYTHEXT:                url_fskip(pb, 7);                size = PKTSIZE(get_le32(pb));                if (size != 128 * 4)                    break;                get_le32(pb); // version                if (vst) {                    vst->codec->codec_tag = get_le32(pb);                    vst->codec->codec_id =                        codec_get_id(codec_bmp_tags, vst->codec->codec_tag);                    if (vst->codec->codec_tag == MKTAG('R', 'J', 'P', 'G'))                        vst->codec->codec_id = CODEC_ID_NUV;                } else                    url_fskip(pb, 4);                if (ast) {                    ast->codec->codec_tag = get_le32(pb);                    ast->codec->sample_rate = get_le32(pb);                    ast->codec->bits_per_sample = get_le32(pb);                    ast->codec->channels = get_le32(pb);                    ast->codec->codec_id =                        wav_codec_get_id(ast->codec->codec_tag,                                         ast->codec->bits_per_sample);                    ast->need_parsing = AVSTREAM_PARSE_FULL;                } else                    url_fskip(pb, 4 * 4);                size -= 6 * 4;                url_fskip(pb, size);                return 1;            case NUV_SEEKP:                size = 11;                break;            default:                url_fskip(pb, 7);                size = PKTSIZE(get_le32(pb));                break;        }        url_fskip(pb, size);    }    return 0;}static int nuv_header(AVFormatContext *s, AVFormatParameters *ap) {    NUVContext *ctx = s->priv_data;    ByteIOContext *pb = s->pb;    char id_string[12], version_string[5];    double aspect, fps;    int is_mythtv, width, height, v_packs, a_packs;    int stream_nr = 0;    AVStream *vst = NULL, *ast = NULL;    get_buffer(pb, id_string, 12);    is_mythtv = !memcmp(id_string, "MythTVVideo", 12);    get_buffer(pb, version_string, 5);    url_fskip(pb, 3); // padding    width = get_le32(pb);    height = get_le32(pb);    get_le32(pb); // unused, "desiredwidth"    get_le32(pb); // unused, "desiredheight"    get_byte(pb); // 'P' == progressive, 'I' == interlaced    url_fskip(pb, 3); // padding    aspect = av_int2dbl(get_le64(pb));    fps = av_int2dbl(get_le64(pb));    // number of packets per stream type, -1 means unknown, e.g. streaming    v_packs = get_le32(pb);    a_packs = get_le32(pb);    get_le32(pb); // text    get_le32(pb); // keyframe distance (?)    if (v_packs) {        ctx->v_id = stream_nr++;        vst = av_new_stream(s, ctx->v_id);        if (!vst)            return AVERROR(ENOMEM);        vst->codec->codec_type = CODEC_TYPE_VIDEO;        vst->codec->codec_id = CODEC_ID_NUV;        vst->codec->width = width;        vst->codec->height = height;        vst->codec->bits_per_sample = 10;        vst->codec->sample_aspect_ratio = av_d2q(aspect, 10000);        vst->r_frame_rate = av_d2q(fps, 60000);        av_set_pts_info(vst, 32, 1, 1000);    } else        ctx->v_id = -1;    if (a_packs) {        ctx->a_id = stream_nr++;        ast = av_new_stream(s, ctx->a_id);        if (!ast)            return AVERROR(ENOMEM);        ast->codec->codec_type = CODEC_TYPE_AUDIO;        ast->codec->codec_id = CODEC_ID_PCM_S16LE;        ast->codec->channels = 2;        ast->codec->sample_rate = 44100;        ast->codec->bit_rate = 2 * 2 * 44100 * 8;        ast->codec->block_align = 2 * 2;        ast->codec->bits_per_sample = 16;        av_set_pts_info(ast, 32, 1, 1000);    } else        ctx->a_id = -1;    get_codec_data(pb, vst, ast, is_mythtv);    ctx->rtjpg_video = vst && vst->codec->codec_id == CODEC_ID_NUV;    return 0;}#define HDRSIZE 12static int nuv_packet(AVFormatContext *s, AVPacket *pkt) {    NUVContext *ctx = s->priv_data;    ByteIOContext *pb = s->pb;    uint8_t hdr[HDRSIZE];    frametype_t frametype;    int ret, size;    while (!url_feof(pb)) {        int copyhdrsize = ctx->rtjpg_video ? HDRSIZE : 0;        ret = get_buffer(pb, hdr, HDRSIZE);        if (ret <= 0)            return ret ? ret : -1;        frametype = hdr[0];        size = PKTSIZE(AV_RL32(&hdr[8]));        switch (frametype) {            case NUV_EXTRADATA:                if (!ctx->rtjpg_video) {                    url_fskip(pb, size);                    break;                }            case NUV_VIDEO:                if (ctx->v_id < 0) {                    av_log(s, AV_LOG_ERROR, "Video packet in file without video stream!\n");                    url_fskip(pb, size);                    break;                }                ret = av_new_packet(pkt, copyhdrsize + size);                if (ret < 0)                    return ret;                pkt->pos = url_ftell(pb) - copyhdrsize;                pkt->pts = AV_RL32(&hdr[4]);                pkt->stream_index = ctx->v_id;                memcpy(pkt->data, hdr, copyhdrsize);                ret = get_buffer(pb, pkt->data + copyhdrsize, size);                return ret;            case NUV_AUDIO:                if (ctx->a_id < 0) {                    av_log(s, AV_LOG_ERROR, "Audio packet in file without audio stream!\n");                    url_fskip(pb, size);                    break;                }                ret = av_get_packet(pb, pkt, size);                pkt->pts = AV_RL32(&hdr[4]);                pkt->stream_index = ctx->a_id;                return ret;            case NUV_SEEKP:                // contains no data, size value is invalid                break;            default:                url_fskip(pb, size);                break;        }    }    return AVERROR(EIO);}AVInputFormat nuv_demuxer = {    "nuv",    NULL_IF_CONFIG_SMALL("NuppelVideo format"),    sizeof(NUVContext),    nuv_probe,    nuv_header,    nuv_packet,    NULL,    NULL,};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看av不卡| 欧美一级艳片视频免费观看| 亚洲一二三四在线| 精品国产一区二区国模嫣然| 91亚洲精华国产精华精华液| 激情综合网天天干| 一区二区三区加勒比av| 久久青草欧美一区二区三区| 91久久精品一区二区| 国产一区不卡精品| 一区二区三区免费| 久久精品国产一区二区三区免费看| 国产精品久久久久天堂| 91精品欧美福利在线观看| 99精品视频中文字幕| 国产自产2019最新不卡| 亚洲电影一级黄| 亚洲啪啪综合av一区二区三区| 欧美tickling网站挠脚心| 欧美日韩中文字幕一区二区| 成人丝袜高跟foot| 国产一区二区三区电影在线观看 | 一道本成人在线| 岛国精品在线观看| 国产美女娇喘av呻吟久久| 日韩精品久久理论片| 亚洲一区二区中文在线| 中文字幕佐山爱一区二区免费| 国产喷白浆一区二区三区| 日韩女优电影在线观看| 欧美顶级少妇做爰| 8v天堂国产在线一区二区| 欧美性猛交一区二区三区精品| 91丨九色丨国产丨porny| 波多野结衣亚洲| 成人综合日日夜夜| aaa欧美日韩| 国产成人亚洲综合色影视| 国内久久婷婷综合| 国产成人一区在线| 国产 日韩 欧美大片| 成人精品国产一区二区4080| 高清成人免费视频| 91在线视频播放| 91免费看视频| 欧美亚洲一区二区在线| 欧美丝袜丝交足nylons图片| 欧美乱妇一区二区三区不卡视频| 欧美影视一区二区三区| 欧美日韩大陆在线| 欧美一区二区在线不卡| 日韩三级视频在线观看| 精品久久久久99| 欧美精品三级日韩久久| 91精品国产综合久久久久久| 91精品国产入口| 日韩精品专区在线影院重磅| 久久综合九色欧美综合狠狠| 久久久久国产精品麻豆| 国产精品久久久久久久久动漫 | 亚洲国产精品高清| 久久99精品久久久久久国产越南| 一区二区在线电影| 26uuuu精品一区二区| 欧美精品一区二区三区高清aⅴ | 欧美一区二区三区人| 日韩免费观看高清完整版| xvideos.蜜桃一区二区| 亚洲欧洲成人av每日更新| 亚洲在线视频网站| 蜜臀久久久99精品久久久久久| 国产成人精品影院| 精品视频在线免费观看| 日韩欧美高清在线| 一区精品在线播放| 午夜成人免费视频| 国产传媒日韩欧美成人| 欧美色国产精品| 国产色综合一区| 亚洲一区二区中文在线| 精品一区二区三区在线播放| 欧美三级韩国三级日本一级| 久久久美女毛片| 亚洲一区在线观看免费 | 成人国产亚洲欧美成人综合网| 亚洲视频一区在线观看| 一区二区三区四区在线免费观看 | 国产精品高清亚洲| 亚洲精品伦理在线| 久久er精品视频| 色综合天天综合在线视频| 欧美日韩亚洲另类| 久久久精品tv| 日韩成人午夜精品| 成人动漫一区二区| 欧美刺激脚交jootjob| 亚洲三级视频在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美在线免费观看视频| 久久先锋影音av| 日韩精品乱码av一区二区| 99久久精品免费精品国产| 欧美一区三区二区| 亚洲一区二区精品视频| 国产成人免费视| 日韩欧美美女一区二区三区| 一区二区三区国产精品| 成人国产精品免费观看| 欧美成人在线直播| 青青国产91久久久久久| 欧美亚洲精品一区| 中文字幕综合网| 国产白丝精品91爽爽久久| 日韩欧美国产综合在线一区二区三区 | 欧美岛国在线观看| 亚洲第一福利一区| 色综合天天综合狠狠| 中文天堂在线一区| 国产美女主播视频一区| 日韩美女天天操| 日日夜夜精品视频天天综合网| 91视频.com| 国产精品久久久久毛片软件| 国产一区二区在线视频| 欧美电影免费观看高清完整版 | 日本三级韩国三级欧美三级| 欧美影院午夜播放| 亚洲精品成a人| 色综合一个色综合| 亚洲精选一二三| 99久久久国产精品免费蜜臀| 国产精品福利一区二区三区| 成人亚洲精品久久久久软件| 国产精品私人影院| 成人精品视频一区二区三区| 中文字幕精品综合| 国产v综合v亚洲欧| 国产欧美中文在线| 成人午夜私人影院| 亚洲欧洲日韩一区二区三区| 99精品国产99久久久久久白柏| 中文字幕国产精品一区二区| 99精品桃花视频在线观看| 亚洲欧美一区二区久久| 91久久线看在观草草青青| 亚洲自拍偷拍综合| 欧美精品电影在线播放| 日韩有码一区二区三区| 日韩一级免费一区| 国产一区二区三区免费播放 | 亚洲精品视频自拍| 欧美日韩午夜在线视频| 日韩高清一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产高清不卡一区| 亚洲美腿欧美偷拍| 欧美色成人综合| 老司机精品视频在线| 久久久夜色精品亚洲| 91免费精品国自产拍在线不卡| 午夜久久福利影院| 精品国产99国产精品| 不卡视频在线看| 天天影视色香欲综合网老头| 欧美xxxxxxxxx| kk眼镜猥琐国模调教系列一区二区| 亚洲男人天堂一区| 91精品国产色综合久久久蜜香臀| 久久99国产精品久久99果冻传媒| 欧美激情一区二区在线| 在线观看国产日韩| 激情五月婷婷综合网| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美午夜免费电影| 国产制服丝袜一区| 亚洲三级视频在线观看| 日韩欧美一卡二卡| 92国产精品观看| 蜜桃av噜噜一区二区三区小说| www国产亚洲精品久久麻豆| 在线看国产一区二区| 国产一区二区三区最好精华液| 亚洲日韩欧美一区二区在线| 欧美一区二区三区婷婷月色| 99精品视频在线免费观看| 日本少妇一区二区| 亚洲欧美色图小说| 精品国产免费人成电影在线观看四季 | 亚洲色图.com| 精品人在线二区三区| 色爱区综合激月婷婷| 国产一区不卡视频| 天堂蜜桃一区二区三区 | 久久免费美女视频| 欧美综合久久久| 国产91在线观看| 蜜桃视频在线一区| 一区二区欧美视频| 欧美激情综合在线| 欧美mv日韩mv亚洲|