38 #ifndef __JACKTRIP_H__ 39 #define __JACKTRIP_H__ 149 virtual void startProcess()
throw(std::invalid_argument);
168 { mJackTripMode = JacktripMode; }
171 { mDataProtocol = DataProtocolType; }
175 mPacketHeaderType = PacketHeaderType;
176 delete mPacketHeader;
177 mPacketHeader = NULL;
182 { mBufferQueueLength = BufferQueueLength; }
185 { mAudioBitResolution = AudioBitResolution; }
188 { mUnderRunMode = UnderRunMode; }
193 mReceiverBindPort = port;
194 mSenderPeerPort = port;
195 mSenderBindPort = port;
196 mReceiverPeerPort = port;
201 mReceiverBindPort = port;
202 mSenderBindPort = port;
207 mSenderPeerPort = port;
208 mReceiverPeerPort = port;
212 { mJackClientName = ClientName; }
215 { mNumChans = num_chans; }
218 {
return mReceiverBindPort; }
220 {
return mSenderPeerPort; }
222 {
return mSenderBindPort; }
224 {
return mReceiverPeerPort; }
227 {
return mDataProtocolSender; }
229 {
return mDataProtocolReceiver; }
231 { mDataProtocolSender = DataProtocolSender; }
233 { mDataProtocolReceiver = DataProtocolReceiver; }
236 {
return mSendRingBuffer; }
238 {
return mReceiveRingBuffer; }
240 { mSendRingBuffer = SendRingBuffer; }
242 { mReceiveRingBuffer = ReceiveRingBuffer; }
245 { mPacketHeader = PacketHeader; }
251 { mAudiointerfaceMode = audiointerface_mode; }
253 { mAudioInterface = AudioInterface; }
257 { mSampleRate = sample_rate; }
259 { mAudioBufferSize = buf_size; }
262 {
return mConnectionMode; }
264 { mConnectionMode = connection_mode; }
267 {
return mJackTripMode; }
270 {
return mPeerAddress; }
273 {
return mReceivedConnection; }
276 {
return mTcpConnectionError; }
298 {
return mAudioBufferSize; }
303 {
return mSampleRate; }
306 {
return mAudioBitResolution*8; }
308 {
return mNumChans; }
310 {
return mNumChans; }
360 std::cout <<
"Stopping JackTrip..." << std::endl;
372 int wait_time = 30000;
373 if ( !(wait_msec%wait_time) ) {
374 std::cerr <<
"UDP WAITED MORE THAN 30 seconds." << std::endl;
379 { std::cout <<
"=== TESTING ===" << std::endl; }
381 { mReceivedConnection =
true; }
411 throw(std::invalid_argument, std::runtime_error);
428 int mBufferQueueLength;
432 QString mPeerAddress;
447 int mReceiverBindPort;
450 int mReceiverPeerPort;
453 unsigned int mRedundancy;
454 const char* mJackClientName;
458 QVector<ProcessPlugin*> mProcessPlugins;
460 volatile bool mReceivedConnection;
461 volatile bool mTcpConnectionError;
462 volatile bool mStopped;
virtual int getSenderPeerPort() const
Definition: JackTrip.h:219
virtual void setClientName(const char *ClientName)
Set Client Name to something different that the default (JackTrip)
Definition: JackTrip.h:211
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
uint8_t getPeerConnectionMode(int8_t *full_packet) const
Definition: JackTrip.h:341
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
uint32_t getBufferSizeInSamples() const
Definition: JackTrip.h:297
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
uint8_t getPeerNumChannels(int8_t *full_packet) const
Definition: JackTrip.h:338
virtual void createHeader(const DataProtocol::packetHeaderTypeT headertype)
Definition: JackTrip.cpp:666
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
virtual void checkPeerSettings(int8_t *full_packet)
Definition: JackTrip.cpp:723
uint8_t getPeerBitResolution(int8_t *full_packet) const
Definition: JackTrip.h:335
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
virtual RingBuffer * getReceiveRingBuffer() const
Definition: JackTrip.h:237
void slotReceivedConnectionFromPeer()
Definition: JackTrip.h:380
Karplus Strong.
Definition: JackTrip.h:105
audiointerfaceModeT
Enum for Audio Interface Mode.
Definition: JackTrip.h:96
unsigned int getNumInputChannels() const
Definition: JackTrip.h:307
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
virtual int getTotalAudioPacketSizeInBytes() const
Definition: JackTrip.h:348
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
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
quint32 uint32_t
Typedef for unsigned int. This type is guaranteed to be 32-bit.
Definition: jacktrip_types.h:73
int getSequenceNumber() const
Definition: JackTrip.h:320
virtual void setPacketHeaderType(DataProtocol::packetHeaderTypeT PacketHeaderType)
Sets the Packet header type.
Definition: JackTrip.h:173
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
uint64_t getPeerTimeStamp(int8_t *full_packet) const
Definition: JackTrip.h:323
virtual void startProcess()
Start the processing threads.
Definition: JackTrip.cpp:282
unsigned int getNumOutputChannels() const
Definition: JackTrip.h:309
void parseAudioPacket(int8_t *full_packet, int8_t *audio_packet)
Definition: JackTrip.cpp:712
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
uint8_t getPeerSamplingRate(int8_t *full_packet) const
Definition: JackTrip.h:332
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
uint8_t getAudioBitResolution() const
Definition: JackTrip.h:305
int serverStart(bool timeout=false, int udpTimeout=gTimeOutMultiThreadedServer)
Starts for the SERVER mode.
Definition: JackTrip.cpp:404
int getHeaderSizeInBytes() const
Definition: JackTrip.h:346
virtual void stop()
Stop the processing threads.
Definition: JackTrip.cpp:357
virtual samplingRateT getSampleRateType() const
Get the Jack Server Sampling Rate Enum Type samplingRateT.
Definition: AudioInterface.cpp:333
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
virtual void run()
Starting point for the thread.
Definition: JackTrip.h:137
virtual int getRingBuffersSlotSize()
Definition: JackTrip.h:247
unsigned int getNumChannels() const
Definition: JackTrip.h:311
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
AudioInterface::samplingRateT getSampleRateType() const
Definition: JackTrip.h:300
NOT IMPLEMENTED: Use SCTP (Stream Control Transmission Protocol)
Definition: JackTrip.h:78
uint16_t getPeerSequenceNumber(int8_t *full_packet) const
Definition: JackTrip.h:326
virtual int getPacketSizeInBytes()
Definition: JackTrip.cpp:701
RtAudio Mode.
Definition: JackTrip.h:98
virtual void setDataProtocolSender(DataProtocol *const DataProtocolSender)
Definition: JackTrip.h:230
JackTrip::jacktripModeT getJackTripMode() const
Definition: JackTrip.h:266
virtual RingBuffer * getSendRingBuffer() const
Definition: JackTrip.h:235
Base class that defines the transmission protocol.
Definition: DataProtocol.h:92
void printTextTest()
Definition: JackTrip.h:353
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
int getSampleRate() const
Definition: JackTrip.h:302
size_t getSizeInBytesPerChannel() const
Definition: JackTrip.h:344
virtual int getReceiverBindPort() const
Definition: JackTrip.h:217
Default application header.
Definition: DataProtocol.h:101
void slotPrintTest()
Definition: JackTrip.h:378
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
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 getSenderBindPort() const
Definition: JackTrip.h:221
const int gDefaultRedundancy
Definition: jacktrip_globals.h:63
virtual void setAudioInterface(AudioInterface *const AudioInterface)
Definition: JackTrip.h:252
Set new buffers to zero if there are no new ones.
Definition: JackTrip.h:92
virtual int getReceiverPeerPort() const
Definition: JackTrip.h:223
dataProtocolT
Enum for the data Protocol. At this time only UDP is implemented.
Definition: JackTrip.h:75
virtual DataProtocol * getDataProtocolReceiver() const
Definition: JackTrip.h:228
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
JackTrip::connectionModeT getConnectionMode() const
Definition: JackTrip.h:261
void signalProcessesStopped()
Signal emitted when all the processes and threads are stopped.
Definition: moc_JackTrip.cpp:187
virtual size_t getSizeInBytesPerChannel() const
Definition: AudioInterface.cpp:110
NOT IMPLEMENTED: Use TCP (Transmission Control Protocol)
Definition: JackTrip.h:77
virtual void slotStopProcesses()
Slot to stop all the processes and threads.
Definition: JackTrip.h:358
Server of the MultiThreaded JackTrip.
Definition: JackTrip.h:86
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
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
uint16_t getPeerBufferSize(int8_t *full_packet) const
Definition: JackTrip.h:329
virtual void setupDataProtocol()
Set the DataProtocol objects.
Definition: JackTrip.cpp:188
Run in Client Mode.
Definition: JackTrip.h:84
virtual DataProtocol * getDataProtocolSender() const
Definition: JackTrip.h:226
quint16 uint16_t
Typedef for unsigned short. This type is guaranteed to be 16-bit.
Definition: jacktrip_types.h:71
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'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
QString getPeerAddress() const
Definition: JackTrip.h:269