234 lines
4.9 KiB
C
234 lines
4.9 KiB
C
/*
|
|
* MEDIAWAVE.H
|
|
*
|
|
* There is the external definition of the WAVE
|
|
* medai handlers. DO NOT USE THIS STRUCTURE IN ANY WAY UNLESS YOU
|
|
* ARE WRITING A MEDIA HANDLER!!! This structure subject to change
|
|
* without notice.
|
|
*
|
|
* This file requires "windows.h", "mediaman.h"
|
|
*/
|
|
|
|
#ifndef _MEDWAVE_H_
|
|
#define _MEDWAVE_H_
|
|
|
|
#define medtypeWAVE medFOURCC('W','A','V','E')
|
|
#define medtypeAIFF medFOURCC('A','I','F','F')
|
|
#define medtypePCM medFOURCC('P','C','M',' ')
|
|
#define medtypeCNVW medFOURCC('C','N','V','W')
|
|
#define medtypeADPV medFOURCC('A','D','P','V')
|
|
#define medtypeADPM medFOURCC('A','D','P','M')
|
|
|
|
#define CFNAME_WAVEEDIT "WaveEditIntSound"
|
|
|
|
|
|
#define WAVE_GETSIZE ( MED_USER + 2 )
|
|
#define WAVE_CUT ( MED_USER + 3 )
|
|
#define WAVE_PASTE ( MED_USER + 4 )
|
|
#define WAVE_READ ( MED_USER + 5 )
|
|
#define WAVE_COPY ( MED_USER + 6 )
|
|
#define WAVE_GETDATA ( MED_USER + 9 )
|
|
#define WAVE_GETFMT ( MED_USER + 10 )
|
|
#define WAVE_GETFMTSIZE ( MED_USER + 11 )
|
|
#define WAVE_WRITE ( MED_USER + 12 )
|
|
#define WAVE_SETFMT ( MED_USER + 13 )
|
|
#define WAVE_REALIZE ( MED_USER + 14 )
|
|
#define WAVE_SETFMTNORESIZE ( MED_USER + 15 )
|
|
|
|
|
|
#define WAVE_PASTECHUNK (MED_USER + 16)
|
|
|
|
|
|
|
|
|
|
/* HACK HACK a HWAVE is now defined in mmsystem.h */
|
|
/* Get around this by defining a different type. */
|
|
typedef DWORD MedWaveHWAVE;
|
|
#define HWAVE MedWaveHWAVE
|
|
|
|
|
|
typedef struct _WaveChange {
|
|
int nOperation;
|
|
LONG nPosition;
|
|
LONG nLength;
|
|
} WaveChangeStruct;
|
|
|
|
typedef WaveChangeStruct FAR * FPWaveChangeStruct;
|
|
|
|
|
|
typedef struct _WaveRead {
|
|
LONG nPosition;
|
|
LONG nLength;
|
|
LPSTR fpchBuffer;
|
|
} WaveReadStruct;
|
|
|
|
typedef WaveReadStruct FAR * FPWaveReadStruct;
|
|
|
|
typedef struct _WaveGetData {
|
|
LONG nChunkStart;
|
|
LONG nPosition;
|
|
LONG nLength;
|
|
LPSTR fpchBuffer;
|
|
} WaveGetDataStruct;
|
|
|
|
typedef WaveGetDataStruct FAR * FPWaveGetDataStruct;
|
|
|
|
typedef struct _WaveWrite {
|
|
LONG nLength;
|
|
LPSTR fpchBuffer;
|
|
} WaveWriteStruct;
|
|
|
|
typedef WaveWriteStruct FAR * FPWaveWriteStruct;
|
|
|
|
|
|
typedef struct _WavePasteChunk {
|
|
LONG nPosition;
|
|
LONG nLength;
|
|
HMED hMed;
|
|
} WavePasteChunkStruct;
|
|
|
|
typedef WavePasteChunkStruct FAR * FPWavePasteChunkStruct;
|
|
|
|
|
|
|
|
|
|
/*
|
|
* WARNING WARNING WARNING
|
|
*
|
|
* Do not read below this line if you are not writing a wave physical
|
|
* handler for use with the WAVE handlers. The structure given
|
|
* below is not for public consumption.
|
|
*
|
|
*/
|
|
|
|
|
|
#define HWaveSound( x ) HIWORD( x )
|
|
#define HWaveFmt( x ) LOWORD( x )
|
|
|
|
|
|
|
|
#define WAVE_MED 1
|
|
#define WAVE_TMEM 2
|
|
#define WAVE_TMED 3
|
|
#define WAVE_NONE 5
|
|
|
|
#define WAVE_LINK 42
|
|
|
|
typedef WORD PWAVELINK;
|
|
typedef WORD PWAVELOC;
|
|
|
|
extern HPSTR hpStorage;
|
|
|
|
typedef struct _WaveLocation {
|
|
WORD wType; // the contents of the union
|
|
WORD wAccessCount; // Access count
|
|
LONG nLength; // Sample Length of the Block
|
|
LONG nStart; // Offset in union u element
|
|
// sample counts are in format stored in
|
|
union {
|
|
MEDID medid;
|
|
struct _TmpMed NEAR * pTmpMed;
|
|
struct _TmpMem NEAR * pTmpMem;
|
|
} u;
|
|
} WaveLocation;
|
|
|
|
typedef PWAVELOC PWaveLocation;
|
|
|
|
#define MEDWAVE_ACCESS(p) (hpStorage + p * (DWORD) sizeof(WaveLocation))
|
|
|
|
#define PLOC(p) ((WaveLocation FAR *) MEDWAVE_ACCESS(p))
|
|
|
|
// typedef WaveLocation NEAR *PWaveLocation;
|
|
|
|
|
|
typedef struct _WaveLink {
|
|
WORD wType;
|
|
PWAVELINK pNext;
|
|
PWAVELINK pPrev;
|
|
LONG nStart; // Starting sample # of the block
|
|
LONG nLength;// Sample Length of the Block
|
|
// sample counts are in format wanted
|
|
PWAVELOC pLoc; // Where the data is
|
|
} WaveLink;
|
|
|
|
// typedef WaveLink NEAR *PWaveLink;
|
|
// typedef WaveLink FAR *FPWaveLink;
|
|
typedef PWAVELINK PWaveLink;
|
|
|
|
#define PLINK(p) ((WaveLink FAR *) MEDWAVE_ACCESS(p))
|
|
#define LINKLOC(p) PLOC(PLINK(p)->pLoc)
|
|
|
|
typedef struct _MediaWave {
|
|
MEDID medidOld;
|
|
MEDTYPE medTypeCurrent;
|
|
LONG nSampleSize;
|
|
WORD cbSample;
|
|
NPPCMWAVEFORMAT pFmt;
|
|
NPPCMWAVEFORMAT pFmtWanted;
|
|
HMED hMed;
|
|
PWAVELINK pMedia;
|
|
} MediaWave;
|
|
typedef MediaWave FAR *FPMediaWave;
|
|
|
|
|
|
|
|
typedef struct _TmpMed {
|
|
MEDID medid;
|
|
WORD wAccessCount;
|
|
LONG nLength;
|
|
MediaWave Wave;
|
|
} TmpMed;
|
|
|
|
typedef TmpMed NEAR *PTmpMed;
|
|
|
|
|
|
typedef struct _TmpMem {
|
|
HANDLE hMem;
|
|
WORD wAccessCount;
|
|
LONG nLength;
|
|
MediaWave Wave;
|
|
} TmpMem;
|
|
|
|
typedef TmpMem NEAR *PTmpMem;
|
|
|
|
|
|
|
|
|
|
|
|
#define MediaWaveSetError(ERR) medSetExtError(ERR, ghInst)
|
|
|
|
|
|
/* ERROR MESSAGE DEFINITIONS, must be greater than 100 */
|
|
|
|
#define ERRCNV_READING 100
|
|
#define ERRCNV_SSND_OFFSET 101
|
|
#define ERRCNV_SSND_BLOCK 102
|
|
#define ERRCNV_SEEKING_FOR 103
|
|
#define ERRCNV_DATA_CREATE 104
|
|
#define ERRCNV_SSND_NOTFOUND 105
|
|
#define ERRCNV_COMM_ASCEND 109
|
|
#define ERRCNV_SEEK_START 110
|
|
#define ERRCNV_COMM_FIND 118
|
|
#define ERRCNV_NOT_AIFF 119
|
|
#define ERRCNV_OPEN_INPUT 121
|
|
#define ERRCNV_OPEN_OUTPUT 122
|
|
#define ERRCNV_NOT_RIFF 133
|
|
#define ERRCNV_NOT_WAVE 134
|
|
#define ERRCNV_BAD_FMT 135
|
|
#define ERRCNV_FMT_FIND 137
|
|
#define ERRCNV_DATA_FIND 138
|
|
#define ERRCNV_SSND_FIND 140
|
|
#define ERRCNV_ALLOC 141
|
|
#define ERRCNV_SAVE 142
|
|
#define ERRCNV_NOTWRITE 143
|
|
#define ERRCNV_NOTREAD 144
|
|
|
|
|
|
|
|
extern void FAR PASCAL MediaWaveFreeHWAVE( HWAVE hWave );
|
|
|
|
|
|
|
|
#endif /* _WAVE_H_ */
|
|
|