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

📄 mikmod_internals.h

📁 wince下著名的视频播放器源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*	MikMod sound library	(c) 1998, 1999, 2000 Miodrag Vallat and others - see file AUTHORS for	complete list.	This library is free software; you can redistribute it and/or modify	it under the terms of the GNU Library General Public License as	published by the Free Software Foundation; either version 2 of	the License, or (at your option) any later version.	This program is distributed in the hope that it will be useful,	but WITHOUT ANY WARRANTY; without even the implied warranty of	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the	GNU Library General Public License for more details.	You should have received a copy of the GNU Library General Public	License along with this library; if not, write to the Free Software	Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA	02111-1307, USA.*//*==============================================================================  $Id: mikmod_internals.h,v 1.4 2004/02/18 13:29:17 raph Exp $  MikMod sound library internal definitions==============================================================================*/#ifndef _MIKMOD_INTERNALS_H#define _MIKMOD_INTERNALS_H#ifdef __cplusplusextern "C" {#endif#ifdef HAVE_MALLOC_H#include <malloc.h>#endif#include <stdarg.h>#if defined(__OS2__)||defined(__EMX__)||defined(WIN32)#define strcasecmp(s,t) stricmp(s,t)#endif#include <mikmod_build.h>#ifdef WIN32#pragma warning(disable:4761)#endif/*========== More type definitions *//* SLONGLONG: 64bit, signed */#if defined (__arch64__) || defined(__alpha)typedef long		SLONGLONG;#define NATIVE_64BIT_INT#elif defined(__WATCOMC__)typedef __int64		SLONGLONG;#elif defined(WIN32) && !defined(__MWERKS__)typedef LONGLONG	SLONGLONG;#elif macintosh && !TYPE_LONGLONG#include <Types.h>typedef SInt64	    SLONGLONG;#elsetypedef long long	SLONGLONG;#endif/*========== Error handling */#define _mm_errno MikMod_errno#define _mm_critical MikMod_criticalextern MikMod_handler_t _mm_errorhandler;/*========== Memory allocation */extern void* _mm_malloc(size_t);extern void* _mm_calloc(size_t,size_t);#define _mm_free(p) do { if (p) free(p); p = NULL; } while(0)/*========== MT stuff */#ifdef HAVE_PTHREAD#include <pthread.h>#define DECLARE_MUTEX(name) \	extern pthread_mutex_t _mm_mutex_##name#define MUTEX_LOCK(name)	\ 	pthread_mutex_lock(&_mm_mutex_##name)#define MUTEX_UNLOCK(name)	\	pthread_mutex_unlock(&_mm_mutex_##name)#elif defined(__OS2__)||defined(__EMX__)#define DECLARE_MUTEX(name)	\	extern HMTX _mm_mutex_##name#define MUTEX_LOCK(name)	\	if(_mm_mutex_##name)	\		DosRequestMutexSem(_mm_mutex_##name,SEM_INDEFINITE_WAIT)#define MUTEX_UNLOCK(name)	\	if(_mm_mutex_##name)	\		DosReleaseMutexSem(_mm_mutex_##name)#elif defined(WIN32)#include <windows.h>#define DECLARE_MUTEX(name)	\	extern HANDLE _mm_mutex_##name#define MUTEX_LOCK(name)	\	if(_mm_mutex_##name)	\		WaitForSingleObject(_mm_mutex_##name,INFINITE)#define MUTEX_UNLOCK(name)	\	if(_mm_mutex_##name)	\		ReleaseMutex(_mm_mutex_##name)#else#define DECLARE_MUTEX(name)	\	extern void *_mm_mutex_##name#define MUTEX_LOCK(name)#define MUTEX_UNLOCK(name)#endifDECLARE_MUTEX(lists);DECLARE_MUTEX(vars);/*========== Portable file I/O */extern MREADER* _mm_new_file_reader(FILE* fp);extern void _mm_delete_file_reader(MREADER*);extern MWRITER* _mm_new_file_writer(FILE *fp);extern void _mm_delete_file_writer(MWRITER*);extern BOOL _mm_FileExists(CHAR *fname);#define _mm_write_SBYTE(x,y) y->Put(y,(int)x)#define _mm_write_UBYTE(x,y) y->Put(y,(int)x)#define _mm_read_SBYTE(x) (SBYTE)x->Get(x)#define _mm_read_UBYTE(x) (UBYTE)x->Get(x)#define _mm_write_SBYTES(x,y,z) z->Write(z,(void *)x,y)#define _mm_write_UBYTES(x,y,z) z->Write(z,(void *)x,y)#define _mm_read_SBYTES(x,y,z)  z->Read(z,(void *)x,y)#define _mm_read_UBYTES(x,y,z)  z->Read(z,(void *)x,y)#define _mm_fseek(x,y,z) x->Seek(x,y,z)#define _mm_ftell(x) x->Tell(x)#define _mm_rewind(x) _mm_fseek(x,0,SEEK_SET)#define _mm_eof(x) x->Eof(x)extern void _mm_iobase_setcur(MREADER*);extern void _mm_iobase_revert(void);extern FILE *_mm_fopen(CHAR*,CHAR*);extern int	_mm_fclose(FILE *);extern void _mm_write_string(CHAR*,MWRITER*);extern int  _mm_read_string (CHAR*,int,MREADER*);extern SWORD _mm_read_M_SWORD(MREADER*);extern SWORD _mm_read_I_SWORD(MREADER*);extern UWORD _mm_read_M_UWORD(MREADER*);extern UWORD _mm_read_I_UWORD(MREADER*);extern SLONG _mm_read_M_SLONG(MREADER*);extern SLONG _mm_read_I_SLONG(MREADER*);extern ULONG _mm_read_M_ULONG(MREADER*);extern ULONG _mm_read_I_ULONG(MREADER*);extern int _mm_read_M_SWORDS(SWORD*,int,MREADER*);extern int _mm_read_I_SWORDS(SWORD*,int,MREADER*);extern int _mm_read_M_UWORDS(UWORD*,int,MREADER*);extern int _mm_read_I_UWORDS(UWORD*,int,MREADER*);extern int _mm_read_M_SLONGS(SLONG*,int,MREADER*);extern int _mm_read_I_SLONGS(SLONG*,int,MREADER*);extern int _mm_read_M_ULONGS(ULONG*,int,MREADER*);extern int _mm_read_I_ULONGS(ULONG*,int,MREADER*);extern void _mm_write_M_SWORD(SWORD,MWRITER*);extern void _mm_write_I_SWORD(SWORD,MWRITER*);extern void _mm_write_M_UWORD(UWORD,MWRITER*);extern void _mm_write_I_UWORD(UWORD,MWRITER*);extern void _mm_write_M_SLONG(SLONG,MWRITER*);extern void _mm_write_I_SLONG(SLONG,MWRITER*);extern void _mm_write_M_ULONG(ULONG,MWRITER*);extern void _mm_write_I_ULONG(ULONG,MWRITER*);extern void _mm_write_M_SWORDS(SWORD*,int,MWRITER*);extern void _mm_write_I_SWORDS(SWORD*,int,MWRITER*);extern void _mm_write_M_UWORDS(UWORD*,int,MWRITER*);extern void _mm_write_I_UWORDS(UWORD*,int,MWRITER*);extern void _mm_write_M_SLONGS(SLONG*,int,MWRITER*);extern void _mm_write_I_SLONGS(SLONG*,int,MWRITER*);extern void _mm_write_M_ULONGS(ULONG*,int,MWRITER*);extern void _mm_write_I_ULONGS(ULONG*,int,MWRITER*);/*========== Samples *//* This is a handle of sorts attached to any sample registered with   SL_RegisterSample.  Generally, this only need be used or changed by the   loaders and drivers of mikmod. */typedef struct SAMPLOAD {	struct SAMPLOAD *next;	ULONG    length;       /* length of sample (in samples!) */	ULONG    loopstart;    /* repeat position (relative to start, in samples) */	ULONG    loopend;      /* repeat end */	UWORD    infmt,outfmt;	int      scalefactor;	SAMPLE*  sample;	MREADER* reader;} SAMPLOAD;/*========== Sample and waves loading interface */extern void      SL_HalveSample(SAMPLOAD*,int);extern void      SL_Sample8to16(SAMPLOAD*);extern void      SL_Sample16to8(SAMPLOAD*);extern void      SL_SampleSigned(SAMPLOAD*);extern void      SL_SampleUnsigned(SAMPLOAD*);extern BOOL      SL_LoadSamples(void);extern SAMPLOAD* SL_RegisterSample(SAMPLE*,int,MREADER*);extern BOOL      SL_Load(void*,SAMPLOAD*,ULONG);extern BOOL      SL_Init(SAMPLOAD*);extern void      SL_Exit(SAMPLOAD*);/*========== Internal module representation (UniMod) interface *//* number of notes in an octave */#define OCTAVE 12extern void   UniSetRow(UBYTE*);extern UBYTE  UniGetByte(void);extern UWORD  UniGetWord(void);extern UBYTE* UniFindRow(UBYTE*,UWORD);extern void   UniSkipOpcode(void);extern void   UniReset(void);extern void   UniWriteByte(UBYTE);extern void   UniWriteWord(UWORD);extern void   UniNewline(void);extern UBYTE* UniDup(void);extern BOOL   UniInit(void);extern void   UniCleanup(void);extern void   UniEffect(UWORD,UWORD);#define UniInstrument(x) UniEffect(UNI_INSTRUMENT,x)#define UniNote(x)       UniEffect(UNI_NOTE,x)extern void   UniPTEffect(UBYTE,UBYTE);extern void   UniVolEffect(UWORD,UBYTE);/*========== Module Commands */enum {	/* Simple note */	UNI_NOTE = 1,	/* Instrument change */	UNI_INSTRUMENT,	/* Protracker effects */	UNI_PTEFFECT0,     /* arpeggio */	UNI_PTEFFECT1,     /* porta up */	UNI_PTEFFECT2,     /* porta down */	UNI_PTEFFECT3,     /* porta to note */	UNI_PTEFFECT4,     /* vibrato */	UNI_PTEFFECT5,     /* dual effect 3+A */	UNI_PTEFFECT6,     /* dual effect 4+A */	UNI_PTEFFECT7,     /* tremolo */	UNI_PTEFFECT8,     /* pan */	UNI_PTEFFECT9,     /* sample offset */	UNI_PTEFFECTA,     /* volume slide */	UNI_PTEFFECTB,     /* pattern jump */	UNI_PTEFFECTC,     /* set volume */	UNI_PTEFFECTD,     /* pattern break */	UNI_PTEFFECTE,     /* extended effects */	UNI_PTEFFECTF,     /* set speed */	/* Scream Tracker effects */	UNI_S3MEFFECTA,    /* set speed */	UNI_S3MEFFECTD,    /* volume slide */	UNI_S3MEFFECTE,    /* porta down */	UNI_S3MEFFECTF,    /* porta up */	UNI_S3MEFFECTI,    /* tremor */	UNI_S3MEFFECTQ,    /* retrig */	UNI_S3MEFFECTR,    /* tremolo */	UNI_S3MEFFECTT,    /* set tempo */	UNI_S3MEFFECTU,    /* fine vibrato */	UNI_KEYOFF,        /* note off */	/* Fast Tracker effects */	UNI_KEYFADE,       /* note fade */	UNI_VOLEFFECTS,    /* volume column effects */	UNI_XMEFFECT4,     /* vibrato */	UNI_XMEFFECT6,     /* dual effect 4+A */	UNI_XMEFFECTA,     /* volume slide */	UNI_XMEFFECTE1,    /* fine porta up */	UNI_XMEFFECTE2,    /* fine porta down */	UNI_XMEFFECTEA,    /* fine volume slide up */	UNI_XMEFFECTEB,    /* fine volume slide down */	UNI_XMEFFECTG,     /* set global volume */	UNI_XMEFFECTH,     /* global volume slide */	UNI_XMEFFECTL,     /* set envelope position */	UNI_XMEFFECTP,     /* pan slide */	UNI_XMEFFECTX1,    /* extra fine porta up */	UNI_XMEFFECTX2,    /* extra fine porta down */	/* Impulse Tracker effects */	UNI_ITEFFECTG,     /* porta to note */	UNI_ITEFFECTH,     /* vibrato */	UNI_ITEFFECTI,     /* tremor (xy not incremented) */	UNI_ITEFFECTM,     /* set channel volume */	UNI_ITEFFECTN,     /* slide / fineslide channel volume */	UNI_ITEFFECTP,     /* slide / fineslide channel panning */	UNI_ITEFFECTT,     /* slide tempo */	UNI_ITEFFECTU,     /* fine vibrato */	UNI_ITEFFECTW,     /* slide / fineslide global volume */	UNI_ITEFFECTY,     /* panbrello */	UNI_ITEFFECTZ,     /* resonant filters */	UNI_ITEFFECTS0,	/* UltraTracker effects */	UNI_ULTEFFECT9,    /* Sample fine offset */	/* OctaMED effects */	UNI_MEDSPEED,	UNI_MEDEFFECTF1,   /* play note twice */	UNI_MEDEFFECTF2,   /* delay note */	UNI_MEDEFFECTF3,   /* play note three times */	/* Oktalyzer effects */	UNI_OKTARP,		   /* arpeggio */	UNI_LAST};extern UWORD unioperands[UNI_LAST];/* IT / S3M Extended SS effects: */enum {	SS_GLISSANDO = 1,	SS_FINETUNE,	SS_VIBWAVE,	SS_TREMWAVE,	SS_PANWAVE,	SS_FRAMEDELAY,	SS_S7EFFECTS,	SS_PANNING,	SS_SURROUND,	SS_HIOFFSET,	SS_PATLOOP,	SS_NOTECUT,	SS_NOTEDELAY,	SS_PATDELAY};/* IT Volume column effects */enum {

⌨️ 快捷键说明

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