new audio engine backend for native CoreAudio audio I/O, and PortMIDI for MIDI.
[ardour.git] / libs / backends / wavesaudio / waves_audioport.h
1 /*\r
2     Copyright (C) 2014 Waves Audio Ltd.\r
3 \r
4     This program is free software; you can redistribute it and/or modify\r
5     it under the terms of the GNU General Public License as published by\r
6     the Free Software Foundation; either version 2 of the License, or\r
7     (at your option) any later version.\r
8 \r
9     This program is distributed in the hope that it will be useful,\r
10     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
12     GNU General Public License for more details.\r
13 \r
14     You should have received a copy of the GNU General Public License\r
15     along with this program; if not, write to the Free Software\r
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
17 \r
18 */\r
19 \r
20 #ifndef __libardour_waves_audioport_h__\r
21 #define __libardour_waves_audioport_h__\r
22 \r
23 #include "memory.h"\r
24 #include "waves_dataport.h"\r
25         \r
26 namespace ARDOUR {\r
27 \r
28 class WavesAudioPort : public WavesDataPort {\r
29 \r
30 public:\r
31     enum BufferSize {\r
32         MAX_BUFFER_SIZE_SAMPLES = 8192,\r
33         MAX_BUFFER_SIZE_BYTES = sizeof (Sample) * MAX_BUFFER_SIZE_SAMPLES\r
34     };\r
35 \r
36     WavesAudioPort (const std::string& port_name, PortFlags flags);\r
37 \r
38     virtual ~WavesAudioPort () { };\r
39 \r
40     virtual DataType type () const {    return DataType::AUDIO; };\r
41 \r
42     inline Sample* buffer () { return _buffer; }\r
43     inline const Sample* const_buffer () const { return _buffer; }\r
44 \r
45     virtual void* get_buffer (pframes_t nframes);\r
46 \r
47 protected:\r
48         virtual void _wipe_buffer();\r
49 \r
50 private:\r
51 \r
52     Sample _buffer[MAX_BUFFER_SIZE_SAMPLES];\r
53 };\r
54 \r
55 } // namespace\r
56 \r
57 #endif /* __libardour_waves_audioport_h__ */\r
58     \r