wavdefs.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // wavdefs.h
  3. //
  4. #ifndef wavdefs_h
  5. #define wavdefs_h
  6. # ifndef _WIN32
  7. typedef unsigned short WORD;
  8. typedef unsigned int DWORD;
  9. typedef struct _GUID
  10. {
  11. DWORD Data1;
  12. WORD Data2;
  13. WORD Data3;
  14. unsigned char Data4[8];
  15. } GUID;
  16. typedef struct /*waveformatex */{
  17. WORD wFormatTag;
  18. WORD nChannels;
  19. DWORD nSamplesPerSec;
  20. DWORD nAvgBytesPerSec;
  21. WORD nBlockAlign;
  22. WORD wBitsPerSample;
  23. WORD cbSize;
  24. } WAVEFORMATEX;
  25. typedef struct {
  26. WAVEFORMATEX Format; /* 18 bytes: info for renderer as well as for pvoc*/
  27. union { /* 2 bytes*/
  28. WORD wValidBitsPerSample; /* as per standard WAVE_EX: applies to renderer*/
  29. WORD wSamplesPerBlock;
  30. WORD wReserved;
  31. } Samples;
  32. DWORD dwChannelMask; /* 4 bytes : can be used as in standrad WAVE_EX */
  33. GUID SubFormat; /* 16 bytes*/
  34. } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
  35. #endif
  36. #ifdef _WIN32
  37. #include <windows.h>
  38. #include <mmreg.h>
  39. #endif
  40. typedef struct pvoc_data { /* 32 bytes*/
  41. WORD wWordFormat; /* pvoc_wordformat */
  42. WORD wAnalFormat; /* pvoc_frametype */
  43. WORD wSourceFormat; /* WAVE_FORMAT_PCM or WAVE_FORMAT_IEEE_FLOAT*/
  44. WORD wWindowType; /* pvoc_windowtype */
  45. DWORD nAnalysisBins; /* implicit FFT size = (nAnalysisBins-1) * 2*/
  46. DWORD dwWinlen; /* analysis winlen,samples, NB may be <> FFT size */
  47. DWORD dwOverlap; /* samples */
  48. DWORD dwFrameAlign; /* usually nAnalysisBins * 2 * sizeof(float) */
  49. float fAnalysisRate;
  50. float fWindowParam; /* default 0.0f unless needed */
  51. } PVOCDATA;
  52. typedef struct {
  53. WAVEFORMATEXTENSIBLE wxFormat; /* 40 bytes*/
  54. DWORD dwVersion; /* 4 bytes*/
  55. DWORD dwDataSize; /* 4 bytes: sizeof PVOCDATA data block */
  56. PVOCDATA data; /* 32 bytes*/
  57. } WAVEFORMATPVOCEX; /* total 80 bytes*/
  58. /* return -1 for error in fd, id can be >=0 */
  59. int get_pvxfd(int fd,PVOCDATA *pvxdata);
  60. #endif /* wavdefs_h */