audio.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:7k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /**********************************************************************
  2. MPEG-4 Audio VM
  3. Audio i/o module
  4. This software module was originally developed by
  5. Heiko Purnhagen (University of Hannover / ACTS-MoMuSys)
  6. and edited by
  7. in the course of development of the MPEG-2 NBC/MPEG-4 Audio standard
  8. ISO/IEC 13818-7, 14496-1,2 and 3. This software module is an
  9. implementation of a part of one or more MPEG-2 NBC/MPEG-4 Audio tools
  10. as specified by the MPEG-2 NBC/MPEG-4 Audio standard. ISO/IEC gives
  11. users of the MPEG-2 NBC/MPEG-4 Audio standards free license to this
  12. software module or modifications thereof for use in hardware or
  13. software products claiming conformance to the MPEG-2 NBC/ MPEG-4 Audio
  14. standards. Those intending to use this software module in hardware or
  15. software products are advised that this use may infringe existing
  16. patents. The original developer of this software module and his/her
  17. company, the subsequent editors and their companies, and ISO/IEC have
  18. no liability for use of this software module or modifications thereof
  19. in an implementation. Copyright is not released for non MPEG-2
  20. NBC/MPEG-4 Audio conforming products. The original developer retains
  21. full right to use the code for his/her own purpose, assign or donate
  22. the code to a third party and to inhibit third party from using the
  23. code for non MPEG-2 NBC/MPEG-4 Audio conforming products. This
  24. copyright notice must be included in all copies or derivative works.
  25. Copyright (c) 1996, 1999.
  26. Header file: audio.h
  27. $Id: audio.h,v 1.2 2002/05/13 15:48:18 mvillari Exp $
  28. Required libraries:
  29. libtsp.a AFsp audio file library
  30. Required modules:
  31. common.o common module
  32. austream.o audio i/o streams (.au format)
  33. Authors:
  34. HP    Heiko Purnhagen, Uni Hannover <purnhage@tnt.uni-hannover.de>
  35. Changes:
  36. 21-jan-96   HP    born (using AFsp-V2R2)
  37. 19-feb-97   HP    made internal data structures invisible
  38. 30-dec-98   HP    uses austream for stdin/stdout, evaluates USE_AFSP
  39. 07-jan-99   HP    AFsp-v4r1 (AFsp-V3R2 still supported)
  40. **********************************************************************/
  41. /**********************************************************************
  42. The audio i/o module provides an interface to the basic functions for
  43. PCM audio data stream input and output.
  44. The current implementation of the audio i/o module is based on the
  45. AFsp audio library.  If USE_AFSP is undefined, only 16 bit .au files
  46. are supported using the austream module. Audio i/o on stdin/stdout
  47. (only 16 bit .au) is also based on the austream module.
  48. Other implementations of this module are possible as long as the basic
  49. functions required by the MPEG-4 Audio VM framework are provided.
  50. Optional functions could be substituted by dummy functions and
  51. optional parameters could be ignored.  The VM framework uses only
  52. sequential access to the input and output audio data streams.  The
  53. seek function is only use for initial compensation of the coding delay
  54. in the encoder and decoder.
  55. Basic functions and parameters required by the VM framework:
  56. AudioOpenRead(): fileName, numChannel, fSample
  57. AudioOpenWrite(): fileName, numChannel, fSample
  58. AudioReadData(): file, data, numSample
  59. AudioWriteData(): file, data, numSample
  60. AudioClose(): file
  61. NOTE: For multi channel audio files, the number of samples per channel
  62.       (numSample) is used as parameter!!!  The total number of samples
  63.       (numSample*numChannel) is not used here.
  64. **********************************************************************/
  65. #ifndef _audio_h_
  66. #define _audio_h_
  67. /* ---------- declarations ---------- */
  68. typedef struct AudioFileStruct AudioFile; /* audio file handle */
  69. /* ---------- functions ---------- */
  70. #ifdef __cplusplus
  71. extern "C" {
  72. #endif
  73. /* AudioInit() */
  74. /* Init audio i/o module. */
  75. /* formatString options: see AFsp documentation */
  76. void AudioInit (
  77.   char *formatString, /* in: file format for headerless files */
  78.   int debugLevel); /* in: debug level */
  79. /*     0=off  1=basic  2=full */
  80. /* AudioOpenRead() */
  81. /* Open audio file for reading. */
  82. AudioFile *AudioOpenRead (
  83.   char *fileName, /* in: file name */
  84. /*     "-": stdin (only 16 bit .au) */
  85.   int *numChannel, /* out: number of channels */
  86.   float *fSample, /* out: sampling frequency [Hz] */
  87.   long *numSample); /* out: number of samples in file */
  88. /*      (samples per channel!) */
  89. /*      or 0 if not available */
  90. /* returns: */
  91. /*  audio file (handle) */
  92. /*  or NULL if error */
  93. /* AudioOpenWrite() */
  94. /* Open audio file for writing. */
  95. /* Sample format: 16 bit twos complement, uniform quantisation */
  96. /* Supported file formats: (matching substring of format) */
  97. /*  au, snd:  Sun (AFsp) audio file */
  98. /*  wav:      RIFF WAVE file */
  99. /*  aif:      AIFF-C audio file */
  100. /*  raw:      headerless (raw) audio file (native byte order) */
  101. AudioFile *AudioOpenWrite (
  102.   char *fileName, /* in: file name */
  103. /*     "-": stdout (only 16 bit .au) */
  104.   char *format, /* in: file format (ignored if stdout) */
  105. /*     (au, snd, wav, aif, raw) */
  106.   int numChannel, /* in: number of channels */
  107.   float fSample); /* in: sampling frequency [Hz] */
  108. /* returns: */
  109. /*  audio file (handle) */
  110. /*  or NULL if error */
  111. /* AudioReadData() */
  112. /* Read data from audio file. */
  113. /* Requested samples that could not be read from the file are set to 0. */
  114. long AudioReadData (
  115.   AudioFile *file, /* in: audio file (handle) */
  116.   float **data, /* out: data[channel][sample] */
  117. /*      (range [-32768 .. 32767]) */
  118.   long numSample); /* in: number of samples to be read */
  119. /*     (samples per channel!) */
  120. /* returns: */
  121. /*  number of samples read */
  122. /*  (samples per channel!) */
  123. /* AudioWriteData() */
  124. /* Write data to audio file. */
  125. void AudioWriteData (
  126.   AudioFile *file, /* in: audio file (handle) */
  127.   float **data, /* in: data[channel][sample] */
  128. /*     (range [-32768 .. 32767]) */
  129.   long numSample); /* in: number of samples to be written */
  130. /*     (samples per channel!) */
  131. /* AudioSeek() */
  132. /* Set position in audio file to curSample. */
  133. /* (Beginning of file: curSample=0) */
  134. /* NOTE: It is not possible to seek backwards in a output file if */
  135. /*       any samples were already written to the file. */
  136. void AudioSeek (
  137.   AudioFile *file, /* in: audio file (handle) */
  138.   long curSample); /* in: new position [samples] */
  139. /*     (samples per channel!) */
  140. /* AudioClose() */
  141. /* Close audio file.*/
  142. void AudioClose (
  143.   AudioFile *file); /* in: audio file (handle) */
  144. #ifdef __cplusplus
  145. }
  146. #endif
  147. #endif /* #ifndef _audio_h_ */
  148. /* end of audio.h */