⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 itype.h

📁 希望能帮助大家学习C语言.
💻 H
字号:
/*____________________________________________________________________________
	
	MP3 Decoding Libraries
	Lanuguages used: C, C++, ASM

	As much as I would love to, I cannot take
	full credit for writing this code.
	Xing Technology	made MPEG-Layer 3 for us
	to decode. =)
	- ULTiMaTuM -

	MPEG-Layer 3 (MP3)
	Copyright (C) 1995-1997 Xing Technology

  	NOTE: I only edited the bare-minimum. 90%
		of this is original decoding code...
		Hmm... that sounds strange =)

____________________________________________________________________________*/

/*---------------------------------------------------------------

mpeg Layer II audio decoder, integer version
variable type control

-----------------------------------------------------------------*/
/*-----------------------------------------------------------------
Variable types can have a large impact on performance.  If the
native type int is 32 bit or better, setting all variables to the
native int is probably the best bet.  Machines with fast floating
point handware will probably run faster with the floating point
version of this decoder.

On 16 bit machines, use the native 16 bit int where possible
with special consideration given to the multiplies used in
the dct and window (see below).


The code uses the type INT32 when 32 or more bits are required.
Use the native int if possible.
Signed types are required for all but DCTCOEF which may be unsigned.

THe major parts of the decoder are: bit stream unpack (iup.c),
dct (cidct.c), and window (iwinq.c).  The compute time relationship
is usually  unpack < dct < window.

-------------------------------------------------------------------*/

/*-------------- dct cidct.c -------------------------------------------
dct input is type SAMPLEINT, output is WININT

DCTCOEF:  dct coefs, 16 or more bits required
DCTBITS:  fractional bits in dct coefs. Coefs are unsigned in
          the range 0.50 to 10.2.  DCTBITS=10 is a compromise
          between precision and the possibility of overflowing
          intermediate results.


DCTSATURATE:  If set, saturates dct output to 16 bit.
              Dct output may overflow if WININT is 16 bit, overflow
              is rare, but very noisy.  Define to 1 for 16 bit WININT.
              Define to 0 otherwise.

The multiply used in the dct (routine forward_bf in cidct.c) requires
the multiplication of a 32 bit variable by a 16 bit unsigned coef
to produce a signed 32 bit result. On 16 bit machines this could be
faster than a full 32x32 multiply.

------------------------------------------------------------------*/
/*-------------- WINDOW iwinq.c ---------------------------------------
window input is type WININT, output is short (16 bit pcm audio)

window coefs WINBITS fractional bits,
        coefs are signed range in -1.15 to 0.96.
        WINBITS=14 is maximum for 16 bit signed representation.
        Some CPU's will multiply faster with fewer bits.
        WINBITS less that 8 may cause noticeable quality loss.

WINMULT defines the multiply used in the window (iwinq.c)
WINMULT must produce a 32 bit (or better) result, although both
multipliers may be 16 bit.  A 16x16-->32 multiply may offer
a performance advantage if the compiler can be coerced into
doing the right thing.
------------------------------------------------------------------*/
/*-- settings for MS C++ 4.0 flat 32 bit (long=int=32bit) --*/
/*-- asm replacement modules must use these settings ---*/

typedef long INT32;
typedef unsigned long UINT32;

typedef int SAMPLEINT;

typedef int DCTCOEF;

#define DCTBITS 10
#define DCTSATURATE 0

typedef int WININT;
typedef int WINCOEF;

#define WINBITS 10
#define WINMULT(x,coef)  ((x)*(coef))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -