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

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

?? audio.c

?? JPEG-MPEG編解碼技術書集的代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
  AuStream *as;

  if (AUdebugLevel >= 1) {
    printf("AudioOpenWrite: fileName=\"%s\"  format=\"%s\"\n",fileName,format);
    printf("AudioOpenWrite: numChannel=%d  fSample=%.1f\n",
	   numChannel,fSample);
  }

  if (strcmp(fileName,"-")) {
#ifdef USE_AFSP
    fmti = 0;
    while (fmtstr[fmti].str && !isfmtstr(format,fmtstr[fmti].str))
      fmti++;
    if (fmtstr[fmti].str)
      fmt = FD_INT16 + fmtstr[fmti].fmt;
    else {
#else
    fmti = 0;
    while (fmtstr[fmti].str && !isfmtstr(format,fmtstr[fmti].str))
      fmti++;
    if (!fmtstr[fmti].str) {
#endif
      CommonWarning("AudioOpenWrite: unkown audio file format \"%s\"",
		    format);
      return (AudioFile*)NULL;
    }
  }

  if ((file=(AudioFile*)malloc(sizeof(AudioFile))) == NULL)
    CommonExit(1,"AudioOpenWrite: memory allocation error");

#ifdef USE_AFSP
  if (strcmp(fileName,"-")) {
    af = AFopenWrite(fileName,fmt,numChannel,fSample,
		     AUdebugLevel?stdout:(FILE*)NULL);
    as = NULL;
  }
  else {
#endif
    af = NULL;
    as = AuOpenWrite(fileName,numChannel,fSample);
#ifdef USE_AFSP
  }
#endif

  if (as==NULL && af==NULL) {
    CommonWarning("AudioOpenWrite: error opening audio file %s",fileName);
   FREE(file);
    return (AudioFile*)NULL;
  }

  file->file = af;
  file->stream = as;
  file->numChannel = numChannel;
  file->currentSample = 0;
  file->write = 1;
  file->numClip = 0;

  return file;
}


/* AudioReadData() */
/* Read data from audio file. */
/* Requested samples that could not be read from the file are set to 0. */

long AudioReadData (
  AudioFile *file,		/* in: audio file (handle) */
  float **data,			/* out: data[channel][sample] */
				/*      (range [-32768 .. 32767]) */
  long numSample)		/* in: number of samples to be read */
				/*     (samples per channel!) */
				/* returns: */
				/*  number of samples read */
{
  long tot,cur,num,tmp;
  long i;
  long numRead;
#ifdef USE_AFSP
  float buf[SAMPLE_BUF_SIZE];
#endif
  short bufs[SAMPLE_BUF_SIZE];

  if (AUdebugLevel >= 2)
    printf("AudioReadData: numSample=%ld (currentSample=%ld)\n",
	   numSample,file->currentSample);

  if (file->write != 0)
    CommonExit(1,"AudioReadData: audio file not in read mode");

  /* set initial unavailable samples to 0 */
  tot = file->numChannel*numSample;
  cur = 0;
  if (file->stream && file->currentSample < 0) {
    cur = min(-file->numChannel*file->currentSample,tot);
    for (i=0; i<cur; i++)
      data[i%file->numChannel][i/file->numChannel] = 0;
  }

  /* read samples from file */
  while (cur < tot) {
    num = min(tot-cur,SAMPLE_BUF_SIZE);
#ifdef USE_AFSP
    if (file->file) {
      tmp = AFreadData(file->file,
		       file->numChannel*file->currentSample+cur,buf,num);
      for (i=0; i<tmp; i++)
	data[(cur+i)%file->numChannel][(cur+i)/file->numChannel] = buf[i];
    }
#endif
    if (file->stream) {
      tmp = AuReadData(file->stream,bufs,num);
      for (i=0; i<tmp; i++)
	data[(cur+i)%file->numChannel][(cur+i)/file->numChannel] = bufs[i];
    }
    cur += tmp;
    if (tmp < num)
      break;
  }
  numRead = cur/file->numChannel;
  file->currentSample += numRead;

  /* set remaining unavailable samples to 0 */
  for (i=cur; i<tot; i++)
    data[i%file->numChannel][i/file->numChannel] = 0;

  return numRead;
}


/* AudioWriteData() */
/* Write data to audio file. */

void AudioWriteData (
  AudioFile *file,		/* in: audio file (handle) */
  float **data,			/* in: data[channel][sample] */
				/*     (range [-32768 .. 32767]) */
  long numSample)		/* in: number of samples to be written */
				/*     (samples per channel!) */
{
  long tot,cur,num;
  long i;
  long numClip,tmp;
#ifdef USE_AFSP
  float buf[SAMPLE_BUF_SIZE];
#endif
  short bufs[SAMPLE_BUF_SIZE];

  if (AUdebugLevel >= 2)
    printf("AudioWriteData: numSample=%ld (currentSample=%ld)\n",
	   numSample,file->currentSample);

  if (file->write != 1)
    CommonExit(1,"AudioWriteData: audio file not in write mode");

  tot = file->numChannel*numSample;
  cur = max(0,-file->numChannel*file->currentSample);
  while (cur < tot) {
    num = min(tot-cur,SAMPLE_BUF_SIZE);
#ifdef USE_AFSP
    if (file->file) {
      for (i=0; i<num; i++)
	buf[i] = data[(cur+i)%file->numChannel][(cur+i)/file->numChannel];
      AFwriteData(file->file,buf,num);
    }
#endif
    if (file->stream) {
      numClip = 0;
      for (i=0; i<num; i++) {
	tmp = ((long)(data[(cur+i)%file->numChannel]
		      [(cur+i)/file->numChannel]+32768.5))-32768;
	if (tmp>32767) {
	  tmp = 32767;
	  numClip++;
	}
	if (tmp<-32768) {
	    tmp = -32768;
	    numClip++;
	}
	bufs[i] = (short)tmp;
      }
      if (numClip && !file->numClip)
	CommonWarning("AudioWriteData: output samples clipped");
      file->numClip += numClip;
      AuWriteData(file->stream,bufs,num);
    }
    cur += num;
  }
  file->currentSample += tot/file->numChannel;
}


/* AudioSeek() */
/* Set position in audio file to curSample. */
/* (Beginning of file: curSample=0) */
/* NOTE: It is not possible to seek backwards in a output file if */
/*       any samples were already written to the file. */

void AudioSeek (
  AudioFile *file,		/* in: audio file (handle) */
  long curSample)		/* in: new position [samples] */
				/*     (samples per channel!) */
{
  long tot,cur,num,tmp;
#ifdef USE_AFSP
  float buf[SAMPLE_BUF_SIZE];
#endif
  short bufs[SAMPLE_BUF_SIZE];

  if (AUdebugLevel >= 1)
    printf("AudioSeek: curSample=%ld (currentSample=%ld)\n",
	   curSample,file->currentSample);

  if (file->write==0) {
    if (file->stream) {
      if (file->currentSample <= 0) {
	/* nothing read from stream yet */
	if (curSample <= 0)
	  file->currentSample = curSample;
	else
	  file->currentSample = 0;
      }
      if (curSample < file->currentSample)
	CommonWarning("AudioSeek: can not seek backward in input stream");
      else {
	/* read samples to skip */
	tot = file->numChannel*(curSample-file->currentSample);
	cur = 0;
	while (cur < tot) {
	  num = min(tot-cur,SAMPLE_BUF_SIZE);
	  tmp = AuReadData(file->stream,bufs,num);
	  cur += tmp;
	  if (tmp < num)
	    break;
	}
	file->currentSample = curSample;
      }
    }
    else
      file->currentSample = curSample;
  }
  else {
    if (file->currentSample <= 0) {
      /* nothing written to file yet */
      if (curSample <= 0)
	file->currentSample = curSample;
      else
	file->currentSample = 0;
    }
    if (curSample < file->currentSample)
      CommonExit(1,"AudioSeek: error seeking backwards in output file");
    if (curSample > file->currentSample) {
      /* seek forward, fill skipped region with silence */
#ifdef USE_AFSP
      memset(buf,0,SAMPLE_BUF_SIZE*sizeof(float));
#endif
      memset(bufs,0,SAMPLE_BUF_SIZE*sizeof(short));
      tot = file->numChannel*(curSample-file->currentSample);
      cur = 0;
      while (cur < tot) {
	num = min(tot-cur,SAMPLE_BUF_SIZE);
#ifdef USE_AFSP
	if (file->file)
	  AFwriteData(file->file,buf,num);
#endif
	if (file->stream)
	  AuWriteData(file->stream,bufs,num);
	cur += num;
      }
      file->currentSample = curSample;
    }
  }
}


/* AudioClose() */
/* Close audio file.*/

void AudioClose (
  AudioFile *file)		/* in: audio file (handle) */
{
  if (AUdebugLevel >= 1)
    printf("AudioClose: (currentSample=%ld)\n",file->currentSample);

  if (file->numClip)
    CommonWarning("AudioClose: %ld samples clipped",file->numClip);

#ifdef USE_AFSP
  if (file->file)
    AFclose(file->file);
#endif
  if (file->stream)
    AuClose(file->stream);
 FREE(file);
}


/* end of audio.c */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久66| 中文字幕一区二区不卡| 精品1区2区在线观看| 国产精品无圣光一区二区| 亚洲第一久久影院| 国产成人精品亚洲午夜麻豆| 欧美性感一区二区三区| 欧美国产精品一区二区| 天使萌一区二区三区免费观看| 成人性视频免费网站| 欧美一区二区三区播放老司机 | 国产白丝网站精品污在线入口| 欧美少妇一区二区| 亚洲国产精品传媒在线观看| 久久狠狠亚洲综合| 欧美精品乱码久久久久久 | bt欧美亚洲午夜电影天堂| 9191成人精品久久| 亚洲一级二级三级| 日本伦理一区二区| 午夜婷婷国产麻豆精品| 国产91在线观看| 精品久久久久一区二区国产| 日韩不卡一二三区| 欧美精品在线一区二区| 午夜精品免费在线| 欧美日韩一级视频| 午夜久久久影院| 欧美久久久久久久久中文字幕| 亚洲一二三四久久| 欧美色爱综合网| 亚洲h精品动漫在线观看| 欧美亚洲国产bt| 夜夜操天天操亚洲| 欧美日韩一区三区四区| 日韩中文字幕av电影| 日韩一区二区在线观看视频| 麻豆久久久久久久| 精品国产乱码久久久久久牛牛| 精彩视频一区二区三区| 久久久国产午夜精品| 国产成人午夜视频| 国产精品久久一卡二卡| 91在线观看高清| 亚洲一区二区三区中文字幕 | 成人av网站在线| 最新不卡av在线| 在线免费一区三区| 日韩中文字幕一区二区三区| 欧美一级夜夜爽| 国产精品99久久久| ●精品国产综合乱码久久久久| 一本一本大道香蕉久在线精品| 亚洲成人综合网站| 精品国产免费人成电影在线观看四季| 日本福利一区二区| 亚洲无线码一区二区三区| 欧美日韩免费观看一区二区三区 | 亚洲卡通欧美制服中文| 欧美午夜免费电影| 麻豆精品新av中文字幕| 久久久久国产成人精品亚洲午夜 | 欧美日韩你懂的| 黑人巨大精品欧美黑白配亚洲| 欧美国产成人精品| 欧美日韩一区二区三区在线看| 精品影视av免费| 亚洲女子a中天字幕| 日韩一区二区高清| 91网页版在线| 久久国产婷婷国产香蕉| 中文字幕一区免费在线观看| 日韩免费电影网站| 99国产精品久| 精品亚洲欧美一区| 亚洲精品免费在线播放| 日韩精品专区在线| 91美女在线看| 国产一区二区三区最好精华液| 亚洲一区二区综合| 欧美激情综合在线| 日韩视频在线观看一区二区| 91免费看片在线观看| 国内成人免费视频| 日本亚洲一区二区| 亚洲一区二区三区小说| 亚洲国产精品二十页| 精品欧美一区二区在线观看| 欧美在线观看一区| 波多野结衣中文一区| 韩国欧美国产1区| 午夜视频一区二区| 亚洲激情第一区| 中文字幕av不卡| 久久久久久99精品| 久久尤物电影视频在线观看| 欧美一区二区三区在线电影| 91麻豆国产精品久久| 粉嫩高潮美女一区二区三区| 国产真实乱对白精彩久久| 免费在线欧美视频| 亚洲国产wwwccc36天堂| 亚洲老妇xxxxxx| 日韩理论在线观看| 一区免费观看视频| 国产精品电影院| 日本一区二区电影| 国产精品伦理一区二区| 国产色婷婷亚洲99精品小说| 亚洲精品一线二线三线| 日韩精品一区二区三区在线播放| 6080yy午夜一二三区久久| 欧美日韩国产片| 欧美日韩美少妇| 欧美日韩国产一级片| 4438成人网| 日韩欧美成人激情| 日韩美女一区二区三区四区| 日韩精品专区在线影院观看| 一区二区成人在线| 亚洲精品视频自拍| 舔着乳尖日韩一区| 日本亚洲视频在线| 久久国产婷婷国产香蕉| 国产乱人伦偷精品视频不卡| 国产v综合v亚洲欧| 不卡一区二区中文字幕| 91蜜桃网址入口| 欧美日本一区二区三区四区| 欧美精选在线播放| 欧美tk丨vk视频| 国产日韩精品视频一区| 国产精品国产三级国产普通话99 | 欧美午夜精品久久久久久超碰| 91福利区一区二区三区| 欧美日韩一区二区三区高清| 日韩欧美在线一区二区三区| 久久你懂得1024| 亚洲欧洲成人自拍| 亚洲va在线va天堂| 国产一区在线视频| 91在线视频观看| 欧美美女直播网站| 久久久夜色精品亚洲| 亚洲色图在线看| 免费观看30秒视频久久| 成人亚洲精品久久久久软件| 欧美日韩视频在线第一区| 精品久久久影院| 一区二区三区91| 精品一区二区三区在线视频| www.日本不卡| 欧美一级二级三级蜜桃| 国产精品久久久久影院| 日韩精品一级中文字幕精品视频免费观看| 免播放器亚洲一区| 91猫先生在线| 精品久久久久久无| 夜夜亚洲天天久久| 国产精品白丝av| 在线不卡一区二区| 综合欧美一区二区三区| 九一九一国产精品| 在线观看日韩电影| 日本一区二区免费在线| 日本欧美一区二区在线观看| 成a人片国产精品| www激情久久| 日韩高清一级片| 一本色道久久综合狠狠躁的推荐| 精品久久久久久亚洲综合网| 亚洲高清免费在线| 99精品久久免费看蜜臀剧情介绍| 欧美大片一区二区| 视频一区二区不卡| 在线日韩一区二区| 国产精品你懂的在线| 精品亚洲porn| 91精品在线观看入口| 亚洲夂夂婷婷色拍ww47| 成人黄色综合网站| 久久精品一区二区三区av | 亚洲图片自拍偷拍| 成人不卡免费av| 国产女人水真多18毛片18精品视频| 日韩精品欧美精品| 国产一区二区三区观看| 日韩一区二区免费在线电影| 肉丝袜脚交视频一区二区| 欧美亚洲高清一区| 亚洲精品免费在线观看| 91丝袜美腿高跟国产极品老师 | 95精品视频在线| 国产日韩欧美精品一区| 国产美女在线精品| 26uuu久久天堂性欧美| 麻豆成人91精品二区三区| 欧美人与禽zozo性伦| 亚洲成人tv网| 欧美日韩成人在线一区|