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

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

?? mp3dec.h

?? arm7制作的MP3(軟解碼部分)
?? H
字號:
/* MPEG AUDIO LAYER 3 DECODER */
/* Bjorn Wesen 1997           */

#ifndef MP3DEC_H
#define MP3DEC_H

/* enable the assembler version of the IDCT in the subband synth */
#ifdef WIN32
#define USE_INLINE_ASM
#endif

#ifndef INT_MATH
/* enable the fast implementation of the IMDCT */
#define LEE_IMDCT
#endif

#ifndef WIN32
#undef MAKE_DATA
#define USE_DATA
#else
#undef USE_DATA
#undef MAKE_DATA
#endif

#ifdef DSP
/* in wait of a real math runtime... */
float tan(float f);
float sin(float f);
float cos(float f);
float sqrt(float f);
#else
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* enable clipping in the sample output */
#define OVERFLOW_CHECKING
#endif

#ifndef PI
#define PI 3.1415926535897932385
#endif

#define MAXCH 2           /* number of channels - 2 is stereo */
#define NUM_SUBBANDS 32   /* number of frequency subbands */
#define NUM_DCTBANDS 18   /* number of DCT lines */

#ifdef DSP
#define BITSTREAM_BUFSIZE 1024
#else
#define BITSTREAM_BUFSIZE 131072
#endif

/* ISO-MPEG layers */
#define LAYER1 3
#define LAYER2 2
#define LAYER3 1
#define LAYERRS 0

/* for the sampling_frequency field in a Frame */
#define FREQ_44 0    /* 44.1kHz sampling rate */
#define FREQ_48 1    /* 48kHz sampling rate */
#define FREQ_32 2    /* 32kHz sampling rate */
#define FREQ_RS 3    /* reserved */

/* stereo-mode of a Frame */
#define MODE_STEREO 0
#define MODE_JOINT_STEREO 1
#define MODE_DUAL_CHANNEL 2
#define MODE_SINGLE_CHANNEL 3

/* mode-extensions of joint_stereo in layer 3 */
/* maybe recode these to be two on/off fields instead! */
#define EXT_INT_OFF_MS_OFF 0
#define EXT_INT_ON_MS_OFF 1
#define EXT_INT_OFF_MS_ON 2
#define EXT_INT_ON_MS_ON 3

/* types of de-emphasis */
#define EMPH_NONE 0      /* no de-emphasis */
#define EMPH_5015 1      /* 50/15 microseconds */
#define EMPH_RS 2        /* reserved */
#define EMPH_CCITT 3     /* CCITT J.17 */


typedef int ibool;
#ifndef INT_MATH
#ifdef MAKE_DATA
typedef double mpfloat;   /* use extra precision while doing tables */
#else
typedef float mpfloat;   /* used for audio data calculations */
#endif
#define ISCALE(x)
#else

#define INTFACT 32767
#define ISCALE(x) (x).scale()

class mpfloat {
private:
    mpfloat(int i) { _val = i; }
public:
    mpfloat() { _val = 0; }
//    mpfloat(float f) { _val = (int)(f*INTFACT); } 
    mpfloat(double d) { _val = (int)(d*INTFACT); }

    void scale(int i = 16) {
//	printf("Scaling from 0x%8x.\n", _val);
	_val >>= i;
    }

    int operator!=(mpfloat a) {
	return a._val != _val;
    }

    int operator==(mpfloat a) {
	return a._val == _val;
    }

    mpfloat& operator=(mpfloat a) { 
	_val = a._val;
	return *this;
    }

    mpfloat& operator=(float a) { 
	_val = (int)(a*INTFACT);
	return *this;
    }

    mpfloat& operator=(double a) { 
	_val = (int)(a*INTFACT);
	return *this;
    }

    mpfloat& operator+=(mpfloat a) { 
	_val += a._val;
	return *this;
    }

    mpfloat& operator-=(mpfloat a) { 
	_val -= a._val;
	return *this;
    }

    mpfloat& operator*=(mpfloat a) { 
	_val *= a._val;
	return *this;
    }

    mpfloat& operator/=(mpfloat a) { 
	_val /= a._val;
	return *this;
    }

    friend mpfloat operator+(mpfloat, mpfloat);
    friend mpfloat operator-(mpfloat, mpfloat);
    friend mpfloat operator-(mpfloat);
    friend mpfloat operator*(mpfloat, mpfloat);
    friend mpfloat operator/(mpfloat, mpfloat);

    operator int () const { return _val / INTFACT; }
    operator float () const { return (float)_val / INTFACT; }
//    operator double () const { return (double)_val / INTFACT; }

    int rint() const { return _val; }

private:
    int _val;

};

#endif

typedef short PCMSample;
#define MIN(a,b) (a < b ? a : b)

/* Bitstream handles the streaming of a file into bits */

struct Bitstream {
#ifndef DSP
    FILE *f;
#endif
    int offset;      /* offset into file f - next byte to be read */
    ibool eof_found;   /* true if the file has hit eof */
    
    int write_index; /* load pointer in buffer */
    
#ifdef DSP
    unsigned char *buffer;  /* circular bytebuffer */
#else
    unsigned char buffer[BITSTREAM_BUFSIZE + 4];  /* circular bytebuffer */
    unsigned long *buffer32;  /* inbuffer, not huffbuff */
#endif
    int bit_index;  /* next bit to read */
#if 0
    int byte_index; /* byte to read - mapped into buffer by %BITSTREAM_BUFSIZE */
#endif
    int pos;        /* bit position in the stream */

};

typedef struct Bitstream Bitstream;


/* gets numbits bits from the bitstream bs */
#ifdef WIN32
unsigned int __inline Bitstream_get(Bitstream *bs, int numbits);
unsigned int __inline Bitstream_get1(Bitstream *bs);
#else
inline unsigned int Bitstream_get(Bitstream *bs, int numbits);
inline unsigned int Bitstream_get1(Bitstream *bs);
#endif

unsigned int Bitstream_viewbits(Bitstream *bs, int n);
void Bitstream_flushbits(Bitstream *bs, int n);

/* write a byte to the stream */
void Bitstream_putbyte(Bitstream *bs, unsigned int val);

/* rewind the read pointer n bits */
void Bitstream_rewindbits(Bitstream *bs, int n);

/* rewind the read pointer n bytes */
void Bitstream_rewindbytes(Bitstream *bs, int n);

/* returns true if the bitstream is at EOF */
ibool Bitstream_eof(Bitstream *bs);


/* seek synchronization word - return true if found */
ibool Bitstream_seek_sync(Bitstream *bs);
#if 0
typedef unsigned char Hufnode[2];

struct HuffmanTable {
    int number;                 /* number of the table, 0-33 in mpeg layer 3 */
    int xlen, ylen;             /* size */
    Hufnode *code;              /* decoder data tree */
    int codelen;                /* length of the decoder tree */
    int linbits;                /* number of linbits */
};

typedef struct HuffmanTable HuffmanTable;
extern HuffmanTable Huffman_h[34];
#endif

void HuffmanTable_boot(Bitstream *bs);
int HuffmanTable_bitsused(Bitstream *bs);
int HuffmanTable_decode(int htable, Bitstream *bs,
			int *x, int *y, int *v, int *w);


/* used in Granule.block_type */
#define BLOCKTYPE_NORMAL 0
#define BLOCKTYPE_START 1
#define BLOCKTYPE_3WIN 2
#define BLOCKTYPE_STOP 3

/* structure describing side information for one granule */

struct Granule {
  int part2_3_length;     /* nbr of bits used for sfactors and Huffman data */
  int big_values;         /* some weird value for huffman energies */
  int global_gain;        /* quantizer step size information for the granule */
  int scalefac_compress;  /* selects bitsize for transmission of sfactors */
  ibool window_switching_flag; /* signals that a special block type is used */

  /* these are only used if window_switching_flag is true */
  int block_type;         /* window type for this granule */
  ibool mixed_block_flag;  /* true if lower frequencies are special */
  int table_select[3];    /* selects Huffman tables for each region */
  int subblock_gain[3];   /* gain offsets for each subblock */
  int region0_count;      /* nbr of scalefactor bands in region 0 minus 1 */
  int region1_count;      /* nbr of scalefactor bands in region 1 minus 1 */
  ibool preflag;           /* true for high frequency amplification */
  ibool scalefac_scale;    /* scalefactor multiplier, false = 0.5, true = 1 */
  ibool count1table_select; /* selects huffman tables for some regions */

  int scalefac_l[23];     /* actual scalefactors for this granule */
  int scalefac_s[13][3];  /* scalefactors used in short windows */

    
};

typedef struct Granule Granule;

typedef int Granule_intfreqs[NUM_SUBBANDS * NUM_DCTBANDS + 10];
typedef mpfloat Granule_floatfreqs[NUM_SUBBANDS * NUM_DCTBANDS + 10];


/* This struct is the main object used when decoding a frame of audio. 
   A frame produces, in layer 3, 1152 samples per channel.
   */
typedef PCMSample SampleBlock[2][576][2];         /* this frames decoded PCM samples */

struct Frame {
    
    /* general header information for this frame */
    
    ibool CRC_enable;             /* true if CRC is enabled */
    int bitrate_index;           /* indicates the bitrate */
    int sampling_frequency;      /* indicates the sampling frequency */
    ibool padding_bit;            /* true if there is a padding slot */
    int mode;                    /* indicates the stereomode of this frame */
    int mode_extension;          /* indicates intensity and ms stereo on/off */
    ibool copyright;              /* true if the bitstream is copyrighted */
    ibool originality;            /* true if this bitstream is an original */
    int emphasis;                /* type of de-emphasis */
    
    int CRC;                     /* 16-bit CRC if error protection is on */
    
    int channels;                 /* number of channels, 2 for stereo */
    
    int main_data_begin;         /* bit offset to where the main data lives */
    int header_size;             /* size of header in bytes */
    int main_data_size;          /* number of bytes of main_data */
    
    ibool scfsi[MAXCH][4];        /* scalefactor selection information */
    
    Granule gr[2][MAXCH];        /* two granules per channel */
    
    PCMSample *samples;
    
#ifdef WIN32
    float *spectrum;
#endif

};

typedef struct Frame Frame;


#if defined(__cplusplus)
extern "C"
{
#endif
/* opens a binary file on disk for reading bits */
int Bitstream_open(Bitstream *bs, char *filename);

/* closes the file */
void Bitstream_close(Bitstream *bs);

/* fills the bitstreams internal buffer */
int Bitstream_fillbuffer(Bitstream *bs);
/* returns position of the read pointer, in bits */
int Bitstream_tell(Bitstream *bs);

void HuffmanTable_init();

void Frame_init();
void Frame_load(Frame *, Bitstream *, PCMSample *); 
void Granule_init();
extern int frameNum;

/* Function declarations */

#if defined(__cplusplus)
}
#endif 

/* load and decode a frame from the given bitstream */


#ifdef DECVERBOSE
void Frame_dump(Frame *);  /* dump verbose info about a frame */
#endif

/* debug code */
void dump_floats(mpfloat *f, int num);
void dump_ints(int *f, int num);


/* Granule operations - these constitute most of the decoding process */

void Granule_decode_info(Granule *gr, Bitstream *bs);
void Granule_decode_scalefactors(Granule *gr, Bitstream *bs,
				 int channel, int grnum, Frame *f);
void Granule_decode_huffman(Granule *gr, Bitstream *bs, 
			    int part2_start, Granule_intfreqs is, Frame *f);

void Granule_requantize(Granule *gr, Granule_intfreqs is,
			Granule_floatfreqs xr, Frame *f);

void Granule_process_stereo(Granule *grch0, Granule *grch1,
			    Granule_floatfreqs xr[2], 
			    Granule_floatfreqs lr[2], Frame *f);

void Granule_reorder(Granule *gr, Granule_floatfreqs xr,
		     Granule_floatfreqs xr2, Frame *f);

void Granule_antialias(Granule *gr, Granule_floatfreqs xr);

void Granule_imdct(Granule *gr, int ch, Granule_floatfreqs X);

void Granule_freqinverse(Granule *gr, Granule_floatfreqs x);

void Granule_subband_synthesis(Granule *gr, int ch, Granule_floatfreqs s, 
			       PCMSample *S);

void Granule_subband_synthesis2(Granule *gr, Granule_floatfreqs s1,
				Granule_floatfreqs s2,
				PCMSample *S);



void fast_idct_init();
void fast_idct(mpfloat *in, mpfloat *out);
PCMSample *windowing(int ch, PCMSample *S);
void windowing_init();
extern mpfloat *Granule_sbsynth_V[2];

struct Frame_band {
    int l[23];
    int s[14];
};

extern struct Frame_band Frame_bands[3];

#ifdef ROCKFORD
void prof_start();
void prof_end();
#define PROFSTART prof_start()
#define PROFSTOP prof_stop()
#else
#define PROFSTART
#define PROFSTOP
#endif

#ifdef MAKE_DATA
void
make_data_file(const char *fname, const char *datname, mpfloat *nbrs, int len);
void
make_data_file_2d(const char *fname, 
		  const char *datname, mpfloat *nbrs, int len1, int len2);
#endif


#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜伦理影院| 欧美xxxxxxxx| 欧美va在线播放| 亚洲精品国产无天堂网2021| 精品一区二区免费视频| 欧美无砖专区一中文字| 国产免费观看久久| 精品一区二区三区免费视频| 欧美日韩在线不卡| 中文字幕在线视频一区| 国产在线播放一区三区四| 欧美视频在线一区| 亚洲欧美日韩一区二区| 成人高清免费观看| 久久久精品免费观看| 美女免费视频一区二区| 在线91免费看| 日韩av网站在线观看| 欧美日韩一级二级三级| 一级精品视频在线观看宜春院| 国产传媒久久文化传媒| 欧美tickling挠脚心丨vk| 日韩黄色小视频| 欧美精品tushy高清| 亚洲国产综合视频在线观看| 色婷婷久久久亚洲一区二区三区 | 久久66热re国产| 91.xcao| 丝袜亚洲精品中文字幕一区| 欧美在线一二三| 亚洲激情男女视频| 色94色欧美sute亚洲线路一ni| 中文子幕无线码一区tr| 成人免费视频一区| 欧美国产一区在线| www.亚洲免费av| 亚洲六月丁香色婷婷综合久久| 91丨九色丨尤物| 亚洲尤物视频在线| 555夜色666亚洲国产免| 毛片一区二区三区| 国产亚洲精品bt天堂精选| 国产成人精品亚洲777人妖| 国产精品麻豆一区二区| 色婷婷综合激情| 亚洲夂夂婷婷色拍ww47| 91精品欧美久久久久久动漫 | 亚洲午夜国产一区99re久久| 欧美四级电影网| 美女视频黄频大全不卡视频在线播放 | 亚洲电影激情视频网站| 欧美精品久久久久久久久老牛影院| 午夜电影网一区| 久久久精品免费观看| 色悠悠亚洲一区二区| 午夜伊人狠狠久久| 久久女同互慰一区二区三区| 粉嫩av一区二区三区在线播放| 综合久久久久久久| 欧美一卡在线观看| 成人免费视频免费观看| 亚洲成av人片www| 国产亚洲一区二区在线观看| 91麻豆swag| 久久国产精品99久久久久久老狼| 欧美国产欧美亚州国产日韩mv天天看完整| 色综合久久久久综合99| 亚洲成a人v欧美综合天堂 | 美日韩黄色大片| 国产精品免费丝袜| 69堂成人精品免费视频| 丁香激情综合国产| 青青草精品视频| **性色生活片久久毛片| 精品久久人人做人人爱| 91丨porny丨蝌蚪视频| 久久国产视频网| 亚洲激情男女视频| 日本一区二区三区在线不卡| 欧美性色欧美a在线播放| 国产精品1024| 日韩黄色一级片| 亚洲视频免费看| 国产夜色精品一区二区av| 欧美喷潮久久久xxxxx| caoporn国产一区二区| 精品一区二区三区欧美| 亚洲国产日韩精品| ...av二区三区久久精品| 久久久久久久久久久久久女国产乱 | 亚洲国产欧美另类丝袜| 国产精品亲子乱子伦xxxx裸| 欧美成va人片在线观看| 欧美高清激情brazzers| 91年精品国产| 99精品黄色片免费大全| 国产精品亚洲第一区在线暖暖韩国| 日韩精品视频网站| 亚洲成人激情社区| 伊人色综合久久天天人手人婷| 国产免费成人在线视频| 久久久久久一级片| 久久亚洲免费视频| 日韩欧美中文字幕一区| 91精品麻豆日日躁夜夜躁| 欧美无乱码久久久免费午夜一区| 91老司机福利 在线| 9人人澡人人爽人人精品| 丰满放荡岳乱妇91ww| 成人精品在线视频观看| 99久久免费国产| 91美女片黄在线观看91美女| 99精品国产99久久久久久白柏 | 中文字幕亚洲视频| 国产精品高潮久久久久无| 国产精品美女久久久久久久| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产一区二区精华| 精品久久人人做人人爰| 久久久久高清精品| 国产精品免费观看视频| 亚洲日本成人在线观看| 樱花影视一区二区| 亚洲成人精品一区| 蜜臀av性久久久久蜜臀av麻豆| 免费成人你懂的| 国产河南妇女毛片精品久久久| 国产69精品久久99不卡| 一本色道a无线码一区v| 欧美视频在线不卡| 日韩欧美亚洲国产精品字幕久久久| 日韩精品一区二区三区四区| 久久婷婷成人综合色| 中文字幕日本不卡| 亚洲综合一区二区精品导航| 色综合久久久久网| 在线观看91av| ww亚洲ww在线观看国产| 亚洲青青青在线视频| 午夜成人在线视频| 国产精品亚洲专一区二区三区| 成人黄色777网| 欧美日韩国产一区| 精品对白一区国产伦| 国产精品麻豆欧美日韩ww| 性感美女极品91精品| 精品一二三四区| 色播五月激情综合网| 日韩三级电影网址| 中文字幕一区三区| 日韩**一区毛片| 99热精品国产| 精品国产免费视频| 亚洲一区在线观看免费| 韩国三级中文字幕hd久久精品| 色综合久久88色综合天天6 | 欧美日韩久久久| 久久久久久97三级| 日韩精彩视频在线观看| 成人黄动漫网站免费app| 日韩一区二区免费电影| 中文字幕欧美一| 国产一区二区三区视频在线播放| 一本到不卡精品视频在线观看| 亚洲精品一区二区三区福利| 亚洲午夜久久久久中文字幕久| 国产精品91一区二区| 6080日韩午夜伦伦午夜伦| 中文字幕一区二区三区四区| 极品销魂美女一区二区三区| 欧美在线观看视频一区二区| 国产精品美女久久久久久久久 | 国产精品一区二区免费不卡 | 国产三级欧美三级日产三级99| 亚洲福利视频一区二区| 99精品在线观看视频| 久久久亚洲高清| 免费观看一级欧美片| 欧美日韩一区成人| 一区二区三区美女| 91麻豆国产香蕉久久精品| 国产精品区一区二区三| 国产精一区二区三区| 欧美哺乳videos| 日本大胆欧美人术艺术动态| 欧美午夜理伦三级在线观看| 亚洲精品成人在线| 色综合一区二区| 中文字幕字幕中文在线中不卡视频| 国产精品亚洲午夜一区二区三区| xnxx国产精品| 国产一区二区伦理片| 久久女同性恋中文字幕| 国产一区二区看久久| 国产无人区一区二区三区| 国产激情偷乱视频一区二区三区| 久久久影视传媒| 国产成人精品免费在线| 欧美国产精品一区二区| 成人午夜av影视|