[asterisk-dev] [Code Review] Include iLBC source code for distribution with Asterisk

paravoid reviewboard at asterisk.org
Thu Jan 19 19:57:34 CST 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1675/#review5231
-----------------------------------------------------------


I'm not sure if you'll care enough, but everyone would profit by making this a proper shared library, say libilbc, that applications like Asterisk can link against, rather than every project embedding it (they're quite a few) and missing potential fixes. That's especially the case since upstream (now Google) seems to not care anymore about it and has taken a turn for the project (WebRTC).

I've already toyed with the idea and created a Makefile that does that. It seems to work with no source changes; the only /usr/include headers needed seem to be iLBC_{encode,decode,define}.h and the only symbols used to be init{Encode,Decode} and iLBC_{encode,decode}.

I can do the upstream for the library if Asterisk would use it (setup a git repository, tarballs etc.) or I could contribute the (trivial!) Makefile to Digium and do that work within the Asterisk project and channels (like e.g. libpri, libss7 etc.). Would you be interested in any of the above (or other suggestions)? Would you use it?

- paravoid


On Jan. 17, 2012, 11:02 a.m., Matt Jordan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1675/
> -----------------------------------------------------------
> 
> (Updated Jan. 17, 2012, 11:02 a.m.)
> 
> 
> Review request for Asterisk Developers and Kevin Fleming.
> 
> 
> Summary
> -------
> 
> This patch includes the iLBC source code for distribution with Asterisk.  Clarification regarding the iLBC source code was provided by Google here: https://datatracker.ietf.org/ipr/1649/
> 
> Note that the source code was extracted from Appendix A of IETF RFC 3951, and updated with two modifications to resolve gcc warnings.  These were in iCBSearch.c, line 129/130 and line 324,325:
> 
> Changed from:
> for (j=0; j<lTarget; j++) {
>    *ppe+=(*pp)*(*pp++);
> }
> 
> To:
> for (j=0; j<lTarget; j++, pp++) {
>    *ppe+=(*pp)*(*pp);
> }
> 
> Note that this is technically a duplicate of review 1319 (https://reviewboard.asterisk.org/r/1319/), save in the following ways:
> 1. I did not remove the script that obtains and extracts the iLBC source code, but rather just updated its remarks.  There may be a reason why someone would want to obtain the iLBC codec using the same mechanism that we did, and this documents that.  That mechanism does still depend on the RFC being available at http://ilbcfreeware.org, but as of the time of writing this patch, that was still the case.  Note that the iLBC source code used is not the same as what is distributed with WebRTC, as that has been modified to work with WebRTC's API.
> 2. Additionally added the license specification from https://datatracker.ietf.org/ipr/1649
> 3. Updates for iCBSearch.c, previously mentioned
> 
> 
> This addresses bug ASTERISK-18943.
>     https://issues.asterisk.org/jira/browse/ASTERISK-18943
> 
> 
> Diffs
> -----
> 
>   /branches/1.8/codecs/ilbc/LICENSE PRE-CREATION 
>   /branches/1.8/codecs/ilbc/LICENSE_ADDENDUM PRE-CREATION 
>   /branches/1.8/codecs/ilbc/LPCdecode.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/LPCdecode.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/LPCencode.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/LPCencode.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/Makefile 351235 
>   /branches/1.8/codecs/ilbc/PATENTS PRE-CREATION 
>   /branches/1.8/codecs/ilbc/StateConstructW.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/StateConstructW.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/StateSearchW.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/StateSearchW.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/anaFilter.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/anaFilter.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/constants.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/constants.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/createCB.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/createCB.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/doCPLC.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/doCPLC.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/enhancer.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/enhancer.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/extract-cfile.awk PRE-CREATION 
>   /branches/1.8/codecs/ilbc/filter.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/filter.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/gainquant.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/gainquant.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/getCBvec.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/getCBvec.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/helpfun.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/helpfun.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/hpInput.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/hpInput.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/hpOutput.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/hpOutput.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iCBConstruct.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iCBConstruct.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iCBSearch.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iCBSearch.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iLBC_decode.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iLBC_decode.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iLBC_define.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iLBC_encode.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iLBC_encode.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/iLBC_test.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/lsf.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/lsf.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/packing.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/packing.c PRE-CREATION 
>   /branches/1.8/codecs/ilbc/rfc3951.txt PRE-CREATION 
>   /branches/1.8/codecs/ilbc/FrameClassify.c PRE-CREATION 
>   /branches/1.8/codecs/codec_ilbc.c 351235 
>   /branches/1.8/codecs/ilbc/FrameClassify.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/syntFilter.h PRE-CREATION 
>   /branches/1.8/codecs/ilbc/syntFilter.c PRE-CREATION 
>   /branches/1.8/contrib/scripts/get_ilbc_source.sh 351235 
> 
> Diff: https://reviewboard.asterisk.org/r/1675/diff
> 
> 
> Testing
> -------
> 
> Asterisk compiles, loads, and uses the iLBC codec.  More testing is needed however, particularly with Asterisk 10.
> 
> 
> Thanks,
> 
> Matt
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120120/9f3533d9/attachment.htm>


More information about the asterisk-dev mailing list