wav.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:5k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. #ifndef WAV_H_INCLUDED
  2. #define WAV_H_INCLUDED
  3. #ifdef _WIN32
  4. #pragma pack(push,1)
  5. #endif
  6. typedef struct
  7. { unsigned short format ;
  8. unsigned short channels ;
  9. unsigned int samplerate ;
  10. unsigned int bytespersec ;
  11. unsigned short blockalign ;
  12. unsigned short bitwidth ;
  13. } MIN_WAV_FMT ;
  14. typedef struct 
  15. { unsigned short format ;
  16. unsigned short channels ;
  17. unsigned int samplerate ;
  18. unsigned int bytespersec ;
  19. unsigned short blockalign ;
  20. unsigned short bitwidth ;
  21. unsigned short extrabytes ;
  22. unsigned short dummy ;
  23. } WAV_FMT_SIZE20 ;
  24. //or
  25. #pragma pack(1)
  26. typedef struct 
  27. { unsigned short format ;
  28. unsigned short channels ;
  29. unsigned int samplerate ;
  30. unsigned int bytespersec ;
  31. unsigned short blockalign ;
  32. unsigned short bitwidth ;
  33. unsigned short extrabytes ;
  34. } WAV_FMT_EX ;
  35. #pragma pack()
  36. //end or
  37. typedef struct
  38. { unsigned short format ;
  39. unsigned short channels ;
  40. unsigned int samplerate ;
  41. unsigned int bytespersec ;
  42. unsigned short blockalign ;
  43. unsigned short bitwidth ;
  44. unsigned short extrabytes ;
  45. unsigned short samplesperblock ;
  46. unsigned short numcoeffs ;
  47. struct
  48. { short coeff1 ;
  49. short coeff2 ;
  50. } coeffs [7] ;
  51. } MS_ADPCM_WAV_FMT ;
  52. typedef struct
  53. { unsigned short format ;
  54. unsigned short channels ;
  55. unsigned int samplerate ;
  56. unsigned int bytespersec ;
  57. unsigned short blockalign ;
  58. unsigned short bitwidth ;
  59. unsigned short extrabytes ;
  60. unsigned short samplesperblock ;
  61. } IMA_ADPCM_WAV_FMT ;
  62. typedef struct
  63. { unsigned int esf_field1 ;
  64. unsigned short esf_field2 ;
  65. unsigned short esf_field3 ;
  66. unsigned char esf_field4 [8] ;
  67. } EXT_SUBFORMAT ;
  68. typedef struct
  69. { unsigned short format ;
  70. unsigned short channels ;
  71. unsigned int samplerate ;
  72. unsigned int bytespersec ;
  73. unsigned short blockalign ;
  74. unsigned short bitwidth ;
  75. unsigned short extrabytes ;
  76. unsigned short validbits ;
  77. unsigned int channelmask ;
  78. EXT_SUBFORMAT esf ;
  79. } EXTENSIBLE_WAV_FMT ;
  80. typedef struct
  81. { unsigned short format ;
  82. unsigned short channels ;
  83. unsigned int samplerate ;
  84. unsigned int bytespersec ;
  85. unsigned short blockalign ;
  86. unsigned short bitwidth ;
  87. unsigned short extrabytes ;
  88. unsigned short samplesperblock ;
  89. } GSM610_WAV_FMT ;
  90. typedef union
  91. { unsigned short format ;
  92. MIN_WAV_FMT min ;
  93. IMA_ADPCM_WAV_FMT ima ;
  94. MS_ADPCM_WAV_FMT msadpcm ;
  95. EXTENSIBLE_WAV_FMT ext ;
  96. GSM610_WAV_FMT gsm610 ;
  97. WAV_FMT_SIZE20 size20 ;
  98. WAV_FMT_EX wavfmtex ;
  99. char padding [512] ;
  100. } WAV_FMT ;
  101. typedef struct
  102. { unsigned int samples ;
  103. } FACT_CHUNK ;
  104. /*------------------------------------------------------------------------------------ 
  105. ** Functions defined in wav.c
  106. */
  107. int wav_close (SF_PRIVATE  *psf) ;
  108. /*------------------------------------------------------------------------------------ 
  109. ** Functions defined in wav_float.c
  110. */
  111. int wav_read_x86f2s (SF_PRIVATE *psf, short *ptr, int len) ;
  112. int wav_read_x86f2i (SF_PRIVATE *psf, int *ptr, int len) ;
  113. int wav_read_x86f2d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  114. int wav_write_s2x86f (SF_PRIVATE *psf, short *ptr, int len) ;
  115. int wav_write_i2x86f (SF_PRIVATE *psf, int *ptr, int len) ;
  116. int wav_write_d2x86f (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  117. /*------------------------------------------------------------------------------------ 
  118. ** Functions defined in wav_ima_adpcm.c
  119. */
  120. off_t ima_seek   (SF_PRIVATE *psf, off_t offset, int whence) ;
  121. int wav_ima_close (SF_PRIVATE  *psf) ;
  122. int wav_ima_reader_init (SF_PRIVATE *psf, WAV_FMT *fmt) ;
  123. int ima_read_s (SF_PRIVATE *psf, short *ptr, int len) ;
  124. int ima_read_i (SF_PRIVATE *psf, int *ptr, int len) ;
  125. int ima_read_d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  126. int wav_ima_writer_init (SF_PRIVATE *psf, WAV_FMT *fmt) ;
  127. int ima_write_s (SF_PRIVATE *psf, short *ptr, int len) ;
  128. int ima_write_i (SF_PRIVATE *psf, int *ptr, int len) ;
  129. int ima_write_d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  130. /*------------------------------------------------------------------------------------ 
  131. ** Functions defined in wav_ms_adpcm.c
  132. */
  133. off_t msadpcm_seek   (SF_PRIVATE *psf, off_t offset, int whence) ;
  134. int msadpcm_close (SF_PRIVATE  *psf) ;
  135. int msadpcm_reader_init (SF_PRIVATE *psf, WAV_FMT *fmt) ;
  136. int msadpcm_read_s (SF_PRIVATE *psf, short *ptr, int len) ;
  137. int msadpcm_read_i (SF_PRIVATE *psf, int *ptr, int len) ;
  138. int msadpcm_read_d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  139. int msadpcm_writer_init (SF_PRIVATE *psf, WAV_FMT *fmt) ;
  140. int msadpcm_write_s (SF_PRIVATE *psf, short *ptr, int len) ;
  141. int msadpcm_write_i (SF_PRIVATE *psf, int *ptr, int len) ;
  142. int msadpcm_write_d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  143. /*------------------------------------------------------------------------------------ 
  144. ** Functions defined in wav_gsm610.c
  145. */
  146. /*
  147. ** off_t wav_gsm610_seek   (SF_PRIVATE *psf, off_t offset, int whence) ;
  148. */
  149. int wav_gsm610_close (SF_PRIVATE  *psf) ;
  150. int wav_gsm610_reader_init (SF_PRIVATE *psf, WAV_FMT *fmt) ;
  151. int wav_gsm610_read_s (SF_PRIVATE *psf, short *ptr, int len) ;
  152. int wav_gsm610_read_i (SF_PRIVATE *psf, int *ptr, int len) ;
  153. int wav_gsm610_read_d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  154. int wav_gsm610_writer_init (SF_PRIVATE *psf, WAV_FMT *fmt) ;
  155. int wav_gsm610_write_s (SF_PRIVATE *psf, short *ptr, int len) ;
  156. int wav_gsm610_write_i (SF_PRIVATE *psf, int *ptr, int len) ;
  157. int wav_gsm610_write_d (SF_PRIVATE *psf, double *ptr, int len, int normalize) ;
  158. #ifdef _WIN32
  159. #pragma pack(pop,1)
  160. #endif
  161. #endif