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,
79  };
80 
87  };
88 
93  };
94 
97  JACK,
99  };
100 
106  };
107 
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 WAIRTOMASTER // wair
165  int ID
166  #endif // endwhere
167  ) throw(std::invalid_argument);
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 public slots:
397  virtual void slotStopProcesses()
398  {
399  std::cout << "Stopping JackTrip..." << std::endl;
400  mStopped = true;
401  this->stop();
402  }
403 
410  {
411  int wait_time = 10000; // msec
412  if ( !(wait_msec%wait_time) ) {
413  std::cerr << "UDP WAITED MORE THAN 10 seconds." << std::endl;
415  }
416  }
418  { std::cout << "=== TESTING ===" << std::endl; }
420  { mReceivedConnection = true; }
421 
422 
423 signals:
424 
425  void signalUdpTimeOut();
427  void signalProcessesStopped();
431 
432 
433 public:
434 
436  virtual void setupAudio(
437  #ifdef WAIRTOMASTER // WAIR
438  int ID
439  #endif // endwhere
440  );
442  void closeAudio();
444  virtual void setupDataProtocol();
446  void setupRingBuffers();
448  void clientStart() throw(std::invalid_argument);
453  int serverStart(bool timeout = false, int udpTimeout = gTimeOutMultiThreadedServer)
454  throw(std::invalid_argument, std::runtime_error);
457  virtual int clientPingToServerStart() throw(std::invalid_argument);
458 
459 private:
460  //void bindReceiveSocket(QUdpSocket& UdpSocket, int bind_port,
461  // QHostAddress PeerHostAddress, int peer_port)
462  //throw(std::runtime_error);
463 
464 
465  jacktripModeT mJackTripMode;
466  dataProtocolT mDataProtocol;
467  DataProtocol::packetHeaderTypeT mPacketHeaderType;
468  JackTrip::audiointerfaceModeT mAudiointerfaceMode;
469 
470  int mNumChans;
471 #ifdef WAIR // WAIR
472  int mNumNetRevChans;
473 #endif // endwhere
474  int mBufferQueueLength;
475  uint32_t mSampleRate;
476  uint32_t mDeviceID;
477  uint32_t mAudioBufferSize;
478  AudioInterface::audioBitResolutionT mAudioBitResolution;
479  QString mPeerAddress;
480 
482  DataProtocol* mDataProtocolSender;
484  DataProtocol* mDataProtocolReceiver;
485  AudioInterface* mAudioInterface;
486  PacketHeader* mPacketHeader;
487  underrunModeT mUnderRunMode;
488 
490  RingBuffer* mSendRingBuffer;
492  RingBuffer* mReceiveRingBuffer;
493 
494  int mReceiverBindPort;
495  int mSenderPeerPort;
496  int mSenderBindPort;
497  int mReceiverPeerPort;
498  int mTcpServerPort;
499 
500  unsigned int mRedundancy;
501  const char* mJackClientName;
502 
503  JackTrip::connectionModeT mConnectionMode;
504  JackTrip::hubConnectionModeT mHubConnectionModeT;
505 
506  QVector<ProcessPlugin*> mProcessPlugins;
507 
508  volatile bool mReceivedConnection;
509  volatile bool mTcpConnectionError;
510  volatile bool mStopped;
511 
512  bool mConnectDefaultAudioPorts;
513 };
514 
515 #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:587
JackTrip::WAVETABLE
@ WAVETABLE
Loops on the last received packet.
Definition: JackTrip.h:91
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:91
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:93
JackTrip::startProcess
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:318
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()
Definition: moc_JackTrip.cpp:206
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:465
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:409
gDefaultPort
const int gDefaultPort
Default JackTrip Port.
Definition: jacktrip_globals.h:100
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:125
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:489
JackTrip::stop
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:442
JackTrip
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:67
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:262
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()
Definition: moc_JackTrip.cpp:188
JackTrip::clientStart
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:473
ProcessPlugin
Interface for the process plugins to add to the JACK callback process in JackAudioInterface.
Definition: ProcessPlugin.h:52
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:212
JackTrip::checkIfPortIsBinded
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:848
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:841
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:397
JackTrip::signalNoUdpPacketsForSeconds
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
Definition: moc_JackTrip.cpp:200
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:303
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.
Definition: moc_JackTrip.cpp:194
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:175
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:830
JackTrip::setupDataProtocol
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:224
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:132
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:805
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:784
RingBuffer::insertSlotNonBlocking
void insertSlotNonBlocking(const int8_t *ptrToSlot)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:149
JackTrip::appendProcessPlugin
virtual void appendProcessPlugin(ProcessPlugin *plugin)
Append a process plugin. Processes will be appended in order.
Definition: JackTrip.cpp:310
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:92
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:57
PacketHeader
Base class for header type. Subclass this struct to create a new header.
Definition: PacketHeader.h:117
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:68
JackTrip::printTextTest2
void printTextTest2()
Definition: JackTrip.h:393
JackTrip::~JackTrip
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:119
JackTrip::tcpConnectionError
bool tcpConnectionError()
Definition: JackTrip.h:305
AudioInterface
Base Class that provides an interface with audio.
Definition: AudioInterface.h:56
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:419
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:85
JackTrip::slotPrintTest
void slotPrintTest()
Definition: JackTrip.h:417
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:819
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