<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/1675/">https://reviewboard.asterisk.org/r/1675/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On January 19th, 2012, 7:57 p.m., <b>paravoid</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I&#39;m not sure if you&#39;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&#39;re quite a few) and missing potential fixes. That&#39;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&#39;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?</pre>
 </blockquote>







</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">If you want to provide a patch to allow Asterisk to build against an already-installed copy of the iLBC library (like we have available for other codecs and libraries), that would certainly be welcome.</pre>
<br />








<p>- Kevin</p>


<br />
<p>On January 17th, 2012, 11:02 a.m., Matt Jordan wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers and Kevin Fleming.</div>
<div>By Matt Jordan.</div>


<p style="color: grey;"><i>Updated Jan. 17, 2012, 11:02 a.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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&lt;lTarget; j++) {
   *ppe+=(*pp)*(*pp++);
}

To:
for (j=0; j&lt;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&#39;s API.
2. Additionally added the license specification from https://datatracker.ietf.org/ipr/1649
3. Updates for iCBSearch.c, previously mentioned</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Asterisk compiles, loads, and uses the iLBC codec.  More testing is needed however, particularly with Asterisk 10.</pre>
  </td>
 </tr>
</table>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-18943">ASTERISK-18943</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/branches/1.8/codecs/ilbc/LICENSE <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/LICENSE_ADDENDUM <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/LPCdecode.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/LPCdecode.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/LPCencode.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/LPCencode.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/Makefile <span style="color: grey">(351235)</span></li>

 <li>/branches/1.8/codecs/ilbc/PATENTS <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/StateConstructW.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/StateConstructW.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/StateSearchW.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/StateSearchW.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/anaFilter.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/anaFilter.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/constants.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/constants.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/createCB.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/createCB.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/doCPLC.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/doCPLC.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/enhancer.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/enhancer.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/extract-cfile.awk <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/filter.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/filter.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/gainquant.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/gainquant.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/getCBvec.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/getCBvec.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/helpfun.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/helpfun.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/hpInput.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/hpInput.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/hpOutput.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/hpOutput.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iCBConstruct.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iCBConstruct.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iCBSearch.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iCBSearch.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iLBC_decode.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iLBC_decode.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iLBC_define.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iLBC_encode.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iLBC_encode.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/iLBC_test.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/lsf.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/lsf.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/packing.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/packing.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/rfc3951.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/FrameClassify.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/codec_ilbc.c <span style="color: grey">(351235)</span></li>

 <li>/branches/1.8/codecs/ilbc/FrameClassify.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/syntFilter.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/codecs/ilbc/syntFilter.c <span style="color: grey">(PRE-CREATION)</span></li>

 <li>/branches/1.8/contrib/scripts/get_ilbc_source.sh <span style="color: grey">(351235)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/1675/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>