AMRWB Interoperability

AMRWB Interoperability

I'm evaluating the sample Intel speech codecs implementation (using the performance primitives) and I find that most codecs work as I expect and indeed give better performance than the alternatives I've looked at. However I find that for AMRWB I cannot decode any 3rd party encoded speech, and similarly I cannot decode Intel encoded speech with a 3rd party decoder. More precisely the decode seems to work and gives a file of approximately the right size, but listening to the results is nothing like the original file. I have tried multiple 3rd party implementations and they seem to work together, but not with the Intel implementation.

I think the most likely reason is I'm doing something wrong invoking the sample code, but I would like to hear from anyone with experience in this area. So with that background - are there any known issues with the Intel AMRWB sample code? Has anyone successfully got it to interoperate with an alternative implementation? Are there any gotchas specific to AMRWB I should be aware of?

Let me know if there's more information that could be of use.

Thanks in advance


Running Info:

Sample rate - 16000 kHz with 16 bit samples
Modes - various (tried 8850, 23850, 6600 target bit-rate)
RedHat Linux 6.2
Processor: Intel Xeon CPU X5690 @ 3.47GHz

4 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi Oliver,

I hope this article helps:

Intel IPP: Implementing Wideband Codec VoIP Solutions


FWIW (in case anyone else stumbles across this) I'm still working on this, but I have got as far as validating that the Intel encoder provides bit-exact encodings of the test vectors supplied with G.722.2, so my focus is now on the other implementations.

Solved - recording just in case someone else stumbles across this. The Intel encoder does indeed provide bit-exact encodings of the test vectors, but I had missed that the alternate implementation was further transforming the output according to the procedures in RFC4867 (which ultimately leads to the transformation tables in 3GPP TS 26.201). If you transform the Intel encoder output according to these tables then the 3rd party decoder works fine with them.

Leave a Comment

Please sign in to add a comment. Not a member? Join today