I need to perform echo cancellation on data packets with arbitrary sizes and sample rates. The parameters are given at the start of the streams and don't change afterwards. I'm currently using Speex AEC which handles this fine. Speex takes a while to converge so I'm looking for alternatives.
Can the low level IPP AEC functions take sample rates of 8, 16, 32 and 48 kHz? Can the low level IPP AEC functions take arbitrary frame sizes (usually either a multiple of a power of 2 or a multiple of 10 ms)?
I have no control over the format of the audio I am given and I really don't want to do sample rate conversion and buffering sois the IPP echo cancelation suitable for this. I also prefer to use the lowest programming API available so I don't have to deal with the baggage of a high level generic framework.
I could not find any documentation on sample rates and frame sizes supported. I looked at the examples and they have rather limited frame sizes and sample rates but it's not clear if that is because of limitations of the low level functions or design decisions in the higher level framework.
I'm currently using IPP 5.0 and used the examples that go with it to try and figure out how EC works. After looking at the examples from IPP 7.0,it looks like only 8 and 16 kHz sample rates and only certain buffer sizes are supported. The newer version does add some buffering but not for arbitrary buffer lengths and doesn't add any more sample rates. It looks like sample rate conversions and buffering will be necessary to support arbitrary sample rates and buffer sizes.