# DSP/task processor files and processing power

The binary code for running functions is contained in DSP files. One or more functions are contained in each file. NMS boards differ in the total number of DSPs they contain and the speed of their DSPs on the board.

DSP speed is measured in millions of instructions per second (MIPS). Each function that runs on a DSP consumes MIPS. If the total MIPS consumption for all the requested functions on all the ports of a given board exceeds the total MIPS available for that board, an error event occurs. If MIPS-intensive functions are required, you can reduce the total number of ports on a board, which makes more MIPS per port available.

The following table shows the MIPS usage for all the available functions shipped with Natural Access:

DSP file | Function | MIPS | Related API function | Related arguments
--- | --- | --- | --- | ---
adsir.m54 | ADSI receiver | 3.13 | adiStartReceivingFSK |
adsix.m54 | ADSI transmitter | 1.13 | adiStartSendingFSK |
callp.m54 | Call progress | 1.06 | adiStartCallProgress |
dtmf.m54 | DTMF only | 1.94 | adiStartDTMFDetector |
dtmf.m54 | Post- and pre-tone silence | 0.69 | adiStartEnergyDetector |
dtmf.m54 | DTMF, post- and pre-tone silence | 1.94 | adiStartProtocol |
gsm_ms.m54 | MS-GSM Play 8 kHz | 2.13 | adiStartPlaying | encoding = ADI_ENCODE_GSM
gsm_ms.m54 | MS-GSM Record 8 kHz | 4.44 | adiStartRecording | encoding = ADI_ENCODE_GSM
gsm_mspl.m54 | MS-GSM Play limit 8 kHz | 2.82 | adiStartPlaying | encoding = ADI_ENCODE_GSM
gsm_mspl.m54 | MS-GSM Record 8 kHz | 4.44 | adiStartRecording | encoding = ADI_ENCODE_GSM
ima.m54 | IMA/DVI ADPCM Play 6 kHz | 2.06 | adiStartPlaying | encoding = ADI_ENCODE_IMA_24
ima.m54 | IMA/DVI ADPCM Play 8 kHz | 1.81 | adiStartPlaying | encoding = ADI_ENCODE_IMA_32
ima.m54 | IMA/DVI ADPCM Record 6 kHz | 2.19 | adiStartRecording | encoding = ADI_ENCODE_IMA_24
ima.m54 | IMA/DVI ADPCM Record 8 kHz | 2.00 | adiStartRecording | encoding = ADI_ENCODE_IMA_32
mf.m54 | Forward detect, backward compelling | 2.56 | adiStartMFDetector |
mf.m54 | Backward detect, forward compelling | 2.56 | adiStartMFDetector |
mf.m54 | MF detection | 1.81 | adiStartMFDetector |
mf.m54 | MF forward detection | 1.81 | adiStartMFDetector |
mf.m54 | MF backward detection | 1.81 | adiStartMFDetector |
oki.m54 | OKI Play 6 kHz | 2.19 | adiStartPlaying | encoding = ADI_ENCODE_OKI_24, maxspeed = 100
oki.m54 | OKI Play 8 kHz | 2.13 | adiStartPlaying | encoding = ADI_ENCODE_OKI_32, maxspeed = 100
oki.m54 | OKI Play 6 kHz 1.5X | 4.19 | adiStartPlaying | encoding = ADI_ENCODE_OKI_24, maxspeed = 150
oki.m54 | OKI Play 8 kHz 1.5X | 3.63 | adiStartPlaying | encoding = ADI_ENCODE_OKI_32, maxspeed = 150
oki.m54 | OKI Play 6 kHz 2.0X | 5.50 | adiStartPlaying | encoding = ADI_ENCODE_OKI_24, maxspeed = 200
oki.m54 | OKI Play 8 kHz 2.0X | 4.81 | adiStartPlaying | encoding = ADI_ENCODE_OKI_32, maxspeed = 200
oki.m54 | OKI Record 6 kHz | 2.25 | adiStartRecording | encoding = ADI_ENCODE_OKI_24
oki.m54 | OKI Record 8 kHz | 2.00 | adiStartRecording | encoding = ADI_ENCODE_OKI_32
g726.m54 | G.726 Play | 7.44 | adiStartPlaying | encoding = ADI_ENCODE_G726
g726.m54 | G.726 Record | 7.00 | adiStartRecording | encoding = ADI_ENCODE_G726
ptf.m54 | 2 single freq or 1 tone pair | 1.25 | adiStartToneDetector |
ptf.m54 | 4 single freq or 2 tone pair | 1.81 | adiStartCallProgress | precmask!=0
rvoice.m54 | mu-law Play | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_MULAW
rvoice.m54 | A-law Play | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_ALAW
rvoice.m54 | WAVE Play, 8 kHz, 16-bit | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_PCM8M16
rvoice.m54 | mu-law Record | 0.63 | adiStartRecording | encoding = ADI_ENCODE_MULAW
rvoice.m54 | A-law Record | 0.63 | adiStartRecording | encoding = ADI_ENCODE_ALAW
rvoice.m54 | WAVE Record, 8 kHz, 16-bit | 0.63 | adiStartRecording | encoding = ADI_ENCODE_PCM8M16
rvoice_vad.m54 | mu-law Play | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_MULAW
rvoice_vad.m54 | A-law Play | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_ALAW
rvoice_vad.m54 | WAVE Play, 8 kHz, 16-bit | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_PCM8M16
rvoice_vad.m54 | mu-law Record | 0.88 | adiCommandRecord adiStartRecording | encoding = ADI_ENCODE_MULAW
rvoice_vad.m54 | A-law Record | 0.88 | adiCommandRecord adiStartRecording | encoding = ADI_ENCODE_ALAW
rvoice_vad.m54 | WAVE Record, 8 kHz, 16-bit | 0.88 | adiCommandRecord adiStartRecording | encoding = ADI_ENCODE_PCM8M16
signal.m54 | Pulse | 0.38 | adiStartDial adiStartPulse nccPlaceCall |
signal.m54 | Bit Detector | 0.44 | adiStartProtocol adiStartSignalDetector |
tone.m54 | Tone Generator | 0.75 | adiStartDial adiStartDTMF adiStartTones |
voice.m54 | NMS Play 16 Kbit/s | 3.13 | adiStartPlaying | encoding = ADI_ENCODE_NMS_16, maxspeed = 100
voice.m54 | NMS Play 24 Kbit/s | 3.13 | adiStartPlaying | encoding = ADI_ENCODE_NMS_24, maxspeed = 100
voice.m54 | NMS Play 32 Kbit/s | 3.13 | adiStartPlaying | encoding = ADI_ENCODE_NMS_32, maxspeed = 100
voice.m54 | NMS Play 64 Kbit/s | 0.63 | adiStartPlaying | encoding = ADI_ENCODE_NMS_64, maxspeed = 100
voice.m54 | NMS Play 16 6 kHz 1.5X | 5.63 | adiStartPlaying | encoding = ADI_ENCODE_NMS_16, maxspeed = 150
voice.m54 | NMS Play 24 6 kHz 1.5X | 5.81 | adiStartPlaying | encoding = ADI_ENCODE_NMS_24, maxspeed = 150
voice.m54 | NMS Play 32 6 kHz 1.5X | 5.81 | adiStartPlaying | encoding = ADI_ENCODE_NMS_32, maxspeed = 150
voice.m54 | NMS Play 64 6 kHz 1.5X | 2.31 | adiStartPlaying | encoding = ADI_ENCODE_NMS_64, maxspeed = 150
voice.m54 | NMS Play 16 6 kHz 2.0X | 7.19 | adiStartPlaying | encoding = ADI_ENCODE_NMS_16, maxspeed = 200
voice.m54 | NMS Play 24 6 kHz 2.0X | 7.50 | adiStartPlaying | encoding = ADI_ENCODE_NMS_24, maxspeed = 200
voice.m54 | NMS Play 32 6 kHz 2.0X | 7.44 | adiStartPlaying | encoding = ADI_ENCODE_NMS_32, maxspeed = 200
voice.m54 | NMS Play 64 6 kHz 2.0X | 2.81 | adiStartPlaying | encoding = ADI_ENCODE_NMS_64, maxspeed = 200
voice.m54 | NMS Record 16 Kbit/s | 3.38 | adiStartRecording | encoding = ADI_ENCODE_NMS_16
voice.m54 | NMS Record 24 Kbit/s | 3.38 | adiStartRecording | encoding = ADI_ENCODE_NMS_24
voice.m54 | NMS Record 32 Kbit/s | 3.38 | adiStartRecording | encoding = ADI_ENCODE_NMS_32
voice.m54 | NMS Record 64 Kbit/s | 0.63 | adiStartRecording | encoding = ADI_ENCODE_NMS_64
wave.m54 | WAVE Play 11 kHz 8-bit | 1.56 | adiStartPlaying | encoding = ADI_ENCODE_PCM11M8
wave.m54 | WAVE Play 11 kHz 16-bit | 1.44 | adiStartPlaying | encoding = ADI_ENCODE_PCM11M16
wave.m54 | WAVE Record 11 kHz 8-bit | 1.5 | adiStartRecording | encoding = ADI_ENCODE_PCM11M8
wave.m54 | WAVE Record 11 kHz 16-bit | 1.13 | adiStartRecording | encoding = ADI_ENCODE_PCM11M16

The following table shows the correspondence between the filter and adapt values used for the echo canceller, and MIPS consumption:

DSP file | Filter length (ms) | Adapt time (ms) | MIPS
--- | --- | --- | ---
echo.m54 | 2 | 100 | 2.75
echo.m54 | 2 | 200 | 2.38
echo.m54 | 2 | 400 | 2.25
echo.m54 | 2 | 800 | 2.13
echo.m54 | 4 | 100 | 3.13
echo.m54 | 4 | 200 | 2.63
echo.m54 | 4 | 400 | 2.38
echo.m54 | 4 | 800 | 2.25
echo.m54 | 6 | 100 | 3.50
echo.m54 | 6 | 200 | 2.88
echo.m54 | 6 | 400 | 2.63
echo.m54 | 6 | 800 | 2.50
echo.m54 | 8 | 100 | 3.88
echo.m54 | 8 | 200 | 3.13
echo.m54 | 8 | 400 | 2.88
echo.m54 | 8 | 800 | 2.75
echo.m54 | 10 | 100 | 4.25
echo.m54 | 10 | 200 | 3.50
echo.m54 | 10 | 400 | 3.00
echo.m54 | 10 | 800 | 2.88
echo.m54 | 16 | 100 | 5.25
echo.m54 | 16 | 200 | 4.25
echo.m54 | 16 | 400 | 3.63
echo.m54 | 16 | 800 | 3.38
echo.m54 | 20 | 100 | 5.63
echo.m54 | 20 | 200 | 4.50
echo.m54 | 20 | 400 | 3.88
echo.m54 | 20 | 800 | 3.38
echo_v3.m54 | 24 | 100 | 8.56
echo_v3.m54 | 24 | 200 | 6.13
echo_v3.m54 | 24 | 400 | 4.88
echo_v3.m54 | 24 | 800 | 4.25
echo_v3.m54 | 32 | 100 | 10.75
echo_v3.m54 | 32 | 200 | 7.56
echo_v3.m54 | 32 | 400 | 5.94
echo_v3.m54 | 32 | 800 | 5.13
echo_v3.m54 | 40 | 100 | 13.00
echo_v3.m54 | 40 | 200 | 9.00
echo_v3.m54 | 40 | 400 | 7.00
echo_v3.m54 | 40 | 800 | 6.00
echo_v3.m54 | 48 | 100 | 15.25
echo_v3.m54 | 48 | 200 | 10.44
echo_v3.m54 | 48 | 400 | 8.06
echo_v3.m54 | 48 | 800 | 6.88
echo_v3.m54 | 64 | 100 | 19.69
echo_v3.m54 | 64 | 200 | 13.31
echo_v3.m54 | 64 | 400 | 10.19
echo_v3.m54 | 64 | 800 | 8.56
echo_v4.m54 | 2 | 100 | 4.125
echo_v4.m54 | 2 | 200 | 3.938
echo_v4.m54 | 2 | 400 | 3.875
echo_v4.m54 | 2 | 800 | 3.813
echo_v4.m54 | 4 | 100 | 4.438
echo_v4.m54 | 4 | 200 | 4.188
echo_v4.m54 | 4 | 400 | 4.063
echo_v4.m54 | 4 | 800 | 4.000
echo_v4.m54 | 6 | 100 | 4.750
echo_v4.m54 | 6 | 200 | 4.438
echo_v4.m54 | 6 | 400 | 4.313
echo_v4.m54 | 6 | 800 | 4.188
echo_v4.m54 | 8 | 100 | 5.063
echo_v4.m54 | 8 | 200 | 4.688
echo_v4.m54 | 8 | 400 | 4.500
echo_v4.m54 | 8 | 800 | 4.438
echo_v4.m54 | 10 | 100 | 5.375
echo_v4.m54 | 10 | 200 | 4.938
echo_v4.m54 | 10 | 400 | 4.750
echo_v4.m54 | 10 | 800 | 4.625
echo_v4.m54 | 16 | 100 | 6.313
echo_v4.m54 | 16 | 200 | 5.688
echo_v4.m54 | 16 | 400 | 5.375
echo_v4.m54 | 16 | 800 | 5.188
echo_v4.m54 | 20 | 100 | 6.938
echo_v4.m54 | 20 | 200 | 6.188
echo_v4.m54 | 20 | 400 | 5.813
echo_v4.m54 | 20 | 800 | 5.625
echo_v4.m54 | 24 | 100 | 10.375
echo_v4.m54 | 24 | 200 | 7.938
echo_v4.m54 | 24 | 400 | 6.750
echo_v4.m54 | 24 | 800 | 6.125
echo_v4.m54 | 32 | 100 | 12.625
echo_v4.m54 | 32 | 200 | 9.375
echo_v4.m54 | 32 | 400 | 7.813
echo_v4.m54 | 32 | 800 | 7.000
echo_v4.m54 | 40 | 100 | 14.813
echo_v4.m54 | 40 | 200 | 10.875
echo_v4.m54 | 40 | 400 | 8.875
echo_v4.m54 | 40 | 800 | 7.875
echo_v4.m54 | 48 | 100 | 17.063
echo_v4.m54 | 48 | 200 | 12.313
echo_v4.m54 | 48 | 400 | 9.938
echo_v4.m54 | 48 | 800 | 8.750
echo_v4.m54 | 64 | 100 | 21.500
echo_v4.m54 | 64 | 200 | 15.188
echo_v4.m54 | 64 | 400 | 12.000
echo_v4.m54 | 64 | 800 | 10.438