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

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /*
  2. ** Copyright (C) 1999-2000 Erik de Castro Lopo <erikd@zip.com.au>
  3. **  
  4. ** This program is free software; you can redistribute it and/or modify
  5. ** it under the terms of the GNU Lesser General Public License as published by
  6. ** the Free Software Foundation; either version 2.1 of the License, or
  7. ** (at your option) any later version.
  8. ** 
  9. ** This program is distributed in the hope that it will be useful,
  10. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. ** GNU Lesser General Public License for more details.
  13. ** 
  14. ** You should have received a copy of the GNU Lesser General Public License
  15. ** along with this program; if not, write to the Free Software 
  16. ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17. */
  18. #ifndef COMMON_H_INCLUDED
  19. #define COMMON_H_INCLUDED
  20. #ifdef _WIN32
  21. #pragma pack(push,1)
  22. #endif
  23. #define SF_BUFFER_LEN (4096)
  24. #define SF_FILENAME_LEN (256)
  25. #define SF_HEADER_LEN (2048)
  26. #define BITWIDTH2BYTES(x) (((x) + 7) / 8)
  27. enum
  28. { SF_MODE_READ = 1, 
  29. SF_MODE_WRITE = 2,
  30. SF_MODE_RW = 3
  31. } ; 
  32. enum
  33. { SF_ENDIAN_LITTLE = 100, 
  34. SF_ENDIAN_BIG = 200
  35. } ; 
  36. enum
  37. { SF_FALSE = 0, 
  38. SF_TRUE = 1
  39. } ; 
  40. typedef int (*func_seek)  (void*, int, int) ;
  41. typedef int (*func_short) (void*, short *ptr, unsigned int len) ;
  42. typedef int (*func_int) (void*, int *ptr, unsigned int len) ;
  43. typedef int (*func_double) (void*, double *ptr, unsigned int len, int normalize) ;
  44. typedef int (*func_close) (void*) ;
  45. typedef struct
  46. { /* Force the compiler to double align the start of buffer. */
  47. double buffer [SF_BUFFER_LEN/sizeof(double)] ;
  48. char strbuffer [SF_BUFFER_LEN] ;
  49. char filename [SF_FILENAME_LEN] ;
  50. char header [SF_HEADER_LEN] ;
  51. int Magick ;
  52. unsigned int strindex ;
  53. unsigned int headindex ;
  54. FILE  *file ;
  55. int mode ;
  56. int error ;
  57. int endian ;
  58. SF_INFO sf ; 
  59. long dataoffset ; /* Offset in number of bytes from beginning of file. */
  60. long datalength ; /* Length in bytes of the audio data. */
  61. unsigned int blockwidth ; /* Size in bytes of one set of interleaved samples. */
  62. unsigned int bytewidth ; /* Size in bytes of one sample (one channel). */
  63. long filelength ;
  64. long current ;
  65. void *fdata ;
  66. double normfactor ;
  67. func_seek seek_func ;
  68. func_short read_short ;
  69. func_int read_int ;
  70. func_double read_double ;
  71. func_short write_short ;
  72. func_int write_int ;
  73. func_double write_double ;
  74. func_close close ;
  75. } SF_PRIVATE ;
  76. enum
  77. { SFE_NO_ERROR = 0,
  78. SFE_BAD_FILE,
  79. SFE_OPEN_FAILED,
  80. SFE_BAD_OPEN_FORMAT,
  81. SFE_BAD_SNDFILE_PTR,
  82. SFE_BAD_SF_INFO_PTR,
  83. SFE_BAD_INT_FD,
  84. SFE_BAD_INT_PTR,
  85. SFE_MALLOC_FAILED, 
  86. SFE_BAD_SEEK, 
  87. SFE_NOT_SEEKABLE,
  88. SFE_UNIMPLEMENTED,
  89. SFE_BAD_READ_ALIGN,
  90. SFE_BAD_WRITE_ALIGN,
  91. SFE_UNKNOWN_FORMAT,
  92. SFE_NOT_READMODE,
  93. SFE_NOT_WRITEMODE,
  94. SFE_BAD_MODE_RW,
  95. SFE_BAD_SF_INFO,
  96. SFE_SHORT_READ,
  97. SFE_SHORT_WRITE,
  98. SFE_INTERNAL,
  99. SFE_WAV_NO_RIFF,
  100. SFE_WAV_NO_WAVE,
  101. SFE_WAV_NO_FMT,
  102. SFE_WAV_FMT_SHORT,
  103. SFE_WAV_FMT_TOO_BIG,
  104. SFE_WAV_BAD_FORMAT,
  105. SFE_WAV_BAD_BLOCKALIGN,
  106. SFE_WAV_NO_DATA,
  107. SFE_WAV_ADPCM_NOT4BIT,
  108. SFE_WAV_ADPCM_CHANNELS,
  109. SFE_WAV_GSM610_FORMAT,
  110. SFE_WAV_UNKNOWN_CHUNK,
  111. SFE_AIFF_NO_FORM,
  112. SFE_AIFF_UNKNOWN_CHUNK,
  113. SFE_COMM_CHUNK_SIZE,
  114. SFE_AIFF_NO_SSND,
  115. SFE_AIFF_NO_DATA,
  116. SFE_AU_UNKNOWN_FORMAT,
  117. SFE_AU_NO_DOTSND,
  118. SFE_RAW_READ_BAD_SPEC,
  119. SFE_RAW_BAD_BITWIDTH,
  120. SFE_PAF_NO_MARKER,
  121. SFE_PAF_VERSION,
  122. SFE_PAF_UNKNOWN_FORMAT,
  123. SFE_PAF_SHORT_HEADER,
  124. SFE_SVX_NO_FORM, 
  125. SFE_SVX_NO_BODY,
  126. SFE_SVX_NO_DATA,
  127. SFE_SVX_BAD_COMP, 
  128. SFE_NIST_BAD_HEADER,
  129. SFE_NIST_BAD_ENCODING,
  130. SFE_MAX_ERROR /* This must be last in list. */
  131. } ;
  132. void endswap_short_array (short *ptr, int len) ;
  133. void endswap_int_array  (int *ptr, int len) ;
  134. void psf_sprintf (SF_PRIVATE *psf, char *format, ...) ;
  135. void psf_hprintf (SF_PRIVATE *psf, char *format, ...) ;
  136. void psf_hsetf (SF_PRIVATE *psf, unsigned int marker, char *format, ...) ;
  137. int aiff_open_read (SF_PRIVATE *psf) ;
  138. int aiff_open_write (SF_PRIVATE *psf) ;
  139. int au_open_read (SF_PRIVATE *psf) ;
  140. int au_nh_open_read (SF_PRIVATE *psf) ;
  141. int au_open_write (SF_PRIVATE *psf) ;
  142. int wav_open_read (SF_PRIVATE *psf) ;
  143. int wav_open_write (SF_PRIVATE *psf) ;
  144. int raw_open_read (SF_PRIVATE *psf) ;
  145. int raw_open_write (SF_PRIVATE *psf) ;
  146. int paf_open_read (SF_PRIVATE *psf) ;
  147. int paf_open_write (SF_PRIVATE *psf) ;
  148. int svx_open_read (SF_PRIVATE *psf) ;
  149. int svx_open_write (SF_PRIVATE *psf) ;
  150. int aunist_open_read (SF_PRIVATE *psf) ;
  151. int aunist_open_write (SF_PRIVATE *psf) ;
  152. #ifdef _WIN32
  153. #pragma pack(pop,1)
  154. #endif
  155. #endif /* COMMON_H_INCLUDED */