Jack2  1.9.8
JackNetOneDriver.h
1 /*
2 Copyright (C) 2008-2011 Torben Horn
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef __JackNetDriver__
21 #define __JackNetDriver__
22 
23 #include "JackTimedDriver.h"
24 #include "netjack.h"
25 #include "netjack_packet.h"
26 
27 namespace Jack
28 {
34 {
35  private:
36 
38 
39  void
40  render_payload_to_jack_ports_float(void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes, int dont_htonl_floats);
41  void
42  render_jack_ports_to_payload_float(JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up, int dont_htonl_floats );
43 #if HAVE_CELT
44  void
45  render_payload_to_jack_ports_celt(void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes);
46  void
47  render_jack_ports_to_payload_celt(JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up);
48 #endif
49  void
50  render_payload_to_jack_ports(int bitdepth, void *packet_payload, jack_nframes_t net_period_down, JSList *capture_ports, JSList *capture_srcs, jack_nframes_t nframes, int dont_htonl_floats);
51  void
52  render_jack_ports_to_payload(int bitdepth, JSList *playback_ports, JSList *playback_srcs, jack_nframes_t nframes, void *packet_payload, jack_nframes_t net_period_up, int dont_htonl_floats);
53 
54  public:
55 
56  JackNetOneDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table,
57  int port, int mtu, int capture_ports, int playback_ports, int midi_input_ports, int midi_output_ports,
58  int sample_rate, int period_size, int resample_factor,
59  const char* net_name, uint transport_sync, int bitdepth, int use_autoconfig,
60  int latency, int redundancy, int dont_htonl_floats, int always_deadline, int jitter_val);
61  virtual ~JackNetOneDriver();
62 
63  int Close();
64  int Attach();
65  int Detach();
66 
67  int Read();
68  int Write();
69 
70  bool Initialize();
71  int AllocPorts();
72  void FreePorts();
73 
74  // BufferSize can't be changed
75  bool IsFixedBufferSize()
76  {
77  return true;
78  }
79 
80  int SetBufferSize(jack_nframes_t buffer_size)
81  {
82  return -1;
83  }
84 
85  int SetSampleRate(jack_nframes_t sample_rate)
86  {
87  return -1;
88  }
89 
90 };
91 
92 }
93 
94 #endif