JackTrip Class Reference

Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send audio streams in the network. More...

#include <JackTrip.h>

Collaboration diagram for JackTrip:

Collaboration graph
[legend]

List of all members.

Public Types

enum  dataProtocolT { UDP, TCP, SCTP }
 Enum for the data Protocol. At this time only UDP is implemented. More...
enum  jacktripModeT { SERVER, CLIENT, CLIENTTOPINGSERVER }
 Enum for the JackTrip mode. More...
enum  underrunModeT { WAVETABLE, ZEROS }
 Enum for the JackTrip Underrun Mode, when packets. More...
enum  audiointerfaceModeT { JACK, RTAUDIO }
 Enum for Audio Interface Mode. More...

Public Slots

void slotStopProcesses ()
 Slot to stop all the processes and threads.
void slotUdpWatingTooLong (int wait_msec)
 This slot emits in turn the signal signalNoUdpPacketsForSeconds when UDP is waited for more than 30 seconds.

Signals

void signalProcessesStopped ()
 Signal emitted when all the processes and threads are stopped
void signalNoUdpPacketsForSeconds ()
 Signal emitted when no UDP Packets have been received for a while

Public Member Functions

 JackTrip (jacktripModeT JacktripMode=CLIENT, dataProtocolT DataProtocolType=UDP, int NumChans=2, int BufferQueueLength=8, unsigned int redundancy=1, 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.
virtual ~JackTrip ()
 The class destructor.
virtual void setPeerAddress (const char *PeerHostOrIP)
 Set the Peer Address for jacktripModeT::CLIENT mode only.
virtual void appendProcessPlugin (ProcessPlugin *plugin)
 Append a process plugin. Processes will be appended in order.
virtual void start ()
 Start the processing threads.
virtual void stop ()
 Stop the processing threads.
virtual void wait ()
 Wait for all the threads to finish. This functions is used when JackTrip is run as a thread.
virtual void checkIfPortIsBinded (int port)
 Check if UDP port is already binded.
void printTextTest ()
void printTextTest2 ()
virtual void setupJackAudio ()
 Set the JackAudioInteface object.
void closeJackAudio ()
 Close the JackAudioInteface and disconnects it from JACK.
virtual void setupDataProtocol ()
 Set the DataProtocol objects.
void setupRingBuffers ()
 Set the RingBuffer objects.
void clientStart ()
 Starts for the CLIENT mode.
void serverStart ()
 Starts for the SERVER mode.
void clientPingToServerStart ()
 Stats for the Client to Ping Server.
Getters and Setters Methods to change parameters after construction
virtual void setJackTripMode (jacktripModeT JacktripMode)
 Sets (override) JackTrip Mode after construction.
virtual void setDataProtocoType (dataProtocolT DataProtocolType)
 Sets (override) DataProtocol Type after construction.
virtual void setPacketHeaderType (DataProtocol::packetHeaderTypeT PacketHeaderType)
 Sets the Packet header type.
virtual void setBufferQueueLength (int BufferQueueLength)
 Sets (override) Number of Channels after construction.
virtual void setAudioBitResolution (AudioInterface::audioBitResolutionT AudioBitResolution)
 Sets (override) Audio Bit Resolution after construction.
virtual void setUnderRunMode (underrunModeT UnderRunMode)
 Sets (override) Underrun Mode.
virtual void setAllPorts (int port)
 Sets port numbers for the local and peer machine. Receive port is port.
virtual void setBindPorts (int port)
 Sets port numbers to bind in RECEIVER and SENDER sockets.
virtual void setPeerPorts (int port)
 Sets port numbers for the peer (remote) machine.
virtual void setClientName (const char *ClientName)
 Set Client Name to something different that the default (JackTrip).
virtual void setNumChannels (int num_chans)
 Set the number of audio channels.
virtual int getReceiverBindPort () const
virtual int getSenderPeerPort () const
virtual int getSenderBindPort () const
virtual int getReceiverPeerPort () const
virtual DataProtocolgetDataProtocolSender () const
virtual DataProtocolgetDataProtocolReceiver () const
virtual void setDataProtocolSender (DataProtocol *const DataProtocolSender)
virtual void setDataProtocolReceiver (DataProtocol *const DataProtocolReceiver)
virtual RingBuffergetSendRingBuffer () const
virtual RingBuffergetReceiveRingBuffer () const
virtual void setSendRingBuffer (RingBuffer *const SendRingBuffer)
virtual void setReceiveRingBuffer (RingBuffer *const ReceiveRingBuffer)
virtual void setPacketHeader (PacketHeader *const PacketHeader)
virtual int getRingBuffersSlotSize ()
virtual void setAudiointerfaceMode (JackTrip::audiointerfaceModeT audiointerface_mode)
Mediator Functions
virtual void createHeader (const DataProtocol::packetHeaderTypeT headertype)
void putHeaderInPacket (int8_t *full_packet, int8_t *audio_packet)
virtual int getPacketSizeInBytes ()
void parseAudioPacket (int8_t *full_packet, int8_t *audio_packet)
virtual void sendNetworkPacket (const int8_t *ptrToSlot)
virtual void receiveNetworkPacket (int8_t *ptrToReadSlot)
virtual void readAudioBuffer (int8_t *ptrToReadSlot)
virtual void writeAudioBuffer (const int8_t *ptrToSlot)
uint32_t getBufferSizeInSamples () const
RtAudioInterface::samplingRateT getSampleRateType () const
int getSampleRate () const
uint8_t getAudioBitResolution () const
int getNumInputChannels () const
int getNumOutputChannels () const
virtual void checkPeerSettings (int8_t *full_packet)
void increaseSequenceNumber ()
int getSequenceNumber () const
int getPeerSequenceNumber (int8_t *full_packet) const
uint64_t getPeerTimeStamp (int8_t *full_packet) const
size_t getSizeInBytesPerChannel () const
int getHeaderSizeInBytes () const
virtual int getTotalAudioPacketSizeInBytes () const

Private Attributes

jacktripModeT mJackTripMode
 JackTrip::jacktripModeT.
dataProtocolT mDataProtocol
 Data Protocol Tipe.
DataProtocol::packetHeaderTypeT mPacketHeaderType
 Packet Header Type.
JackTrip::audiointerfaceModeT mAudiointerfaceMode
int mNumChans
 Number of Channels (inputs = outputs).
int mBufferQueueLength
 Audio Buffer from network queue length.
uint32_t mSampleRate
 Sample Rate.
AudioInterface::audioBitResolutionT mAudioBitResolution
 Audio Bit Resolutions.
QString mPeerAddress
 Peer Address to use in jacktripModeT::CLIENT Mode.
DataProtocolmDataProtocolSender
 Pointer to Abstract Type DataProtocol that sends packets.
DataProtocolmDataProtocolReceiver
 Pointer to Abstract Type DataProtocol that receives packets.
AudioInterfacemAudioInterface
 Interface to Jack Client.
PacketHeadermPacketHeader
 Pointer to Packet Header.
underrunModeT mUnderRunMode
 underrunModeT Mode
RingBuffermSendRingBuffer
 Pointer for the Send RingBuffer.
RingBuffermReceiveRingBuffer
 Pointer for the Receive RingBuffer.
int mReceiverBindPort
 Incoming (receiving) port for local machine.
int mSenderPeerPort
 Incoming (receiving) port for peer machine.
int mSenderBindPort
 Outgoing (sending) port for local machine.
int mReceiverPeerPort
 Outgoing (sending) port for peer machine.
unsigned int mRedundancy
 Redundancy factor in network data.
const char * mJackClientName
 JackAudio Client Name.
QVector< ProcessPlugin * > mProcessPlugins
 Vector of ProcesPlugins.


Detailed Description

Main class to creates a SERVER (to listen) or a CLIENT (to connect to a listening server) to send audio streams in the network.

All audio and network settings can be set in this class. This class also acts as a Mediator between all the other class. Classes that uses JackTrip methods need to register with it.


Member Enumeration Documentation

Enum for the data Protocol. At this time only UDP is implemented.

Enumerator:
UDP  Use UDP (User Datagram Protocol).
TCP  NOT IMPLEMENTED: Use TCP (Transmission Control Protocol)
SCTP  NOT IMPLEMENTED: Use SCTP (Stream Control Transmission Protocol)

Enum for the JackTrip mode.

Enumerator:
SERVER  Run in Server Mode.
CLIENT  Run in Client Mode.
CLIENTTOPINGSERVER  Client of the Ping Server Mode.

Enum for the JackTrip Underrun Mode, when packets.

Enumerator:
WAVETABLE  Loops on the last received packet.
ZEROS  Set new buffers to zero if there are no new ones.

Enum for Audio Interface Mode.

Enumerator:
JACK  Jack Mode.
RTAUDIO  RtAudio Mode.


Constructor & Destructor Documentation

JackTrip::JackTrip ( jacktripModeT  JacktripMode = CLIENT,
dataProtocolT  DataProtocolType = UDP,
int  NumChans = 2,
int  BufferQueueLength = 8,
unsigned int  redundancy = 1,
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.

Parameters:
JacktripMode JackTrip::CLIENT or JackTrip::SERVER
DataProtocolType JackTrip::dataProtocolT
NumChans Number of Audio Channels (same for inputs and outputs)
BufferQueueLength Audio Buffer for receiving packets
AudioBitResolution Audio Sample Resolutions in bits
redundancy redundancy factor for network data

JackTrip::~JackTrip (  )  [virtual]

The class destructor.


Member Function Documentation

void JackTrip::setPeerAddress ( const char *  PeerHostOrIP  )  [virtual]

Set the Peer Address for jacktripModeT::CLIENT mode only.

void JackTrip::appendProcessPlugin ( ProcessPlugin plugin  )  [virtual]

Append a process plugin. Processes will be appended in order.

Parameters:
plugin Pointer to ProcessPlugin Class

void JackTrip::start (  )  [virtual]

Start the processing threads.

void JackTrip::stop (  )  [virtual]

Stop the processing threads.

void JackTrip::wait (  )  [virtual]

Wait for all the threads to finish. This functions is used when JackTrip is run as a thread.

void JackTrip::checkIfPortIsBinded ( int  port  )  [virtual]

Check if UDP port is already binded.

Parameters:
port Port number

virtual void JackTrip::setJackTripMode ( jacktripModeT  JacktripMode  )  [inline, virtual]

Sets (override) JackTrip Mode after construction.

virtual void JackTrip::setDataProtocoType ( dataProtocolT  DataProtocolType  )  [inline, virtual]

Sets (override) DataProtocol Type after construction.

virtual void JackTrip::setPacketHeaderType ( DataProtocol::packetHeaderTypeT  PacketHeaderType  )  [inline, virtual]

Sets the Packet header type.

virtual void JackTrip::setBufferQueueLength ( int  BufferQueueLength  )  [inline, virtual]

Sets (override) Number of Channels after construction.

Todo:
implement this, not working right now because channels cannot be changed after construction
Sets (override) Buffer Queue Length Mode after construction

virtual void JackTrip::setAudioBitResolution ( AudioInterface::audioBitResolutionT  AudioBitResolution  )  [inline, virtual]

Sets (override) Audio Bit Resolution after construction.

virtual void JackTrip::setUnderRunMode ( underrunModeT  UnderRunMode  )  [inline, virtual]

Sets (override) Underrun Mode.

virtual void JackTrip::setAllPorts ( int  port  )  [inline, virtual]

Sets port numbers for the local and peer machine. Receive port is port.

virtual void JackTrip::setBindPorts ( int  port  )  [inline, virtual]

Sets port numbers to bind in RECEIVER and SENDER sockets.

virtual void JackTrip::setPeerPorts ( int  port  )  [inline, virtual]

Sets port numbers for the peer (remote) machine.

virtual void JackTrip::setClientName ( const char *  ClientName  )  [inline, virtual]

Set Client Name to something different that the default (JackTrip).

virtual void JackTrip::setNumChannels ( int  num_chans  )  [inline, virtual]

Set the number of audio channels.

virtual int JackTrip::getReceiverBindPort (  )  const [inline, virtual]

virtual int JackTrip::getSenderPeerPort (  )  const [inline, virtual]

virtual int JackTrip::getSenderBindPort (  )  const [inline, virtual]

virtual int JackTrip::getReceiverPeerPort (  )  const [inline, virtual]

virtual DataProtocol* JackTrip::getDataProtocolSender (  )  const [inline, virtual]

virtual DataProtocol* JackTrip::getDataProtocolReceiver (  )  const [inline, virtual]

virtual void JackTrip::setDataProtocolSender ( DataProtocol *const   DataProtocolSender  )  [inline, virtual]

virtual void JackTrip::setDataProtocolReceiver ( DataProtocol *const   DataProtocolReceiver  )  [inline, virtual]

virtual RingBuffer* JackTrip::getSendRingBuffer (  )  const [inline, virtual]

virtual RingBuffer* JackTrip::getReceiveRingBuffer (  )  const [inline, virtual]

virtual void JackTrip::setSendRingBuffer ( RingBuffer *const   SendRingBuffer  )  [inline, virtual]

virtual void JackTrip::setReceiveRingBuffer ( RingBuffer *const   ReceiveRingBuffer  )  [inline, virtual]

virtual void JackTrip::setPacketHeader ( PacketHeader *const   PacketHeader  )  [inline, virtual]

virtual int JackTrip::getRingBuffersSlotSize (  )  [inline, virtual]

virtual void JackTrip::setAudiointerfaceMode ( JackTrip::audiointerfaceModeT  audiointerface_mode  )  [inline, virtual]

void JackTrip::createHeader ( const DataProtocol::packetHeaderTypeT  headertype  )  [virtual]

Todo:
Document all these functions

void JackTrip::putHeaderInPacket ( int8_t full_packet,
int8_t audio_packet 
)

int JackTrip::getPacketSizeInBytes (  )  [virtual]

void JackTrip::parseAudioPacket ( int8_t full_packet,
int8_t audio_packet 
)

virtual void JackTrip::sendNetworkPacket ( const int8_t ptrToSlot  )  [inline, virtual]

virtual void JackTrip::receiveNetworkPacket ( int8_t ptrToReadSlot  )  [inline, virtual]

virtual void JackTrip::readAudioBuffer ( int8_t ptrToReadSlot  )  [inline, virtual]

virtual void JackTrip::writeAudioBuffer ( const int8_t ptrToSlot  )  [inline, virtual]

uint32_t JackTrip::getBufferSizeInSamples (  )  const [inline]

RtAudioInterface::samplingRateT JackTrip::getSampleRateType (  )  const [inline]

int JackTrip::getSampleRate (  )  const [inline]

uint8_t JackTrip::getAudioBitResolution (  )  const [inline]

int JackTrip::getNumInputChannels (  )  const [inline]

int JackTrip::getNumOutputChannels (  )  const [inline]

void JackTrip::checkPeerSettings ( int8_t full_packet  )  [virtual]

void JackTrip::increaseSequenceNumber (  )  [inline]

int JackTrip::getSequenceNumber (  )  const [inline]

int JackTrip::getPeerSequenceNumber ( int8_t full_packet  )  const [inline]

uint64_t JackTrip::getPeerTimeStamp ( int8_t full_packet  )  const [inline]

size_t JackTrip::getSizeInBytesPerChannel (  )  const [inline]

int JackTrip::getHeaderSizeInBytes (  )  const [inline]

virtual int JackTrip::getTotalAudioPacketSizeInBytes (  )  const [inline, virtual]

void JackTrip::printTextTest (  )  [inline]

void JackTrip::printTextTest2 (  )  [inline]

void JackTrip::slotStopProcesses (  )  [inline, slot]

Slot to stop all the processes and threads.

void JackTrip::slotUdpWatingTooLong ( int  wait_msec  )  [inline, slot]

This slot emits in turn the signal signalNoUdpPacketsForSeconds when UDP is waited for more than 30 seconds.

It is used to remove the thread from the server.

void JackTrip::signalProcessesStopped (  )  [signal]

Signal emitted when all the processes and threads are stopped

void JackTrip::signalNoUdpPacketsForSeconds (  )  [signal]

Signal emitted when no UDP Packets have been received for a while

void JackTrip::setupJackAudio (  )  [virtual]

Set the JackAudioInteface object.

void JackTrip::closeJackAudio (  ) 

Close the JackAudioInteface and disconnects it from JACK.

void JackTrip::setupDataProtocol (  )  [virtual]

Set the DataProtocol objects.

void JackTrip::setupRingBuffers (  ) 

Set the RingBuffer objects.

Todo:
Make all this operations cleaner

void JackTrip::clientStart (  ) 

Starts for the CLIENT mode.

void JackTrip::serverStart (  ) 

Starts for the SERVER mode.

void JackTrip::clientPingToServerStart (  ) 

Stats for the Client to Ping Server.


Member Data Documentation

Data Protocol Tipe.

Packet Header Type.

int JackTrip::mNumChans [private]

Number of Channels (inputs = outputs).

Audio Buffer from network queue length.

Sample Rate.

Audio Bit Resolutions.

QString JackTrip::mPeerAddress [private]

Peer Address to use in jacktripModeT::CLIENT Mode.

Pointer to Abstract Type DataProtocol that sends packets.

Pointer to Abstract Type DataProtocol that receives packets.

Interface to Jack Client.

Pointer to Packet Header.

underrunModeT Mode

Pointer for the Send RingBuffer.

Pointer for the Receive RingBuffer.

Incoming (receiving) port for local machine.

Incoming (receiving) port for peer machine.

Outgoing (sending) port for local machine.

Outgoing (sending) port for peer machine.

unsigned int JackTrip::mRedundancy [private]

Redundancy factor in network data.

const char* JackTrip::mJackClientName [private]

JackAudio Client Name.

Vector of ProcesPlugins.


The documentation for this class was generated from the following files: