Prosody software modules

Prosody uses modular firmware, with each module performing a function. This allows the exact mix of desired functionality to be provided. See Prosody Guide - how to download firmware for how to download firmware.

Basic functionality

Basic functionality
Module Purpose
datafeed Allows data to be passed between the downloadable modules. Always required for Prosody X.
hbuf2d Allows data to be passed to the Prosody DSP from an application running on the controlling host. This module is needed for nearly all types of play and data communications reception. On Prosody X it is linked into the kernel image and thus always loaded for you when the kernel is loaded.
hbuf2h Allows data to be passed to an application running on the controlling host. This module is needed for nearly all types of record and data communications transmission. On Prosody X it is linked into the kernel image and thus always loaded for you when the kernel is loaded.

Data communications

Data Communications modules
Module Purpose
asyrx Async receive. This is used to implement the async encoding in a receive protocol. It decodes a stream of digital data into a sequence of characters.
asytx Async transmit. This is used to implement the async encoding in a transmit protocol. It encodes a sequence of characters as a stream of digital data.
cwrx CW modem receiver. This decodes an incoming signal from a CW modem. However it does not convert it to digital data, so either fskpll or fskasyrx must be used, depending on how the data is encoded, to complete the decoding.
cwtx CW modem transmitter.
datarx Raw data receiver. This is used to run a protocols directly on a digital bearer channel (in contrast to speech and modems which encode the data as sounds).
datatx Raw data transmitter. This is used to run a protocols directly on a digital bearer channel (in contrast to speech and modems which encode the data as sounds).
fmprx Handles incoming T.38 frames.
fmptx Generates outgoing T.38 frames.
fskasyrx Async receiver for FSK modems. This decodes a sequence of characters from the data received by an FSK modem receiver. This is different from running async on other received data streams because there is no clock.
fskpll Reconstruct a clock from a received FSK data stream. If the output of an FSK modem receiver is to be interpreted as a synchronous encoding, then the data must be divided into bits using a clock recovered from the signal. This module does this, converting the received signal into a digital data signal suitable for decoding by HDLC or sync.
fskrx FSK modem receiver. This decodes an incoming signal from an FSK modem. However it does not convert it to digital data, so either fskpll or fskasyrx must be used, depending on how the data is encoded, to complete the decoding.
fsktx FSK modem transmitter.
hdlcrx HDLC receiver.
hdlctx HDLC transmitter.
i460rx i.460 multiplexing
i460tx i.460 multiplexing
ifprx ASN.1 decoding for T.38 fax transmission.
ifptx ASN.1 encoding for T.38 fax transmission.
prefsuf Prefix/suffix provider. Adds a prefix and a suffix to each transmission. The prefix and suffix can by any number if bits in length.
six2five A helper module used by the modem transmitters V.27ter, V.29, and V.17.
sprt Simple Packet Relay Transport
sse State Signaling Event (SSE) handler
syncrx Synchronous data receiver.
synctx Synchronous data transmitter.
ttyasyrx Receiver for ITU V.18 Annex A compatible TTYs. This decodes a sequence of characters from the data received.
v110 The protocol as defined in V.110.
v110rlpr The V.110 RLP receiver.
v110rlpt The V.110 RLP transmitter.
v17rx The modem receiver defined in V.17.
v17tx The modem transmitter defined in V.17. Also requires six2five
v27rx The modem receiver defined in V.27ter.
v27tx The modem transmitter defined in V.27ter. Also requires six2five
v29rx The modem receiver defined in V.29ter.
v29tx The modem transmitter defined in V.29. Also requires six2five
v32 The modem defined in V.32.
v34 The modem operating in half duplex mode (for fax use) defined in V.34.
v34fdx The modem operating in full duplex mode defined in V.34.

Data communications modules must be used in the combinations described in Prosody data communcations Protocols and Encodings.

Speech recording

This diagram shows the relationship between the modules needed for recording. Those shaded are optional. One of the rec... modules is always needed.

diagram of record modules

Speech and Video input modules
Module Purpose
inchan Generic companded input. This is required for any form of processing on incoming data which is a speech or analogue signal. The only input which does not need it is digital data communications. If this module has not been downloaded, no recording, conferencing or detection will work.
invid AVF recorder video (to host) input task.

Speech recording modules
Module Purpose
8_to_11 Converter to allow recording at 11kHz sampling rate instead of 8kHz. This is used in conjunction with a recording format to record at a speed useful for playing directly though typical PC soundcards.
gainbg Volume control, automatic gain control, and addition of a background signal. These can all be used with sm_replay_start(), sm_replay_adjust() or sm_record_start().
rec16b Record 16-bit linear data.
rec8b Record 8-bit linear data.
recA Record A-law companded data.
recAVF Record Audio/Visual streams.
recablk Record data encoded in ACUBLK format.
recima Record data encoded in IMA format.
recms8b Record 8-bit linear data with offset of 128 (Microsoft .WAV 8-bit).
recmu Record mu-law companded data.
recoki Record data encoded in OKI format.
sixkin Converter to allow recording at 6kHz instead of 8kHz. This is used in conjunction with a recording format to reduce the size of the recorded data by 25%.
speexrp Play and record data in Speex format.
timerx Timer to provide a limit on recording duration.

Note: all speech recording modules require inchan as well.

Speech playing

This diagram shows the relationship between the modules needed for playing. Those shaded are optional (and you would never have both fast and slow in use at the same time). One of the play... modules is always needed.

diagram of play modules

Speech and Video output modules
Module Purpose
outchan Generic companded output. This is required to produce nearly any form of speech or analogue output signal. The only outputs which do not need it are tone generation and digital data communications. If this module has not been downloaded, no replay or conferencing will work.
outvid AVF player video (from host) output task.
tonegen Tone generation. This is used by sm_play_tone(), sm_play_cptone(), and sm_play_digits().

Speech playing modules
Module Purpose
11_to_8 Converter to allow playing of signals which have a sampling rate of 11kHz (at the 8kHz rate used by telephony timeslots). This is used in conjunction with a replay to play data that was recorded at a sampling rate often used when recording from a PC soundcard.
fast Replay at speeds over 100%. The speed is selected by sm_replay_start() or sm_replay_adjust(). If this module has not been downloaded, the replay will play at normal speed.
gainbg Volume control, automatic gain control, and addition of a background signal. These can all be used with sm_replay_start(), sm_replay_adjust() or sm_record_start().
play16b Play 16-bit linear data.
play8b Play 8-bit linear data.
playA Play A-law companded data.
playAVF Play Audio/Visual streams.
playablk Play data encoded in ACUBLK format.
playima Play data encoded in IMA format.
playms8b Play 8-bit linear data with offset of 128 (Microsoft .WAV 8-bit).
playmu Play mu-law companded data.
playoki Play data encoded in OKI format.
sixkout Converter to allow playing of 6kHz signals at 8kHz. This is used in conjunction with a replay to play data which was recorded as a 6kHz variant of a format normally used at 8kHz. Such a variant is used to reduce the size of the recorded data by 25%.
slow Replay at speeds below 100%. The speed is selected by sm_replay_start() or sm_replay_adjust(). If this module has not been downloaded, the replay will play at normal speed.
speexrp Play and record data in Speex format.

Note: all speech playing modules require outchan as well.

Detection

Detection modules
Module Purpose
ansam ANS and AMSam detection Used by sm_ans_listen_for() to detect ANS and AMSam tones.
ansdet Answering machine detection. Used by sm_catsig_listen_for() to distinguish between a live speaker and an answering machine.
beepdet Beep detection. Used by sm_beep_listen_for() to detect beeps.
grunt Grunt detection and silence elimination. Used by sm_record_start() for silence elimination in recordings and by sm_listen_for(). If this module has not been downloaded, no grunt will be detected and recordings will not have silences removed.
td Tone detection. Used by sm_listen_for() for tone detection and by sm_record_start() for tone suppression in recordings. If this module has not been downloaded, no tones will be detected and tones will remain in recordings.

Conferencing

Conferencing modules
Module Purpose
conf Conferencing. This is required if you want to start a standard conference (which is done using sm_conf_prim_start()). If this module has not been downloaded, any attempt to start such a conference will produce an error.

Echo cancellation and signal paths

Echo cancellation and signal path modules
Module Purpose
delay Signal path delay processing.
echocan Echo cancellation. If this module has not been downloaded, an attempt to use echo cancellation will use an unmodified signal.
emph Signal path emphasis processing.
passthru A module which permits an incoming signal to be directed to an output. This is used by echo cancellation to save the processed signal.
pitchshift Used in signal paths to raise or lower pitch of speech signal.
resample Used in signal paths to resample wideband to narrow band and vica-versa.

IP codecs

IP codecs
Module Purpose
amr-nb AMR (Adaptive Multi Rate) narrowband codec for audio only.
amr-nb-all AMR (Adaptive Multi Rate) narrowband codecs both for AVF player/recorder and for audio.
amr-nb-prs AMR (Adaptive Multi Rate) narrowband codec for AVF player/recorder.
amr-wb G.722.2 (AMR-WB) wideband codec.
evrc EVRC (Enhanced Variable Rate CODEC) codec.
g722 G.722 Codec
g722-1 G.722-1 Codec
g7231a G.723.1 codec.
g726 G.726 codec.
g728 G.728 codec.
g729ab G.729A codec.
g729i G.729i codec.
gsm-efr GSM-EFR (Enhanced Full Rate) codec.
gsm-fr GSM-FR (Full Rate) codec.
iSAC internet Speech Audio Codec
ilbc iLBC (Internet Low Bit Rate Codec) codec.
melpe Mixed-Excitation Linear Predictive enhanced codec.
speex-vmp RTP Codec for Speex
tetra RTP Tetra Codec.

IP general functionality

IP general functionslity
Module Purpose
dtlsrx Passes incoming DTLS packets to the host application.
dtlstx Sends the DTLS packets supplied by the host application.
fromudp UDP collector. Allows data to be collected from a UDP port instead of being supplied by the host application.
rtcp RTCP.
securertp Secure RTP.
toudp UDP dispatcher. Allows data to be sent to a UDP port instead of being given to the host application.
vmprx RTP receiver.
vmptx RTP transmitter.
vtdet Replacement of in-band tones with RFC 2833 tones.

Test and debug

Test and debug modules
Module Purpose
cpumon Cpu usage monitor.
heapmon Heap usage monitor.