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

Annotation of /linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceJack.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 221 - (hide annotations) (download) (as text)
Fri Aug 20 17:25:19 2004 UTC (19 years, 8 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 4543 byte(s)
* src/drivers/midi/MidiInputDeviceAlsa.cpp: implemented port parameter
 "NAME" which now updates the registered ALSA seq port name as well, fixed
  port parameter "ALSA_SEQ_BINDINGS" to allow more than one binding
* src/network/lscp.y: fixed symbol STRINGVAL (that is strings encapsulated
  into apostrophes) which didn't allow space characters
* changed all driver names and driver paramaters to upper case
* fixed typo in LSCP documentation
  (section 5.3.12, was: "SET MIDI_INPUT_PORT PARAMETER",
   should be: "SET MIDI_INPUT_PORT_PARAMETER")

1 schoenebeck 200 /***************************************************************************
2     * *
3     * LinuxSampler - modular, streaming capable sampler *
4     * *
5     * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6     * *
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     AudioOutputDeviceJack(std::map<String,DeviceCreationParameter*> Parameters);
46     ~AudioOutputDeviceJack();
47    
48 schoenebeck 221 /** Audio Channel Parameter 'JACK_BINDINGS'
49     *
50     * Used to connect to other JACK clients.
51     */
52 schoenebeck 200 class ParameterJackBindings : public DeviceRuntimeParameterStrings {
53     public:
54     ParameterJackBindings(AudioChannel* pChannel, std::vector<String> InitialBindings) : DeviceRuntimeParameterStrings(InitialBindings) { this->pChannel = pChannel; }
55     virtual String Description() { return "Bindings to other JACK clients"; }
56     virtual bool Fix() { return false; }
57     virtual std::vector<String> PossibilitiesAsString() { return std::vector<String>(); /* TODO: to be implemented */ }
58     virtual void OnSetValue(std::vector<String> vS) { /* TODO: code to connect to other jack clients */ }
59     protected:
60     AudioChannel* pChannel;
61     };
62    
63     // derived abstract methods from class 'AudioOutputDevice'
64     virtual void Play();
65     virtual bool IsPlaying();
66     virtual void Stop();
67     virtual void AcquireChannels(uint uiChannels);
68     virtual uint MaxSamplesPerCycle();
69     virtual uint SampleRate();
70    
71     static String Name();
72    
73     virtual String Driver();
74    
75     static String Description();
76     static String Version();
77     static std::map<String,DeviceCreationParameter*> AvailableParameters();
78    
79     int Process(uint Samples); // FIXME: should be private
80     protected:
81     AudioOutputDeviceJack(String* AutoConnectPortIDs = NULL, uint AutoConnectPorts = 0);
82     private:
83     ConditionServer csIsPlaying;
84     uint uiMaxSamplesPerCycle;
85     jack_client_t* hJackClient;
86     std::vector<jack_port_t*> hJackPorts;
87     };
88    
89     // Callback functions for the libjack API
90     int __libjack_process_callback(jack_nframes_t nframes, void* arg);
91     void __libjack_shutdown_callback(void* arg);
92     }
93    
94     #endif // HAVE_JACK
95     #endif // __LS_AUDIOOUTPUTDEVICEJACK_H__

  ViewVC Help
Powered by ViewVC