/[svn]/linuxsampler/trunk/src/audiodriver/AudioOutputDeviceJack.h
ViewVC logotype

Annotation of /linuxsampler/trunk/src/audiodriver/AudioOutputDeviceJack.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 174 - (hide annotations) (download) (as text)
Tue Jul 6 03:27:38 2004 UTC (19 years, 10 months ago) by senkov
File MIME type: text/x-c++hdr
File size: 4468 byte(s)
* Reworked the infrastructure to allow for parameter
registration and creation
* Changed alsa audio output and midi drivers
to work with new infrastructure

1 schoenebeck 53 /***************************************************************************
2     * *
3     * LinuxSampler - modular, streaming capable sampler *
4     * *
5 schoenebeck 56 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6 schoenebeck 53 * *
7     * This program is free software; you can redistribute it and/or modify *
8     * it under the terms of the GNU General Public License as published by *
9     * the Free Software Foundation; either version 2 of the License, or *
10     * (at your option) any later version. *
11     * *
12     * This program is distributed in the hope that it will be useful, *
13     * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15     * GNU General Public License for more details. *
16     * *
17     * You should have received a copy of the GNU General Public License *
18     * along with this program; if not, write to the Free Software *
19     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
20     * MA 02111-1307 USA *
21     ***************************************************************************/
22    
23     #ifndef __LS_AUDIOOUTPUTDEVICEJACK_H__
24     #define __LS_AUDIOOUTPUTDEVICEJACK_H__
25    
26     #include "../common/global.h"
27    
28     #if HAVE_JACK
29    
30     #include <vector>
31     #include <sstream>
32     #include <jack/jack.h>
33    
34     #include "AudioOutputDevice.h"
35     #include "../common/ConditionServer.h"
36    
37     namespace LinuxSampler {
38    
39     /** JACK audio output driver
40     *
41     * Implements audio output to the JACK Audio Connection Kit (JACK).
42     */
43     class AudioOutputDeviceJack : public AudioOutputDevice {
44     public:
45 senkov 174 AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters);
46 schoenebeck 53 ~AudioOutputDeviceJack();
47    
48 schoenebeck 123 // Audio channel parameter to connect to other Jack clients
49     class ParameterJackBindings : public DeviceRuntimeParameterStrings {
50     public:
51     ParameterJackBindings(AudioChannel* pChannel, std::vector<String> InitialBindings) : DeviceRuntimeParameterStrings(InitialBindings) { this->pChannel = pChannel; }
52     virtual String Description() { return "Bindings to other JACK clients"; }
53     virtual bool Fix() { return false; }
54     virtual std::vector<String> PossibilitiesAsString() { return std::vector<String>(); /* TODO: to be implemented */ }
55     virtual void OnSetValue(std::vector<String> vS) { /* TODO: code to connect to other jack clients */ }
56     protected:
57     AudioChannel* pChannel;
58     };
59    
60 schoenebeck 53 // derived abstract methods from class 'AudioOutputDevice'
61     virtual void Play();
62     virtual bool IsPlaying();
63     virtual void Stop();
64     virtual void AcquireChannels(uint uiChannels);
65     virtual uint MaxSamplesPerCycle();
66     virtual uint SampleRate();
67    
68 senkov 174 static String Name();
69    
70 capela 143 virtual String Driver();
71    
72 schoenebeck 123 static String Description();
73     static String Version();
74     static std::map<String,DeviceCreationParameter*> AvailableParameters();
75    
76 schoenebeck 53 int Process(uint Samples); // FIXME: should be private
77 schoenebeck 123 protected:
78     AudioOutputDeviceJack(String* AutoConnectPortIDs = NULL, uint AutoConnectPorts = 0);
79 schoenebeck 53 private:
80     ConditionServer csIsPlaying;
81     uint uiMaxSamplesPerCycle;
82     jack_client_t* hJackClient;
83     std::vector<jack_port_t*> hJackPorts;
84     };
85    
86     // Callback functions for the libjack API
87     int __libjack_process_callback(jack_nframes_t nframes, void* arg);
88     void __libjack_shutdown_callback(void* arg);
89     }
90    
91     #endif // HAVE_JACK
92     #endif // __LS_AUDIOOUTPUTDEVICEJACK_H__

  ViewVC Help
Powered by ViewVC