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

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

?? dv.c

?? F:圖像處理資料264264書籍ffmpeg-0.4.9-pre1VideoStream.rar 一個(gè)視頻解壓縮源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    buf[1] = (seq_num<<4) | /* DIF seq number 0-9 for 525/60; 0-11 for 625/50 */	     (0 << 3) |     /* FSC: for 50Mb/s 0 - first channel; 1 - second */	     7;             /* reserved -- always 1 */    buf[2] = dif_num;       /* DIF block number Video: 0-134, Audio: 0-8 */    return 3;}static inline int dv_write_ssyb_id(uint8_t syb_num, uint8_t fr, uint8_t* buf){    if (syb_num == 0 || syb_num == 6) {	buf[0] = (fr<<7) | /* FR ID 1 - first half of each channel; 0 - second */		 (0<<4)  | /* AP3 (Subcode application ID) */		 0x0f;     /* reserved -- always 1 */    }     else if (syb_num == 11) {	buf[0] = (fr<<7) | /* FR ID 1 - first half of each channel; 0 - second */                 0x7f;     /* reserved -- always 1 */    }    else {	buf[0] = (fr<<7) | /* FR ID 1 - first half of each channel; 0 - second */                 (0<<4)  | /* APT (Track application ID) */		 0x0f;     /* reserved -- always 1 */    }    buf[1] = 0xf0 |            /* reserved -- always 1 */             (syb_num & 0x0f); /* SSYB number 0 - 11   */    buf[2] = 0xff;             /* reserved -- always 1 */    return 3;}static void dv_format_frame(DVMuxContext *c, uint8_t* buf){    int i, j, k;        for (i = 0; i < c->sys->difseg_size; i++) {       memset(buf, 0xff, 80 * 6); /* First 6 DIF blocks are for control data */              /* DV header: 1DIF */       buf += dv_write_dif_id(dv_sect_header, i, 0, buf);       buf += dv_write_pack((c->sys->dsf ? dv_header625 : dv_header525), c, buf);       buf += 72; /* unused bytes */				          /* DV subcode: 2DIFs */       for (j = 0; j < 2; j++) {          buf += dv_write_dif_id( dv_sect_subcode, i, j, buf);	  for (k = 0; k < 6; k++) {	     buf += dv_write_ssyb_id(k, (i < c->sys->difseg_size/2), buf);	     buf += dv_write_pack(dv_ssyb_packs_dist[i][k], c, buf);	  }	  buf += 29; /* unused bytes */       }              /* DV VAUX: 3DIFs */       for (j = 0; j < 3; j++) {	  buf += dv_write_dif_id(dv_sect_vaux, i, j, buf);	  for (k = 0; k < 15 ; k++)	     buf += dv_write_pack(dv_vaux_packs_dist[i][k], c, buf);	  buf += 2; /* unused bytes */       }               /* DV Audio/Video: 135 Video DIFs + 9 Audio DIFs */       for (j = 0; j < 135; j++) {            if (j%15 == 0) {	        buf += dv_write_dif_id(dv_sect_audio, i, j/15, buf);	        buf += dv_write_pack(dv_aaux_packs_dist[i][j/15], c, buf);		buf += 72; /* shuffled PCM audio */	    }	    buf += dv_write_dif_id(dv_sect_video, i, j, buf);	    buf += 77; /* 1 video macro block: 1 bytes control			                       4 * 14 bytes Y 8x8 data			                           10 bytes Cr 8x8 data						   10 bytes Cb 8x8 data */       }    }}static void dv_inject_audio(DVMuxContext *c, const uint8_t* pcm, uint8_t* frame_ptr){    int i, j, d, of;    for (i = 0; i < c->sys->difseg_size; i++) {       frame_ptr += 6 * 80; /* skip DIF segment header */       for (j = 0; j < 9; j++) {          for (d = 8; d < 80; d+=2) {	     of = c->sys->audio_shuffle[i][j] + (d - 8)/2 * c->sys->audio_stride;	     frame_ptr[d] = pcm[of*2+1]; // FIXME: may be we have to admit	     frame_ptr[d+1] = pcm[of*2]; //        that DV is a big endian PCM                 }          frame_ptr += 16 * 80; /* 15 Video DIFs + 1 Audio DIF */       }    }}static void dv_inject_video(DVMuxContext *c, const uint8_t* video_data, uint8_t* frame_ptr){    int i, j;    int ptr = 0;    for (i = 0; i < c->sys->difseg_size; i++) {       ptr += 6 * 80; /* skip DIF segment header */       for (j = 0; j < 135; j++) {            if (j%15 == 0)	        ptr += 80; /* skip Audio DIF */	    ptr += 3;	    memcpy(frame_ptr + ptr, video_data + ptr, 77);	    ptr += 77;       }    }}/*  * This is the dumbest implementation of all -- it simply looks at * a fixed offset and if pack isn't there -- fails. We might want * to have a fallback mechanism for complete search of missing packs. */static const uint8_t* dv_extract_pack(uint8_t* frame, enum dv_pack_type t){    int offs;        switch (t) {    case dv_audio_source:          offs = (80*6 + 80*16*3 + 3);	  break;    case dv_audio_control:          offs = (80*6 + 80*16*4 + 3);	  break;    case dv_video_control:          offs = (80*5 + 48 + 5);          break;    default:          return NULL;    }       return (frame[offs] == t ? &frame[offs] : NULL);}/*  * There's a couple of assumptions being made here: * 1. By default we silence erroneous (0x8000/16bit 0x800/12bit) audio samples. *    We can pass them upwards when ffmpeg will be ready to deal with them. * 2. We don't do software emphasis. * 3. Audio is always returned as 16bit linear samples: 12bit nonlinear samples *    are converted into 16bit linear ones. */static int dv_extract_audio(uint8_t* frame, uint8_t* pcm, uint8_t* pcm2){    int size, i, j, d, of, smpls, freq, quant, half_ch;    uint16_t lc, rc;    const DVprofile* sys;    const uint8_t* as_pack;        as_pack = dv_extract_pack(frame, dv_audio_source);    if (!as_pack)    /* No audio ? */	return 0;       sys = dv_frame_profile(frame);    smpls = as_pack[1] & 0x3f; /* samples in this frame - min. samples */    freq = (as_pack[4] >> 3) & 0x07; /* 0 - 48KHz, 1 - 44,1kHz, 2 - 32 kHz */    quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */        if (quant > 1)	return -1; /* Unsupported quantization */    size = (sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */    half_ch = sys->difseg_size/2;    /* for each DIF segment */    for (i = 0; i < sys->difseg_size; i++) {       frame += 6 * 80; /* skip DIF segment header */       if (quant == 1 && i == half_ch) {           if (!pcm2)               break;           else               pcm = pcm2;       }       for (j = 0; j < 9; j++) {          for (d = 8; d < 80; d += 2) {	     if (quant == 0) {  /* 16bit quantization */		 of = sys->audio_shuffle[i][j] + (d - 8)/2 * sys->audio_stride;                 if (of*2 >= size)		     continue;		 		 pcm[of*2] = frame[d+1]; // FIXME: may be we have to admit		 pcm[of*2+1] = frame[d]; //        that DV is a big endian PCM		 if (pcm[of*2+1] == 0x80 && pcm[of*2] == 0x00)		     pcm[of*2+1] = 0;	      } else {           /* 12bit quantization */		 lc = ((uint16_t)frame[d] << 4) | 		      ((uint16_t)frame[d+2] >> 4);		 rc = ((uint16_t)frame[d+1] << 4) |	              ((uint16_t)frame[d+2] & 0x0f);		 lc = (lc == 0x800 ? 0 : dv_audio_12to16(lc));		 rc = (rc == 0x800 ? 0 : dv_audio_12to16(rc));		 of = sys->audio_shuffle[i%half_ch][j] + (d - 8)/3 * sys->audio_stride;                 if (of*2 >= size)		     continue;		 pcm[of*2] = lc & 0xff; // FIXME: may be we have to admit		 pcm[of*2+1] = lc >> 8; //        that DV is a big endian PCM		 of = sys->audio_shuffle[i%half_ch+half_ch][j] + 		      (d - 8)/3 * sys->audio_stride;		 pcm[of*2] = rc & 0xff; // FIXME: may be we have to admit		 pcm[of*2+1] = rc >> 8; //        that DV is a big endian PCM		 ++d;	      }	  }			  frame += 16 * 80; /* 15 Video DIFs + 1 Audio DIF */        }    }    return size;}static int dv_extract_audio_info(DVDemuxContext* c, uint8_t* frame){    const uint8_t* as_pack;    const DVprofile* sys;    int freq, smpls, quant, i;    sys = dv_frame_profile(frame);    as_pack = dv_extract_pack(frame, dv_audio_source);    if (!as_pack || !sys) {    /* No audio ? */        c->ach = 0;	return -1;    }        smpls = as_pack[1] & 0x3f; /* samples in this frame - min. samples */    freq = (as_pack[4] >> 3) & 0x07; /* 0 - 48KHz, 1 - 44,1kHz, 2 - 32 kHz */    quant = as_pack[4] & 0x07; /* 0 - 16bit linear, 1 - 12bit nonlinear */    c->ach = (quant && freq == 2) ? 2 : 1;    /* The second stereo channel could appear in IEC 61834 stream only */    if (c->ach == 2 && !c->ast[1]) {        c->ast[1] = av_new_stream(c->fctx, 0);	if (c->ast[1]) {            av_set_pts_info(c->ast[1], 64, 1, 30000);	    c->ast[1]->codec.codec_type = CODEC_TYPE_AUDIO;	    c->ast[1]->codec.codec_id = CODEC_ID_PCM_S16LE;	} else	    c->ach = 1;    }    for (i=0; i<c->ach; i++) {       c->ast[i]->codec.sample_rate = dv_audio_frequency[freq];       c->ast[i]->codec.channels = 2;       c->ast[i]->codec.bit_rate = 2 * dv_audio_frequency[freq] * 16;    }        return (sys->audio_min_samples[freq] + smpls) * 4; /* 2ch, 2bytes */;}static int dv_extract_video_info(DVDemuxContext *c, uint8_t* frame){    const DVprofile* sys;     const uint8_t* vsc_pack;    AVCodecContext* avctx;    int apt, is16_9;    int size = 0;        sys = dv_frame_profile(frame);    if (sys) {        avctx = &c->vst->codec;		avctx->frame_rate = sys->frame_rate;        avctx->frame_rate_base = sys->frame_rate_base;        avctx->width = sys->width;        avctx->height = sys->height;        avctx->pix_fmt = sys->pix_fmt;        	/* finding out SAR is a little bit messy */	vsc_pack = dv_extract_pack(frame, dv_video_control);        apt = frame[4] & 0x07;	is16_9 = (vsc_pack && ((vsc_pack[2] & 0x07) == 0x02 ||	                       (!apt && (vsc_pack[2] & 0x07) == 0x07)));	avctx->sample_aspect_ratio = sys->sar[is16_9];		size = sys->frame_size;    }    return size;}/*  * The following 6 functions constitute our interface to the world */int dv_assemble_frame(DVMuxContext *c, AVStream* st,                      const uint8_t* data, int data_size, uint8_t** frame){    uint8_t pcm[8192];    int fsize, reqasize;       *frame = &c->frame_buf[0];    if (c->has_audio && c->has_video) {  /* must be a stale frame */        dv_format_frame(c, *frame);	c->frames++;	c->has_audio = c->has_video = 0;    }        if (st->codec.codec_type == CODEC_TYPE_VIDEO) {        /* FIXME: we have to have more sensible approach than this one */	if (c->has_video)	    av_log(&st->codec, AV_LOG_ERROR, "Can't process DV frame #%d. Insufficient audio data or severe sync problem.\n", c->frames);	            dv_inject_video(c, data, *frame);	c->has_video = 1;	data_size = 0;    }         reqasize = 4 * dv_audio_frame_size(c->sys, c->frames);    fsize = fifo_size(&c->audio_data, c->audio_data.rptr);    if (st->codec.codec_type == CODEC_TYPE_AUDIO || (c->has_video && fsize >= reqasize)) { 	if (fsize + data_size >= reqasize && !c->has_audio) {            if (fsize >= reqasize) {	        fifo_read(&c->audio_data, &pcm[0], reqasize, &c->audio_data.rptr);            } else {	        fifo_read(&c->audio_data, &pcm[0], fsize, &c->audio_data.rptr);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久久精品免费观看国产蜜| 亚洲精选视频免费看| 免费成人小视频| 欧美一级电影网站| 秋霞av亚洲一区二区三| 欧美成人国产一区二区| 国内精品伊人久久久久av影院| 久久伊人中文字幕| 亚洲美女一区二区三区| 亚洲图片一区二区| 亚洲一二三级电影| 亚洲.国产.中文慕字在线| 亚洲亚洲精品在线观看| 亚洲国产另类精品专区| 免费人成黄页网站在线一区二区| 老司机一区二区| 成人免费视频一区二区| 欧美一区二区大片| 欧美放荡的少妇| 国产精品三级av| 在线观看日韩av先锋影音电影院| 日本特黄久久久高潮| 久久亚洲一区二区三区四区| 成人妖精视频yjsp地址| 亚洲大片免费看| wwwwww.欧美系列| 91视视频在线直接观看在线看网页在线看| 亚洲激情男女视频| 精品久久久影院| 欧美优质美女网站| 久久国产精品区| 亚洲视频一区二区免费在线观看 | 久久久久久久久久久电影| 粉嫩蜜臀av国产精品网站| 一区二区三区在线视频免费| 日韩欧美亚洲另类制服综合在线| www.视频一区| 老司机免费视频一区二区| 中文字幕一区二区三区在线播放| 91麻豆精品国产91久久久久久久久 | 国产综合成人久久大片91| 国产精品三级av| 精品久久久久久无| 欧美午夜一区二区三区 | av电影天堂一区二区在线 | 国产午夜精品福利| 欧美日韩另类国产亚洲欧美一级| 国产成人av一区二区三区在线| 亚洲一区二区三区四区五区黄| 久久久91精品国产一区二区精品| 亚洲久本草在线中文字幕| 欧美亚洲愉拍一区二区| 国产伦精品一区二区三区在线观看| 一区二区三区波多野结衣在线观看| 国产欧美一区二区在线观看| 51午夜精品国产| 欧美在线观看视频在线| 99麻豆久久久国产精品免费| 国产成人综合在线| 蜜桃视频在线观看一区二区| 亚洲影院免费观看| 亚洲欧美二区三区| 国产精品嫩草影院com| 精品国产成人在线影院| 91精品国产aⅴ一区二区| 91成人免费电影| 97精品视频在线观看自产线路二| 国产精品888| 国产一区二区调教| 九九精品视频在线看| 日韩成人精品在线| 日本伊人色综合网| 麻豆成人久久精品二区三区红 | 亚洲色图欧美激情| 欧美哺乳videos| 91精品国产91久久久久久一区二区| 91尤物视频在线观看| caoporen国产精品视频| 成人黄色片在线观看| 国产精品系列在线播放| 国产呦萝稀缺另类资源| 激情综合色播激情啊| 久久国产精品99精品国产| 老司机一区二区| 精品无人码麻豆乱码1区2区| 国产尤物一区二区| 国产成人综合亚洲91猫咪| 丁香桃色午夜亚洲一区二区三区| 国产高清视频一区| 91在线视频18| 欧美影院午夜播放| 欧美精品18+| 精品国产免费一区二区三区四区 | 欧美精品视频www在线观看| 欧美日韩精品高清| 欧美不卡一区二区三区四区| 精品国产乱码久久| 日本一区二区三区高清不卡| 久久九九99视频| 国产精品成人免费在线| 亚洲美女区一区| 热久久国产精品| 国产高清精品网站| 日本乱码高清不卡字幕| 日韩免费看的电影| 国产精品少妇自拍| 视频在线观看一区| 国产99久久久国产精品免费看| 91热门视频在线观看| 欧美精品丝袜中出| 国产农村妇女毛片精品久久麻豆| 成人欧美一区二区三区小说| 亚洲成av人片www| 国产精品一区二区久久精品爱涩| 在线视频你懂得一区| 制服丝袜中文字幕一区| 另类欧美日韩国产在线| 在线成人小视频| 色吊一区二区三区| 日韩欧美精品在线| 亚洲色图欧美偷拍| 欧美夫妻性生活| 亚洲精品免费在线播放| 成人午夜av影视| 久久久久久久性| 激情伊人五月天久久综合| 日韩欧美成人一区| 日韩二区三区四区| 欧美日韩一区三区四区| 亚洲免费大片在线观看| 一本久道中文字幕精品亚洲嫩| 国产精品天干天干在观线| 国产一区二区三区视频在线播放| 欧美电影免费观看完整版| 日韩精品乱码免费| 欧美精品少妇一区二区三区| 婷婷六月综合网| 51久久夜色精品国产麻豆| 免播放器亚洲一区| 91精品国产福利| 国内精品国产成人| 久久久国产午夜精品| 成人av资源下载| 亚洲视频网在线直播| 91福利在线看| 丝瓜av网站精品一区二区| 欧美日韩国产另类一区| 丝袜国产日韩另类美女| 91精品国产欧美一区二区成人 | 欧美精品tushy高清| 日韩国产一区二| 日韩美女在线视频 | 国产一区在线观看麻豆| 精品处破学生在线二十三| 国产在线一区观看| 欧美国产乱子伦| 色综合久久久久综合99| 亚洲国产一二三| 欧美一卡2卡三卡4卡5免费| 韩国v欧美v日本v亚洲v| 国产情人综合久久777777| 成人精品视频.| 亚洲午夜在线观看视频在线| 日韩一区二区在线观看视频播放| 国产一区在线精品| 亚洲黄色性网站| 欧美成人在线直播| 成人黄页毛片网站| 午夜在线电影亚洲一区| 久久女同互慰一区二区三区| 91麻豆国产自产在线观看| 天堂精品中文字幕在线| 国产三级一区二区| 欧美亚洲国产一区二区三区va| 蜜臀久久久99精品久久久久久| 国产日韩欧美不卡在线| 欧美在线免费观看亚洲| 国内欧美视频一区二区| 亚洲综合免费观看高清在线观看| 精品毛片乱码1区2区3区| 99热国产精品| 激情文学综合丁香| 亚洲综合在线视频| 久久精品夜色噜噜亚洲aⅴ| 91在线免费看| 国产一区免费电影| 亚洲一区二区三区精品在线| 久久久亚洲综合| 欧美色精品在线视频| 国产高清一区日本| 天涯成人国产亚洲精品一区av| 久久九九全国免费| 欧美一区二区黄色| 91年精品国产| 国产一区在线不卡| 视频一区视频二区中文字幕| 国产精品美女久久久久av爽李琼 | 欧美日韩一区二区三区在线看| 九九久久精品视频| 调教+趴+乳夹+国产+精品|