JackTrip
JackTrip.h
Go to the documentation of this file.
1 //*****************************************************************
2 /*
3  JackTrip: A System for High-Quality Audio Network Performance
4  over the Internet
5 
6  Copyright (c) 2008 Juan-Pablo Caceres, Chris Chafe.
7  SoundWIRE group at CCRMA, Stanford University.
8 
9  Permission is hereby granted, free of charge, to any person
10  obtaining a copy of this software and associated documentation
11  files (the "Software"), to deal in the Software without
12  restriction, including without limitation the rights to use,
13  copy, modify, merge, publish, distribute, sublicense, and/or sell
14  copies of the Software, and to permit persons to whom the
15  Software is furnished to do so, subject to the following
16  conditions:
17 
18  The above copyright notice and this permission notice shall be
19  included in all copies or substantial portions of the Software.
20 
21  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
23  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
25  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
26  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
28  OTHER DEALINGS IN THE SOFTWARE.
29 */
30 //*****************************************************************
31 
38 #ifndef __JACKTRIP_H__
39 #define __JACKTRIP_H__
40 
41 //#include <tr1/memory> //for shared_ptr
42 #include <stdexcept>
43 
44 #include <QObject>
45 #include <QString>
46 #include <QUdpSocket>
47 
48 #include "DataProtocol.h"
49 #include "AudioInterface.h"
50 
51 #ifndef __NO_JACK__
52 #include "JackAudioInterface.h"
53 #endif //__NO_JACK__
54 
55 #include "PacketHeader.h"
56 #include "RingBuffer.h"
57 
58 #include <signal.h>
67 class JackTrip : public QThread
68 {
69  Q_OBJECT;
70 
71 public:
72 
73  //----------ENUMS------------------------------------------
76  UDP,
77  TCP,
78  SCTP
79  };
80 
87  };
88 
92  ZEROS
93  };
94 
97  JACK,
98  RTAUDIO
99  };
100 
105  JAMTEST
106  };
107 
114  FULLMIX
115  };
116  //---------------------------------------------------------
117 
118 
127  JackTrip(jacktripModeT JacktripMode = CLIENT,
128  dataProtocolT DataProtocolType = UDP,
129  int NumChans = gDefaultNumInChannels,
130  #ifdef WAIR // wair
131  int NumNetRevChans = 0,
132  #endif // endwhere
133  int BufferQueueLength = gDefaultQueueLength,
134  unsigned int redundancy = gDefaultRedundancy,
135  AudioInterface::audioBitResolutionT AudioBitResolution =
137  DataProtocol::packetHeaderTypeT PacketHeaderType =
139  underrunModeT UnderRunMode = WAVETABLE,
140  int receiver_bind_port = gDefaultPort,
141  int sender_bind_port = gDefaultPort,
142  int receiver_peer_port = gDefaultPort,
143  int sender_peer_port = gDefaultPort);
144 
146  virtual ~JackTrip();
147 
149  virtual void run() {
150  if (gVerboseFlag) std::cout << "Settings:startJackTrip before mJackTrip->run" << std::endl;
151  }
152 
154  virtual void setPeerAddress(const char* PeerHostOrIP);
155 
159  //void appendProcessPlugin(const std::tr1::shared_ptr<ProcessPlugin> plugin);
160  virtual void appendProcessPlugin(ProcessPlugin* plugin);
161 
163  virtual void startProcess(
164  #ifdef WAIRTOHUB // wair
165  int ID
166  #endif // endwhere
167  );
168 
170  virtual void stop();
171 
174  virtual void waitThreads();
175 
178  virtual void checkIfPortIsBinded(int port);
179 
180  //------------------------------------------------------------------------------------
182 
183  //
185  virtual void setJackTripMode(jacktripModeT JacktripMode)
186  { mJackTripMode = JacktripMode; }
188  virtual void setDataProtocoType(dataProtocolT DataProtocolType)
189  { mDataProtocol = DataProtocolType; }
192  {
193  mPacketHeaderType = PacketHeaderType;
194  delete mPacketHeader;
195  mPacketHeader = NULL;
196  createHeader(mPacketHeaderType);
197  }
199  virtual void setBufferQueueLength(int BufferQueueLength)
200  { mBufferQueueLength = BufferQueueLength; }
203  { mAudioBitResolution = AudioBitResolution; }
205  virtual void setUnderRunMode(underrunModeT UnderRunMode)
206  { mUnderRunMode = UnderRunMode; }
209  virtual void setAllPorts(int port)
210  {
211  mReceiverBindPort = port;
212  mSenderPeerPort = port;
213  mSenderBindPort = port;
214  mReceiverPeerPort = port;
215  }
217  virtual void setBindPorts(int port)
218  {
219  mReceiverBindPort = port;
220  mSenderBindPort = port;
221  }
223  virtual void setPeerPorts(int port)
224  {
225  mSenderPeerPort = port;
226  mReceiverPeerPort = port;
227  }
229  virtual void setClientName(const char* ClientName)
230  { mJackClientName = ClientName; }
232  virtual void setNumChannels(int num_chans)
233  { mNumChans = num_chans; }
234 
236  virtual void setConnectDefaultAudioPorts(bool connect)
237  {mConnectDefaultAudioPorts = connect;}
238 
239  virtual int getReceiverBindPort() const
240  { return mReceiverBindPort; }
241  virtual int getSenderPeerPort() const
242  { return mSenderPeerPort; }
243  virtual int getSenderBindPort() const
244  { return mSenderBindPort; }
245  virtual int getReceiverPeerPort() const
246  { return mReceiverPeerPort; }
247 
249  { return mDataProtocolSender; }
251  { return mDataProtocolReceiver; }
252  virtual void setDataProtocolSender(DataProtocol* const DataProtocolSender)
253  { mDataProtocolSender = DataProtocolSender; }
254  virtual void setDataProtocolReceiver(DataProtocol* const DataProtocolReceiver)
255  { mDataProtocolReceiver = DataProtocolReceiver; }
256 
257  virtual RingBuffer* getSendRingBuffer() const
258  { return mSendRingBuffer; }
260  { return mReceiveRingBuffer; }
261  virtual void setSendRingBuffer(RingBuffer* const SendRingBuffer)
262  { mSendRingBuffer = SendRingBuffer; }
263  virtual void setReceiveRingBuffer(RingBuffer* const ReceiveRingBuffer)
264  { mReceiveRingBuffer = ReceiveRingBuffer; }
265 
267  { mPacketHeader = PacketHeader; }
268 
270  { return getTotalAudioPacketSizeInBytes(); }
271 
272  virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
273  { mAudiointerfaceMode = audiointerface_mode; }
275  { mAudioInterface = AudioInterface; }
276 
277 
278  void setSampleRate(uint32_t sample_rate)
279  { mSampleRate = sample_rate; }
280  void setDeviceID(uint32_t device_id)
281  { mDeviceID = device_id; }
283  { mAudioBufferSize = buf_size; }
284 
285 
287  { return mConnectionMode; }
289  { mConnectionMode = connection_mode; }
290 
292  { return mHubConnectionModeT; }
294  { mHubConnectionModeT = connection_mode; }
295 
297  { return mJackTripMode; }
298 
299  QString getPeerAddress() const
300  { return mPeerAddress; }
301 
303  { return mReceivedConnection; }
304 
306  { return mTcpConnectionError; }
308  //------------------------------------------------------------------------------------
309 
310 
311  //------------------------------------------------------------------------------------
313 
314  virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype);
316  void putHeaderInPacket(int8_t* full_packet, int8_t* audio_packet);
317  virtual int getPacketSizeInBytes();
318  void parseAudioPacket(int8_t* full_packet, int8_t* audio_packet);
319  virtual void sendNetworkPacket(const int8_t* ptrToSlot)
320  { mSendRingBuffer->insertSlotNonBlocking(ptrToSlot); }
321  virtual void receiveNetworkPacket(int8_t* ptrToReadSlot)
322  { mReceiveRingBuffer->readSlotNonBlocking(ptrToReadSlot); }
323  virtual void readAudioBuffer(int8_t* ptrToReadSlot)
324  { mSendRingBuffer->readSlotBlocking(ptrToReadSlot); }
325  virtual void writeAudioBuffer(const int8_t* ptrToSlot)
326  { mReceiveRingBuffer->insertSlotNonBlocking(ptrToSlot); }
328  { return mAudioBufferSize; /*return mAudioInterface->getBufferSizeInSamples();*/ }
330  { return mDeviceID; /*return mAudioInterface->mDeviceID();*/ }
331 
333  { return mAudioInterface->getSampleRateType(); }
334  int getSampleRate() const
335  { return mSampleRate; /*return mAudioInterface->getSampleRate();*/ }
336 
338  { return mAudioBitResolution*8; /*return mAudioInterface->getAudioBitResolution();*/ }
339  unsigned int getNumInputChannels() const
340  { return mNumChans; /*return mAudioInterface->getNumInputChannels();*/ }
341  unsigned int getNumOutputChannels() const
342  { return mNumChans; /*return mAudioInterface->getNumOutputChannels();*/ }
343  unsigned int getNumChannels() const
344  {
346  { return getNumInputChannels(); }
347  else { return 0; }
348  }
349  virtual void checkPeerSettings(int8_t* full_packet);
351  { mPacketHeader->increaseSequenceNumber(); }
352  int getSequenceNumber() const
353  { return mPacketHeader->getSequenceNumber(); }
354 
355  uint64_t getPeerTimeStamp(int8_t* full_packet) const
356  { return mPacketHeader->getPeerTimeStamp(full_packet); }
357 
359  { return mPacketHeader->getPeerSequenceNumber(full_packet); }
360 
361  uint16_t getPeerBufferSize(int8_t* full_packet) const
362  { return mPacketHeader->getPeerBufferSize(full_packet); }
363 
364  uint8_t getPeerSamplingRate(int8_t* full_packet) const
365  { return mPacketHeader->getPeerSamplingRate(full_packet); }
366 
367  uint8_t getPeerBitResolution(int8_t* full_packet) const
368  { return mPacketHeader->getPeerBitResolution(full_packet); }
369 
370  uint8_t getPeerNumChannels(int8_t* full_packet) const
371  { return mPacketHeader->getPeerNumChannels(full_packet); }
372 
374  { return mPacketHeader->getPeerConnectionMode(full_packet); }
375 
377  { return mAudioInterface->getSizeInBytesPerChannel(); }
379  { return mPacketHeader->getHeaderSizeInBytes(); }
380  virtual int getTotalAudioPacketSizeInBytes() const
381  {
382 #ifdef WAIR // WAIR
383  if (mNumNetRevChans)
384  return mAudioInterface->getSizeInBytesPerChannel() * mNumNetRevChans;
385  else // not wair
386 #endif // endwhere
387  return mAudioInterface->getSizeInBytesPerChannel() * mNumChans;
388  }
390  //------------------------------------------------------------------------------------
391 
392  void printTextTest() {std::cout << "=== JackTrip PRINT ===" << std::endl;}
393  void printTextTest2() {std::cout << "=== JackTrip PRINT2 ===" << std::endl;}
394 
395  void startIOStatTimer(int timeout_sec, const std::ostream& log_stream);
396 
397 public slots:
399  virtual void slotStopProcesses()
400  {
401  std::cout << "Stopping JackTrip..." << std::endl;
402  mStopped = true;
403  this->stop();
404  }
405 
412  {
413  int wait_time = 10000; // msec
414  if ( !(wait_msec%wait_time) ) {
415  std::cerr << "UDP WAITED MORE THAN 10 seconds." << std::endl;
417  }
418  }
420  { std::cout << "=== TESTING ===" << std::endl; }
422  { mReceivedConnection = true; }
423  void onStatTimer();
424 
425 
426 signals:
427 
434 
435 
436 public:
437 
439  virtual void setupAudio(
440  #ifdef WAIRTOHUB // WAIR
441  int ID
442  #endif // endwhere
443  );
445  void closeAudio();
447  virtual void setupDataProtocol();
449  void setupRingBuffers();
451  void clientStart();
456  int serverStart(bool timeout = false, int udpTimeout = gTimeOutMultiThreadedServer);
459  virtual int clientPingToServerStart();
460 
461 private:
462  //void bindReceiveSocket(QUdpSocket& UdpSocket, int bind_port,
463  // QHostAddress PeerHostAddress, int peer_port)
464  //throw(std::runtime_error);
465 
466 
467  jacktripModeT mJackTripMode;
468  dataProtocolT mDataProtocol;
469  DataProtocol::packetHeaderTypeT mPacketHeaderType;
470  JackTrip::audiointerfaceModeT mAudiointerfaceMode;
471 
472  int mNumChans;
473 #ifdef WAIR // WAIR
474  int mNumNetRevChans;
475 #endif // endwhere
476  int mBufferQueueLength;
477  uint32_t mSampleRate;
478  uint32_t mDeviceID;
479  uint32_t mAudioBufferSize;
480  AudioInterface::audioBitResolutionT mAudioBitResolution;
481  QString mPeerAddress;
482 
484  DataProtocol* mDataProtocolSender;
486  DataProtocol* mDataProtocolReceiver;
487  AudioInterface* mAudioInterface;
488  PacketHeader* mPacketHeader;
489  underrunModeT mUnderRunMode;
490 
492  RingBuffer* mSendRingBuffer;
494  RingBuffer* mReceiveRingBuffer;
495 
496  int mReceiverBindPort;
497  int mSenderPeerPort;
498  int mSenderBindPort;
499  int mReceiverPeerPort;
500  int mTcpServerPort;
501 
502  unsigned int mRedundancy;
503  const char* mJackClientName;
504 
505  JackTrip::connectionModeT mConnectionMode;
506  JackTrip::hubConnectionModeT mHubConnectionModeT;
507 
508  QVector<ProcessPlugin*> mProcessPlugins;
509 
510  volatile bool mReceivedConnection;
511  volatile bool mTcpConnectionError;
512  volatile bool mStopped;
513 
514  bool mConnectDefaultAudioPorts;
515  std::ostream mIOStatLogStream;
516 };
517 
518 #endif
JackAudioInterface.h
JackTrip::printTextTest
void printTextTest()
Definition: JackTrip.h:392
JackTrip::setPacketHeaderType
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:191
JackTrip::getNumOutputChannels
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:341
JackTrip::getSampleRate
int getSampleRate() const
Definition: JackTrip.h:334
JackTrip::getSenderBindPort
virtual int getSenderBindPort() const
Definition: JackTrip.h:243
JackTrip::clientPingToServerStart
virtual int clientPingToServerStart()
Stats for the Client to Ping Server.
Definition: JackTrip.cpp:634
JackTrip::WAVETABLE
@ WAVETABLE
Loops on the last received packet.
Definition: JackTrip.h:91
JackTrip::startIOStatTimer
void startIOStatTimer(int timeout_sec, const std::ostream &log_stream)
Definition: JackTrip.cpp:441
JackTrip::setJackTripMode
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:185
gDefaultRedundancy
const int gDefaultRedundancy
Definition: jacktrip_globals.h:92
JackTrip::SCTP
@ SCTP
NOT IMPLEMENTED: Use SCTP (Stream Control Transmission Protocol)
Definition: JackTrip.h:78
JackTrip::getReceiverPeerPort
virtual int getReceiverPeerPort() const
Definition: JackTrip.h:245
JackTrip::KSTRONG
@ KSTRONG
Karplus Strong.
Definition: JackTrip.h:104
DataProtocol
Base class that defines the transmission protocol.
Definition: DataProtocol.h:94
JackTrip::startProcess
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:320
uint8_t
quint8 uint8_t
Typedef for unsigned char. This type is guaranteed to be 8-bit.
Definition: jacktrip_types.h:69
JackTrip::receiveNetworkPacket
virtual void receiveNetworkPacket(int8_t *ptrToReadSlot)
Definition: JackTrip.h:321
JackTrip::setSendRingBuffer
virtual void setSendRingBuffer(RingBuffer *const SendRingBuffer)
Definition: JackTrip.h:261
JackTrip::getHeaderSizeInBytes
int getHeaderSizeInBytes() const
Definition: JackTrip.h:378
JackTrip::getConnectionMode
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:286
JackTrip::signalTcpClientConnected
void signalTcpClientConnected()
AudioInterface::getSampleRateType
virtual samplingRateT getSampleRateType() const
Get the Jack Server Sampling Rate Enum Type samplingRateT.
Definition: AudioInterface.cpp:544
JackTrip::setAudioInterface
virtual void setAudioInterface(AudioInterface *const AudioInterface)
Definition: JackTrip.h:274
JackTrip::waitThreads
virtual void waitThreads()
Wait for all the threads to finish. This functions is used when JackTrip is run as a thread.
Definition: JackTrip.cpp:513
uint16_t
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71
JackTrip::slotUdpWaitingTooLongClientGoneProbably
void slotUdpWaitingTooLongClientGoneProbably(int wait_msec)
This slot emits in turn the signal signalNoUdpPacketsForSeconds when UDP has waited for more than 30 ...
Definition: JackTrip.h:411
gDefaultPort
const int gDefaultPort
Default JackTrip Port.
Definition: jacktrip_globals.h:101
PacketHeader::getSequenceNumber
virtual uint16_t getSequenceNumber() const
Returns the current sequence number.
Definition: PacketHeader.h:151
RingBuffer::readSlotBlocking
void readSlotBlocking(int8_t *ptrToReadSlot)
Read a slot from the RingBuffer into ptrToReadSlot. This method will block until there's space in the...
Definition: RingBuffer.cpp:127
JackTrip::getDataProtocolReceiver
virtual DataProtocol * getDataProtocolReceiver() const
Definition: JackTrip.h:250
JackTrip::run
virtual void run()
Starting point for the thread.
Definition: JackTrip.h:149
JackTrip::getDeviceID
uint32_t getDeviceID() const
Definition: JackTrip.h:329
JackTrip::getDataProtocolSender
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:248
JackTrip::getPeerSamplingRate
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:364
JackTrip::getNumChannels
unsigned int getNumChannels() const
Definition: JackTrip.h:343
JackTrip::setAudioBitResolution
virtual void setAudioBitResolution(AudioInterface::audioBitResolutionT AudioBitResolution)
Sets (override) Audio Bit Resolution after construction.
Definition: JackTrip.h:202
JackTrip::serverStart
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:537
JackTrip::stop
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:490
JackTrip
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:68
int8_t
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:78
JackTrip::setNumChannels
virtual void setNumChannels(int num_chans)
Set the number of audio channels.
Definition: JackTrip.h:232
JackTrip::getJackTripMode
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:296
JackTrip::getPeerBufferSize
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:361
JackTrip::getSenderPeerPort
virtual int getSenderPeerPort() const
Definition: JackTrip.h:241
JackTrip::getRingBuffersSlotSize
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:269
JackTrip::readAudioBuffer
virtual void readAudioBuffer(int8_t *ptrToReadSlot)
Definition: JackTrip.h:323
JackTrip::setupRingBuffers
void setupRingBuffers()
Set the RingBuffer objects.
Definition: JackTrip.cpp:264
JackTrip::getSizeInBytesPerChannel
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:376
JackTrip::getBufferSizeInSamples
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:327
JackTrip::SERVER
@ SERVER
Run in Server Mode.
Definition: JackTrip.h:83
JackTrip::UDP
@ UDP
Use UDP (User Datagram Protocol)
Definition: JackTrip.h:76
JackTrip::getSendRingBuffer
virtual RingBuffer * getSendRingBuffer() const
Definition: JackTrip.h:257
JackTrip::setDataProtocolSender
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:252
JackTrip::RTAUDIO
@ RTAUDIO
RtAudio Mode.
Definition: JackTrip.h:98
JackTrip::SERVERPINGSERVER
@ SERVERPINGSERVER
Server of the MultiThreaded JackTrip.
Definition: JackTrip.h:86
JackTrip::CLIENTTOPINGSERVER
@ CLIENTTOPINGSERVER
Client of the Ping Server Mode.
Definition: JackTrip.h:85
JackTrip::signalUdpTimeOut
void signalUdpTimeOut()
JackTrip::clientStart
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:521
ProcessPlugin
Interface for the process plugins to add to the JACK callback process in JackAudioInterface.
Definition: ProcessPlugin.h:53
JackTrip::setConnectionMode
void setConnectionMode(JackTrip::connectionModeT connection_mode)
Definition: JackTrip.h:288
JackTrip::CLIENTECHO
@ CLIENTECHO
Client Echo (client self-to-self)
Definition: JackTrip.h:111
JackTrip::closeAudio
void closeAudio()
Close the JackAudioInteface and disconnects it from JACK.
Definition: JackTrip.cpp:214
JackTrip::checkIfPortIsBinded
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:895
JackTrip::onStatTimer
void onStatTimer()
Definition: JackTrip.cpp:450
JackTrip::getPeerBitResolution
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:367
JackTrip::dataProtocolT
dataProtocolT
Enum for the data Protocol. At this time only UDP is implemented.
Definition: JackTrip.h:75
JackTrip::checkPeerSettings
virtual void checkPeerSettings(int8_t *full_packet)
Definition: JackTrip.cpp:888
JackTrip::sendNetworkPacket
virtual void sendNetworkPacket(const int8_t *ptrToSlot)
Definition: JackTrip.h:319
JackTrip::setPeerPorts
virtual void setPeerPorts(int port)
Sets port numbers for the peer (remote) machine.
Definition: JackTrip.h:223
JackTrip::writeAudioBuffer
virtual void writeAudioBuffer(const int8_t *ptrToSlot)
Definition: JackTrip.h:325
AudioInterface.h
PacketHeader.h
AudioInterface::audioBitResolutionT
audioBitResolutionT
Enum for Audio Resolution in bits.
Definition: AudioInterface.h:61
JackTrip::jacktripModeT
jacktripModeT
Enum for the JackTrip mode.
Definition: JackTrip.h:82
JackTrip::increaseSequenceNumber
void increaseSequenceNumber()
Definition: JackTrip.h:350
JackTrip::underrunModeT
underrunModeT
Enum for the JackTrip Underrun Mode, when packets.
Definition: JackTrip.h:90
AudioInterface::getSizeInBytesPerChannel
virtual size_t getSizeInBytesPerChannel() const
Definition: AudioInterface.cpp:194
JackTrip::audiointerfaceModeT
audiointerfaceModeT
Enum for Audio Interface Mode.
Definition: JackTrip.h:96
JackTrip::slotStopProcesses
virtual void slotStopProcesses()
Slot to stop all the processes and threads.
Definition: JackTrip.h:399
JackTrip::signalNoUdpPacketsForSeconds
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
JackTrip::setDeviceID
void setDeviceID(uint32_t device_id)
Definition: JackTrip.h:280
JackTrip::getSequenceNumber
int getSequenceNumber() const
Definition: JackTrip.h:352
JackTrip::FULLMIX
@ FULLMIX
Client Fan Out to Clients and Fan In from Clients (including self-to-self)
Definition: JackTrip.h:114
JackTrip::setHubConnectionModeT
void setHubConnectionModeT(JackTrip::hubConnectionModeT connection_mode)
Definition: JackTrip.h:293
JackTrip::setPeerAddress
virtual void setPeerAddress(const char *PeerHostOrIP)
Set the Peer Address for jacktripModeT::CLIENT mode only.
Definition: JackTrip.cpp:305
PacketHeader::getHeaderSizeInBytes
virtual int getHeaderSizeInBytes() const =0
Get the header size in bytes.
uint32_t
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
JackTrip::signalProcessesStopped
void signalProcessesStopped()
Signal emitted when all the processes and threads are stopped.
JackTrip::setBindPorts
virtual void setBindPorts(int port)
Sets port numbers to bind in RECEIVER and SENDER sockets.
Definition: JackTrip.h:217
gDefaultNumInChannels
const int gDefaultNumInChannels
Definition: jacktrip_globals.h:52
AudioInterface::BIT16
@ BIT16
16 bits (default)
Definition: AudioInterface.h:63
JackTrip::setReceiveRingBuffer
virtual void setReceiveRingBuffer(RingBuffer *const ReceiveRingBuffer)
Definition: JackTrip.h:263
JackTrip::connectionModeT
connectionModeT
Enum for Connection Mode (in packet header)
Definition: JackTrip.h:102
RingBuffer::readSlotNonBlocking
void readSlotNonBlocking(int8_t *ptrToReadSlot)
Same as readSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:177
AudioInterface::samplingRateT
samplingRateT
Sampling Rates supported by JACK.
Definition: AudioInterface.h:69
PacketHeader::getPeerBufferSize
virtual uint16_t getPeerBufferSize(int8_t *full_packet) const =0
JackTrip::parseAudioPacket
void parseAudioPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:877
JackTrip::setupDataProtocol
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:226
JackTrip::setPacketHeader
virtual void setPacketHeader(PacketHeader *const PacketHeader)
Definition: JackTrip.h:266
PacketHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *full_packet) const =0
JackTrip::setClientName
virtual void setClientName(const char *ClientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:229
JackTrip::setupAudio
virtual void setupAudio()
Set the AudioInteface object.
Definition: JackTrip.cpp:135
JackTrip::hubConnectionModeT
hubConnectionModeT
Enum for Hub Server Audio Connection Mode (connections to hub server are automatically patched in Jac...
Definition: JackTrip.h:109
JackTrip::setDataProtocolReceiver
virtual void setDataProtocolReceiver(DataProtocol *const DataProtocolReceiver)
Definition: JackTrip.h:254
JackTrip::getPeerTimeStamp
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:355
JackTrip::setAudiointerfaceMode
virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
Definition: JackTrip.h:272
JackTrip::setSampleRate
void setSampleRate(uint32_t sample_rate)
Definition: JackTrip.h:278
gVerboseFlag
int gVerboseFlag
Verbose mode flag declaration.
Definition: Settings.cpp:59
JackTrip::putHeaderInPacket
void putHeaderInPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:852
PacketHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *full_packet) const =0
JackTrip::getPeerAddress
QString getPeerAddress() const
Definition: JackTrip.h:299
JackTrip::getPeerNumChannels
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:370
JackTrip::createHeader
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:831
RingBuffer::insertSlotNonBlocking
void insertSlotNonBlocking(const int8_t *ptrToSlot)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:151
JackTrip::appendProcessPlugin
virtual void appendProcessPlugin(ProcessPlugin *plugin)
Append a process plugin. Processes will be appended in order.
Definition: JackTrip.cpp:312
PacketHeader::getPeerConnectionMode
virtual uint8_t getPeerConnectionMode(int8_t *full_packet) const =0
PacketHeader::getPeerBitResolution
virtual uint8_t getPeerBitResolution(int8_t *full_packet) const =0
JackTrip::TCP
@ TCP
NOT IMPLEMENTED: Use TCP (Transmission Control Protocol)
Definition: JackTrip.h:77
JackTrip::setAllPorts
virtual void setAllPorts(int port)
Sets port numbers for the local and peer machine. Receive port is port
Definition: JackTrip.h:209
JackTrip::JACK
@ JACK
Jack Mode.
Definition: JackTrip.h:97
DataProtocol::DEFAULT
@ DEFAULT
Default application header.
Definition: DataProtocol.h:102
JackTrip::CLIENTFOFI
@ CLIENTFOFI
Client Fan Out to Clients and Fan In from Clients (but not self-to-self)
Definition: JackTrip.h:112
JackTrip::NORMAL
@ NORMAL
Normal Mode.
Definition: JackTrip.h:103
JackTrip::CLIENT
@ CLIENT
Run in Client Mode.
Definition: JackTrip.h:84
JackTrip::receivedConnectionFromPeer
bool receivedConnectionFromPeer()
Definition: JackTrip.h:302
DataProtocol.h
JackTrip::getPeerConnectionMode
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:373
JackTrip::getAudioBitResolution
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:337
gTimeOutMultiThreadedServer
const int gTimeOutMultiThreadedServer
Definition: jacktrip_globals.h:93
JackTrip::setConnectDefaultAudioPorts
virtual void setConnectDefaultAudioPorts(bool connect)
Set to connect or not default audio ports (only implemented in Jack)
Definition: JackTrip.h:236
JackTrip::getHubConnectionModeT
JackTrip::hubConnectionModeT getHubConnectionModeT() const
Definition: JackTrip.h:291
RingBuffer
Provides a ring-buffer (or circular-buffer) that can be written to and read from asynchronously (bloc...
Definition: RingBuffer.h:60
PacketHeader
Base class for header type. Subclass this struct to create a new header.
Definition: PacketHeader.h:118
JackTrip::RESERVEDMATRIX
@ RESERVEDMATRIX
Reserved for custom patch matrix (for TUB ensemble)
Definition: JackTrip.h:113
JackTrip::JAMTEST
@ JAMTEST
Karplus Strong.
Definition: JackTrip.h:105
JackTrip::SERVERTOCLIENT
@ SERVERTOCLIENT
Normal Mode, Sever to All Clients (but not client to any client)
Definition: JackTrip.h:110
DataProtocol::packetHeaderTypeT
packetHeaderTypeT
Enum to define packet header types.
Definition: DataProtocol.h:101
JackTrip::ZEROS
@ ZEROS
Set new buffers to zero if there are no new ones.
Definition: JackTrip.h:92
PacketHeader::increaseSequenceNumber
virtual void increaseSequenceNumber()
Increase sequence number for counter, a 16bit number.
Definition: PacketHeader.h:147
JackTrip::getPeerSequenceNumber
uint16_t getPeerSequenceNumber(int8_t *full_packet) const
Definition: JackTrip.h:358
PacketHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *full_packet) const =0
JackTrip::getReceiveRingBuffer
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:259
JackTrip::JackTrip
JackTrip(jacktripModeT JacktripMode=CLIENT, dataProtocolT DataProtocolType=UDP, int NumChans=gDefaultNumInChannels, int BufferQueueLength=gDefaultQueueLength, unsigned int redundancy=gDefaultRedundancy, AudioInterface::audioBitResolutionT AudioBitResolution=AudioInterface::BIT16, DataProtocol::packetHeaderTypeT PacketHeaderType=DataProtocol::DEFAULT, underrunModeT UnderRunMode=WAVETABLE, int receiver_bind_port=gDefaultPort, int sender_bind_port=gDefaultPort, int receiver_peer_port=gDefaultPort, int sender_peer_port=gDefaultPort)
The class Constructor with Default Parameters.
Definition: JackTrip.cpp:70
JackTrip::printTextTest2
void printTextTest2()
Definition: JackTrip.h:393
JackTrip::~JackTrip
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:122
JackTrip::tcpConnectionError
bool tcpConnectionError()
Definition: JackTrip.h:305
AudioInterface
Base Class that provides an interface with audio.
Definition: AudioInterface.h:57
RingBuffer.h
JackTrip::setUnderRunMode
virtual void setUnderRunMode(underrunModeT UnderRunMode)
Sets (override) Underrun Mode.
Definition: JackTrip.h:205
JackTrip::getNumInputChannels
unsigned int getNumInputChannels() const
Definition: JackTrip.h:339
PacketHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *full_packet) const =0
JackTrip::slotReceivedConnectionFromPeer
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:421
JackTrip::getSampleRateType
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:332
JackTrip::setDataProtocoType
virtual void setDataProtocoType(dataProtocolT DataProtocolType)
Sets (override) DataProtocol Type after construction.
Definition: JackTrip.h:188
gDefaultQueueLength
const int gDefaultQueueLength
Definition: jacktrip_globals.h:86
JackTrip::slotPrintTest
void slotPrintTest()
Definition: JackTrip.h:419
JackTrip::getTotalAudioPacketSizeInBytes
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:380
JackTrip::getReceiverBindPort
virtual int getReceiverBindPort() const
Definition: JackTrip.h:239
JackTrip::getPacketSizeInBytes
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:866
JackTrip::setBufferQueueLength
virtual void setBufferQueueLength(int BufferQueueLength)
Sets (override) Buffer Queue Length Mode after construction.
Definition: JackTrip.h:199
JackTrip::setAudioBufferSizeInSamples
void setAudioBufferSizeInSamples(uint32_t buf_size)
Definition: JackTrip.h:282