/[svn]/linuxsampler/trunk/src/drivers/audio/AudioOutputDevice.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/drivers/audio/AudioOutputDevice.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1607 by schoenebeck, Mon Dec 31 19:03:31 2007 UTC revision 2137 by schoenebeck, Mon Oct 4 12:20:23 2010 UTC
# Line 3  Line 3 
3   *   LinuxSampler - modular, streaming capable sampler                     *   *   LinuxSampler - modular, streaming capable sampler                     *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *   *   Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck   *
6   *   Copyright (C) 2005 - 2007 Christian Schoenebeck                       *   *   Copyright (C) 2005 - 2010 Christian Schoenebeck                       *
7   *                                                                         *   *                                                                         *
8   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
9   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 36  Line 36 
36  #include "../../engines/Engine.h"  #include "../../engines/Engine.h"
37  #include "AudioChannel.h"  #include "AudioChannel.h"
38  #include "../../common/SynchronizedConfig.h"  #include "../../common/SynchronizedConfig.h"
39    #include "../../effects/EffectChain.h"
40    
41  namespace LinuxSampler {  namespace LinuxSampler {
42    
43      // just symbol prototyping      // just symbol prototyping
44      class Engine;      class Engine;
45        class AudioOutputDeviceFactory;
46        class IDGenerator;
47    
48      /** Abstract base class for audio output drivers in LinuxSampler      /** Abstract base class for audio output drivers in LinuxSampler
49       *       *
# Line 241  namespace LinuxSampler { Line 244  namespace LinuxSampler {
244               */               */
245              std::map<String,DeviceCreationParameter*> DeviceParameters();              std::map<String,DeviceCreationParameter*> DeviceParameters();
246    
247                /**
248                 * Add a chain of send effects to this AudioOutputDevice.
249                 * You actually have to add effects to that chain afterwards.
250                 */
251                EffectChain* AddSendEffectChain();
252    
253                /**
254                 * Remove the send effect chain given by @a iChain .
255                 *
256                 * @throws Exception - if given send effect chain doesn't exist
257                 */
258                void RemoveSendEffectChain(uint iChain) throw (Exception);
259    
260                /**
261                 * Returns send effect chain given by @a iChain or @c NULL if
262                 * there's no such effect chain.
263                 */
264                EffectChain* SendEffectChain(uint iChain) const;
265    
266                /**
267                 * Returns amount of send effect chains this AudioOutputDevice
268                 * currently provides.
269                 */
270                uint SendEffectChainCount() const;
271    
272                /**
273                 * @deprecated This method will be removed, use AddSendEffectChain() instead!
274                 */
275                EffectChain* AddMasterEffectChain() DEPRECATED_API;
276    
277                /**
278                 * @deprecated This method will be removed, use RemoveSendEffectChain() instead!
279                 */
280                void RemoveMasterEffectChain(uint iChain) throw (Exception) DEPRECATED_API;
281    
282                /**
283                 * @deprecated This method will be removed, use SendEffectChain() instead!
284                 */
285                EffectChain* MasterEffectChain(uint iChain) const DEPRECATED_API;
286    
287                /**
288                 * @deprecated This method will be removed, use SendEffectChainCount() instead!
289                 */
290                uint MasterEffectChainCount() const DEPRECATED_API;
291    
292          protected:          protected:
293              SynchronizedConfig<std::set<Engine*> >    Engines;     ///< All sampler engines that are connected to the audio output device.              SynchronizedConfig<std::set<Engine*> >    Engines;     ///< All sampler engines that are connected to the audio output device.
294              SynchronizedConfig<std::set<Engine*> >::Reader EnginesReader; ///< Audio thread access to Engines.              SynchronizedConfig<std::set<Engine*> >::Reader EnginesReader; ///< Audio thread access to Engines.
295              std::vector<AudioChannel*>                Channels;    ///< All audio channels of the audio output device. This is just a container; the descendant has to create channels by himself.              std::vector<AudioChannel*>                Channels;    ///< All audio channels of the audio output device. This is just a container; the descendant has to create channels by himself.
296              std::map<String,DeviceCreationParameter*> Parameters;  ///< All device parameters.              std::map<String,DeviceCreationParameter*> Parameters;  ///< All device parameters.
297                std::vector<EffectChain*>                 vEffectChains;
298                IDGenerator*                              EffectChainIDs;
299    
300              AudioOutputDevice(std::map<String,DeviceCreationParameter*> DriverParameters);              AudioOutputDevice(std::map<String,DeviceCreationParameter*> DriverParameters);
301    
# Line 276  namespace LinuxSampler { Line 326  namespace LinuxSampler {
326               */               */
327              int RenderSilence(uint Samples);              int RenderSilence(uint Samples);
328    
329              friend class Sampler; // allow Sampler class to destroy audio devices              friend class AudioOutputDeviceFactory; // allow AudioOutputDeviceFactory class to destroy audio devices
330    
331      };      };
332    

Legend:
Removed from v.1607  
changed lines
  Added in v.2137

  ViewVC Help
Powered by ViewVC