Filters.h
上传用户:hxb_1234
上传日期:2010-03-30
资源大小:8328k
文件大小:5k
源码类别:

VC书籍

开发平台:

Visual C++

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