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

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

?? dv.c

?? F:圖像處理資料264264書籍ffmpeg-0.4.9-pre1VideoStream.rar 一個(gè)視頻解壓縮源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
                memcpy(&pcm[fsize], &data[0], reqasize - fsize);		data += reqasize - fsize;		data_size -= reqasize - fsize;	    }	    dv_inject_audio(c, &pcm[0], *frame);	    c->has_audio = 1;	}            /* FIXME: we have to have more sensible approach than this one */        if (fifo_size(&c->audio_data, c->audio_data.rptr) + data_size >= 100*AVCODEC_MAX_AUDIO_FRAME_SIZE)	    av_log(&st->codec, AV_LOG_ERROR, "Can't process DV frame #%d. Insufficient video data or severe sync problem.\n", c->frames);	fifo_write(&c->audio_data, (uint8_t *)data, data_size, &c->audio_data.wptr);    }    return (c->has_audio && c->has_video) ? c->sys->frame_size : 0;}DVMuxContext* dv_init_mux(AVFormatContext* s){    DVMuxContext *c;    AVStream *vst;    AVStream *ast;    c = av_mallocz(sizeof(DVMuxContext));    if (!c)        return NULL;    if (s->nb_streams != 2)        goto bail_out;    /* We have to sort out where audio and where video stream is */    if (s->streams[0]->codec.codec_type == CODEC_TYPE_VIDEO &&        s->streams[1]->codec.codec_type == CODEC_TYPE_AUDIO) {       vst = s->streams[0];       ast = s->streams[1];    }    else if (s->streams[1]->codec.codec_type == CODEC_TYPE_VIDEO &&             s->streams[0]->codec.codec_type == CODEC_TYPE_AUDIO) {           vst = s->streams[1];           ast = s->streams[0];    } else        goto bail_out;      /* Some checks -- DV format is very picky about its incoming streams */    if (vst->codec.codec_id != CODEC_ID_DVVIDEO ||	ast->codec.codec_id != CODEC_ID_PCM_S16LE)       goto bail_out;    if (ast->codec.sample_rate != 48000 ||	ast->codec.channels != 2)       goto bail_out;    c->sys = dv_codec_profile(&vst->codec);    if (!c->sys)	goto bail_out;        /* Ok, everything seems to be in working order */    c->frames = 0;    c->has_audio = c->has_video = 0;    c->start_time = (time_t)s->timestamp;    c->aspect = 0; /* 4:3 is the default */    if ((int)(av_q2d(vst->codec.sample_aspect_ratio) * vst->codec.width / vst->codec.height * 10) == 17) /* 16:9 */         c->aspect = 0x07;    if (fifo_init(&c->audio_data, 100*AVCODEC_MAX_AUDIO_FRAME_SIZE) < 0)        goto bail_out;    dv_format_frame(c, &c->frame_buf[0]);    return c;    bail_out:    av_free(c);    return NULL;}void dv_delete_mux(DVMuxContext *c){        fifo_free(&c->audio_data);}DVDemuxContext* dv_init_demux(AVFormatContext *s){    DVDemuxContext *c;    c = av_mallocz(sizeof(DVDemuxContext));    if (!c)        return NULL;    c->vst = av_new_stream(s, 0);    c->ast[0] = av_new_stream(s, 0);    if (!c->vst || !c->ast[0])        goto fail;    av_set_pts_info(c->vst, 64, 1, 30000);    av_set_pts_info(c->ast[0], 64, 1, 30000);    c->fctx = s;    c->ast[1] = NULL;    c->ach = 0;    c->frames = 0;    c->abytes = 0;    c->audio_pkt[0].size = 0;    c->audio_pkt[1].size = 0;        c->vst->codec.codec_type = CODEC_TYPE_VIDEO;    c->vst->codec.codec_id = CODEC_ID_DVVIDEO;    c->vst->codec.bit_rate = 25000000;        c->ast[0]->codec.codec_type = CODEC_TYPE_AUDIO;    c->ast[0]->codec.codec_id = CODEC_ID_PCM_S16LE;       s->ctx_flags |= AVFMTCTX_NOHEADER;         return c;    fail:    if (c->vst)        av_free(c->vst);    if (c->ast[0])        av_free(c->ast[0]);    av_free(c);    return NULL;}static void __destruct_pkt(struct AVPacket *pkt){    pkt->data = NULL; pkt->size = 0;    return;}int dv_get_packet(DVDemuxContext *c, AVPacket *pkt){    int size = -1;    int i;    for (i=0; i<c->ach; i++) {       if (c->ast[i] && c->audio_pkt[i].size) {           *pkt = c->audio_pkt[i];	   c->audio_pkt[i].size = 0;	   size = pkt->size;	   break;       }    }    return size;}int dv_produce_packet(DVDemuxContext *c, AVPacket *pkt,                       uint8_t* buf, int buf_size){    int size, i;    const DVprofile* sys = dv_frame_profile(buf);       if (buf_size < 4 || buf_size < sys->frame_size)        return -1;   /* Broken frame, or not enough data */    /* Queueing audio packet */    /* FIXME: in case of no audio/bad audio we have to do something */    size = dv_extract_audio_info(c, buf);    c->audio_pkt[0].data = c->audio_pkt[1].data = NULL;    for (i=0; i<c->ach; i++) {       if (av_new_packet(&c->audio_pkt[i], size) < 0)           return AVERROR_NOMEM;       c->audio_pkt[i].stream_index = c->ast[i]->index;       c->audio_pkt[i].pts = c->abytes * 30000*8 / c->ast[i]->codec.bit_rate;       c->audio_pkt[i].flags |= PKT_FLAG_KEY;    }    dv_extract_audio(buf, c->audio_pkt[0].data, c->audio_pkt[1].data);    c->abytes += size;        /* Now it's time to return video packet */    size = dv_extract_video_info(c, buf);    av_init_packet(pkt);    pkt->destruct = __destruct_pkt;    pkt->data     = buf;    pkt->size     = size;     pkt->flags   |= PKT_FLAG_KEY;    pkt->stream_index = c->vst->id;    pkt->pts      = c->frames * sys->frame_rate_base * (30000/sys->frame_rate);        c->frames++;    return size;}                           int64_t dv_frame_offset(DVDemuxContext *c, int64_t timestamp){    const DVprofile* sys = dv_codec_profile(&c->vst->codec);    return sys->frame_size * ((timestamp * sys->frame_rate) / 	                      (AV_TIME_BASE * sys->frame_rate_base));}/************************************************************ * Implementation of the easiest DV storage of all -- raw DV. ************************************************************/ typedef struct RawDVContext {    uint8_t         buf[144000];    DVDemuxContext* dv_demux;} RawDVContext;static int dv_read_header(AVFormatContext *s,                          AVFormatParameters *ap){    RawDVContext *c = s->priv_data;    c->dv_demux = dv_init_demux(s);       return c->dv_demux ? 0 : -1;}static int dv_read_packet(AVFormatContext *s, AVPacket *pkt){    int size;    RawDVContext *c = s->priv_data;       size = dv_get_packet(c->dv_demux, pkt);        if (size < 0) {        if (get_buffer(&s->pb, c->buf, 4) <= 0)             return AVERROR_IO;            size = dv_frame_profile(c->buf)->frame_size;        if (get_buffer(&s->pb, c->buf + 4, size - 4) <= 0)	    return AVERROR_IO;	size = dv_produce_packet(c->dv_demux, pkt, c->buf, size);    }         return size;}static int dv_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp){    RawDVContext *c = s->priv_data;    return url_fseek(&s->pb, dv_frame_offset(c->dv_demux, timestamp), SEEK_SET);}static int dv_read_close(AVFormatContext *s){    RawDVContext *c = s->priv_data;    av_free(c->dv_demux);    return 0;}static int dv_write_header(AVFormatContext *s){    s->priv_data = dv_init_mux(s);    if (!s->priv_data) {        av_log(s, AV_LOG_ERROR, "Can't initialize DV format!\n"		    "Make sure that you supply exactly two streams:\n"		    "     video: 25fps or 29.97fps, audio: 2ch/48Khz/PCM\n");	return -1;    }    return 0;}static int dv_write_packet(struct AVFormatContext *s, AVPacket *pkt){    uint8_t* frame;    int fsize;       fsize = dv_assemble_frame((DVMuxContext *)s->priv_data, s->streams[pkt->stream_index],                              pkt->data, pkt->size, &frame);    if (fsize > 0) {        put_buffer(&s->pb, frame, fsize);         put_flush_packet(&s->pb);    }     return 0;}/*  * We might end up with some extra A/V data without matching counterpart. * E.g. video data without enough audio to write the complete frame. * Currently we simply drop the last frame. I don't know whether this  * is the best strategy of all */static int dv_write_trailer(struct AVFormatContext *s){    dv_delete_mux((DVMuxContext *)s->priv_data);    return 0;}static AVInputFormat dv_iformat = {    "dv",    "DV video format",    sizeof(RawDVContext),    NULL,    dv_read_header,    dv_read_packet,    dv_read_close,    dv_read_seek,    .extensions = "dv,dif",};static AVOutputFormat dv_oformat = {    "dv",    "DV video format",    NULL,    "dv",    sizeof(DVMuxContext),    CODEC_ID_PCM_S16LE,    CODEC_ID_DVVIDEO,    dv_write_header,    dv_write_packet,    dv_write_trailer,};int ff_dv_init(void){    av_register_input_format(&dv_iformat);    av_register_output_format(&dv_oformat);    return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美在线不卡| 日韩欧美一区二区三区在线| 麻豆高清免费国产一区| 亚洲在线视频一区| 亚洲午夜影视影院在线观看| 亚洲免费观看视频| 一区二区三区中文字幕| 亚洲丶国产丶欧美一区二区三区| 一区二区三区中文免费| 亚洲国产一区二区在线播放| 日韩av一二三| 国产乱码一区二区三区| 成人在线一区二区三区| 99riav久久精品riav| 欧美吞精做爰啪啪高潮| 欧美一级在线视频| 久久女同性恋中文字幕| 最近中文字幕一区二区三区| 一区二区日韩电影| 久久99精品久久久| 91亚洲精品久久久蜜桃| 欧美性猛片aaaaaaa做受| 日韩午夜中文字幕| 欧美国产成人精品| 亚洲妇女屁股眼交7| 久久99精品久久久久久动态图| 国产成人免费在线观看| 欧美日韩中文一区| 国产日韩av一区二区| 亚洲综合偷拍欧美一区色| 美日韩一区二区| 91亚洲男人天堂| 日韩欧美在线一区二区三区| 中文字幕一区不卡| 久久99精品国产| 欧洲一区二区av| 久久免费美女视频| 香蕉成人伊视频在线观看| 国产精品一区二区你懂的| 欧美无人高清视频在线观看| 国产欧美精品一区| 久久精品国产澳门| 欧美在线高清视频| 中文幕一区二区三区久久蜜桃| 视频一区二区国产| 色噜噜狠狠成人网p站| 精品捆绑美女sm三区| 亚洲午夜国产一区99re久久| 风间由美一区二区三区在线观看| 欧美日韩高清一区| 一区二区三区国产| 波多野结衣91| 欧美经典一区二区| 美女久久久精品| 欧美日韩国产三级| 一区二区三区日韩欧美精品| 国产精品99久| 精品日韩在线观看| 麻豆专区一区二区三区四区五区| 欧美亚洲日本一区| 成人欧美一区二区三区| 成人黄页毛片网站| 欧美国产成人在线| 成人一区二区视频| 国产日韩精品久久久| 国产毛片一区二区| 国产亚洲一区二区三区| 精品一区在线看| 精品理论电影在线观看 | 国产精品每日更新| 国产在线一区观看| 久久久噜噜噜久久人人看| 久久电影网站中文字幕| 日韩精品一区二区三区老鸭窝| 午夜精品久久久久久久99樱桃| 欧美系列亚洲系列| 视频一区免费在线观看| 制服丝袜亚洲播放| 奇米色一区二区三区四区| 91麻豆精品国产| 国内精品视频666| 国产亚洲精品aa午夜观看| 国产精品综合av一区二区国产馆| 久久亚洲一区二区三区四区| 国产乱对白刺激视频不卡| 国产偷v国产偷v亚洲高清| 成人黄色av电影| 亚洲五码中文字幕| 日韩免费观看2025年上映的电影| 精品一区二区三区在线播放视频| 欧美精品一区二区三区蜜臀| 国产ts人妖一区二区| 1000部国产精品成人观看| 在线观看www91| 久久aⅴ国产欧美74aaa| 国产精品国产三级国产a| 在线中文字幕不卡| 美腿丝袜亚洲综合| 一区在线中文字幕| 欧美精选在线播放| 成人手机电影网| 首页综合国产亚洲丝袜| 久久麻豆一区二区| 欧美影院午夜播放| 国产精品一区免费视频| 亚洲免费在线电影| 337p粉嫩大胆噜噜噜噜噜91av | 久久久久久毛片| 色综合咪咪久久| 久久 天天综合| 亚洲女子a中天字幕| 日韩欧美区一区二| 91高清视频在线| 国产精品亚洲人在线观看| 一级特黄大欧美久久久| 精品蜜桃在线看| 欧美日韩国产一二三| 成人综合婷婷国产精品久久免费| 亚洲成人av资源| 中文字幕一区二区5566日韩| 日韩欧美一区电影| 欧洲国产伦久久久久久久| 国产成人一区二区精品非洲| 亚洲444eee在线观看| 中文字幕制服丝袜一区二区三区| 91精品国产综合久久婷婷香蕉 | 久久久噜噜噜久久人人看| 欧美三级三级三级| 91美女精品福利| 成人手机在线视频| 国产精品12区| 激情欧美日韩一区二区| 日韩精品一二三四| 亚洲a一区二区| 香蕉乱码成人久久天堂爱免费| 亚洲女子a中天字幕| 日本一区二区电影| 国产日韩亚洲欧美综合| 精品对白一区国产伦| 欧美伦理电影网| 911国产精品| 欧美综合欧美视频| 91视频在线观看免费| 成人一级片网址| 丰满少妇久久久久久久| 国产福利电影一区二区三区| 久久精品国产澳门| 国产一区视频网站| 国产在线视视频有精品| 极品少妇xxxx精品少妇| 久久精品国产亚洲高清剧情介绍| 青青草国产成人99久久| 石原莉奈在线亚洲三区| 日本不卡在线视频| 免费成人性网站| 蜜臀久久久99精品久久久久久| 亚洲大片精品永久免费| 视频一区中文字幕| 美女www一区二区| 久久99精品一区二区三区三区| 麻豆成人久久精品二区三区小说| 久久99精品国产91久久来源| 国产麻豆午夜三级精品| 国产91丝袜在线播放九色| 99久久夜色精品国产网站| 91一区二区三区在线观看| 欧美视频精品在线| 日韩一区二区三区高清免费看看| 日韩美女在线视频 | 欧美人动与zoxxxx乱| 欧美久久免费观看| 久久亚洲精华国产精华液| 亚洲国产精品传媒在线观看| 亚洲天堂免费看| 日韩在线一区二区| 国产一区二区福利| 色噜噜偷拍精品综合在线| 欧美日韩国产首页| 国产欧美一区二区三区鸳鸯浴| 亚洲你懂的在线视频| 青青草国产成人99久久| 成人国产精品视频| 欧美高清激情brazzers| 久久久久久影视| 亚洲一区二区精品久久av| 久久国产精品一区二区| 日本精品一区二区三区高清| 日韩美女一区二区三区四区| 国产精品高潮久久久久无| 午夜久久电影网| 成人综合婷婷国产精品久久蜜臀| 欧美日韩午夜精品| 日本一区二区高清| 日韩精品一级中文字幕精品视频免费观看 | 亚洲自拍都市欧美小说| 美腿丝袜亚洲三区| 欧美性受xxxx黑人xyx| 国产女同性恋一区二区| 免费欧美在线视频| 91亚洲国产成人精品一区二三|