VISR  0.11.7
Versatile Interactive Scene Renderer
jack_interface.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRRL_JACK_INTERFACE_HPP_INCLUDED
4 #define VISR_LIBRRL_JACK_INTERFACE_HPP_INCLUDED
5 
6 #include "audio_interface.hpp"
7 #include "export_symbols.hpp"
8 
9 #include <libvisr/constants.hpp>
10 
11 #include <boost/property_tree/ptree.hpp>
12 
13 #include <memory>
14 #include <string>
15 #include <vector>
16 
17 namespace visr
18 {
19 namespace audiointerfaces
20 {
21  class VISR_AUDIOINTERFACES_LIBRARY_SYMBOL JackInterface: public audiointerfaces::AudioInterface
22  {
23  public:
27  struct Config
28  {
29  public:
31  // Config()
32  // : mClientName("")
33  // , mServerName("")
34  // , mPortJSONConfig("")
35  // {}
36 
37 
38  Config(std::string cliName, std::string servName, boost::property_tree::ptree portsConfig, bool autoConnect = false);
39 
40  void loadPortConfig(boost::optional<boost::property_tree::ptree> tree, std::string & extClient, std::vector< std::string > &portNames,
41  std::vector< std::string > & extPortNames, std::size_t numPorts, bool & autoConn, std::string porttype);
42  std::string mClientName;
43  std::string mInExtClientName;
44  std::string mOutExtClientName;
47 
48  std::string mServerName;
49 
50  boost::property_tree::ptree mPortJSONConfig;
51 
52  std::vector< std::string > mCapturePortNames;
53 
54  std::vector< std::string > mPlaybackPortNames;
55 
56  };
57 
59 
60  explicit JackInterface( Configuration const & baseConfig, std::string const & config);
61 
62  virtual ~JackInterface() override;
63 
64  /* virtual */ void start() override;
65 
66  /* virtual */ void stop() override;
67 
68  /*virtual*/ bool registerCallback( AudioCallback callback, void* userData ) override;
69 
70  /*virtual*/ bool unregisterCallback( AudioCallback audioCallback ) override;
71 
75  /*virtual*/ std::size_t numberOfCaptureChannels() const override;
76 
80  /*virtual*/ std::size_t numberOfPlaybackChannels() const override;
81 
85  /*virtual*/ std::size_t period() const override;
86 
90  /*virtual*/ std::size_t samplingFrequency() const override;
91 
92  private:
96  class Impl;
97 
98 
99  // JackInterface::Config parseSpecificConf( std::string const & config );
100 
104  std::unique_ptr<Impl> mImpl;
105  };
106 
107 } // namespace rrl
108 } // namespace visr
109 
110 #endif // #ifndef VISR_LIBRRL_JACK_INTERFACE_HPP_INCLUDED
std::string mServerName
Definition: jack_interface.hpp:48
bool mInAutoConnect
Definition: jack_interface.hpp:45
Definition: audio_interface.hpp:19
std::vector< std::string > mCapturePortNames
Definition: jack_interface.hpp:52
std::string mInExtClientName
Definition: jack_interface.hpp:43
Definition: jack_interface.cpp:54
Definition: options.cpp:10
Definition: jack_interface.hpp:21
bool mOutAutoConnect
Definition: jack_interface.hpp:46
void(*)(void *, ExternalSampleType const *const *, ExternalSampleType *const *, bool &) AudioCallback
Definition: audio_interface.hpp:75
std::string mClientName
Definition: jack_interface.hpp:42
Definition: jack_interface.hpp:27
std::string mOutExtClientName
Definition: jack_interface.hpp:44
std::vector< std::string > mPlaybackPortNames
Definition: jack_interface.hpp:54
boost::property_tree::ptree mPortJSONConfig
Definition: jack_interface.hpp:50