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  int tcp_peer_port = gDefaultPort);
145 
147  virtual ~JackTrip();
148 
150  virtual void run() {
151  if (gVerboseFlag) std::cout << "Settings:startJackTrip before mJackTrip->run" << std::endl;
152  }
153 
155  virtual void setPeerAddress(const char* PeerHostOrIP);
156 
160  //void appendProcessPlugin(const std::tr1::shared_ptr<ProcessPlugin> plugin);
161  virtual void appendProcessPlugin(ProcessPlugin* plugin);
162 
164  virtual void startProcess(
165  #ifdef WAIRTOHUB // wair
166  int ID
167  #endif // endwhere
168  );
169 
171  virtual void stop();
172 
175  virtual void waitThreads();
176 
179  virtual void checkIfPortIsBinded(int port);
180 
181  //------------------------------------------------------------------------------------
183 
184  //
186  virtual void setJackTripMode(jacktripModeT JacktripMode)
187  { mJackTripMode = JacktripMode; }
189  virtual void setDataProtocoType(dataProtocolT DataProtocolType)
190  { mDataProtocol = DataProtocolType; }
193  {
194  mPacketHeaderType = PacketHeaderType;
195  delete mPacketHeader;
196  mPacketHeader = NULL;
197  createHeader(mPacketHeaderType);
198  }
200  virtual void setBufferQueueLength(int BufferQueueLength)
201  { mBufferQueueLength = BufferQueueLength; }
204  { mAudioBitResolution = AudioBitResolution; }
206  virtual void setUnderRunMode(underrunModeT UnderRunMode)
207  { mUnderRunMode = UnderRunMode; }
210  virtual void setAllPorts(int port)
211  {
212  mReceiverBindPort = port;
213  mSenderPeerPort = port;
214  mSenderBindPort = port;
215  mReceiverPeerPort = port;
216  }
218  void setBindPorts(int port)
219  {
220  mReceiverBindPort = port;
221  mSenderBindPort = port;
222  }
224  void setPeerPorts(int port)
225  {
226  mSenderPeerPort = port;
227  mReceiverPeerPort = port;
228  }
230  virtual void setClientName(QString clientName)
231  { mJackClientName = clientName; }
233  virtual void setNumChannels(int num_chans)
234  { mNumChans = num_chans; }
235 
237  virtual void setConnectDefaultAudioPorts(bool connect)
238  {mConnectDefaultAudioPorts = connect;}
239 
240  virtual int getReceiverBindPort() const
241  { return mReceiverBindPort; }
242  virtual int getSenderPeerPort() const
243  { return mSenderPeerPort; }
244  virtual int getSenderBindPort() const
245  { return mSenderBindPort; }
246  virtual int getReceiverPeerPort() const
247  { return mReceiverPeerPort; }
248 
250  { return mDataProtocolSender; }
252  { return mDataProtocolReceiver; }
253  virtual void setDataProtocolSender(DataProtocol* const DataProtocolSender)
254  { mDataProtocolSender = DataProtocolSender; }
255  virtual void setDataProtocolReceiver(DataProtocol* const DataProtocolReceiver)
256  { mDataProtocolReceiver = DataProtocolReceiver; }
257 
258  virtual RingBuffer* getSendRingBuffer() const
259  { return mSendRingBuffer; }
261  { return mReceiveRingBuffer; }
262  virtual void setSendRingBuffer(RingBuffer* const SendRingBuffer)
263  { mSendRingBuffer = SendRingBuffer; }
264  virtual void setReceiveRingBuffer(RingBuffer* const ReceiveRingBuffer)
265  { mReceiveRingBuffer = ReceiveRingBuffer; }
266 
268  { mPacketHeader = PacketHeader; }
269 
271  { return getTotalAudioPacketSizeInBytes(); }
272 
273  virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
274  { mAudiointerfaceMode = audiointerface_mode; }
276  { mAudioInterface = AudioInterface; }
277 
278 
279  void setSampleRate(uint32_t sample_rate)
280  { mSampleRate = sample_rate; }
281  void setDeviceID(uint32_t device_id)
282  { mDeviceID = device_id; }
284  { mAudioBufferSize = buf_size; }
285 
286 
288  { return mConnectionMode; }
290  { mConnectionMode = connection_mode; }
291 
293  { return mHubConnectionModeT; }
295  { mHubConnectionModeT = connection_mode; }
296 
298  { return mJackTripMode; }
299 
300  QString getPeerAddress() const
301  { return mPeerAddress; }
302 
304  { return mReceivedConnection; }
305 
307  { return mTcpConnectionError; }
309  //------------------------------------------------------------------------------------
310 
311 
312  //------------------------------------------------------------------------------------
314 
315  virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype);
317  void putHeaderInPacket(int8_t* full_packet, int8_t* audio_packet);
318  virtual int getPacketSizeInBytes();
319  void parseAudioPacket(int8_t* full_packet, int8_t* audio_packet);
320  virtual void sendNetworkPacket(const int8_t* ptrToSlot)
321  { mSendRingBuffer->insertSlotNonBlocking(ptrToSlot); }
322  virtual void receiveNetworkPacket(int8_t* ptrToReadSlot)
323  { mReceiveRingBuffer->readSlotNonBlocking(ptrToReadSlot); }
324  virtual void readAudioBuffer(int8_t* ptrToReadSlot)
325  { mSendRingBuffer->readSlotBlocking(ptrToReadSlot); }
326  virtual void writeAudioBuffer(const int8_t* ptrToSlot)
327  { mReceiveRingBuffer->insertSlotNonBlocking(ptrToSlot); }
329  { return mAudioBufferSize; /*return mAudioInterface->getBufferSizeInSamples();*/ }
331  { return mDeviceID; /*return mAudioInterface->mDeviceID();*/ }
332 
334  { return mAudioInterface->getSampleRateType(); }
335  int getSampleRate() const
336  { return mSampleRate; /*return mAudioInterface->getSampleRate();*/ }
337 
339  { return mAudioBitResolution*8; /*return mAudioInterface->getAudioBitResolution();*/ }
340  unsigned int getNumInputChannels() const
341  { return mNumChans; /*return mAudioInterface->getNumInputChannels();*/ }
342  unsigned int getNumOutputChannels() const
343  { return mNumChans; /*return mAudioInterface->getNumOutputChannels();*/ }
344  unsigned int getNumChannels() const
345  {
347  { return getNumInputChannels(); }
348  else { return 0; }
349  }
350  virtual void checkPeerSettings(int8_t* full_packet);
352  { mPacketHeader->increaseSequenceNumber(); }
353  int getSequenceNumber() const
354  { return mPacketHeader->getSequenceNumber(); }
355 
356  uint64_t getPeerTimeStamp(int8_t* full_packet) const
357  { return mPacketHeader->getPeerTimeStamp(full_packet); }
358 
360  { return mPacketHeader->getPeerSequenceNumber(full_packet); }
361 
362  uint16_t getPeerBufferSize(int8_t* full_packet) const
363  { return mPacketHeader->getPeerBufferSize(full_packet); }
364 
365  uint8_t getPeerSamplingRate(int8_t* full_packet) const
366  { return mPacketHeader->getPeerSamplingRate(full_packet); }
367 
368  uint8_t getPeerBitResolution(int8_t* full_packet) const
369  { return mPacketHeader->getPeerBitResolution(full_packet); }
370 
371  uint8_t getPeerNumChannels(int8_t* full_packet) const
372  { return mPacketHeader->getPeerNumChannels(full_packet); }
373 
375  { return mPacketHeader->getPeerConnectionMode(full_packet); }
376 
378  { return mAudioInterface->getSizeInBytesPerChannel(); }
380  { return mPacketHeader->getHeaderSizeInBytes(); }
381  virtual int getTotalAudioPacketSizeInBytes() const
382  {
383 #ifdef WAIR // WAIR
384  if (mNumNetRevChans)
385  return mAudioInterface->getSizeInBytesPerChannel() * mNumNetRevChans;
386  else // not wair
387 #endif // endwhere
388  return mAudioInterface->getSizeInBytesPerChannel() * mNumChans;
389  }
391  //------------------------------------------------------------------------------------
392 
393  void printTextTest() {std::cout << "=== JackTrip PRINT ===" << std::endl;}
394  void printTextTest2() {std::cout << "=== JackTrip PRINT2 ===" << std::endl;}
395 
396  void startIOStatTimer(int timeout_sec, const std::ostream& log_stream);
397 
398 public slots:
400  virtual void slotStopProcesses()
401  {
402  std::cout << "Stopping JackTrip..." << std::endl;
403  mStopped = true;
404  this->stop();
405  }
406 
413  {
414  int wait_time = 10000; // msec
415  if ( !(wait_msec%wait_time) ) {
416  std::cerr << "UDP WAITED MORE THAN 10 seconds." << std::endl;
418  }
419  }
421  { std::cout << "=== TESTING ===" << std::endl; }
423  { mReceivedConnection = true; }
424  void onStatTimer();
425 
426 
427 signals:
428 
429  void signalUdpTimeOut();
431  void signalProcessesStopped();
435 
436 
437 public:
438 
440  virtual void setupAudio(
441  #ifdef WAIRTOHUB // WAIR
442  int ID
443  #endif // endwhere
444  );
446  void closeAudio();
448  virtual void setupDataProtocol();
450  void setupRingBuffers();
452  void clientStart();
457  int serverStart(bool timeout = false, int udpTimeout = gTimeOutMultiThreadedServer);
460  virtual int clientPingToServerStart();
461 
462 private:
463  //void bindReceiveSocket(QUdpSocket& UdpSocket, int bind_port,
464  // QHostAddress PeerHostAddress, int peer_port)
465  //throw(std::runtime_error);
466 
467 
468  jacktripModeT mJackTripMode;
469  dataProtocolT mDataProtocol;
470  DataProtocol::packetHeaderTypeT mPacketHeaderType;
471  JackTrip::audiointerfaceModeT mAudiointerfaceMode;
472 
473  int mNumChans;
474 #ifdef WAIR // WAIR
475  int mNumNetRevChans;
476 #endif // endwhere
477  int mBufferQueueLength;
478  uint32_t mSampleRate;
479  uint32_t mDeviceID;
480  uint32_t mAudioBufferSize;
481  AudioInterface::audioBitResolutionT mAudioBitResolution;
482  QString mPeerAddress;
483 
485  DataProtocol* mDataProtocolSender;
487  DataProtocol* mDataProtocolReceiver;
488  AudioInterface* mAudioInterface;
489  PacketHeader* mPacketHeader;
490  underrunModeT mUnderRunMode;
491 
493  RingBuffer* mSendRingBuffer;
495  RingBuffer* mReceiveRingBuffer;
496 
497  int mReceiverBindPort;
498  int mSenderPeerPort;
499  int mSenderBindPort;
500  int mReceiverPeerPort;
501  int mTcpServerPort;
502 
503  unsigned int mRedundancy;
504  QString mJackClientName;
505 
506  JackTrip::connectionModeT mConnectionMode;
507  JackTrip::hubConnectionModeT mHubConnectionModeT;
508 
509  QVector<ProcessPlugin*> mProcessPlugins;
510 
511  volatile bool mReceivedConnection;
512  volatile bool mTcpConnectionError;
513  volatile bool mStopped;
514 
515  bool mConnectDefaultAudioPorts;
516  std::ostream mIOStatLogStream;
517 };
518 
519 #endif
JackAudioInterface.h
JackTrip::printTextTest
void printTextTest()
Definition: JackTrip.h:393
JackTrip::setPacketHeaderType
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:192
JackTrip::getNumOutputChannels
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:342
JackTrip::getSampleRate
int getSampleRate() const
Definition: JackTrip.h:335
JackTrip::getSenderBindPort
virtual int getSenderBindPort() const
Definition: JackTrip.h:244
JackTrip::clientPingToServerStart
virtual int clientPingToServerStart()
Stats for the Client to Ping Server.
Definition: JackTrip.cpp:644
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:451
JackTrip::setJackTripMode
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:186
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:246
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:330
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:322
JackTrip::setSendRingBuffer
virtual void setSendRingBuffer(RingBuffer *const SendRingBuffer)
Definition: JackTrip.h:262
JackTrip::getHeaderSizeInBytes
int getHeaderSizeInBytes() const
Definition: JackTrip.h:379
JackTrip::getConnectionMode
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:287
JackTrip::signalTcpClientConnected
void signalTcpClientConnected()
Definition: moc_JackTrip.cpp:211
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:275
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:523
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:412
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:251
JackTrip::run
virtual void run()
Starting point for the thread.
Definition: JackTrip.h:150
JackTrip::getDeviceID
uint32_t getDeviceID() const
Definition: JackTrip.h:330
JackTrip::getDataProtocolSender
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:249
JackTrip::getPeerSamplingRate
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:365
JackTrip::getNumChannels
unsigned int getNumChannels() const
Definition: JackTrip.h:344
JackTrip::setAudioBitResolution
virtual void setAudioBitResolution(AudioInterface::audioBitResolutionT AudioBitResolution)
Sets (override) Audio Bit Resolution after construction.
Definition: JackTrip.h:203
JackTrip::serverStart
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:547
JackTrip::stop
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:500
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:233
JackTrip::setBindPorts
void setBindPorts(int port)
Sets port numbers to bind in RECEIVER and SENDER sockets.
Definition: JackTrip.h:218
JackTrip::getJackTripMode
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:297
JackTrip::getPeerBufferSize
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:362
JackTrip::getSenderPeerPort
virtual int getSenderPeerPort() const
Definition: JackTrip.h:242
JackTrip::getRingBuffersSlotSize
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:270
JackTrip::readAudioBuffer
virtual void readAudioBuffer(int8_t *ptrToReadSlot)
Definition: JackTrip.h:324
JackTrip::setupRingBuffers
void setupRingBuffers()
Set the RingBuffer objects.
Definition: JackTrip.cpp:274
JackTrip::getSizeInBytesPerChannel
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:377
JackTrip::getBufferSizeInSamples
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:328
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:258
JackTrip::setDataProtocolSender
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:253
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:193
JackTrip::clientStart
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:531
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:289
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:224
JackTrip::checkIfPortIsBinded
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:905
JackTrip::onStatTimer
void onStatTimer()
Definition: JackTrip.cpp:460
JackTrip::getPeerBitResolution
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:368
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:898
JackTrip::sendNetworkPacket
virtual void sendNetworkPacket(const int8_t *ptrToSlot)
Definition: JackTrip.h:320
JackTrip::writeAudioBuffer
virtual void writeAudioBuffer(const int8_t *ptrToSlot)
Definition: JackTrip.h:326
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:351
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:400
JackTrip::signalNoUdpPacketsForSeconds
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
Definition: moc_JackTrip.cpp:205
JackTrip::setDeviceID
void setDeviceID(uint32_t device_id)
Definition: JackTrip.h:281
JackTrip::getSequenceNumber
int getSequenceNumber() const
Definition: JackTrip.h:353
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:294
JackTrip::setClientName
virtual void setClientName(QString clientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:230
JackTrip::setPeerAddress
virtual void setPeerAddress(const char *PeerHostOrIP)
Set the Peer Address for jacktripModeT::CLIENT mode only.
Definition: JackTrip.cpp:315
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:199
JackTrip::setPeerPorts
void setPeerPorts(int port)
Sets port numbers for the peer (remote) machine.
Definition: JackTrip.h:224
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:264
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:887
JackTrip::setupDataProtocol
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:236
JackTrip::setPacketHeader
virtual void setPacketHeader(PacketHeader *const PacketHeader)
Definition: JackTrip.h:267
PacketHeader::getPeerTimeStamp
virtual uint64_t getPeerTimeStamp(int8_t *full_packet) const =0
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:255
JackTrip::getPeerTimeStamp
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:356
JackTrip::setAudiointerfaceMode
virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
Definition: JackTrip.h:273
JackTrip::setSampleRate
void setSampleRate(uint32_t sample_rate)
Definition: JackTrip.h:279
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:862
PacketHeader::getPeerNumChannels
virtual uint8_t getPeerNumChannels(int8_t *full_packet) const =0
JackTrip::getPeerAddress
QString getPeerAddress() const
Definition: JackTrip.h:300
JackTrip::getPeerNumChannels
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:371
JackTrip::createHeader
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:841
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:322
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:210
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:303
DataProtocol.h
JackTrip::getPeerConnectionMode
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:374
JackTrip::getAudioBitResolution
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:338
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:70
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:237
JackTrip::getHubConnectionModeT
JackTrip::hubConnectionModeT getHubConnectionModeT() const
Definition: JackTrip.h:292
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:359
PacketHeader::getPeerSamplingRate
virtual uint8_t getPeerSamplingRate(int8_t *full_packet) const =0
JackTrip::getReceiveRingBuffer
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:260
JackTrip::printTextTest2
void printTextTest2()
Definition: JackTrip.h:394
JackTrip::~JackTrip
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:122
JackTrip::tcpConnectionError
bool tcpConnectionError()
Definition: JackTrip.h:306
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:206
JackTrip::getNumInputChannels
unsigned int getNumInputChannels() const
Definition: JackTrip.h:340
PacketHeader::getPeerSequenceNumber
virtual uint16_t getPeerSequenceNumber(int8_t *full_packet) const =0
JackTrip::slotReceivedConnectionFromPeer
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:422
JackTrip::getSampleRateType
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:333
JackTrip::setDataProtocoType
virtual void setDataProtocoType(dataProtocolT DataProtocolType)
Sets (override) DataProtocol Type after construction.
Definition: JackTrip.h:189
gDefaultQueueLength
const int gDefaultQueueLength
Definition: jacktrip_globals.h:86
JackTrip::slotPrintTest
void slotPrintTest()
Definition: JackTrip.h:420
JackTrip::getTotalAudioPacketSizeInBytes
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:381
JackTrip::getReceiverBindPort
virtual int getReceiverBindPort() const
Definition: JackTrip.h:240
JackTrip::getPacketSizeInBytes
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:876
JackTrip::setBufferQueueLength
virtual void setBufferQueueLength(int BufferQueueLength)
Sets (override) Buffer Queue Length Mode after construction.
Definition: JackTrip.h:200
JackTrip::setAudioBufferSizeInSamples
void setAudioBufferSizeInSamples(uint32_t buf_size)
Definition: JackTrip.h:283