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  //---------------------------------------------------------
108 
109 
118  JackTrip(jacktripModeT JacktripMode = CLIENT,
119  dataProtocolT DataProtocolType = UDP,
120  int NumChans = gDefaultNumInChannels,
121  int BufferQueueLength = gDefaultQueueLength,
122  unsigned int redundancy = gDefaultRedundancy,
123  AudioInterface::audioBitResolutionT AudioBitResolution =
125  DataProtocol::packetHeaderTypeT PacketHeaderType =
127  underrunModeT UnderRunMode = WAVETABLE,
128  int receiver_bind_port = gDefaultPort,
129  int sender_bind_port = gDefaultPort,
130  int receiver_peer_port = gDefaultPort,
131  int sender_peer_port = gDefaultPort);
132 
134  virtual ~JackTrip();
135 
137  virtual void run() {}
138 
140  virtual void setPeerAddress(const char* PeerHostOrIP);
141 
145  //void appendProcessPlugin(const std::tr1::shared_ptr<ProcessPlugin> plugin);
146  virtual void appendProcessPlugin(ProcessPlugin* plugin);
147 
149  virtual void startProcess() throw(std::invalid_argument);
150 
152  virtual void stop();
153 
156  virtual void waitThreads();
157 
160  virtual void checkIfPortIsBinded(int port);
161 
162  //------------------------------------------------------------------------------------
164 
165  //
167  virtual void setJackTripMode(jacktripModeT JacktripMode)
168  { mJackTripMode = JacktripMode; }
170  virtual void setDataProtocoType(dataProtocolT DataProtocolType)
171  { mDataProtocol = DataProtocolType; }
174  {
175  mPacketHeaderType = PacketHeaderType;
176  delete mPacketHeader;
177  mPacketHeader = NULL;
178  createHeader(mPacketHeaderType);
179  }
181  virtual void setBufferQueueLength(int BufferQueueLength)
182  { mBufferQueueLength = BufferQueueLength; }
185  { mAudioBitResolution = AudioBitResolution; }
187  virtual void setUnderRunMode(underrunModeT UnderRunMode)
188  { mUnderRunMode = UnderRunMode; }
191  virtual void setAllPorts(int port)
192  {
193  mReceiverBindPort = port;
194  mSenderPeerPort = port;
195  mSenderBindPort = port;
196  mReceiverPeerPort = port;
197  }
199  virtual void setBindPorts(int port)
200  {
201  mReceiverBindPort = port;
202  mSenderBindPort = port;
203  }
205  virtual void setPeerPorts(int port)
206  {
207  mSenderPeerPort = port;
208  mReceiverPeerPort = port;
209  }
211  virtual void setClientName(const char* ClientName)
212  { mJackClientName = ClientName; }
214  virtual void setNumChannels(int num_chans)
215  { mNumChans = num_chans; }
216 
217  virtual int getReceiverBindPort() const
218  { return mReceiverBindPort; }
219  virtual int getSenderPeerPort() const
220  { return mSenderPeerPort; }
221  virtual int getSenderBindPort() const
222  { return mSenderBindPort; }
223  virtual int getReceiverPeerPort() const
224  { return mReceiverPeerPort; }
225 
227  { return mDataProtocolSender; }
229  { return mDataProtocolReceiver; }
230  virtual void setDataProtocolSender(DataProtocol* const DataProtocolSender)
231  { mDataProtocolSender = DataProtocolSender; }
232  virtual void setDataProtocolReceiver(DataProtocol* const DataProtocolReceiver)
233  { mDataProtocolReceiver = DataProtocolReceiver; }
234 
235  virtual RingBuffer* getSendRingBuffer() const
236  { return mSendRingBuffer; }
238  { return mReceiveRingBuffer; }
239  virtual void setSendRingBuffer(RingBuffer* const SendRingBuffer)
240  { mSendRingBuffer = SendRingBuffer; }
241  virtual void setReceiveRingBuffer(RingBuffer* const ReceiveRingBuffer)
242  { mReceiveRingBuffer = ReceiveRingBuffer; }
243 
245  { mPacketHeader = PacketHeader; }
246 
248  { return getTotalAudioPacketSizeInBytes(); }
249 
250  virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
251  { mAudiointerfaceMode = audiointerface_mode; }
253  { mAudioInterface = AudioInterface; }
254 
255 
256  void setSampleRate(uint32_t sample_rate)
257  { mSampleRate = sample_rate; }
259  { mAudioBufferSize = buf_size; }
260 
262  { return mConnectionMode; }
264  { mConnectionMode = connection_mode; }
265 
267  { return mJackTripMode; }
268 
269  QString getPeerAddress() const
270  { return mPeerAddress; }
271 
273  { return mReceivedConnection; }
274 
276  { return mTcpConnectionError; }
278  //------------------------------------------------------------------------------------
279 
280 
281  //------------------------------------------------------------------------------------
283 
284  virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype);
286  void putHeaderInPacket(int8_t* full_packet, int8_t* audio_packet);
287  virtual int getPacketSizeInBytes();
288  void parseAudioPacket(int8_t* full_packet, int8_t* audio_packet);
289  virtual void sendNetworkPacket(const int8_t* ptrToSlot)
290  { mSendRingBuffer->insertSlotNonBlocking(ptrToSlot); }
291  virtual void receiveNetworkPacket(int8_t* ptrToReadSlot)
292  { mReceiveRingBuffer->readSlotNonBlocking(ptrToReadSlot); }
293  virtual void readAudioBuffer(int8_t* ptrToReadSlot)
294  { mSendRingBuffer->readSlotBlocking(ptrToReadSlot); }
295  virtual void writeAudioBuffer(const int8_t* ptrToSlot)
296  { mReceiveRingBuffer->insertSlotNonBlocking(ptrToSlot); }
298  { return mAudioBufferSize; /*return mAudioInterface->getBufferSizeInSamples();*/ }
299 
301  { return mAudioInterface->getSampleRateType(); }
302  int getSampleRate() const
303  { return mSampleRate; /*return mAudioInterface->getSampleRate();*/ }
304 
306  { return mAudioBitResolution*8; /*return mAudioInterface->getAudioBitResolution();*/ }
307  unsigned int getNumInputChannels() const
308  { return mNumChans; /*return mAudioInterface->getNumInputChannels();*/ }
309  unsigned int getNumOutputChannels() const
310  { return mNumChans; /*return mAudioInterface->getNumOutputChannels();*/ }
311  unsigned int getNumChannels() const
312  {
314  { return getNumInputChannels(); }
315  else { return 0; }
316  }
317  virtual void checkPeerSettings(int8_t* full_packet);
319  { mPacketHeader->increaseSequenceNumber(); }
320  int getSequenceNumber() const
321  { return mPacketHeader->getSequenceNumber(); }
322 
323  uint64_t getPeerTimeStamp(int8_t* full_packet) const
324  { return mPacketHeader->getPeerTimeStamp(full_packet); }
325 
327  { return mPacketHeader->getPeerSequenceNumber(full_packet); }
328 
329  uint16_t getPeerBufferSize(int8_t* full_packet) const
330  { return mPacketHeader->getPeerBufferSize(full_packet); }
331 
332  uint8_t getPeerSamplingRate(int8_t* full_packet) const
333  { return mPacketHeader->getPeerSamplingRate(full_packet); }
334 
335  uint8_t getPeerBitResolution(int8_t* full_packet) const
336  { return mPacketHeader->getPeerBitResolution(full_packet); }
337 
338  uint8_t getPeerNumChannels(int8_t* full_packet) const
339  { return mPacketHeader->getPeerNumChannels(full_packet); }
340 
342  { return mPacketHeader->getPeerConnectionMode(full_packet); }
343 
345  { return mAudioInterface->getSizeInBytesPerChannel(); }
347  { return mPacketHeader->getHeaderSizeInBytes(); }
348  virtual int getTotalAudioPacketSizeInBytes() const
349  { return mAudioInterface->getSizeInBytesPerChannel() * mNumChans; }
351  //------------------------------------------------------------------------------------
352 
353  void printTextTest() {std::cout << "=== JackTrip PRINT ===" << std::endl;}
354  void printTextTest2() {std::cout << "=== JackTrip PRINT2 ===" << std::endl;}
355 
356 public slots:
358  virtual void slotStopProcesses()
359  {
360  std::cout << "Stopping JackTrip..." << std::endl;
361  mStopped = true;
362  this->stop();
363  }
364 
370  void slotUdpWatingTooLong(int wait_msec)
371  {
372  int wait_time = 30000; // msec
373  if ( !(wait_msec%wait_time) ) {
374  std::cerr << "UDP WAITED MORE THAN 30 seconds." << std::endl;
376  }
377  }
379  { std::cout << "=== TESTING ===" << std::endl; }
381  { mReceivedConnection = true; }
382 
383 
384 signals:
385 
386  void signalUdpTimeOut();
388  void signalProcessesStopped();
392 
393 
394 public:
395 
397  virtual void setupAudio();
399  void closeAudio();
401  virtual void setupDataProtocol();
403  void setupRingBuffers();
405  void clientStart() throw(std::invalid_argument);
410  int serverStart(bool timeout = false, int udpTimeout = gTimeOutMultiThreadedServer)
411  throw(std::invalid_argument, std::runtime_error);
414  virtual int clientPingToServerStart() throw(std::invalid_argument);
415 
416 private:
417  //void bindReceiveSocket(QUdpSocket& UdpSocket, int bind_port,
418  // QHostAddress PeerHostAddress, int peer_port)
419  //throw(std::runtime_error);
420 
421 
422  jacktripModeT mJackTripMode;
423  dataProtocolT mDataProtocol;
424  DataProtocol::packetHeaderTypeT mPacketHeaderType;
425  JackTrip::audiointerfaceModeT mAudiointerfaceMode;
426 
427  int mNumChans;
428  int mBufferQueueLength;
429  uint32_t mSampleRate;
430  uint32_t mAudioBufferSize;
431  AudioInterface::audioBitResolutionT mAudioBitResolution;
432  QString mPeerAddress;
433 
435  DataProtocol* mDataProtocolSender;
437  DataProtocol* mDataProtocolReceiver;
438  AudioInterface* mAudioInterface;
439  PacketHeader* mPacketHeader;
440  underrunModeT mUnderRunMode;
441 
443  RingBuffer* mSendRingBuffer;
445  RingBuffer* mReceiveRingBuffer;
446 
447  int mReceiverBindPort;
448  int mSenderPeerPort;
449  int mSenderBindPort;
450  int mReceiverPeerPort;
451  int mTcpServerPort;
452 
453  unsigned int mRedundancy;
454  const char* mJackClientName;
455 
456  JackTrip::connectionModeT mConnectionMode;
457 
458  QVector<ProcessPlugin*> mProcessPlugins;
459 
460  volatile bool mReceivedConnection;
461  volatile bool mTcpConnectionError;
462  volatile bool mStopped;
463 };
464 
465 #endif
466 
467 
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:348
virtual void setClientName(const char *ClientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:211
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:297
Use UDP (User Datagram Protocol)
Definition: JackTrip.h:76
void setSampleRate(uint32_t sample_rate)
Definition: JackTrip.h:256
audioBitResolutionT
Enum for Audio Resolution in bits.
Definition: AudioInterface.h:61
bool receivedConnectionFromPeer()
Definition: JackTrip.h:272
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:329
Base Class that provides an interface with audio.
Definition: AudioInterface.h:56
virtual void setAudiointerfaceMode(JackTrip::audiointerfaceModeT audiointerface_mode)
Definition: JackTrip.h:250
virtual void setDataProtocolReceiver(DataProtocol *const DataProtocolReceiver)
Definition: JackTrip.h:232
virtual void readAudioBuffer(int8_t *ptrToReadSlot)
Definition: JackTrip.h:293
void closeAudio()
Close the JackAudioInteface and disconnects it from JACK.
Definition: JackTrip.cpp:176
virtual void checkIfPortIsBinded(int port)
Check if UDP port is already binded.
Definition: JackTrip.cpp:730
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:226
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:666
virtual uint16_t getPeerSequenceNumber(int8_t *full_packet) const =0
virtual uint8_t getPeerBitResolution(int8_t *full_packet) const =0
Loops on the last received packet.
Definition: JackTrip.h:91
virtual void appendProcessPlugin(ProcessPlugin *plugin)
Append a process plugin. Processes will be appended in order.
Definition: JackTrip.cpp:274
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:300
virtual void checkPeerSettings(int8_t *full_packet)
Definition: JackTrip.cpp:723
void signalUdpTimeOut()
Definition: moc_JackTrip.cpp:181
Normal Mode.
Definition: JackTrip.h:103
void printTextTest2()
Definition: JackTrip.h:354
virtual void writeAudioBuffer(const int8_t *ptrToSlot)
Definition: JackTrip.h:295
virtual ~JackTrip()
The class destructor.
Definition: JackTrip.cpp:111
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:261
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:380
Karplus Strong.
Definition: JackTrip.h:105
audiointerfaceModeT
Enum for Audio Interface Mode.
Definition: JackTrip.h:96
virtual uint8_t getPeerNumChannels(int8_t *full_packet) const =0
void signalNoUdpPacketsForSeconds()
Signal emitted when no UDP Packets have been received for a while.
Definition: moc_JackTrip.cpp:193
samplingRateT
Sampling Rates supported by JACK.
Definition: AudioInterface.h:69
virtual void setPeerAddress(const char *PeerHostOrIP)
Set the Peer Address for jacktripModeT::CLIENT mode only.
Definition: JackTrip.cpp:267
Jack Mode.
Definition: JackTrip.h:97
const int gDefaultNumInChannels
Definition: jacktrip_globals.h:52
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
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:323
bool tcpConnectionError()
Definition: JackTrip.h:275
void setAudioBufferSizeInSamples(uint32_t buf_size)
Definition: JackTrip.h:258
underrunModeT
Enum for the JackTrip Underrun Mode, when packets.
Definition: JackTrip.h:90
void increaseSequenceNumber()
Definition: JackTrip.h:318
virtual int getSenderBindPort() const
Definition: JackTrip.h:221
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
virtual uint64_t getPeerTimeStamp(int8_t *full_packet) const =0
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:173
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:309
uint16_t getPeerSequenceNumber(int8_t *full_packet) const
Definition: JackTrip.h:326
connectionModeT
Enum for Connection Mode (useful for connections to MultiClient Server)
Definition: JackTrip.h:102
16 bits (default)
Definition: AudioInterface.h:63
packetHeaderTypeT
Enum to define packet header types.
Definition: DataProtocol.h:100
virtual size_t getSizeInBytesPerChannel() const
Definition: AudioInterface.cpp:110
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:282
void parseAudioPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:712
Base class for header type. Subclass this struct to create a new header.
Definition: PacketHeader.h:117
virtual int clientPingToServerStart()
Stats for the Client to Ping Server.
Definition: JackTrip.cpp:475
virtual void setJackTripMode(jacktripModeT JacktripMode)
Sets (override) JackTrip Mode after construction.
Definition: JackTrip.h:167
virtual void setupAudio()
Set the AudioInteface object.
Definition: JackTrip.cpp:124
Run in Server Mode.
Definition: JackTrip.h:83
unsigned int getNumInputChannels() const
Definition: JackTrip.h:307
virtual int getHeaderSizeInBytes() const =0
Get the header size in bytes.
const int gDefaultPort
Default JackTrip Port.
Definition: jacktrip_globals.h:72
void putHeaderInPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:687
Interface for the process plugins to add to the JACK callback process in JackAudioInterface.
Definition: ProcessPlugin.h:52
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:404
virtual DataProtocol * getDataProtocolReceiver() const
Definition: JackTrip.h:228
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:357
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:237
virtual void setAllPorts(int port)
Sets port numbers for the local and peer machine. Receive port is port
Definition: JackTrip.h:191
virtual void waitThreads()
Wait for all the threads to finish. This functions is used when JackTrip is run as a thread...
Definition: JackTrip.cpp:380
virtual void setNumChannels(int num_chans)
Set the number of audio channels.
Definition: JackTrip.h:214
int getSequenceNumber() const
Definition: JackTrip.h:320
virtual void run()
Starting point for the thread.
Definition: JackTrip.h:137
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:247
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:332
virtual void setUnderRunMode(underrunModeT UnderRunMode)
Sets (override) Underrun Mode.
Definition: JackTrip.h:187
qint8 int8_t
Typedef for unsigned long long int. This type is guaranteed to be 64-bit.
Definition: jacktrip_types.h:78
Karplus Strong.
Definition: JackTrip.h:104
NOT IMPLEMENTED: Use SCTP (Stream Control Transmission Protocol)
Definition: JackTrip.h:78
virtual uint16_t getPeerBufferSize(int8_t *full_packet) const =0
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:701
RtAudio Mode.
Definition: JackTrip.h:98
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:230
Base class that defines the transmission protocol.
Definition: DataProtocol.h:92
void printTextTest()
Definition: JackTrip.h:353
virtual RingBuffer * getSendRingBuffer() const
Definition: JackTrip.h:235
const int gDefaultQueueLength
Definition: jacktrip_globals.h:58
virtual void setDataProtocoType(dataProtocolT DataProtocolType)
Sets (override) DataProtocol Type after construction.
Definition: JackTrip.h:170
void setConnectionMode(JackTrip::connectionModeT connection_mode)
Definition: JackTrip.h:263
Default application header.
Definition: DataProtocol.h:101
void slotPrintTest()
Definition: JackTrip.h:378
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:341
virtual int getReceiverPeerPort() const
Definition: JackTrip.h:223
const int gTimeOutMultiThreadedServer
Definition: jacktrip_globals.h:64
virtual void setBufferQueueLength(int BufferQueueLength)
Sets (override) Buffer Queue Length Mode after construction.
Definition: JackTrip.h:181
Provides a ring-buffer (or circular-buffer) that can be written to and read from asynchronously (bloc...
Definition: RingBuffer.h:57
virtual void sendNetworkPacket(const int8_t *ptrToSlot)
Definition: JackTrip.h:289
QString getPeerAddress() const
Definition: JackTrip.h:269
virtual void setPeerPorts(int port)
Sets port numbers for the peer (remote) machine.
Definition: JackTrip.h:205
virtual void receiveNetworkPacket(int8_t *ptrToReadSlot)
Definition: JackTrip.h:291
void signalTcpClientConnected()
Definition: moc_JackTrip.cpp:199
jacktripModeT
Enum for the JackTrip mode.
Definition: JackTrip.h:82
void clientStart()
Starts for the CLIENT mode.
Definition: JackTrip.cpp:388
virtual int getSenderPeerPort() const
Definition: JackTrip.h:219
const int gDefaultRedundancy
Definition: jacktrip_globals.h:63
virtual void setAudioInterface(AudioInterface *const AudioInterface)
Definition: JackTrip.h:252
virtual uint8_t getPeerConnectionMode(int8_t *full_packet) const =0
Set new buffers to zero if there are no new ones.
Definition: JackTrip.h:92
int getHeaderSizeInBytes() const
Definition: JackTrip.h:346
dataProtocolT
Enum for the data Protocol. At this time only UDP is implemented.
Definition: JackTrip.h:75
unsigned int getNumChannels() const
Definition: JackTrip.h:311
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:266
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:335
void readSlotNonBlocking(int8_t *ptrToReadSlot)
Same as readSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:175
Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send aud...
Definition: JackTrip.h:67
virtual void setSendRingBuffer(RingBuffer *const SendRingBuffer)
Definition: JackTrip.h:239
virtual void setAudioBitResolution(AudioInterface::audioBitResolutionT AudioBitResolution)
Sets (override) Audio Bit Resolution after construction.
Definition: JackTrip.h:184
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:344
void signalProcessesStopped()
Signal emitted when all the processes and threads are stopped.
Definition: moc_JackTrip.cpp:187
NOT IMPLEMENTED: Use TCP (Transmission Control Protocol)
Definition: JackTrip.h:77
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:305
virtual void slotStopProcesses()
Slot to stop all the processes and threads.
Definition: JackTrip.h:358
Server of the MultiThreaded JackTrip.
Definition: JackTrip.h:86
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:338
Client of the Ping Server Mode.
Definition: JackTrip.h:85
void insertSlotNonBlocking(const int8_t *ptrToSlot)
Same as insertSlotBlocking but non-blocking (asynchronous)
Definition: RingBuffer.cpp:149
virtual void setReceiveRingBuffer(RingBuffer *const ReceiveRingBuffer)
Definition: JackTrip.h:241
virtual void increaseSequenceNumber()
Increase sequence number for counter, a 16bit number.
Definition: PacketHeader.h:147
void slotUdpWatingTooLong(int wait_msec)
This slot emits in turn the signal signalNoUdpPacketsForSeconds when UDP has waited for more than 30 ...
Definition: JackTrip.h:370
virtual void setPacketHeader(PacketHeader *const PacketHeader)
Definition: JackTrip.h:244
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:188
Run in Client Mode.
Definition: JackTrip.h:84
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71
virtual uint8_t getPeerSamplingRate(int8_t *full_packet) const =0
void setupRingBuffers()
Set the RingBuffer objects.
Definition: JackTrip.cpp:226
void readSlotBlocking(int8_t *ptrToReadSlot)
Read a slot from the RingBuffer into ptrToReadSlot. This method will block until there&#39;s space in the...
Definition: RingBuffer.cpp:125
quint8 uint8_t
Typedef for unsigned char. This type is guaranteed to be 8-bit.
Definition: jacktrip_types.h:69
virtual void setBindPorts(int port)
Sets port numbers to bind in RECEIVER and SENDER sockets.
Definition: JackTrip.h:199
virtual int getReceiverBindPort() const
Definition: JackTrip.h:217
virtual samplingRateT getSampleRateType() const
Get the Jack Server Sampling Rate Enum Type samplingRateT.
Definition: AudioInterface.cpp:333
int getSampleRate() const
Definition: JackTrip.h:302
virtual uint16_t getSequenceNumber() const
Returns the current sequence number.
Definition: PacketHeader.h:151