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

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

?? avilib.c

?? 一個可以實現嵌入式視頻監控系統的最新版客戶端軟件。
?? C
?? 第 1 頁 / 共 3 頁
字號:
   OUTLONG(0);             /* InitialFrames */   OUTLONG(sampsize);      /* Scale */   OUTLONG(sampsize*AVI->a_rate); /* Rate: Rate/Scale == samples/second */   OUTLONG(0);             /* Start */   OUTLONG(AVI->audio_bytes/sampsize);   /* Length */   OUTLONG(0);             /* SuggestedBufferSize */   OUTLONG(-1);            /* Quality */   OUTLONG(sampsize);      /* SampleSize */   OUTLONG(0);             /* Frame */   OUTLONG(0);             /* Frame */   OUTLONG(0);             /* Frame */   OUTLONG(0);             /* Frame */   /* The audio stream format */   OUT4CC ("strf");   OUTLONG(16);                   /* # of bytes to follow */   OUTSHRT(AVI->a_fmt);           /* Format */   OUTSHRT(AVI->a_chans);         /* Number of channels */   OUTLONG(AVI->a_rate);          /* SamplesPerSec */   OUTLONG(sampsize*AVI->a_rate); /* AvgBytesPerSec */   OUTSHRT(sampsize);             /* BlockAlign */   OUTSHRT(AVI->a_bits);          /* BitsPerSample */   /* Finish stream list, i.e. put number of bytes in the list to proper pos */   long2str(AVI_header+strl_start-4,nhb-strl_start);   }   /* Finish header list */   long2str(AVI_header+hdrl_start-4,nhb-hdrl_start);   /* Calculate the needed amount of junk bytes, output junk */   njunk = HEADERBYTES - nhb - 8 - 12;   /* Safety first: if njunk <= 0, somebody has played with      HEADERBYTES without knowing what (s)he did.      This is a fatal error */   if(njunk<=0)   {      fprintf(stderr,"AVI_close_output_file: # of header bytes too small\n");      exit(1);   }   OUT4CC ("JUNK");   OUTLONG(njunk);   memset(AVI_header+nhb,0,njunk);   nhb += njunk;   /* Start the movi list */   OUT4CC ("LIST");   OUTLONG(movi_len); /* Length of list in bytes */   OUT4CC ("movi");   /* Output the header, truncate the file to the number of bytes      actually written, report an error if someting goes wrong */   if ( lseek(AVI->fdes,0,SEEK_SET)<0 ||        write(AVI->fdes,AVI_header,HEADERBYTES)!=HEADERBYTES ||        ftruncate(AVI->fdes,AVI->pos)<0 )   {      AVI_errno = AVI_ERR_CLOSE;      return -1;   }   if(idxerror) return -1;   return 0;}/*   AVI_write_data:   Add video or audio data to the file;   Return values:    0    No error;   -1    Error, AVI_errno is set appropriatly;*/static int avi_write_data(avi_t *AVI, char *data, long length, int audio){   int n;   /* Check for maximum file length */   if ( (AVI->pos + 8 + length + 8 + (AVI->n_idx+1)*16) > AVI_MAX_LEN )   {      AVI_errno = AVI_ERR_SIZELIM;      return -1;   }   /* Add index entry */   if(audio)      n = avi_add_index_entry(AVI,"01wb",0x00,AVI->pos,length);   else      n = avi_add_index_entry(AVI,"00db",0x10,AVI->pos,length);   if(n) return -1;   /* Output tag and data */   if(audio)      n = avi_add_chunk(AVI,"01wb",data,length);   else      n = avi_add_chunk(AVI,"00db",data,length);   if (n) return -1;   return 0;}int AVI_write_frame(avi_t *AVI, char *data, long bytes){   long pos;   if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }   pos = AVI->pos;   if( avi_write_data(AVI,data,bytes,0) ) return -1;   AVI->last_pos = pos;   AVI->last_len = bytes;   AVI->video_frames++;   return 0;}int AVI_dup_frame(avi_t *AVI){   if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }   if(AVI->last_pos==0) return 0; /* No previous real frame */   if(avi_add_index_entry(AVI,"00db",0x10,AVI->last_pos,AVI->last_len)) return -1;   AVI->video_frames++;   AVI->must_use_index = 1;   return 0;}int AVI_write_audio(avi_t *AVI, char *data, long bytes){   if(AVI->mode==AVI_MODE_READ) { AVI_errno = AVI_ERR_NOT_PERM; return -1; }   if( avi_write_data(AVI,data,bytes,1) ) return -1;   AVI->audio_bytes += bytes;   return 0;}long AVI_bytes_remain(avi_t *AVI){   if(AVI->mode==AVI_MODE_READ) return 0;   return ( AVI_MAX_LEN - (AVI->pos + 8 + 16*AVI->n_idx));}/******************************************************************* *                                                                 * *    Utilities for reading video and audio from an AVI File       * *                                                                 * *******************************************************************/int AVI_close(avi_t *AVI){   int ret;   /* If the file was open for writing, the header and index still have      to be written */   if(AVI->mode == AVI_MODE_WRITE)      ret = avi_close_output_file(AVI);   else      ret = 0;   /* Even if there happened a error, we first clean up */   close(AVI->fdes);   if(AVI->idx) free(AVI->idx);   if(AVI->video_index) free(AVI->video_index);   if(AVI->audio_index) free(AVI->audio_index);   free(AVI);   return ret;}#define ERR_EXIT(x) \{ \   AVI_close(AVI); \   AVI_errno = x; \   return 0; \}avi_t *AVI_open_input_file(char *filename, int getIndex){   avi_t *AVI;   long i, n, rate, scale, idx_type;   unsigned char *hdrl_data;   long hdrl_len;   long nvi, nai, ioff;   long tot;   int lasttag = 0;   int vids_strh_seen = 0;   int vids_strf_seen = 0;   int auds_strh_seen = 0;   int auds_strf_seen = 0;   int num_stream = 0;   char data[256];   /* Create avi_t structure */   AVI = (avi_t *) malloc(sizeof(avi_t));   if(AVI==NULL)   {      AVI_errno = AVI_ERR_NO_MEM;      return 0;   }   memset((void *)AVI,0,sizeof(avi_t));   AVI->mode = AVI_MODE_READ; /* open for reading */   /* Open the file */   AVI->fdes = open(filename,O_RDONLY);   if(AVI->fdes < 0)   {      AVI_errno = AVI_ERR_OPEN;      free(AVI);      return 0;   }   /* Read first 12 bytes and check that this is an AVI file */   if( read(AVI->fdes,data,12) != 12 ) ERR_EXIT(AVI_ERR_READ)   if( strncasecmp(data  ,"RIFF",4) !=0 ||       strncasecmp(data+8,"AVI ",4) !=0 ) ERR_EXIT(AVI_ERR_NO_AVI)   /* Go through the AVI file and extract the header list,      the start position of the 'movi' list and an optionally      present idx1 tag */   hdrl_data = 0;   while(1)   {      if( read(AVI->fdes,data,8) != 8 ) break; /* We assume it's EOF */      n = str2ulong(data+4);      n = PAD_EVEN(n);      if(strncasecmp(data,"LIST",4) == 0)      {         if( read(AVI->fdes,data,4) != 4 ) ERR_EXIT(AVI_ERR_READ)         n -= 4;         if(strncasecmp(data,"hdrl",4) == 0)         {            hdrl_len = n;            hdrl_data = (unsigned char *) malloc(n);            if(hdrl_data==0) ERR_EXIT(AVI_ERR_NO_MEM)            if( read(AVI->fdes,hdrl_data,n) != n ) ERR_EXIT(AVI_ERR_READ)         }         else if(strncasecmp(data,"movi",4) == 0)         {            AVI->movi_start = lseek(AVI->fdes,0,SEEK_CUR);            lseek(AVI->fdes,n,SEEK_CUR);         }         else            lseek(AVI->fdes,n,SEEK_CUR);      }      else if(strncasecmp(data,"idx1",4) == 0)      {         /* n must be a multiple of 16, but the reading does not            break if this is not the case */         AVI->n_idx = AVI->max_idx = n/16;         AVI->idx = (unsigned  char((*)[16]) ) malloc(n);         if(AVI->idx==0) ERR_EXIT(AVI_ERR_NO_MEM)         if( read(AVI->fdes,AVI->idx,n) != n ) ERR_EXIT(AVI_ERR_READ)      }      else         lseek(AVI->fdes,n,SEEK_CUR);   }   if(!hdrl_data      ) ERR_EXIT(AVI_ERR_NO_HDRL)   if(!AVI->movi_start) ERR_EXIT(AVI_ERR_NO_MOVI)   /* Interpret the header list */   for(i=0;i<hdrl_len;)   {      /* List tags are completly ignored */      if(strncasecmp(hdrl_data+i,"LIST",4)==0) { i+= 12; continue; }      n = str2ulong(hdrl_data+i+4);      n = PAD_EVEN(n);      /* Interpret the tag and its args */      if(strncasecmp(hdrl_data+i,"strh",4)==0)      {         i += 8;         if(strncasecmp(hdrl_data+i,"vids",4) == 0 && !vids_strh_seen)         {            memcpy(AVI->compressor,hdrl_data+i+4,4);            AVI->compressor[4] = 0;            scale = str2ulong(hdrl_data+i+20);            rate  = str2ulong(hdrl_data+i+24);            if(scale!=0) AVI->fps = (double)rate/(double)scale;            AVI->video_frames = str2ulong(hdrl_data+i+32);            AVI->video_strn = num_stream;            vids_strh_seen = 1;            lasttag = 1; /* vids */         }         else if (strncasecmp (hdrl_data+i,"auds",4) ==0 && ! auds_strh_seen)         {            AVI->audio_bytes = str2ulong(hdrl_data+i+32)*avi_sampsize(AVI);            AVI->audio_strn = num_stream;            auds_strh_seen = 1;            lasttag = 2; /* auds */         }         else            lasttag = 0;         num_stream++;      }      else if(strncasecmp(hdrl_data+i,"strf",4)==0)      {         i += 8;         if(lasttag == 1)         {            AVI->width  = str2ulong(hdrl_data+i+4);            AVI->height = str2ulong(hdrl_data+i+8);            vids_strf_seen = 1;         }         else if(lasttag == 2)         {            AVI->a_fmt   = str2ushort(hdrl_data+i  );            AVI->a_chans = str2ushort(hdrl_data+i+2);            AVI->a_rate  = str2ulong (hdrl_data+i+4);            AVI->a_bits  = str2ushort(hdrl_data+i+14);            auds_strf_seen = 1;         }         lasttag = 0;      }      else      {         i += 8;         lasttag = 0;      }      i += n;   }   free(hdrl_data);   if(!vids_strh_seen || !vids_strf_seen || AVI->video_frames==0) ERR_EXIT(AVI_ERR_NO_VIDS)   AVI->video_tag[0] = AVI->video_strn/10 + '0';   AVI->video_tag[1] = AVI->video_strn%10 + '0';   AVI->video_tag[2] = 'd';   AVI->video_tag[3] = 'b';   /* Audio tag is set to "99wb" if no audio present */   if(!AVI->a_chans) AVI->audio_strn = 99;   AVI->audio_tag[0] = AVI->audio_strn/10 + '0';   AVI->audio_tag[1] = AVI->audio_strn%10 + '0';   AVI->audio_tag[2] = 'w';   AVI->audio_tag[3] = 'b';   lseek(AVI->fdes,AVI->movi_start,SEEK_SET);   /* get index if wanted */   if(!getIndex) return AVI;   /* if the file has an idx1, check if this is relative      to the start of the file or to the start of the movi list */   idx_type = 0;   if(AVI->idx)   {      long pos, len;      /* Search the first videoframe in the idx1 and look where         it is in the file */      for(i=0;i<AVI->n_idx;i++)         if( strncasecmp(AVI->idx[i],AVI->video_tag,3)==0 ) break;      if(i>=AVI->n_idx) ERR_EXIT(AVI_ERR_NO_VIDS)      pos = str2ulong(AVI->idx[i]+ 8);      len = str2ulong(AVI->idx[i]+12);      lseek(AVI->fdes,pos,SEEK_SET);      if(read(AVI->fdes,data,8)!=8) ERR_EXIT(AVI_ERR_READ)      if( strncasecmp(data,AVI->idx[i],4)==0 && str2ulong(data+4)==len )      {         idx_type = 1; /* Index from start of file */      }      else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av性久久久久av蜜臀妖精| 天天综合网天天综合色| 亚洲美女屁股眼交3| 日韩av二区在线播放| 国产91清纯白嫩初高中在线观看| 在线视频你懂得一区| 国产亚洲一区二区三区四区 | 亚洲18色成人| 高清免费成人av| 欧美一区二区三级| 亚洲国产综合91精品麻豆| 成人激情文学综合网| 精品久久久久久无| 午夜精品久久久久久久| 不卡的av网站| 国产视频一区在线播放| 久久www免费人成看片高清| 色婷婷av一区二区三区软件| 久久亚洲一区二区三区明星换脸| 五月激情丁香一区二区三区| aaa国产一区| 国产精品青草久久| 欧美日韩亚州综合| 国产69精品一区二区亚洲孕妇| 日本一区免费视频| 欧美日韩在线播放一区| 久久精品免费看| 国产精品亚洲第一区在线暖暖韩国 | 国产精品麻豆欧美日韩ww| 蜜桃久久av一区| 欧美电影一区二区三区| 亚洲一级二级三级在线免费观看| 亚洲精品在线三区| 天天av天天翘天天综合网色鬼国产 | 日本亚洲视频在线| 91精品国产色综合久久不卡蜜臀| 亚洲国产日日夜夜| 欧美日韩精品综合在线| 一区二区三区四区不卡在线| 91同城在线观看| 亚洲视频你懂的| 91福利视频久久久久| 亚洲一区在线看| 欧美性xxxxxxxx| 亚洲国产视频a| 欧美一区二区视频网站| 免费高清在线视频一区·| 日韩一区二区不卡| 蜜臀久久99精品久久久久久9| 欧美一区二区黄色| 国产成人精品三级麻豆| 中文字幕中文字幕一区二区| 99re在线视频这里只有精品| 亚洲曰韩产成在线| 91精品国产麻豆国产自产在线| 欧美aⅴ一区二区三区视频| 日韩欧美一区二区三区在线| 国产一区二区免费看| 亚洲视频综合在线| 7777精品伊人久久久大香线蕉最新版 | 国产精品久久久久久久第一福利| 欧美综合欧美视频| 手机精品视频在线观看| 2017欧美狠狠色| av资源网一区| 天堂av在线一区| 久久久久久日产精品| 色婷婷国产精品久久包臀| 毛片av一区二区三区| 中文字幕在线不卡一区| 91精品国产免费| 99r国产精品| 久久国产精品99久久人人澡| 亚洲欧洲av色图| 欧美mv日韩mv国产网站| 色综合色狠狠天天综合色| 精品一区二区国语对白| 一区二区日韩电影| 国产清纯美女被跳蛋高潮一区二区久久w| 欧洲一区二区三区在线| 国产成人亚洲精品狼色在线 | 欧美精品第1页| 99久久免费国产| 久久黄色级2电影| 一区二区欧美视频| 国产精品美女久久久久久久久久久 | 日韩一区二区视频| aaa亚洲精品| 狠狠网亚洲精品| 一二三四区精品视频| 日本一区二区三区在线观看| 555www色欧美视频| 日本久久一区二区| 成人黄色av网站在线| 九色综合狠狠综合久久| 午夜视频一区在线观看| 亚洲免费在线观看| 国产精品久久影院| 国产午夜精品一区二区| 26uuu成人网一区二区三区| 欧美电影在线免费观看| 欧美色精品在线视频| 91小视频免费观看| jlzzjlzz欧美大全| 成人av免费在线观看| 国产成人av电影在线播放| 久久精品免费看| 九色综合狠狠综合久久| 久久99精品国产麻豆婷婷洗澡| 午夜精品福利在线| 日日嗨av一区二区三区四区| 亚洲成va人在线观看| 亚洲成人www| 日韩专区中文字幕一区二区| 婷婷开心激情综合| 五月婷婷激情综合| 日韩精品一区第一页| 丝袜国产日韩另类美女| 日日欢夜夜爽一区| 另类调教123区| 久久电影国产免费久久电影| 另类欧美日韩国产在线| 国产原创一区二区| 成人少妇影院yyyy| www.成人网.com| 色欧美日韩亚洲| 欧美日本乱大交xxxxx| 91精品国产色综合久久| 精品欧美乱码久久久久久| 久久蜜桃一区二区| 中文字幕亚洲一区二区va在线| 最新国产成人在线观看| 一区二区三区 在线观看视频| 午夜精品成人在线| 韩国av一区二区三区在线观看| hitomi一区二区三区精品| www.66久久| 51午夜精品国产| 精品福利视频一区二区三区| 中文字幕第一区第二区| 亚洲一区视频在线观看视频| 免费高清不卡av| 国产a视频精品免费观看| 欧洲中文字幕精品| 亚洲精品一区二区三区四区高清| 日本一区二区免费在线| 亚洲午夜av在线| 国产精品自产自拍| 欧美伊人久久久久久久久影院| 日韩西西人体444www| 中文字幕第一区| 日日噜噜夜夜狠狠视频欧美人| 国产一本一道久久香蕉| 色久综合一二码| 欧美成人欧美edvon| 亚洲男人的天堂在线观看| 欧美96一区二区免费视频| av亚洲精华国产精华精| 欧美一区二区三级| 亚洲精品自拍动漫在线| 久久国产精品99精品国产| 91久久奴性调教| 国产丝袜在线精品| 日韩精品亚洲专区| 99精品久久久久久| 欧美xxxx老人做受| 一区二区三区高清在线| 国产不卡一区视频| 91精品国产综合久久久久久久久久| 国产精品色哟哟网站| 激情成人综合网| 欧美日韩国产经典色站一区二区三区| 国产亚洲短视频| 美腿丝袜在线亚洲一区| 在线免费不卡电影| 国产精品久久久久aaaa| 激情欧美一区二区| 91麻豆精品国产无毒不卡在线观看| 中文字幕亚洲电影| 97久久人人超碰| 国产欧美一区视频| 国产综合久久久久久久久久久久| 在线播放中文字幕一区| 亚洲国产精品久久久久秋霞影院 | 在线观看一区二区视频| 国产精品超碰97尤物18| 国产东北露脸精品视频| 精品久久国产97色综合| 日本不卡1234视频| 欧美精品三级在线观看| 亚洲一区二区精品3399| 91麻豆福利精品推荐| 国产精品激情偷乱一区二区∴| 国产一区高清在线| 精品久久一区二区三区| 麻豆91精品91久久久的内涵| 欧美一区二区播放| 青青国产91久久久久久| 911精品产国品一二三产区| 性做久久久久久免费观看|