The pjsystest (pjsip-apps/src/pjsystest) is an application introduced in PJSIP version 1.4 by ticket #920. It perform series of tests to detect problems and measure the performance of the system, especially the audio subsystem, such as:
audio device bursts, latency, and drifts,
AEC performance, as well as
displaying basic audio system information.
pjsystest can be used to fine tune the application settings to get the most optimal setup for the target device.
The objectives are:
to eliminate audio device impairments as explained in Checking the quality of the sound device
to minimize audio latency
Test parameters (such as device IDs, clock rate, number of channels, and default file paths) are hardcoded in pjsip-apps/src/pjsystest/systest.h. These parameters may need to be modified for if necessary.
With Visual Studio:
compile PJSIP distribution as usual, make sure
pjsystestproject is getting built.
pjsystestapplication from Visual Studio
Just build the distribution and run pjsystest from
pjsystest for iPhone is available in pjsip-apps/src/ipjsystest directory.
With Visual Studio:
build the distribution and pjsystest
run pjsystest from the IDE
the EXE and the required WAV files will be deployed to the device automatically
build the distribution
pjsip-apps/binand deploy to target
also deploy these two files from tests/pjsua/wavs directory to the same directory in the target device as the pjsystest executable:
pjsysteston the target device
Once the application is running, just choose Test Wizard to run all the tests, and follow the wizard instruction.
The console application may be a bit awkward to use with all the dialog box emulation, but it works.
Results are recorded to
PJSYSTEST_RESULT.TXT file once the program exits. On Windows
Mobile, the file location is in the root device, while on other targets
it is in the directory where the application is run from.
Additional info and instructions are given the application is run.
Limitations: by design,
pjsystest would not be able to test audio latency if audio
switchboard is used instead of the default conference bridge
Several things that could be experimented with using pjsystest:
Some targets platforms offer more than one audiodev API backends. There is no need to recompile the whole library to experiment with different audiodev API backends, just change REC_DEV_ID and PLAY_DEV_ID in pjsip-apps/src/pjsystest/systest.h (as long as the backend is enabled during compilation).
systest.h to experiment with different
audio buffer size (values are
in milliseconds). The objective is to get the minimum latency without
getting audio impairments.
Choosing higher clock rate in audio device can minimize latency. Change
DEV_CLOCK_RATE in systest.h
to experiment with different clock