This release adds support for acoustic echo cancellation with multiple microphones and multiple loudspeakers. It also adds an API for decorrelating loudspeaker signals to improve multi-channel performance. A few bugs were fixed in the echo canceller, jitter buffer, and preprocessor. At this point, the API for 1.2 should be stable and only a few very minor additions are planned.
The most obvious change in this release is that all the non-codec components (preprocessor, echo cancellation, and jitter buffer) have been moved to a new libspeexdsp library. Other changes include a new jitter buffer algorithm and resampler improvements/fixes. This is also the first release where libspeex can be built without any floating point support. To do this, the float compatibility API must be disabled (--disable-float-api or DISABLE_FLOAT_API) and the VBR feature must be disabled (--disable-vbr or DISABLE_VBR).
The RAM requirement for wideband has gone down
drastically (by more than two times). A new
resampler module has been added, providing fast
arbitrary sampling rate conversion. The echo
canceller has also been improved. A bug in
1.2beta1 that made the echo canceller unstable has
been fixed. The echo canceller should now converge
faster, and should be robust and tolerant of
incorrect capture-playback synchronization. The
preprocessor has also been greatly improved. Not
only should the quality be better, but it is now
fully converted to fixed-point. At last, early
TriMedia support (incomplete) has been merged.
This release brings many significant improvements. The quality has been improved at the encoder and the decoder. This includes enhancer improvements, high-pass filters, and fixes for minor regressions in previous 1.1.x releases. Memory use has been greatly reduced (more than 50%), especially for fixed-point and narrowband. In general, CPU requirements have gone down and the Blackfin port has been sped up significantly. Non-codec improvements include an extension to the echo canceller API and a Speex-independent version of the jitter buffer. The echo canceller is also more robust.
The main improvement in this release is that the
echo canceller has now been converted to
fixed-point arithmetic. The experimental
Vorbis-based masking model (use
--enable-vorbis-psy as an argument to the
configure script) has also been improved and is
now better and actually usable. Several other bugs
have also been fixed.