www.pudn.com > XvidQP.rar > Filters.h


////////////////////////////////////////////////////// 
// GENERAL PURPOSE DEFS FOR CREATING CUSTOM FILTERS // 
////////////////////////////////////////////////////// 
 
 
typedef struct riffspecialdata_t 
{	HANDLE hSpecialData;	 
	HANDLE hData;			// Actual data handle (not used anymore) 
	DWORD  dwSize;			// size of data in handle (now size returned in szDataIn) 
	DWORD  dwExtra;			// optional extra data (usually a count) 
	char   szListType[8];	// Parent list type (usually "WAVE" or "INFO", or "adtl") 
	char   szType[8];		// Usually a four character code for data, but can be up to 7 chars 
	LPSTR  szDataIn;		// User provided data handle (null to have DLL allocate it - don't do this!) 
	DWORD  dwSizeIn;		// Size of handle passed in 
} SPECIALDATA; 
 
// "CUE " dwExtra=number of cues, each cue is 8 bytes		([4] name [4] sample offset) 
// "LTXT" dwExtra=number of items, each one is 8 bytes		([4] ltxt len [4] name [4] cue length [4] purpose [n] data) 
// "NOTE" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term) 
// "LABL" dwExtra=number of strings, each one is n bytes	([4] name [n-4] length zero term) 
// "PLST" dwExtra=number if items, each one is 16 bytes		([4] name [4] dwLen [4] dwLoops [4] dwMode) 
 
typedef struct coolquery_tag 
	{char szName[24]; 
	 char szCopyright[80]; 
	  
	 // rate table, bits are set for modes that can be handled 
	 WORD Quad32;  // Quads are 3-D encoded 
	 WORD Quad16; 
	 WORD Quad8; 
	 WORD Stereo8;    		// rates are from lowest bit: 
	 WORD Stereo12;   		// bit 0 set: 5500 (5512.5) 
	 WORD Stereo16;   		// bit 1 set: 11025 (11K) 
	 WORD Stereo24;   		// bit 2 set: 22050 (22K) 
	 WORD Stereo32;   		// bit 3 set: 32075 (32K, or 32000) 
	 WORD Mono8;      		// bit 4 set: 44100 (44K) 
	 WORD Mono12;	  		// bit 5 set: 48000 (48K) 
	 WORD Mono16;	  		// bit 6 set: 88200 (88K)   (future ultra-sonic rates?) 
	 WORD Mono24;	  		// bit 7 set: 96000 (96K) 
	 WORD Mono32;     		// bit 8 set: 132300 (132K) 
	 				  		// bit 9 set: 176400 (176K) 
	 DWORD dwFlags; 
	 char szExt[4]; 
	 long lChunkSize; 
	 char szExt2[4]; 
	 char szExt3[4]; 
	 char szExt4[4]; 
	} COOLQUERY; 
 
#define R_5500   1 
#define R_11025  2 
#define R_22050  4 
#define R_32075  8 
#define R_44100  16 
#define R_48000  32 
#define R_88200  64 
#define R_96000  128 
#define R_132300 256 
#define R_176400 512 
 
#define C_VALIDLIBRARY 1152 
 
// For backwards compatibility, return 1152 from QueryCoolFilter, and support the older FilterReadSpecial, 
// FilterWriteSpecial, FilterCanReadSpecial and FilterCanWriteSpecial calls.  If you are not supporing 
// extra information in the files, then just returning 1152 is enough. 
 
#define QF_RATEADJUSTABLE		0x001   // if can handle non-standard sample rates 
										// if not, only rates in bit rate table understood 
#define QF_CANSAVE				0x002		   
#define QF_CANLOAD				0x004 
#define QF_UNDERSTANDSALL		0x008   // will read ANYTHING, so it is the last resort if no other 
										// formats match 
#define QF_READSPECIALFIRST		0x010	// read special info before trying to read data 
#define QF_READSPECIALLAST		0x020	// read special info after reading data 
#define QF_WRITESPECIALFIRST	0x040	// when writing a file, special info is sent to DLL before data 
#define QF_WRITESPECIALLAST		0x080	// when writing, special info is sent to DLL after data 
#define QF_HASOPTIONSBOX		0x100	// set if options box implemented 
#define QF_NOASKFORCONVERT		0x200	// set to bypass asking for conversion if original in different rate, auto convert 
#define QF_NOHEADER				0x400	// set if this is a raw data format with no header 
#define QF_CANDO32BITFLOATS		0x800	// set if file format can handle 32-bit sample data for input 
#define QF_CANOPENVIRTUAL		0x1000	// Set if data is in Intel 8-bit or 16-bit sample format, or floats 
										// and the GetDataOffset() function is implemented 
#define QF_BACKWARDSCOMPATIBLE	0x2000	// Set if you are ALSO including the obsolete functions 
										// FilterWriteSpecial, FilterCanWriteSpecial, FilterReadSpecial, 
										// and FilterCanReadSpecial 
#define QF_IGNOREMRU			0x4000	// Do not add this to MRU list if opening a file of this format. 
 
 
// These definitions are used for backward compatibility!!!!!!!!! 
 
// Also include the current functins for reading and writing special data for newer versions of  
// Cool Edit. 
// special types are read from and written to DLL in the order below 
// special types (particular to Windows waveforms) 
 
#define SP_IART  20 
#define SP_ICMT  21 
#define SP_ICOP  22 
#define SP_ICRD  23 
#define SP_IENG  24 
#define SP_IGNR  25 
#define SP_IKEY  26 
#define SP_IMED  27 
#define SP_INAM  28 
#define SP_ISFT  29 
#define SP_ISRC  30 
#define SP_ITCH  31 
#define SP_ISBJ  32 
#define SP_ISRF  33 
#define SP_DISP  34 
#define SP_CUE   40 // returns number of cues of size cue_type  
#define SP_LTXT  41 // returns number of adtl texts of size 8 (4,id and 4,len) 
#define SP_NOTE  42 // returns LO=size, HI=number of strings (sz sz sz...) 
#define SP_LABL	 43 // returns LO=size, HI=number of strings (sz sz sz...) 
#define SP_PLST  44 // returns number of playlist entries size play_type  
 
// For special data, .FLT must implement FilterGetFirstSpecialData and FilterGetNextSpecialData 
typedef DWORD           FOURCC;         // a four character code 
 
struct cue_type { DWORD dwName; 
				  DWORD dwPosition; 
				  FOURCC fccChunk; 
				  DWORD dwChunkStart; 
				  DWORD dwBlockStart; 
				  DWORD dwSampleOffset; 
				 }; 
 
struct play_type {DWORD dwName; 
					 DWORD dwLength; 
					 DWORD dwLoops; 
					};