obuffer.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* obuffer.h
  2.    Declarations for output buffer, includes operating system
  3.    implementation of the virtual Obuffer. Optional routines
  4.    enabling seeks and stops added by Jeff Tsay. */
  5. /*
  6.  *  @(#) obuffer.h 1.8, last edit: 6/15/94 16:51:56
  7.  *  @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de)
  8.  *  @(#) Berlin University of Technology
  9.  *
  10.  *  Idea and first implementation for u-law output with fast downsampling by
  11.  *  Jim Boucher (jboucher@flash.bu.edu)
  12.  *
  13.  *  LinuxObuffer class written by
  14.  *  Louis P. Kruger (lpkruger@phoenix.princeton.edu)
  15.  *
  16.  *  This program is free software; you can redistribute it and/or modify
  17.  *  it under the terms of the GNU General Public License as published by
  18.  *  the Free Software Foundation; either version 2 of the License, or
  19.  *  (at your option) any later version.
  20.  *
  21.  *  This program is distributed in the hope that it will be useful,
  22.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  23.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  24.  *  GNU General Public License for more details.
  25.  *
  26.  *  You should have received a copy of the GNU General Public License
  27.  *  along with this program; if not, write to the Free Software
  28.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  29.  */
  30. #ifndef OBUFFER_H
  31. #define OBUFFER_H
  32. #include "all.h"
  33. #include <stdio.h> // needed for definition of NULL
  34. #include "args.h"
  35. static const uint32 OBUFFERSIZE = 2 * 1152; // max. 2 * 1152 samples per frame
  36. static const uint32 MAXCHANNELS = 2;         // max. number of channels
  37. // Abstract base class for audio output classes:
  38. class Obuffer
  39. {
  40. public:
  41.   virtual     ~Obuffer() {} // dummy
  42. #ifdef COOLPRO
  43.   virtual void append(uint32 channel, real value) = 0;
  44.  // this function takes a 32 Bit float value from -1 to 1
  45. #else
  46.   virtual void append(uint32 channel, int16 value) = 0;
  47.  // this function takes a 32 Bit float value from -1 to 1
  48. #endif
  49.   virtual void write_buffer(int32 fd) = 0;
  50.  // this function should write the samples to the filedescriptor
  51.  // or directly to the audio hardware
  52. #ifdef COOLPRO
  53.   // OK - appendblock is not used, but it was a stab at speeding things up
  54.   virtual void appendblock(uint32 channel, real * pvalues, int iCount) = 0;
  55. // this function takes an array of 32 bit float values from -1 to 1
  56.   virtual BYTE * get_buffer(int * piNumBytes) = 0;
  57. // used in Cool Edit version
  58. #endif
  59. #ifdef SEEK_STOP
  60.   virtual void clear_buffer() = 0;
  61.  // Clears all data in the buffer (for seeking)
  62.   virtual void set_stop_flag() = 0;
  63.  // Notify the buffer that the user has stopped the stream
  64. #endif // SEEK_STOP
  65. };
  66. Obuffer *create_obuffer(MPEG_Args *maplay_args);
  67. #ifndef COOLPRO
  68. //#include "fileobuf.h"
  69. #endif
  70. #ifdef IRIX
  71. #include "indigo_obuffer.h"
  72. #endif
  73. #ifdef SPARC
  74. #include "sparc_obuffer.h"
  75. #endif
  76. #ifdef HPUX
  77. #include "hpux_obuffer.h"
  78. #endif
  79. #if defined(LINUX) || defined(__FreeBSD__)
  80. #include "linux_obuffer.h"
  81. #endif
  82. #ifdef NeXT
  83. #include "NeXT_obuffer.h"
  84. #endif
  85. #ifdef AIX
  86. #include "aix_obuffer.h"
  87. #endif
  88. #ifdef __WIN32__
  89. #ifdef COOLPRO
  90. #include "cep_obuffer.h"
  91. #else
  92. #include "mci_obuf.h"
  93. #include "wavefile_obuffer.h"
  94. #endif
  95. // #include "ds_obuffer.h"
  96. #endif
  97. #ifdef BEOS
  98. #include "beos_obuffer.h"
  99. #endif
  100. #ifdef OS2
  101. #include "os2_obuffer.h"
  102. #endif
  103. #endif // OBUFFER_H