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

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

?? interface.c

?? MP3編碼程序和資料
?? C
字號:
#ifdef HAVEMPGLIB#include <stdlib.h>#include <stdio.h>#include "mpg123.h"#include "mpglib.h"/* Global mp .. it's a hack */struct mpstr *gmp;BOOL InitMP3(struct mpstr *mp) {	memset(mp,0,sizeof(struct mpstr));	mp->framesize = 0;	mp->header_parsed=0;	mp->side_parsed=0;	mp->data_parsed=0;	mp->free_format=0;	mp->old_free_format=0;	mp->ssize = 0;	mp->dsize=0;	mp->fsizeold = -1;	mp->bsize = 0;	mp->head = mp->tail = NULL;	mp->fr.single = -1;	mp->bsnum = 0;	wordpointer = mp->bsspace[mp->bsnum] + 512;	mp->synth_bo = 1;	make_decode_tables(32767);	init_layer3(SBLIMIT);	return !0;}void ExitMP3(struct mpstr *mp){	struct buf *b,*bn;		b = mp->tail;	while(b) {		free(b->pnt);		bn = b->next;		free(b);		b = bn;	}}static struct buf *addbuf(struct mpstr *mp,char *buf,int size){	struct buf *nbuf;	nbuf = (struct buf*) malloc( sizeof(struct buf) );	if(!nbuf) {		fprintf(stderr,"Out of memory!\n");		return NULL;	}	nbuf->pnt = (unsigned char*) malloc((size_t)size);	if(!nbuf->pnt) {		free(nbuf);		return NULL;	}	nbuf->size = size;	memcpy(nbuf->pnt,buf,(size_t)size);	nbuf->next = NULL;	nbuf->prev = mp->head;	nbuf->pos = 0;	if(!mp->tail) {		mp->tail = nbuf;	}	else {	  mp->head->next = nbuf;	}	mp->head = nbuf;	mp->bsize += size;	return nbuf;}static void remove_buf(struct mpstr *mp){  struct buf *buf = mp->tail;    mp->tail = buf->next;  if(mp->tail)    mp->tail->prev = NULL;  else {    mp->tail = mp->head = NULL;  }    free(buf->pnt);  free(buf);}static int read_buf_byte(struct mpstr *mp){	unsigned int b;	int pos;	pos = mp->tail->pos;	while(pos >= mp->tail->size) {	        remove_buf(mp);		pos = mp->tail->pos;		if(!mp->tail) {			fprintf(stderr,"Fatal error!\n");			exit(1);		}	}	b = mp->tail->pnt[pos];	mp->bsize--;	mp->tail->pos++;		return b;}static void read_head(struct mpstr *mp){	unsigned long head;	head = read_buf_byte(mp);	head <<= 8;	head |= read_buf_byte(mp);	head <<= 8;	head |= read_buf_byte(mp);	head <<= 8;	head |= read_buf_byte(mp);	mp->header = head;}void copy_mp(struct mpstr *mp,int size,unsigned char *ptr) {  int len = 0;  while(len < size) {    int nlen;    int blen = mp->tail->size - mp->tail->pos;    if( (size - len) <= blen) {      nlen = size-len;    }    else {      nlen = blen;    }    memcpy(ptr+len,mp->tail->pnt+mp->tail->pos,(size_t)nlen);    len += nlen;    mp->tail->pos += nlen;    mp->bsize -= nlen;    if(mp->tail->pos == mp->tail->size) {      remove_buf(mp);    }  }}int sync_buffer(struct mpstr *mp,int free_match) {  /* traverse mp structure without modifing pointers, looking   * for a frame valid header.   * if free_format, valid header must also have the same   * samplerate.      * return number of bytes in mp, before the header   * return -1 if header is not found   */  unsigned int b[4]={0,0,0,0};  int i,h,pos;  struct buf *buf=mp->tail;  pos = buf->pos;  for (i=0; i<mp->bsize; i++) {    /* get 4 bytes */        b[0]=b[1]; b[1]=b[2]; b[2]=b[3];    while(pos >= buf->size) {      buf  = buf->next;      pos = buf->pos;      if(!buf) {	return -1;	/* not enough data to read 4 bytes */      }    }    b[3] = buf->pnt[pos];    ++pos;    if (i>=3) {	unsigned long head;	head = b[0];	head <<= 8;	head |= b[1];	head <<= 8;	head |= b[2];	head <<= 8;	head |= b[3];	h = head_check(head);	if (h && free_match) {	  /* just to be even more thorough, match the sample rate */	  struct frame *fr = &mp->fr;	  int mode,stereo,sampling_frequency,mpeg25,lsf;	  if( head & (1<<20) ) {	    lsf = (head & (1<<19)) ? 0x0 : 0x1;	    mpeg25 = 0;	  }	  else {	    lsf = 1;	    mpeg25 = 1;	  }	  mode      = ((head>>6)&0x3);	  stereo    = (mode == MPG_MD_MONO) ? 1 : 2;	  if(mpeg25) 	    sampling_frequency = 6 + ((head>>10)&0x3);	  else	    sampling_frequency = ((head>>10)&0x3) + (lsf*3);	  h = ((stereo==fr->stereo) && (lsf==fr->lsf) && (mpeg25==fr->mpeg25) &&                  (sampling_frequency == fr->sampling_frequency));	}	if (h) {	  return i-3;	}    }  }  return -1;}int decodeMP3(struct mpstr *mp,char *in,int isize,char *out,		int osize,int *done){	int i,iret,bits,bytes;	gmp = mp;	if(osize < 4608) {		fprintf(stderr,"To less out space\n");		return MP3_ERR;	}	if(in) {		if(addbuf(mp,in,isize) == NULL) {			return MP3_ERR;		}	}	/* First decode header */	if(!mp->header_parsed) {	  if (mp->fsizeold==-1) 	    /* first call.   sync with anything */	    bytes=sync_buffer(mp,0);	  else	    /* match channels, samplerate, etc, when syncing */	    bytes=sync_buffer(mp,1);		if (bytes<0) return MP3_NEED_MORE;		if (bytes>0) {		  /* bitstream problem, but we are now resynced 		   * should try to buffer previous data in case new		   * frame has nonzero main_data_begin, but we need		   * to make sure we do not overflow buffer		  */		  int size;		  fprintf(stderr,"bitstream problem: resyncing...\n");		  mp->old_free_format=0;		  /* skip some bytes, buffer the rest */		  size = (int) (wordpointer - mp->bsspace[mp->bsnum]+512);		  i = (size+bytes)-MAXFRAMESIZE;		  for (; i>0; --i) {		    --bytes;		    read_buf_byte(mp);		  }		  copy_mp(mp,bytes,wordpointer);		  mp->fsizeold += bytes;		}		read_head(mp);		decode_header(&mp->fr,mp->header);		mp->header_parsed=1;		mp->framesize = mp->fr.framesize;		mp->free_format = (mp->framesize==0);		if(mp->fr.lsf)		  mp->ssize = (mp->fr.stereo == 1) ? 9 : 17;		else		  mp->ssize = (mp->fr.stereo == 1) ? 17 : 32;		if (mp->fr.error_protection) 		  mp->ssize += 2;		mp->bsnum = 1-mp->bsnum; /* toggle buffer */		wordpointer = mp->bsspace[mp->bsnum] + 512;		bitindex = 0;	}	/* now decode side information */	if (!mp->side_parsed ) {                if (mp->bsize < mp->ssize) 		  return MP3_NEED_MORE;		copy_mp(mp,mp->ssize,wordpointer);		if(mp->fr.error_protection)		  getbits(16);		bits=do_layer3_sideinfo(&mp->fr);		/* bits = actual number of bits needed to parse this frame */		/* can be negative, if all bits needed are in the reservoir */		if (bits<0) bits=0;		/* read just as many bytes as necessary before decoding */		mp->dsize = (bits+7)/8;		/* this will force mpglib to read entire frame before decoding */		/* mp->dsize= mp->framesize - mp->ssize;*/		mp->side_parsed=1;	}	/* now decode main data */	iret=MP3_NEED_MORE;	if (!mp->data_parsed) {	        if(mp->dsize > mp->bsize) {		  return MP3_NEED_MORE;		}		copy_mp(mp,mp->dsize,wordpointer);		*done = 0;		do_layer3(&mp->fr,(unsigned char *) out,done);		wordpointer = mp->bsspace[mp->bsnum] + 512 + mp->ssize + mp->dsize;		mp->data_parsed=1;		iret=MP3_OK;	}	/* remaining bits are ancillary data, or reservoir for next frame 	 * If free format, scan stream looking for next frame to determine	 * mp->framesize */	if (mp->free_format) {	  if (mp->old_free_format) {	    /* free format.  bitrate must not vary */	    mp->framesize=mp->fsizeold_nopadding + (mp->fr.padding);	  }else{	    bytes=sync_buffer(mp,1);	    if (bytes<0) return iret;	    mp->framesize = bytes + mp->ssize+mp->dsize;	    mp->fsizeold_nopadding= mp->framesize - mp->fr.padding;	    /*	    fprintf(stderr,"freeformat bitstream:  estimated bitrate=%ikbs  \n",	        8*(4+mp->framesize)*freqs[mp->fr.sampling_frequency]/		    (1000*576*(2-mp->fr.lsf)));	    */	  }	}	/* buffer the ancillary data and reservoir for next frame */	bytes = mp->framesize-(mp->ssize+mp->dsize);	if (bytes > mp->bsize) {	  return iret;	}	if (bytes>0) {	  copy_mp(mp,bytes,wordpointer);	  wordpointer += bytes;	}	/* the above frame is completey parsed.  start looking for next frame */	mp->fsizeold = mp->framesize;	mp->old_free_format = mp->free_format;	mp->framesize =0;	mp->header_parsed=0;	mp->side_parsed=0;	mp->data_parsed=0;	return iret;}	int set_pointer(long backstep){  unsigned char *bsbufold;  if(gmp->fsizeold < 0 && backstep > 0) {    fprintf(stderr,"Can't step back %ld!\n",backstep);    return MP3_ERR;   }  bsbufold = gmp->bsspace[1-gmp->bsnum] + 512;  wordpointer -= backstep;  if (backstep)    memcpy(wordpointer,bsbufold+gmp->fsizeold-backstep,(size_t)backstep);  bitindex = 0;  return MP3_OK;}#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本丝袜连裤袜办公室| 亚洲精品一区在线观看| 亚洲精品综合在线| 国产亚洲欧美中文| 欧美综合在线视频| 91色乱码一区二区三区| 成人在线视频一区| 成人av综合在线| 国产一区啦啦啦在线观看| 日韩av中文在线观看| 一区二区在线观看免费视频播放| 中文字幕乱码日本亚洲一区二区| 日韩精品一区二区三区在线播放| 欧美日韩在线观看一区二区 | 欧美日韩一区二区在线视频| 不卡视频一二三四| 91黄色激情网站| 精品视频123区在线观看| 欧美剧情片在线观看| 欧美男人的天堂一二区| 欧洲av在线精品| 欧美精品日韩综合在线| 日韩免费观看高清完整版在线观看| 91麻豆精品国产91久久久资源速度 | 国产乱码精品一区二区三区av| 国产剧情av麻豆香蕉精品| 粉嫩aⅴ一区二区三区四区五区| av在线免费不卡| 日韩欧美在线不卡| 久久午夜电影网| 中文字幕在线免费不卡| 一区二区三区在线免费播放| 日韩成人一级片| 国产精品一区二区无线| 欧美美女一区二区在线观看| 精品精品欲导航| 亚洲18色成人| 91蝌蚪porny成人天涯| 精品国产电影一区二区| 亚洲一二三四区不卡| 国产伦精品一区二区三区免费迷 | 亚洲欧洲制服丝袜| 国产成人午夜精品5599 | 精品国产乱码91久久久久久网站| 亚洲免费av网站| 久久99久久99精品免视看婷婷| 99re热这里只有精品视频| 久久综合五月天婷婷伊人| 久久网这里都是精品| 日本成人中文字幕在线视频| 精品一区二区三区在线观看国产| 欧美日韩精品一二三区| 亚洲一区成人在线| 欧美亚洲高清一区二区三区不卡| 中文字幕亚洲在| 色欧美片视频在线观看在线视频| 欧美v国产在线一区二区三区| 天天色综合成人网| 91免费观看在线| 亚洲免费视频中文字幕| 色综合天天综合给合国产| ㊣最新国产の精品bt伙计久久| 成人av免费在线播放| 国产午夜一区二区三区| 粉嫩高潮美女一区二区三区| 国产精品情趣视频| 福利一区二区在线观看| 亚洲乱码一区二区三区在线观看| 91在线观看免费视频| 日韩高清不卡一区| 精品国产乱码久久久久久闺蜜| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美精品一区二区三区蜜臀| 99vv1com这只有精品| 天堂在线亚洲视频| 国产偷国产偷亚洲高清人白洁 | 在线精品观看国产| 亚洲欧美另类小说视频| 欧美日韩黄色一区二区| 日韩和欧美的一区| 国产精品久久久久久久久免费桃花| 欧美伊人精品成人久久综合97| 日韩精品福利网| 亚洲欧洲av一区二区三区久久| 欧美日韩精品综合在线| 狠狠色丁香久久婷婷综合丁香| 亚洲丝袜精品丝袜在线| 久久精子c满五个校花| 欧美视频一区二区在线观看| 国产在线视频不卡二| 视频一区在线播放| 一区二区成人在线观看| 欧美国产精品一区二区三区| 欧美日韩在线综合| 色天使久久综合网天天| 色综合天天综合网天天看片| 国产美女视频91| 久久99这里只有精品| 一区二区国产视频| 亚洲一二三专区| 亚洲另类色综合网站| 亚洲视频一区在线| 一区二区三区av电影| 136国产福利精品导航| 亚洲免费色视频| 亚洲欧洲韩国日本视频| 亚洲精品国产第一综合99久久| 国产精品国产三级国产普通话三级| 国产欧美一区二区精品久导航| 久久综合九色综合97_久久久| 国产三级一区二区| 综合亚洲深深色噜噜狠狠网站| 国产精品久久精品日日| 亚洲宅男天堂在线观看无病毒| 日韩和欧美一区二区三区| 精品一区二区三区不卡| 国产成人av电影| 欧美在线不卡视频| 91麻豆精品国产91| 久久久www成人免费毛片麻豆| 亚洲视频免费在线观看| 美女脱光内衣内裤视频久久网站| 国产黄色91视频| 欧美亚洲综合久久| 国产精品区一区二区三区| 性久久久久久久久| 不卡一区二区三区四区| 欧美电影影音先锋| 亚洲精品视频免费观看| 国产美女在线精品| 91精品国产欧美一区二区成人| 国产精品久久一卡二卡| 韩国av一区二区| 欧美一区二区三区在线| 亚洲国产精品视频| 91久久一区二区| 亚洲图片激情小说| 国产在线日韩欧美| 久久久噜噜噜久久中文字幕色伊伊| 亚洲欧美日韩电影| 成人午夜在线播放| 欧美一卡2卡三卡4卡5免费| 国产精品毛片大码女人| 国产精品99久| 中文字幕 久热精品 视频在线| 国产一区二区三区在线看麻豆| 日韩欧美成人一区| 免费看欧美女人艹b| 欧美一区二区二区| 理论电影国产精品| 欧美v亚洲v综合ⅴ国产v| 国产一区二区不卡| 国产精品毛片无遮挡高清| 不卡视频免费播放| 亚洲一级片在线观看| 欧美一区二区三区日韩| 国产精品一区久久久久| 日韩亚洲欧美中文三级| 韩国v欧美v亚洲v日本v| 亚洲男人的天堂在线观看| 51精品视频一区二区三区| 国产在线精品一区二区夜色| 日韩一区二区三区视频在线观看| 亚洲日本护士毛茸茸| 91亚洲精品一区二区乱码| 国产乱码精品1区2区3区| 综合在线观看色| 久久综合av免费| 欧美一区二区三区四区久久| 在线观看视频一区二区欧美日韩| 国产福利一区二区三区视频在线 | 蜜桃一区二区三区在线观看| 综合婷婷亚洲小说| 久久精品一区蜜桃臀影院| 日韩免费观看高清完整版在线观看| 欧美在线观看一二区| 欧美性色综合网| 色妹子一区二区| 欧美综合欧美视频| 91色视频在线| 欧美三级资源在线| 在线观看日韩国产| 欧美日韩国产欧美日美国产精品| 欧美丝袜丝交足nylons| 成人在线视频一区二区| 91同城在线观看| 欧美少妇一区二区| 亚洲精品在线免费观看视频| 久久精品一区二区三区不卡| 欧美精品一区二区三| 国产精品视频在线看| 亚洲欧美日韩国产中文在线| 亚洲综合激情另类小说区| 日韩精品一二三四| 国产91清纯白嫩初高中在线观看| 色综合天天视频在线观看| 欧美日韩一区二区在线观看视频 | 亚洲线精品一区二区三区 | 8x8x8国产精品| 中文字幕+乱码+中文字幕一区|