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 #include <QTcpSocket>
48 #include <QTimer>
49 #include <QSharedPointer>
50 
51 #include "DataProtocol.h"
52 #include "AudioInterface.h"
53 
54 #ifndef __NO_JACK__
55 #include "JackAudioInterface.h"
56 #endif //__NO_JACK__
57 
58 #include "PacketHeader.h"
59 #include "RingBuffer.h"
60 #include "AudioTester.h"
61 
62 //#include <signal.h>
71 class JackTrip : public QObject
72 {
73  Q_OBJECT;
74 
75 public:
76 
77  //----------ENUMS------------------------------------------
80  UDP,
81  TCP,
82  SCTP
83  };
84 
91  };
92 
96  ZEROS
97  };
98 
102  RTAUDIO
103  };
104 
109  JAMTEST
110  };
111 
119  NOAUTO
120  };
121  //---------------------------------------------------------
122 
123 
132  JackTrip(jacktripModeT JacktripMode = CLIENT,
133  dataProtocolT DataProtocolType = UDP,
134  int NumChans = gDefaultNumInChannels,
135  #ifdef WAIR // wair
136  int NumNetRevChans = 0,
137  #endif // endwhere
138  int BufferQueueLength = gDefaultQueueLength,
139  unsigned int redundancy = gDefaultRedundancy,
140  AudioInterface::audioBitResolutionT AudioBitResolution =
142  DataProtocol::packetHeaderTypeT PacketHeaderType =
144  underrunModeT UnderRunMode = WAVETABLE,
145  int receiver_bind_port = gDefaultPort,
146  int sender_bind_port = gDefaultPort,
147  int receiver_peer_port = gDefaultPort,
148  int sender_peer_port = gDefaultPort,
149  int tcp_peer_port = gDefaultPort);
150 
152  virtual ~JackTrip();
153 
154  static void sigIntHandler(__attribute__((unused)) int unused)
155  { std::cout << std::endl << "Shutting Down..." << std::endl; sSigInt = true; }
156  static bool sSigInt;
157  static bool sJackStopped;
158 
160  /*virtual void run() {
161  if (gVerboseFlag) std::cout << "Settings:startJackTrip before mJackTrip->run" << std::endl;
162  }*/
163 
165  virtual void setPeerAddress(QString PeerHostOrIP);
166 
170  //void appendProcessPlugin(const std::tr1::shared_ptr<ProcessPlugin> plugin);
171  virtual void appendProcessPluginToNetwork(ProcessPlugin* plugin);
172  virtual void appendProcessPluginFromNetwork(ProcessPlugin* plugin);
173 
175  virtual void startProcess(
176  #ifdef WAIRTOHUB // wair
177  int ID
178  #endif // endwhere
179  );
180  virtual void completeConnection();
181 
183  virtual void stop(QString errorMessage = "");
184 
187  virtual void waitThreads();
188 
191  virtual void checkIfPortIsBinded(int port);
192 
193  //------------------------------------------------------------------------------------
195 
196  //
198  virtual void setJackTripMode(jacktripModeT JacktripMode)
199  { mJackTripMode = JacktripMode; }
201  virtual void setDataProtocoType(dataProtocolT DataProtocolType)
202  { mDataProtocol = DataProtocolType; }
205  {
206  mPacketHeaderType = PacketHeaderType;
207  delete mPacketHeader;
208  mPacketHeader = NULL;
209  createHeader(mPacketHeaderType);
210  }
212  virtual void setBufferQueueLength(int BufferQueueLength)
213  { mBufferQueueLength = BufferQueueLength; }
214  virtual void setBufferStrategy(int BufferStrategy)
215  { mBufferStrategy = BufferStrategy; }
218  { mAudioBitResolution = AudioBitResolution; }
220  virtual void setUnderRunMode(underrunModeT UnderRunMode)
221  { mUnderRunMode = UnderRunMode; }
223  virtual void setStopOnTimeout(bool stopOnTimeout)
224  { mStopOnTimeout = stopOnTimeout; }
227  virtual void setAllPorts(int port)
228  {
229  mReceiverBindPort = port;
230  mSenderPeerPort = port;
231  mSenderBindPort = port;
232  mReceiverPeerPort = port;
233  }
235  void setBindPorts(int port)
236  {
237  mReceiverBindPort = port;
238  mSenderBindPort = port;
239  }
241  void setPeerPorts(int port)
242  {
243  mSenderPeerPort = port;
244  mReceiverPeerPort = port;
245  }
247  virtual void setClientName(QString clientName)
248  { mJackClientName = clientName; }
249  virtual void setRemoteClientName(QString remoteClientName)
250  { mRemoteClientName = remoteClientName; }
252  virtual void setNumChannels(int num_chans)
253  { mNumChans = num_chans; }
254 
255  virtual void setIOStatTimeout(int timeout) { mIOStatTimeout = timeout; }
256  virtual void setIOStatStream(QSharedPointer<std::ofstream> statStream) { mIOStatStream = statStream; }
257 
259  virtual void setConnectDefaultAudioPorts(bool connect)
260  {mConnectDefaultAudioPorts = connect;}
261 
262  virtual int getReceiverBindPort() const
263  { return mReceiverBindPort; }
264  virtual int getSenderPeerPort() const
265  { return mSenderPeerPort; }
266  virtual int getSenderBindPort() const
267  { return mSenderBindPort; }
268  virtual int getReceiverPeerPort() const
269  { return mReceiverPeerPort; }
270 
272  { return mDataProtocolSender; }
274  { return mDataProtocolReceiver; }
275  virtual void setDataProtocolSender(DataProtocol* const DataProtocolSender)
276  { mDataProtocolSender = DataProtocolSender; }
277  virtual void setDataProtocolReceiver(DataProtocol* const DataProtocolReceiver)
278  { mDataProtocolReceiver = DataProtocolReceiver; }
279 
280  virtual RingBuffer* getSendRingBuffer() const
281  { return mSendRingBuffer; }
283  { return mReceiveRingBuffer; }
284  virtual void setSendRingBuffer(RingBuffer* const SendRingBuffer)
285  { mSendRingBuffer = SendRingBuffer; }
286  virtual void setReceiveRingBuffer(RingBuffer* const ReceiveRingBuffer)
287  { mReceiveRingBuffer = ReceiveRingBuffer; }
288 
290  { mPacketHeader = PacketHeader; }
291 
293  { return getTotalAudioPacketSizeInBytes(); }
294 
295  virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
296  { mAudiointerfaceMode = audiointerface_mode; }
298  { mAudioInterface = AudioInterface; }
299  virtual void setLoopBack(bool b)
300  { mLoopBack = b; }
301  virtual void setAudioTesterP(AudioTester* atp) { mAudioTesterP = atp; }
302 
303  void setSampleRate(uint32_t sample_rate)
304  { mSampleRate = sample_rate; }
305  void setDeviceID(uint32_t device_id)
306  { mDeviceID = device_id; }
308  { mAudioBufferSize = buf_size; }
309 
310 
312  { return mConnectionMode; }
314  { mConnectionMode = connection_mode; }
315 
317  { return mHubConnectionModeT; }
319  { mHubConnectionModeT = connection_mode; }
320 
322  { return mJackTripMode; }
323 
324  QString getPeerAddress() const
325  { return mPeerAddress; }
326 
328  { return mReceivedConnection; }
329 
331  { return mTcpConnectionError; }
332 
334  //------------------------------------------------------------------------------------
335 
336 
337  //------------------------------------------------------------------------------------
339 
340  virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype);
342  void putHeaderInPacket(int8_t* full_packet, int8_t* audio_packet);
343  virtual int getPacketSizeInBytes();
344  void parseAudioPacket(int8_t* full_packet, int8_t* audio_packet);
345  virtual void sendNetworkPacket(const int8_t* ptrToSlot)
346  { mSendRingBuffer->insertSlotNonBlocking(ptrToSlot, 0, 0); }
347  virtual void receiveBroadcastPacket(int8_t* ptrToReadSlot)
348  { mReceiveRingBuffer->readBroadcastSlot(ptrToReadSlot); }
349  virtual void receiveNetworkPacket(int8_t* ptrToReadSlot)
350  { mReceiveRingBuffer->readSlotNonBlocking(ptrToReadSlot); }
351  virtual void readAudioBuffer(int8_t* ptrToReadSlot)
352  { mSendRingBuffer->readSlotBlocking(ptrToReadSlot); }
353  virtual bool writeAudioBuffer(const int8_t* ptrToSlot, int len, int lostLen)
354  { return mReceiveRingBuffer->insertSlotNonBlocking(ptrToSlot, len, lostLen); }
356  { return mAudioBufferSize; /*return mAudioInterface->getBufferSizeInSamples();*/ }
358  { return mDeviceID; /*return mAudioInterface->mDeviceID();*/ }
359 
361  { return mAudioInterface->getSampleRateType(); }
362  int getSampleRate() const
363  { return mSampleRate; /*return mAudioInterface->getSampleRate();*/ }
364 
366  { return mAudioBitResolution*8; /*return mAudioInterface->getAudioBitResolution();*/ }
367  unsigned int getNumInputChannels() const
368  { return mNumChans; /*return mAudioInterface->getNumInputChannels();*/ }
369  unsigned int getNumOutputChannels() const
370  { return mNumChans; /*return mAudioInterface->getNumOutputChannels();*/ }
371  unsigned int getNumChannels() const
372  {
374  { return getNumInputChannels(); }
375  else { return 0; }
376  }
377  virtual void checkPeerSettings(int8_t* full_packet);
379  { mPacketHeader->increaseSequenceNumber(); }
380  int getSequenceNumber() const
381  { return mPacketHeader->getSequenceNumber(); }
382 
383  uint64_t getPeerTimeStamp(int8_t* full_packet) const
384  { return mPacketHeader->getPeerTimeStamp(full_packet); }
385 
387  { return mPacketHeader->getPeerSequenceNumber(full_packet); }
388 
389  uint16_t getPeerBufferSize(int8_t* full_packet) const
390  { return mPacketHeader->getPeerBufferSize(full_packet); }
391 
392  uint8_t getPeerSamplingRate(int8_t* full_packet) const
393  { return mPacketHeader->getPeerSamplingRate(full_packet); }
394 
395  uint8_t getPeerBitResolution(int8_t* full_packet) const
396  { return mPacketHeader->getPeerBitResolution(full_packet); }
397 
398  uint8_t getPeerNumChannels(int8_t* full_packet) const
399  { return mPacketHeader->getPeerNumChannels(full_packet); }
400 
402  { return mPacketHeader->getPeerConnectionMode(full_packet); }
403 
405  { return mAudioInterface->getSizeInBytesPerChannel(); }
407  { return mPacketHeader->getHeaderSizeInBytes(); }
408  virtual int getTotalAudioPacketSizeInBytes() const
409  {
410 #ifdef WAIR // WAIR
411  if (mNumNetRevChans)
412  return mAudioInterface->getSizeInBytesPerChannel() * mNumNetRevChans;
413  else // not wair
414 #endif // endwhere
415  return mAudioInterface->getSizeInBytesPerChannel() * mNumChans;
416  }
418  //------------------------------------------------------------------------------------
419 
420  void printTextTest() {std::cout << "=== JackTrip PRINT ===" << std::endl;}
421  void printTextTest2() {std::cout << "=== JackTrip PRINT2 ===" << std::endl;}
422 
423  void setNetIssuesSimulation(double loss, double jitter, double delay_rel)
424  {
425  mSimulatedLossRate = loss;
426  mSimulatedJitterRate = jitter;
427  mSimulatedDelayRel = delay_rel;
428  }
429  void setBroadcast(int broadcast_queue) {mBroadcastQueueLength = broadcast_queue;}
430  void setUseRtUdpPriority(bool use) {mUseRtUdpPriority = use;}
431 
432 public slots:
434  virtual void slotStopProcesses()
435  { this->stop(); }
436  virtual void slotStopProcessesDueToError(const QString &errorMessage)
437  { this->stop(errorMessage); }
438 
445  {
446  int wait_time = 10000; // msec
447  if ( !(wait_msec%wait_time) ) {
448  std::cerr << "UDP WAITED MORE THAN 10 seconds." << std::endl;
449  if (mStopOnTimeout) {
450  stop("No network data received for 10 seconds");
451  }
453  }
454  }
456  { emit signalUdpWaitingTooLong(); }
458  { std::cout << "=== TESTING ===" << std::endl; }
460  { mReceivedConnection = true; emit signalReceivedConnectionFromPeer(); }
461  void onStatTimer();
462 
463 private slots:
464  void receivedConnectionTCP();
465  void receivedDataTCP();
466  void receivedDataUDP();
467  void udpTimerTick();
468  void tcpTimerTick();
469 
470 signals:
471  //void signalUdpTimeOut();
477  void signalError(const QString &errorMessage);
480 
481 public:
482 
484  virtual void setupAudio(
485  #ifdef WAIRTOHUB // WAIR
486  int ID
487  #endif // endwhere
488  );
490  void closeAudio();
492  virtual void setupDataProtocol();
494  void setupRingBuffers();
496  void clientStart();
501  int serverStart(bool timeout = false, int udpTimeout = gTimeOutMultiThreadedServer);
504  virtual int clientPingToServerStart();
505 
506 private:
507  //void bindReceiveSocket(QUdpSocket& UdpSocket, int bind_port,
508  // QHostAddress PeerHostAddress, int peer_port)
509  //throw(std::runtime_error);
510 
511 
512  jacktripModeT mJackTripMode;
513  dataProtocolT mDataProtocol;
514  DataProtocol::packetHeaderTypeT mPacketHeaderType;
515  JackTrip::audiointerfaceModeT mAudiointerfaceMode;
516 
517  int mNumChans;
518 #ifdef WAIR // WAIR
519  int mNumNetRevChans;
520 #endif // endwhere
521  int mBufferQueueLength;
522  int mBufferStrategy;
523  int mBroadcastQueueLength;
524  uint32_t mSampleRate;
525  uint32_t mDeviceID;
526  uint32_t mAudioBufferSize;
527  AudioInterface::audioBitResolutionT mAudioBitResolution;
528  bool mLoopBack;
529  QString mPeerAddress;
530 
532  DataProtocol* mDataProtocolSender;
534  DataProtocol* mDataProtocolReceiver;
535  AudioInterface* mAudioInterface;
536  PacketHeader* mPacketHeader;
537  underrunModeT mUnderRunMode;
538  bool mStopOnTimeout;
539 
541  RingBuffer* mSendRingBuffer;
543  RingBuffer* mReceiveRingBuffer;
544 
545  int mReceiverBindPort;
546  int mSenderPeerPort;
547  int mSenderBindPort;
548  int mReceiverPeerPort;
549  int mTcpServerPort;
550 
551  unsigned int mRedundancy;
552  QString mJackClientName;
553  QString mRemoteClientName;
554 
555  JackTrip::connectionModeT mConnectionMode;
556  JackTrip::hubConnectionModeT mHubConnectionModeT;
557 
558  QVector<ProcessPlugin*> mProcessPluginsFromNetwork;
559  QVector<ProcessPlugin*> mProcessPluginsToNetwork;
560 
561  QTimer mTimeoutTimer;
562  int mSleepTime;
563  int mElapsedTime;
564  int mEndTime;
565  QTcpSocket mTcpClient;
566  QUdpSocket mUdpSockTemp;
567 
568  volatile bool mReceivedConnection;
569  volatile bool mTcpConnectionError;
570  volatile bool mStopped;
571  volatile bool mHasShutdown;
572 
573  bool mConnectDefaultAudioPorts;
574  QSharedPointer<std::ofstream> mIOStatStream;
575  int mIOStatTimeout;
576  std::ostream mIOStatLogStream;
577  double mSimulatedLossRate;
578  double mSimulatedJitterRate;
579  double mSimulatedDelayRel;
580  bool mUseRtUdpPriority;
581 
582  AudioTester* mAudioTesterP;
583 };
584 
585 #endif
JackAudioInterface.h
JackTrip::printTextTest
void printTextTest()
Definition: JackTrip.h:420
JackTrip::setPacketHeaderType
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:204
JackTrip::getNumOutputChannels
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:369
RingBuffer::insertSlotNonBlocking
virtual bool insertSlotNonBlocking(const int8_t *ptrToSlot, int len, int lostLen)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:173
JackTrip::getSampleRate
int getSampleRate() const
Definition: JackTrip.h:362
JackTrip::writeAudioBuffer
virtual bool writeAudioBuffer(const int8_t *ptrToSlot, int len, int lostLen)
Definition: JackTrip.h:353
JackTrip::getSenderBindPort
virtual int getSenderBindPort() const
Definition: JackTrip.h:266
JackTrip::clientPingToServerStart
virtual int clientPingToServerStart()
Stats for the Client to Ping Server.
Definition: JackTrip.cpp:859
JackTrip::WAVETABLE
@ WAVETABLE
Loops on the last received packet.
Definition: JackTrip.h:95
JackTrip::setJackTripMode
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:198
gDefaultRedundancy
const int gDefaultRedundancy
Definition: jacktrip_globals.h:92
JackTrip::SCTP
@ SCTP
NOT IMPLEMENTED: Use SCTP (Stream Control Transmission Protocol)
Definition: JackTrip.h:82
JackTrip::getReceiverPeerPort
virtual int getReceiverPeerPort() const
Definition: JackTrip.h:268
JackTrip::KSTRONG
@ KSTRONG
Karplus Strong.
Definition: JackTrip.h:108
DataProtocol
Base class that defines the transmission protocol.
Definition: DataProtocol.h:94
JackTrip::startProcess
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:393
JackTrip::appendProcessPluginToNetwork
virtual void appendProcessPluginToNetwork(ProcessPlugin *plugin)
Append a process plugin. Processes will be appended in order.
Definition: JackTrip.cpp:374
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:349
JackTrip::setSendRingBuffer
virtual void setSendRingBuffer(RingBuffer *const SendRingBuffer)
Definition: JackTrip.h:284
JackTrip::getHeaderSizeInBytes
int getHeaderSizeInBytes() const
Definition: JackTrip.h:406
JackTrip::signalError
void signalError(const QString &errorMessage)
JackTrip::getConnectionMode
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:311
JackTrip::signalTcpClientConnected
void signalTcpClientConnected()
AudioInterface::getSampleRateType
virtual samplingRateT getSampleRateType() const
Get the Jack Server Sampling Rate Enum Type samplingRateT.
Definition: AudioInterface.cpp:667
JackTrip::setAudioInterface
virtual void setAudioInterface(AudioInterface *const AudioInterface)
Definition: JackTrip.h:297
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:791
JackTrip::setPeerAddress
virtual void setPeerAddress(QString PeerHostOrIP)
Starting point for the thread.
Definition: JackTrip.cpp:367
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:444
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:145
JackTrip::getDataProtocolReceiver
virtual DataProtocol * getDataProtocolReceiver() const
Definition: JackTrip.h:273
JackTrip::sJackStopped
static bool sJackStopped
Definition: JackTrip.h:157
JackTrip::getDeviceID
uint32_t getDeviceID() const
Definition: JackTrip.h:357
JackTrip::getDataProtocolSender
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:271
JackTrip::setStopOnTimeout
virtual void setStopOnTimeout(bool stopOnTimeout)
Sets whether to quit on timeout.
Definition: JackTrip.h:223
JackTrip::getPeerSamplingRate
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:392
JackTrip::getNumChannels
unsigned int getNumChannels() const
Definition: JackTrip.h:371
JackTrip::setAudioBitResolution
virtual void setAudioBitResolution(AudioInterface::audioBitResolutionT AudioBitResolution)
Sets (override) Audio Bit Resolution after construction.
Definition: JackTrip.h:217
JackTrip::serverStart
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:816
JackTrip
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:72
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:252
JackTrip::setBindPorts
void setBindPorts(int port)
Sets port numbers to bind in RECEIVER and SENDER sockets.
Definition: JackTrip.h:235
JackTrip::getJackTripMode
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:321
JackTrip::getPeerBufferSize
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:389
JackTrip::getSenderPeerPort
virtual int getSenderPeerPort() const
Definition: JackTrip.h:264
JackTrip::NOAUTO
@ NOAUTO
No automatic patching.
Definition: JackTrip.h:119
JackTrip::getRingBuffersSlotSize
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:292
JackTrip::readAudioBuffer
virtual void readAudioBuffer(int8_t *ptrToReadSlot)
Definition: JackTrip.h:351
JackTrip::setBufferStrategy
virtual void setBufferStrategy(int BufferStrategy)
Definition: JackTrip.h:214
JackTrip::setupRingBuffers
void setupRingBuffers()
Set the RingBuffer objects.
Definition: JackTrip.cpp:310
JackTrip::getSizeInBytesPerChannel
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:404
JackTrip::getBufferSizeInSamples
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:355
JackTrip::signalUdpWaitingTooLong
void signalUdpWaitingTooLong()
JackTrip::SERVER
@ SERVER
Run in P2P Server Mode.
Definition: JackTrip.h:87
JackTrip::UDP
@ UDP
Use UDP (User Datagram Protocol)
Definition: JackTrip.h:80
JackTrip::getSendRingBuffer
virtual RingBuffer * getSendRingBuffer() const
Definition: JackTrip.h:280
JackTrip::setDataProtocolSender
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:275
JackTrip::RTAUDIO
@ RTAUDIO
RtAudio Mode.
Definition: JackTrip.h:102
JackTrip::SERVERPINGSERVER
@ SERVERPINGSERVER
Server of the MultiThreaded JackTrip.
Definition: JackTrip.h:90
JackTrip::CLIENTTOPINGSERVER
@ CLIENTTOPINGSERVER
Client of the Ping Server Mode.
Definition: JackTrip.h:89
RingBuffer::readBroadcastSlot
virtual void readBroadcastSlot(int8_t *ptrToReadSlot)
Definition: RingBuffer.cpp:247
JackTrip::clientStart
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:799
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:313
JackTrip::CLIENTECHO
@ CLIENTECHO
Client Echo (client self-to-self)
Definition: JackTrip.h:115
JackTrip::closeAudio
void closeAudio()
Close the JackAudioInteface and disconnects it from JACK.
Definition: JackTrip.cpp:251
JackTrip::checkIfPortIsBinded
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:1072
JackTrip::onStatTimer
void onStatTimer()
Definition: JackTrip.cpp:537
JackTrip::getPeerBitResolution
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:395
JackTrip::dataProtocolT
dataProtocolT
Enum for the data Protocol. At this time only UDP is implemented.
Definition: JackTrip.h:79
JackTrip::checkPeerSettings
virtual void checkPeerSettings(int8_t *full_packet)
Definition: JackTrip.cpp:1065
AudioTester
Definition: AudioTester.h:54
JackTrip::sendNetworkPacket
virtual void sendNetworkPacket(const int8_t *ptrToSlot)
Definition: JackTrip.h:345
AudioInterface.h
PacketHeader.h
AudioInterface::audioBitResolutionT
audioBitResolutionT
Enum for Audio Resolution in bits.
Definition: AudioInterface.h:62
JackTrip::jacktripModeT
jacktripModeT
Enum for the JackTrip mode.
Definition: JackTrip.h:86
JackTrip::increaseSequenceNumber
void increaseSequenceNumber()
Definition: JackTrip.h:378
JackTrip::underrunModeT
underrunModeT
Enum for the JackTrip Underrun Mode, when packets.
Definition: JackTrip.h:94
AudioInterface::getSizeInBytesPerChannel
virtual size_t getSizeInBytesPerChannel() const
Definition: AudioInterface.cpp:210
JackTrip::audiointerfaceModeT
audiointerfaceModeT
Enum for Audio Interface Mode.
Definition: JackTrip.h:100
JackTrip::slotStopProcesses
virtual void slotStopProcesses()
Slot to stop all the processes and threads.
Definition: JackTrip.h:434
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:305
JackTrip::getSequenceNumber
int getSequenceNumber() const
Definition: JackTrip.h:380
JackTrip::FULLMIX
@ FULLMIX
Client Fan Out to Clients and Fan In from Clients (including self-to-self)
Definition: JackTrip.h:118
JackTrip::setHubConnectionModeT
void setHubConnectionModeT(JackTrip::hubConnectionModeT connection_mode)
Definition: JackTrip.h:318
JackTrip::setClientName
virtual void setClientName(QString clientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:247
JackTrip::sSigInt
static bool sSigInt
Definition: JackTrip.h:156
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::signalReceivedConnectionFromPeer
void signalReceivedConnectionFromPeer()
JackTrip::signalProcessesStopped
void signalProcessesStopped()
Signal emitted when all the processes and threads are stopped.
JackTrip::setPeerPorts
void setPeerPorts(int port)
Sets port numbers for the peer (remote) machine.
Definition: JackTrip.h:241
JackTrip::stop
virtual void stop(QString errorMessage="")
Stop the processing threads.
Definition: JackTrip.cpp:754
gDefaultNumInChannels
const int gDefaultNumInChannels
Definition: jacktrip_globals.h:52
JackTrip::completeConnection
virtual void completeConnection()
Definition: JackTrip.cpp:486
AudioInterface::BIT16
@ BIT16
16 bits (default)
Definition: AudioInterface.h:64
JackTrip::setReceiveRingBuffer
virtual void setReceiveRingBuffer(RingBuffer *const ReceiveRingBuffer)
Definition: JackTrip.h:286
JackTrip::setAudioTesterP
virtual void setAudioTesterP(AudioTester *atp)
Definition: JackTrip.h:301
JackTrip::connectionModeT
connectionModeT
Enum for Connection Mode (in packet header)
Definition: JackTrip.h:106
RingBuffer::readSlotNonBlocking
virtual void readSlotNonBlocking(int8_t *ptrToReadSlot)
Same as readSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:211
AudioInterface::samplingRateT
samplingRateT
Sampling Rates supported by JACK.
Definition: AudioInterface.h:70
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:1055
JackTrip::setupDataProtocol
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:263
JackTrip::setPacketHeader
virtual void setPacketHeader(PacketHeader *const PacketHeader)
Definition: JackTrip.h:289
PacketHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *full_packet) const =0
JackTrip::setupAudio
virtual void setupAudio()
Set the AudioInteface object.
Definition: JackTrip.cpp:156
JackTrip::receiveBroadcastPacket
virtual void receiveBroadcastPacket(int8_t *ptrToReadSlot)
Definition: JackTrip.h:347
JackTrip::hubConnectionModeT
hubConnectionModeT
Enum for Hub Server Audio Connection Mode (connections to hub server are automatically patched in Jac...
Definition: JackTrip.h:113
JackTrip::setRemoteClientName
virtual void setRemoteClientName(QString remoteClientName)
Definition: JackTrip.h:249
JackTrip::setDataProtocolReceiver
virtual void setDataProtocolReceiver(DataProtocol *const DataProtocolReceiver)
Definition: JackTrip.h:277
JackTrip::getPeerTimeStamp
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:383
JackTrip::setAudiointerfaceMode
virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
Definition: JackTrip.h:295
JackTrip::setSampleRate
void setSampleRate(uint32_t sample_rate)
Definition: JackTrip.h:303
JackTrip::putHeaderInPacket
void putHeaderInPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:1030
PacketHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *full_packet) const =0
JackTrip::sigIntHandler
static void sigIntHandler(__attribute__((unused)) int unused)
Definition: JackTrip.h:154
JackTrip::getPeerAddress
QString getPeerAddress() const
Definition: JackTrip.h:324
JackTrip::getPeerNumChannels
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:398
JackTrip::createHeader
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:1009
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:81
JackTrip::setAllPorts
virtual void setAllPorts(int port)
Sets port numbers for the local and peer machine. Receive port is port
Definition: JackTrip.h:227
JackTrip::JACK
@ JACK
Jack Mode.
Definition: JackTrip.h:101
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:116
JackTrip::NORMAL
@ NORMAL
Normal Mode.
Definition: JackTrip.h:107
JackTrip::CLIENT
@ CLIENT
Run in P2P Client Mode.
Definition: JackTrip.h:88
JackTrip::receivedConnectionFromPeer
bool receivedConnectionFromPeer()
Definition: JackTrip.h:327
DataProtocol.h
JackTrip::getPeerConnectionMode
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:401
JackTrip::getAudioBitResolution
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:365
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, int tcp_peer_port=gDefaultPort)
The class Constructor with Default Parameters.
Definition: JackTrip.cpp:73
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:259
JackTrip::appendProcessPluginFromNetwork
virtual void appendProcessPluginFromNetwork(ProcessPlugin *plugin)
Definition: JackTrip.cpp:383
JackTrip::getHubConnectionModeT
JackTrip::hubConnectionModeT getHubConnectionModeT() const
Definition: JackTrip.h:316
RingBuffer
Provides a ring-buffer (or circular-buffer) that can be written to and read from asynchronously (bloc...
Definition: RingBuffer.h:60
JackTrip::setLoopBack
virtual void setLoopBack(bool b)
Definition: JackTrip.h:299
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:117
JackTrip::JAMTEST
@ JAMTEST
Karplus Strong.
Definition: JackTrip.h:109
JackTrip::SERVERTOCLIENT
@ SERVERTOCLIENT
Normal Mode, Sever to All Clients (but not client to any client)
Definition: JackTrip.h:114
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:96
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:386
PacketHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *full_packet) const =0
JackTrip::getReceiveRingBuffer
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:282
JackTrip::setIOStatTimeout
virtual void setIOStatTimeout(int timeout)
Definition: JackTrip.h:255
JackTrip::printTextTest2
void printTextTest2()
Definition: JackTrip.h:421
JackTrip::setIOStatStream
virtual void setIOStatStream(QSharedPointer< std::ofstream > statStream)
Definition: JackTrip.h:256
JackTrip::~JackTrip
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:143
JackTrip::tcpConnectionError
bool tcpConnectionError()
Definition: JackTrip.h:330
JackTrip::setNetIssuesSimulation
void setNetIssuesSimulation(double loss, double jitter, double delay_rel)
Definition: JackTrip.h:423
AudioInterface
Base Class that provides an interface with audio.
Definition: AudioInterface.h:58
RingBuffer.h
JackTrip::setUnderRunMode
virtual void setUnderRunMode(underrunModeT UnderRunMode)
Sets (override) Underrun Mode.
Definition: JackTrip.h:220
JackTrip::getNumInputChannels
unsigned int getNumInputChannels() const
Definition: JackTrip.h:367
PacketHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *full_packet) const =0
JackTrip::slotReceivedConnectionFromPeer
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:459
JackTrip::getSampleRateType
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:360
JackTrip::setDataProtocoType
virtual void setDataProtocoType(dataProtocolT DataProtocolType)
Sets (override) DataProtocol Type after construction.
Definition: JackTrip.h:201
AudioTester.h
gDefaultQueueLength
const int gDefaultQueueLength
Definition: jacktrip_globals.h:86
JackTrip::slotStopProcessesDueToError
virtual void slotStopProcessesDueToError(const QString &errorMessage)
Definition: JackTrip.h:436
JackTrip::setBroadcast
void setBroadcast(int broadcast_queue)
Definition: JackTrip.h:429
JackTrip::slotUdpWaitingTooLong
void slotUdpWaitingTooLong()
Definition: JackTrip.h:455
JackTrip::slotPrintTest
void slotPrintTest()
Definition: JackTrip.h:457
JackTrip::getTotalAudioPacketSizeInBytes
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:408
JackTrip::getReceiverBindPort
virtual int getReceiverBindPort() const
Definition: JackTrip.h:262
JackTrip::getPacketSizeInBytes
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:1044
JackTrip::setBufferQueueLength
virtual void setBufferQueueLength(int BufferQueueLength)
Sets (override) Buffer Queue Length Mode after construction.
Definition: JackTrip.h:212
JackTrip::setAudioBufferSizeInSamples
void setAudioBufferSizeInSamples(uint32_t buf_size)
Definition: JackTrip.h:307
JackTrip::setUseRtUdpPriority
void setUseRtUdpPriority(bool use)
Definition: JackTrip.h:430