<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 />



 <p>Ship it!</p>



 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Nice work!</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>