Decoding EVRC speech codec

audio, cdma, decoding, ffmpeg

Solution

There are some files claimed to be EVRC code here (on chinese sites): http://www.codeforge.com/article/67387

Same file on pudn.com: http://en.pudn.com/downloads95/sourcecode/comm/voice_compress/detail389385_en.html

It can be not so easy to download full 0.5 MB archive (registration required), but it looks like working EVRC codec (it is free to view any source file from this archive).

And for something more official than chinese site, there are some huge (0.5 GB) files on 3gpp2.org's ftp: http://www.mmnt.net/db/0/0/ftp.3gpp2.org/TSGC/Incoming/SWG11/Software_Published_in_TIA/evrc_rel-B_mps_software

There are so3 and so68 implementations in the archive ftp://ftp.3gpp2.org/TSGC/Incoming/SWG11/Software_Published_in_TIA/evrc_rel-B_mps_software/Software_Distribution_vB-1.0_for_C.S0018-B_v1.0_EVRC_MPS.zip

so3 sources look similar to some files from evrc.rar:

/*     Enhanced Variable Rate Codec - Master C code Specification       */
/*     Copyright (C) 1997-1998 Telecommunications Industry Association. */

and so68 (EVRCB_FX) is for EVRC-B (both encoder and decoder):

EVRC-B vocoder fixed point c-simulation can be compiled using the standard GNU 
c++ compile tools like g++, make, etc.

/*  EVRC-B - Enhanced Variable Rate Coder - B Speech Service Option for  */
/*  Wideband Spread Spectrum Digital System                             */
/*  C Source Code Simulation                                            */

This archive is so large because it includes many sound samples, both encoded and raw.

According to http://wiki.multimedia.cx/index.php?title=EVRC there is the URL for spec and reference codecs: http://www.3gpp2.org/Public_html/specs/tsgc.cfm

Some recent and small (1.8MB) distribution: http://www.3gpp2.org/Public_html/specs/C.R0014-D_v1.0_EVRC-D_SoftwareDistribution_100125.zip

Problem

I want to decode the EVRC speech codec. I have checked the ffmpeg library but it seems like, EVRC is not being currently supported by ffmpeg. Is there any alternate library which can be used to decode EVRC data? Or if anybody have some algorithm or decoding mechanism or code snippet to do so, please let me know. Thanks Nitin

Original source