<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[Freeswitch-trunk][15543] </title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<div id="header">FreeSWITCH Subversion</div>
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://fisheye.freeswitch.org/changelog/FreeSWITCH?cs=15543">15543</a></dd>
<dt>Author</dt> <dd>mikej</dd>
<dt>Date</dt> <dd>2009-11-19 08:42:11 -0600 (Thu, 19 Nov 2009)</dd>
</dl>
<h3>Log Message</h3>
<pre>add new broadvoice codec lib from Steve Underwood</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#freeswitchtrunkbootstrapsh">freeswitch/trunk/bootstrap.sh</a></li>
<li><a href="#freeswitchtrunkconfigurein">freeswitch/trunk/configure.in</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li>freeswitch/trunk/libs/broadvoice/</li>
<li><a href="#freeswitchtrunklibsbroadvoiceAUTHORS">freeswitch/trunk/libs/broadvoice/AUTHORS</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceCOPYING">freeswitch/trunk/libs/broadvoice/COPYING</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceChangeLog">freeswitch/trunk/libs/broadvoice/ChangeLog</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceINSTALL">freeswitch/trunk/libs/broadvoice/INSTALL</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceMakefileam">freeswitch/trunk/libs/broadvoice/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceNEWS">freeswitch/trunk/libs/broadvoice/NEWS</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceREADME">freeswitch/trunk/libs/broadvoice/README</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceautogensh">freeswitch/trunk/libs/broadvoice/autogen.sh</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicebroadvoicespec">freeswitch/trunk/libs/broadvoice/broadvoice.spec</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicebroadvoicespecin">freeswitch/trunk/libs/broadvoice/broadvoice.spec.in</a></li>
<li>freeswitch/trunk/libs/broadvoice/config/</li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigax_c99_featuresm4">freeswitch/trunk/libs/broadvoice/config/ax_c99_features.m4</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigax_check_export_capabilitym4">freeswitch/trunk/libs/broadvoice/config/ax_check_export_capability.m4</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigax_check_real_filem4">freeswitch/trunk/libs/broadvoice/config/ax_check_real_file.m4</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigax_compiler_vendorm4">freeswitch/trunk/libs/broadvoice/config/ax_compiler_vendor.m4</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigax_fixed_point_machinem4">freeswitch/trunk/libs/broadvoice/config/ax_fixed_point_machine.m4</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigax_misaligned_access_failsm4">freeswitch/trunk/libs/broadvoice/config/ax_misaligned_access_fails.m4</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfighin">freeswitch/trunk/libs/broadvoice/config-h.in</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceconfigureac">freeswitch/trunk/libs/broadvoice/configure.ac</a></li>
<li>freeswitch/trunk/libs/broadvoice/debian/</li>
<li><a href="#freeswitchtrunklibsbroadvoicedebianchangelog">freeswitch/trunk/libs/broadvoice/debian/changelog</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebiancompat">freeswitch/trunk/libs/broadvoice/debian/compat</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebiancontrol">freeswitch/trunk/libs/broadvoice/debian/control</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebiancopyright">freeswitch/trunk/libs/broadvoice/debian/copyright</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebianlibbroadvoicedevinstall">freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-dev.install</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebianlibbroadvoicedocinstall">freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-doc.install</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebianlibbroadvoice1install">freeswitch/trunk/libs/broadvoice/debian/libbroadvoice1.install</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebianrules">freeswitch/trunk/libs/broadvoice/debian/rules</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedebianwatch">freeswitch/trunk/libs/broadvoice/debian/watch</a></li>
<li>freeswitch/trunk/libs/broadvoice/doc/</li>
<li><a href="#freeswitchtrunklibsbroadvoicedocMakefileam">freeswitch/trunk/libs/broadvoice/doc/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedocbroadvoicedoxygen">freeswitch/trunk/libs/broadvoice/doc/broadvoice-doxygen</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedoccsscss">freeswitch/trunk/libs/broadvoice/doc/css.css</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicedocwrapperxsl">freeswitch/trunk/libs/broadvoice/doc/wrapper.xsl</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcMakefileam">freeswitch/trunk/libs/broadvoice/src/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbitpack16c">freeswitch/trunk/libs/broadvoice/src/bitpack16.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbitpack16h">freeswitch/trunk/libs/broadvoice/src/bitpack16.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbitpack32c">freeswitch/trunk/libs/broadvoice/src/bitpack32.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbitpack32h">freeswitch/trunk/libs/broadvoice/src/bitpack32.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbitstreamc">freeswitch/trunk/libs/broadvoice/src/bitstream.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbitstreamh">freeswitch/trunk/libs/broadvoice/src/bitstream.h</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/broadvoice/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoicebroadvoiceh">freeswitch/trunk/libs/broadvoice/src/broadvoice/broadvoice.h</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/broadvoice/private/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoiceprivatebroadvoiceh">freeswitch/trunk/libs/broadvoice/src/broadvoice/private/broadvoice.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoiceversionh">freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoiceversionhin">freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h.in</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoicedsp">freeswitch/trunk/libs/broadvoice/src/broadvoice.dsp</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoicehin">freeswitch/trunk/libs/broadvoice/src/broadvoice.h.in</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoicesln">freeswitch/trunk/libs/broadvoice/src/broadvoice.sln</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcbroadvoicevcproj">freeswitch/trunk/libs/broadvoice/src/broadvoice.vcproj</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/floating/</li>
<li>freeswitch/trunk/libs/broadvoice/src/floating/bv16/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16cnsth">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16cnst.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16coarse_pitchc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16coarse_pitch.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16decoderc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16decoder.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16encoderc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16encoder.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16excdecc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excdec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16excquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16externsh">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16externs.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16fine_pitchc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16fine_pitch.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16gaindecc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gaindec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16gainquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gainquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16levelestc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16levelest.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16lspdecc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspdec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16lspquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16plcc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16plc.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16postfilterc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16postfilterh">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16ptdecc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptdec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16ptquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16strcth">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16strct.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16tablesc">freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16tables.c</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/floating/bv32/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32cnsth">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32cnst.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32coarse_pitchc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32coarse_pitch.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32decoderc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32decoder.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32encoderc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32encoder.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32excdecc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excdec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32excquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32externsh">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32externs.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32fine_pitchc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32fine_pitch.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32gaindecc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gaindec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32gainquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gainquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32levelestc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32levelest.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32lspdecc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspdec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32lspquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32plcc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32plc.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32ptdecc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptdec.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32ptquanc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptquan.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32strcth">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32strct.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32tablesc">freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32tables.c</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/floating/common/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommona2lspc">freeswitch/trunk/libs/broadvoice/src/floating/common/a2lsp.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonallpolec">freeswitch/trunk/libs/broadvoice/src/floating/common/allpole.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonallzeroc">freeswitch/trunk/libs/broadvoice/src/floating/common/allzero.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonautocorc">freeswitch/trunk/libs/broadvoice/src/floating/common/autocor.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonbvcommonh">freeswitch/trunk/libs/broadvoice/src/floating/common/bvcommon.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommoncmtablesc">freeswitch/trunk/libs/broadvoice/src/floating/common/cmtables.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonlevdurc">freeswitch/trunk/libs/broadvoice/src/floating/common/levdur.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonlsp2ac">freeswitch/trunk/libs/broadvoice/src/floating/common/lsp2a.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonstblchckc">freeswitch/trunk/libs/broadvoice/src/floating/common/stblchck.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonstblzlspc">freeswitch/trunk/libs/broadvoice/src/floating/common/stblzlsp.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommontypedefh">freeswitch/trunk/libs/broadvoice/src/floating/common/typedef.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonutilityc">freeswitch/trunk/libs/broadvoice/src/floating/common/utility.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcfloatingcommonutilityh">freeswitch/trunk/libs/broadvoice/src/floating/common/utility.h</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/msvc/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcbroadvoicedef">freeswitch/trunk/libs/broadvoice/src/msvc/broadvoice.def</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcgettimeofdayc">freeswitch/trunk/libs/broadvoice/src/msvc/gettimeofday.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcinttypesh">freeswitch/trunk/libs/broadvoice/src/msvc/inttypes.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcmsvcprojfoot">freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.foot</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcmsvcprojhead">freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.head</a></li>
<li>freeswitch/trunk/libs/broadvoice/src/msvc/sys/</li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcsystimeh">freeswitch/trunk/libs/broadvoice/src/msvc/sys/time.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvctgmathh">freeswitch/trunk/libs/broadvoice/src/msvc/tgmath.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcunistdh">freeswitch/trunk/libs/broadvoice/src/msvc/unistd.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcvc8projfoot">freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.foot</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicesrcmsvcvc8projhead">freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.head</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdataMakefileam">freeswitch/trunk/libs/broadvoice/test-data/Makefile.am</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomMakefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/Makefile.am</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedMakefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/Makefile.am</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16Makefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbfe10bv16">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bfe10.bv16</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbv16bfe10refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.bfe10.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbv16ref">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.ref</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbv16refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.raw</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32Makefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbfe10bv32">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bfe10.bv32</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbv32bfe10refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.bfe10.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbv32ref">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.ref</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbv32refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.raw</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingMakefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/Makefile.am</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16Makefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbfe10bv16">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bfe10.bv16</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbv16bfe10refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.bfe10.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbv16ref">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.ref</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbv16refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.raw</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32Makefileam">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbfe10bv32">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bfe10.bv32</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbv32bfe10refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.bfe10.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbv32ref">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.ref</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbv32refraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.ref.raw</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvraw">freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.raw</a></li>
<li>freeswitch/trunk/libs/broadvoice/test-data/local/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatalocalMakefileam">freeswitch/trunk/libs/broadvoice/test-data/local/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatalocalshort_nb_voicewav">freeswitch/trunk/libs/broadvoice/test-data/local/short_nb_voice.wav</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestdatalocalshort_wb_voicewav">freeswitch/trunk/libs/broadvoice/test-data/local/short_wb_voice.wav</a></li>
<li>freeswitch/trunk/libs/broadvoice/tests/</li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsMakefileam">freeswitch/trunk/libs/broadvoice/tests/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsbv16_fixed_testssh">freeswitch/trunk/libs/broadvoice/tests/bv16_fixed_tests.sh</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsbv16_floating_testssh">freeswitch/trunk/libs/broadvoice/tests/bv16_floating_tests.sh</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsbv16_testsc">freeswitch/trunk/libs/broadvoice/tests/bv16_tests.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsbv32_fixed_testssh">freeswitch/trunk/libs/broadvoice/tests/bv32_fixed_tests.sh</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsbv32_floating_testssh">freeswitch/trunk/libs/broadvoice/tests/bv32_floating_tests.sh</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsbv32_testsc">freeswitch/trunk/libs/broadvoice/tests/bv32_tests.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsg192_bit_streamc">freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.c</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsg192_bit_streamh">freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsregression_testssh">freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicetestsregression_testsshin">freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh.in</a></li>
<li><a href="#freeswitchtrunklibsbroadvoiceteststimingh">freeswitch/trunk/libs/broadvoice/tests/timing.h</a></li>
<li><a href="#freeswitchtrunklibsbroadvoicewrapperxsl">freeswitch/trunk/libs/broadvoice/wrapper.xsl</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="freeswitchtrunkbootstrapsh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/bootstrap.sh (15542 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/bootstrap.sh        2009-11-19 14:24:59 UTC (rev 15542)
+++ freeswitch/trunk/bootstrap.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -4,7 +4,7 @@
</span><span class="cx"> BASEDIR=`pwd`;
</span><span class="cx"> LIBDIR=${BASEDIR}/libs;
</span><span class="cx"> SUBDIRS="ilbc curl iksemel js js/nsprpub libdingaling libedit libsndfile pcre sofia-sip \
</span><del>- speex sqlite srtp openzap spandsp libg722_1 portaudio unimrcp tiff-3.8.2";
</del><ins>+ speex sqlite srtp openzap spandsp libg722_1 portaudio unimrcp tiff-3.8.2 broadvoice";
</ins><span class="cx">
</span><span class="cx"> if [ ! -f modules.conf ]; then
</span><span class="cx"> cp build/modules.conf.in modules.conf
</span></span></pre></div>
<a id="freeswitchtrunkconfigurein"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/configure.in (15542 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/configure.in        2009-11-19 14:24:59 UTC (rev 15542)
+++ freeswitch/trunk/configure.in        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -840,5 +840,6 @@
</span><span class="cx"> AC_CONFIG_SUBDIRS(libs/unimrcp)
</span><span class="cx"> AC_CONFIG_SUBDIRS(libs/tiff-3.8.2)
</span><span class="cx"> AC_CONFIG_SUBDIRS(libs/spandsp)
</span><ins>+AC_CONFIG_SUBDIRS(libs/broadvoice)
</ins><span class="cx">
</span><span class="cx"> AC_OUTPUT
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceAUTHORS"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/AUTHORS (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/AUTHORS         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/AUTHORS        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+Adapted by Steve Underwood <steveu@coppice.org> from the source code
+supplied by Broadcom.
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceCOPYING"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/COPYING (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/COPYING         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/COPYING        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,507 @@
</span><ins>+The broadvoice library is licenced under LGPL 2.1.The full text of this licence
+may be found below.
+
+
+
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                 Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                         Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                 GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                         NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                 END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceChangeLog"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/ChangeLog (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/ChangeLog         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/ChangeLog        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+20.09.14 - 0.0.1 - Steve Underwood <steveu@coppice.org>
+ - The first version.
+
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceINSTALL"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/INSTALL (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/INSTALL         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/INSTALL        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,182 @@
</span><ins>+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+ The file `configure.ac' is used to create `configure' by a program
+called `autoconf'. You only need `configure.ac' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. You can give `configure'
+initial values for variables by setting them in the environment. Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+ CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+ env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory. After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on. Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+ CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+ If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+ Use and save the results of the tests in FILE instead of
+ `./config.cache'. Set FILE to `/dev/null' to disable caching, for
+ debugging `configure'.
+
+`--help'
+ Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`--version'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,77 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the Lesser GNU General Public License version 2.1, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
+AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
+
+noinst_SCRIPTS = broadvoice.spec
+
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = autogen.sh \
+ broadvoice.spec \
+ wrapper.xsl \
+ doc/broadvoice-doxygen \
+ debian/changelog \
+ debian/compat \
+ debian/control \
+ debian/copyright \
+ debian/libbroadvoice1.install \
+ debian/libbroadvoice-dev.install \
+ debian/libbroadvoice-doc.install \
+ debian/rules \
+ debian/watch
+
+if COND_DOC
+ MAYBE_DOC=doc
+endif
+if COND_TESTS
+ MAYBE_TESTS=tests
+endif
+SUBDIRS = src $(MAYBE_DOC) $(MAYBE_TESTS)
+
+DIST_SUBDIRS = src doc tests test-data
+
+faq: faq.xml
+        cd faq ; xsltproc ../wrapper.xsl ../faq.xml
+
+rpm: rpm-build
+
+rpm-build:
+        $(MAKE) -$(MAKEFLAGS) bump.rpm.release
+        $(MAKE) -$(MAKEFLAGS) dist
+        rm -rf rpm/BUILD/*
+        rm -f rpm/RPMS/*/*
+        rm -f rpm/SOURCES/*
+        rm -f rpm/SPECS/*
+        rm -f rpm/SRPMS/*
+        rpm -ta --sign @PACKAGE@-@VERSION@.tar.gz
+
+bump.rpm.release: broadvoice.spec
+        VERSION="x"; \
+        test -f $(srcdir)/rpm.release && . $(srcdir)/rpm.release; \
+        NEXT_RELEASE=0; \
+        test "$$VERSION" = "@VERSION@" && NEXT_RELEASE="$$RELEASE"; \
+        RELEASE=`expr $$NEXT_RELEASE + 1`; \
+        echo "VERSION=@VERSION@" >$(srcdir)/rpm.release; \
+        echo "RELEASE=$$RELEASE" >>$(srcdir)/rpm.release; \
+        sed 's/^Release: .*/Release: '$$RELEASE'/' \
+                <broadvoice.spec >broadvoice.spec.new; \
+        mv broadvoice.spec.new broadvoice.spec
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceNEWS"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/NEWS (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/NEWS         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/NEWS        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+No news is good news!
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceREADME"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/README (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/README         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/README        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+broadvoice - a library for the BroadVoice 16 and 32 codecs
+----------------------------------------------------------
+
+The BroadVoice 16 speech codec is a 16kbps codec for narrowband (3.5kHz) speech.
+
+The BroadVoice 32 speech codec is a 32kbps codec for wideband (7kHz) speech.
+
+These codecs were developed by Broadcom, and are currently deployed in some popular
+VoIP phones. Broadcom have provided reference source code, under the LGPL 2.1
+licence. However, this code is not in a suitable form for easy integration with
+VoIP applications, and has a number of portability issues.
+
+This library is based on the Broadcom reference code, but has been heavily modified
+so that it builds into a proper library, with a clean usable interface, on a
+range of platforms.
+
+Steve Underwood <steveu@coppice.org>
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceautogensh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/autogen.sh (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/autogen.sh         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/autogen.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,145 @@
</span><ins>+#!/usr/bin/env sh
+#
+# broadvoice - a library for the BroadVoice 16 and 32 codecs
+#
+# autogen script
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Id: autogen.sh,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+#
+
+UNAME=`uname`
+
+if [ "x$UNAME" = "xFreeBSD" ]; then
+ echo ""
+ echo ""
+ echo "******************************************"
+ echo "*** NOTICE ***"
+ echo "******************************************"
+ echo " "
+ echo "FreeBSD is buggy. Please use this "
+ echo "workaround if you want to bootstrap "
+ echo "on FreeBSD. "
+ echo " "
+ echo "cd /usr/local/share/aclocal19 "
+ echo "ln -s ../aclocal/libtool15.m4 . "
+ echo "ln -s ../aclocal/ltdl15.m4 . "
+ echo "                                 "
+ echo "******************************************"
+ echo ""
+fi
+
+debug ()
+{
+        # Outputs debug statments if DEBUG var is set
+        if [ ! -z "$DEBUG" ]; then
+                echo "DEBUG: $1"
+        fi
+}
+
+version_compare()
+{
+        # Checks a command is found and the version is high enough
+        PROGRAM=$1
+        MAJOR=$2
+        MINOR=$3
+        MICRO=$4
+        test -z "$MAJOR" && MAJOR=0
+        test -z "$MINOR" && MINOR=0
+        test -z "$MICRO" && MICRO=0
+
+        debug "Checking $PROGRAM >= $MAJOR.$MINOR.$MICRO"
+
+        WHICH_PATH=`whereis which | cut -f2 -d' '`
+        COMMAND=`$WHICH_PATH $PROGRAM`
+        if [ -z $COMMAND ]; then
+                echo "$PROGRAM-$MAJOR.$MINOR.$MICRO is required and was not found."
+                return 1
+        else
+                debug "Found $COMMAND"
+        fi
+
+        INS_VER=`$COMMAND --version | head -1 | sed 's/[^0-9]*//' | cut -d' ' -f1`
+        INS_MAJOR=`echo $INS_VER | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
+        INS_MINOR=`echo $INS_VER | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
+        INS_MICRO=`echo $INS_VER | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
+        test -z "$INS_MAJOR" && INS_MAJOR=0
+        test -z "$INS_MINOR" && INS_MINOR=0
+        test -z "$INS_MICRO" && INS_MICRO=0
+        debug "Installed version: $INS_VER"
+
+        if [ "$INS_MAJOR" -gt "$MAJOR" ]; then
+                debug "MAJOR: $INS_MAJOR > $MAJOR"
+                return 0
+        elif [ "$INS_MAJOR" -eq "$MAJOR" ]; then
+                debug "MAJOR: $INS_MAJOR = $MAJOR"
+                if [ "$INS_MINOR" -gt "$MINOR" ]; then
+                        debug "MINOR: $INS_MINOR > $MINOR"
+                        return 0
+                elif [ "$INS_MINOR" -eq "$MINOR" ]; then
+                        if [ "$INS_MICRO" -ge "$MICRO" ]; then
+                                debug "MICRO: $INS_MICRO >= $MICRO"
+                                return 0
+                        else
+                                debug "MICRO: $INS_MICRO < $MICRO"
+                        fi
+                else
+                        debug "MINOR: $INS_MINOR < $MINOR"
+                fi
+        else
+                debug "MAJOR: $INS_MAJOR < $MAJOR"
+        fi
+
+        echo "You have the wrong version of $PROGRAM. The minimum required version is $MAJOR.$MINOR.$MICRO"
+        echo " and the version installed is $INS_MAJOR.$INS_MINOR.$INS_MICRO ($COMMAND)."
+        return 1
+}
+
+# Check for required version and die if unhappy
+
+if [ "x$UNAME" = "xFreeBSD" ]; then
+version_compare libtoolize 1 5 16 || exit 1
+version_compare automake19 1 9 5 || exit 1
+version_compare autoconf259 2 59 || exit 1
+ACLOCAL=aclocal19
+AUTOHEADER=autoheader259
+AUTOMAKE=automake19
+AUTOCONF=autoconf259
+else
+version_compare libtoolize 1 5 16 || exit 1
+version_compare automake 1 9 5 || exit 1
+version_compare autoconf 2 59 || exit 1
+ACLOCAL=aclocal
+AUTOHEADER=autoheader
+AUTOMAKE=automake
+AUTOCONF=autoconf
+fi
+
+libtoolize --copy --force --ltdl
+#NetBSD seems to need this file writable
+chmod u+w libltdl/configure
+
+$ACLOCAL
+$AUTOHEADER --force
+$AUTOMAKE --copy --add-missing
+$AUTOCONF --force
+
+#chmod ug+x debian/rules
+
+if [ "x$UNAME" = "xNetBSD" ]; then
+echo ""
+echo "Please remember to run gmake instead of make on NetBSD"
+echo ""
+fi
</ins><span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/autogen.sh
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:executable
</span><span class="cx"> + *
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicebroadvoicespec"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/broadvoice.spec (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/broadvoice.spec         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/broadvoice.spec        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+Summary: broadvoice - a library for the BroadVoice 16 and 32 speech codecs
+Name: broadvoice
+Version: 0.0.1
+Release: 1
+License: LGPL2.1
+Group: System Environment/Libraries
+URL: http://www.soft-switch.org/broadvoice
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+Source: http://www.soft-switch.org/downloads/codecs/broadvoice-0.0.1.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Docdir: %{_prefix}/doc
+
+BuildRequires: audiofile-devel
+BuildRequires: doxygen
+
+%description
+broadvoice is a library for the BroadVoice 16 and 32 speech codecs.
+
+%package devel
+Summary: BroadVoice development files
+Group: Development/Libraries
+Requires: libbroadvoice = %{version}
+PreReq: /sbin/install-info
+
+%description devel
+libbroadvoice development files.
+
+%prep
+%setup -q
+
+%build
+%configure --enable-doc --disable-static --disable-rpath
+make
+
+%install
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot}
+rm %{buildroot}%{_libdir}/libbroadvoice.la
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog AUTHORS COPYING NEWS README
+
+%{_libdir}/libbroadvoice.so.*
+
+%{_datadir}/libbroadvoice
+
+%files devel
+%defattr(-,root,root,-)
+%doc doc/api
+%{_includedir}/broadvoice.h
+%{_includedir}/broadvoice
+%{_libdir}/libbroadvoice.so
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%changelog
+* Sat Nov 15 2009 Steve Underwood <steveu@coppice.org> 0.0.1
+- First pass
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicebroadvoicespecin"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/broadvoice.spec.in (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/broadvoice.spec.in         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/broadvoice.spec.in        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+Summary: broadvoice - a library for the BroadVoice 16 and 32 speech codecs
+Name: @PACKAGE@
+Version: @VERSION@
+Release: 1
+License: LGPL2.1
+Group: System Environment/Libraries
+URL: http://www.soft-switch.org/broadvoice
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+Source: http://www.soft-switch.org/downloads/codecs/@PACKAGE@-@VERSION@.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Docdir: %{_prefix}/doc
+
+BuildRequires: audiofile-devel
+BuildRequires: doxygen
+
+%description
+broadvoice is a library for the BroadVoice 16 and 32 speech codecs.
+
+%package devel
+Summary: BroadVoice development files
+Group: Development/Libraries
+Requires: libbroadvoice = %{version}
+PreReq: /sbin/install-info
+
+%description devel
+libbroadvoice development files.
+
+%prep
+%setup -q
+
+%build
+%configure --enable-doc --disable-static --disable-rpath
+make
+
+%install
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot}
+rm %{buildroot}%{_libdir}/libbroadvoice.la
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%doc ChangeLog AUTHORS COPYING NEWS README
+
+%{_libdir}/libbroadvoice.so.*
+
+%{_datadir}/libbroadvoice
+
+%files devel
+%defattr(-,root,root,-)
+%doc doc/api
+%{_includedir}/broadvoice.h
+%{_includedir}/broadvoice
+%{_libdir}/libbroadvoice.so
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%changelog
+* Sat Nov 15 2009 Steve Underwood <steveu@coppice.org> 0.0.1
+- First pass
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigax_c99_featuresm4"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config/ax_c99_features.m4 (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config/ax_c99_features.m4         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config/ax_c99_features.m4        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,181 @@
</span><ins>+# @synopsis AX_C99_FLEXIBLE_ARRAY
+#
+# Does the compiler support the 1999 ISO C Standard "struct hack".
+# @version 1.1 Mar 15 2004
+# @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+#
+# Permission to use, copy, modify, distribute, and sell this file for any
+# purpose is hereby granted without fee, provided that the above copyright
+# and this permission notice appear in all copies. No representations are
+# made about the suitability of this software for any purpose. It is
+# provided "as is" without express or implied warranty.
+
+AC_DEFUN([AX_C99_FLEXIBLE_ARRAY],
+[AC_CACHE_CHECK(C99 struct flexible array support,
+ ac_cv_c99_flexible_array,
+
+# Initialize to unknown
+ac_cv_c99_flexible_array=no
+
+AC_TRY_LINK([[
+ #include <stdlib.h>
+
+ typedef struct {
+ int k;
+ char buffer [] ;
+ } MY_STRUCT ;
+ ]],
+ [ MY_STRUCT *p = calloc (1, sizeof (MY_STRUCT) + 42); ],
+ ac_cv_c99_flexible_array=yes,
+ ac_cv_c99_flexible_array=no
+ ))]
+) # AX_C99_FLEXIBLE_ARRAY
+
+# @synopsis AX_C99_FUNC_LRINT
+#
+# Check whether C99's lrint function is available.
+# @version 1.3 Feb 12 2002
+# @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+#
+# Permission to use, copy, modify, distribute, and sell this file for any
+# purpose is hereby granted without fee, provided that the above copyright
+# and this permission notice appear in all copies. No representations are
+# made about the suitability of this software for any purpose. It is
+# provided "as is" without express or implied warranty.
+#
+AC_DEFUN([AX_C99_FUNC_LRINT],
+[AC_CACHE_CHECK(for lrint,
+ ac_cv_c99_lrint,
+[
+lrint_save_CFLAGS=$CFLAGS
+CFLAGS="-lm"
+AC_TRY_LINK([
+#define _ISOC9X_SOURCE 1
+#define _ISOC99_SOURCE 1
+#define __USE_ISOC99 1
+#define __USE_ISOC9X 1
+
+#include <math.h>
+], if (!lrint(3.14159)) lrint(2.7183);, ac_cv_c99_lrint=yes, ac_cv_c99_lrint=no)
+
+CFLAGS=$lrint_save_CFLAGS
+
+])
+
+if test "$ac_cv_c99_lrint" = yes; then
+ AC_DEFINE(HAVE_LRINT, 1,
+ [Define if you have C99's lrint function.])
+fi
+])# AX_C99_FUNC_LRINT
+
+# @synopsis AX_C99_FUNC_LRINTF
+#
+# Check whether C99's lrintf function is available.
+# @version 1.3 Feb 12 2002
+# @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+#
+# Permission to use, copy, modify, distribute, and sell this file for any
+# purpose is hereby granted without fee, provided that the above copyright
+# and this permission notice appear in all copies. No representations are
+# made about the suitability of this software for any purpose. It is
+# provided "as is" without express or implied warranty.
+#
+AC_DEFUN([AX_C99_FUNC_LRINTF],
+[AC_CACHE_CHECK(for lrintf,
+ ac_cv_c99_lrintf,
+[
+lrintf_save_CFLAGS=$CFLAGS
+CFLAGS="-lm"
+AC_TRY_LINK([
+#define _ISOC9X_SOURCE 1
+#define _ISOC99_SOURCE 1
+#define __USE_ISOC99 1
+#define __USE_ISOC9X 1
+
+#include <math.h>
+], if (!lrintf(3.14159)) lrintf(2.7183);, ac_cv_c99_lrintf=yes, ac_cv_c99_lrintf=no)
+
+CFLAGS=$lrintf_save_CFLAGS
+
+])
+
+if test "$ac_cv_c99_lrintf" = yes; then
+ AC_DEFINE(HAVE_LRINTF, 1,
+ [Define if you have C99's lrintf function.])
+fi
+])# AX_C99_FUNC_LRINTF
+
+# @synopsis AX_C99_FUNC_LLRINT
+#
+# Check whether C99's llrint function is available.
+# @version 1.1 Sep 30 2002
+# @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+#
+# Permission to use, copy, modify, distribute, and sell this file for any
+# purpose is hereby granted without fee, provided that the above copyright
+# and this permission notice appear in all copies. No representations are
+# made about the suitability of this software for any purpose. It is
+# provided "as is" without express or implied warranty.
+#
+AC_DEFUN([AX_C99_FUNC_LLRINT],
+[AC_CACHE_CHECK(for llrint,
+ ac_cv_c99_llrint,
+[
+llrint_save_CFLAGS=$CFLAGS
+CFLAGS="-lm"
+AC_TRY_LINK([
+#define ISOC9X_SOURCE 1
+#define _ISOC99_SOURCE 1
+#define __USE_ISOC99 1
+#define __USE_ISOC9X 1
+
+#include <math.h>
+], long long int x ; x = llrint(3.14159) ;, ac_cv_c99_llrint=yes, ac_cv_c99_llrint=no)
+
+CFLAGS=$llrint_save_CFLAGS
+
+])
+
+if test "$ac_cv_c99_llrint" = yes; then
+ AC_DEFINE(HAVE_LLRINT, 1,
+ [Define if you have C99's llrint function.])
+fi
+])# AX_C99_FUNC_LLRINT
+
+
+# @synopsis AX_C99_FUNC_LLRINTF
+#
+# Check whether C99's llrintf function is available.
+# @version 1.1 Sep 30 2002
+# @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+#
+# Permission to use, copy, modify, distribute, and sell this file for any
+# purpose is hereby granted without fee, provided that the above copyright
+# and this permission notice appear in all copies. No representations are
+# made about the suitability of this software for any purpose. It is
+# provided "as is" without express or implied warranty.
+#
+AC_DEFUN([AX_C99_FUNC_LLRINTF],
+[AC_CACHE_CHECK(for llrintf,
+ ac_cv_c99_llrintf,
+[
+llrintf_save_CFLAGS=$CFLAGS
+CFLAGS="-lm"
+AC_TRY_LINK([
+#define _ISOC9X_SOURCE 1
+#define _ISOC99_SOURCE 1
+#define __USE_ISOC99 1
+#define __USE_ISOC9X 1
+
+#include <math.h>
+], long long int x ; x = llrintf(3.14159) ;, ac_cv_c99_llrintf=yes, ac_cv_c99_llrintf=no)
+
+CFLAGS=$llrintf_save_CFLAGS
+
+])
+
+if test "$ac_cv_c99_llrintf" = yes; then
+ AC_DEFINE(HAVE_LLRINTF, 1,
+ [Define if you have C99's llrintf function.])
+fi
+])# AX_C99_FUNC_LLRINTF
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigax_check_export_capabilitym4"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config/ax_check_export_capability.m4 (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config/ax_check_export_capability.m4         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config/ax_check_export_capability.m4        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+# @synopsis AX_CHECK_EXPORT_CAPABILITY
+#
+# Does the compiler support the exporting of library symbols?
+# @version 1.0 Jan 31 2009
+# @author Steve Underwood
+#
+# Permission to use, copy, modify, distribute, and sell this file for any
+# purpose is hereby granted without fee, provided that the above copyright
+# and this permission notice appear in all copies. No representations are
+# made about the suitability of this software for any purpose. It is
+# provided "as is" without express or implied warranty.
+
+AC_DEFUN([AX_CHECK_EXPORT_CAPABILITY],
+[AC_CACHE_CHECK([if $1 supports library symbol export],
+ ac_cv_symbol_export_capability,
+
+[# Initialize to unknown
+ac_cv_symbol_export_capability="no"
+
+case "${ax_cv_c_compiler_vendor}" in
+gnu)
+ save_CFLAGS="${CFLAGS}"
+ CFLAGS="${CFLAGS} -fvisibility=hidden"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [int foo __attribute__ ((visibility("default")));],
+ [;]
+ )],
+
+ [AC_MSG_RESULT([yes])
+ COMP_VENDOR_CFLAGS="-fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CFLAGS"
+ COMP_VENDOR_CXXFLAGS="-fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CXXFLAGS"
+ ac_cv_symbol_export_capability="yes"],
+
+ [AC_MSG_RESULT([no])]
+ )
+ CFLAGS="${save_CFLAGS}"
+ ;;
+
+sun)
+ save_CFLAGS="${CFLAGS}"
+ CFLAGS="${CFLAGS} -xldscope=hidden"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [int foo __attribute__ ((visibility("default")));],
+ [;]
+ )],
+
+ [AC_MSG_RESULT([yes])
+ COMP_VENDOR_CFLAGS="-xldscope=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CFLAGS"
+ COMP_VENDOR_CXXFLAGS="-xldscope=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CXXFLAGS"
+ ac_cv_symbol_export_capability="yes"],
+
+ [AC_MSG_RESULT([no])]
+ )
+ CFLAGS="${save_CFLAGS}"
+ ;;
+
+esac])
+AS_IF([test AS_VAR_GET(ac_cv_symbol_export_capability) = yes], [$2], [$3])[]dnl
+]) # AX_CHECK_EXPORT_CAPABILITY
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigax_check_real_filem4"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config/ax_check_real_file.m4 (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config/ax_check_real_file.m4         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config/ax_check_real_file.m4        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+# AX_CHECK_REAL_FILE(FILE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# ------------------------------------------------------------------
+#
+# Check for the existence of FILE, and make sure it is a real file or
+# directory, and not a symbolic link.
+#
+AC_DEFUN([AX_CHECK_REAL_FILE],
+[AC_DIAGNOSE([cross],
+         [cannot check for file existence when cross compiling])dnl
+AS_VAR_PUSHDEF([ac_RealFile], [ac_cv_real_file_$1])dnl
+AC_CACHE_CHECK([for $1], ac_RealFile,
+[test "$cross_compiling" = yes &&
+ AC_MSG_ERROR([cannot check for file existence when cross compiling])
+if test -r "$1"
+then
+ if test -h "$1"
+ then
+ AS_VAR_SET(ac_RealFile, no)
+ else
+ AS_VAR_SET(ac_RealFile, yes)
+ fi
+else
+ AS_VAR_SET(ac_RealFile, no)
+fi])
+AS_IF([test AS_VAR_GET(ac_RealFile) = yes], [$2], [$3])[]dnl
+AS_VAR_POPDEF([ac_RealFile])dnl
+])# AX_CHECK_REAL_FILE
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigax_compiler_vendorm4"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config/ax_compiler_vendor.m4 (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config/ax_compiler_vendor.m4         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config/ax_compiler_vendor.m4        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+# ===========================================================================
+# http://autoconf-archive.cryp.to/ax_compiler_vendor.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_COMPILER_VENDOR
+#
+# DESCRIPTION
+#
+# Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun,
+# hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft,
+# watcom, etc. The vendor is returned in the cache variable
+# $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++.
+#
+# LAST MODIFICATION
+#
+# 2008-04-12
+#
+# COPYLEFT
+#
+# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+# Copyright (c) 2008 Matteo Frigo
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Macro Archive. When you make and
+# distribute a modified version of the Autoconf Macro, you may extend this
+# special exception to the GPL to apply to your modified version as well.
+
+AC_DEFUN([AX_COMPILER_VENDOR],
+[
+AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor,
+ [ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown
+ # note: don't check for gcc first since some other compilers define __GNUC__
+ for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ pathscale:__PATHCC__,__PATHSCALE__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do
+ vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[
+#if !($vencpp)
+ thisisanerror;
+#endif
+])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break])
+ done
+ ])
+])
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigax_fixed_point_machinem4"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config/ax_fixed_point_machine.m4 (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config/ax_fixed_point_machine.m4         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config/ax_fixed_point_machine.m4        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+# AX_FIXED_POINT_MACHINE(MACHINE, [ACTION-IF-FIXED-POINT], [ACTION-IF-NOT-FIXED-POINT])
+# -------------------------------------------------------------------------------------
+#
+# Check if a specified machine type is a fixed point only machine. That is, if it lacks
+# fast floating point support.
+#
+# This is a simple lookup amongst machines known to the current autotools. So far we deal
+# with the embedded ARM, Blackfin, MIPS, TI DSP and XScale processors as things which lack
+# fast hardware floating point.
+#
+# Other candidates would be the small embedded Power PCs.
+#
+AC_DEFUN([AX_FIXED_POINT_MACHINE],
+[AS_VAR_PUSHDEF([ac_FixedPoint], [ac_cv_fixed_point_machine_$1])dnl
+AC_CACHE_CHECK([if $1 is fixed point only], ac_FixedPoint,
+[case $1 in
+ arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] \
+ | bfin \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | tic54x | c54x* | tic55x | c55x* | tic6x | c6x* \
+ | xscale | xscalee[bl] \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | bfin-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | xscale-* | xscalee[bl]-* )
+ AS_VAR_SET(ac_FixedPoint, yes)
+ ;;
+ *)
+ AS_VAR_SET(ac_FixedPoint, no)
+ ;;
+esac])
+AS_IF([test AS_VAR_GET(ac_FixedPoint) = yes], [$2], [$3])[]dnl
+AS_VAR_POPDEF([ac_FixedPoint])dnl
+])# AX_FIXED_POINT_MACHINE
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigax_misaligned_access_failsm4"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config/ax_misaligned_access_fails.m4 (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config/ax_misaligned_access_fails.m4         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config/ax_misaligned_access_fails.m4        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+# AX_MISALIGNED_ACCESS_FAILS(MACHINE, [ACTION-IF-MISALIGNED-FAILS], [ACTION-IF-MISALIGNED-OK])
+# -------------------------------------------------------------------------------------
+#
+# Check if a specified machine type cannot handle misaligned data. That is, multi-byte data
+# types which are not properly aligned in memory fail. Many machines are happy to work with
+# misaligned data, but slowing down a bit. Other machines just won't tolerate such data.
+#
+# This is a simple lookup amongst machines known to the current autotools. So far we only deal
+# with the ARM and sparc.
+# A lookup is used, as many of the devices which cannot handled misaligned access are embedded
+# processors, for which the code normally be cross-compiled.
+#
+AC_DEFUN([AX_MISALIGNED_ACCESS_FAILS],
+[AS_VAR_PUSHDEF([ac_MisalignedAccessFails], [ac_cv_misaligned_access_fails_$1])dnl
+AC_CACHE_CHECK([if $1 fails on misaligned memory access], ac_MisalignedAccessFails,
+[case $1 in
+ arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] \
+ | bfin \
+ | sparc \
+ | xscale | xscalee[bl] \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | bfin-* \
+ | sparc-* \
+ | xscale-* | xscalee[bl]-* )
+ AS_VAR_SET(ac_MisalignedAccessFails, yes)
+ ;;
+ *)
+ AS_VAR_SET(ac_MisalignedAccessFails, no)
+ ;;
+esac])
+AS_IF([test AS_VAR_GET(ac_MisalignedAccessFails) = yes], [$2], [$3])[]dnl
+AS_VAR_POPDEF([ac_MisalignedAccessFails])dnl
+])# MISALIGNED_ACCESS_FAILS
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfighin"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/config-h.in (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/config-h.in         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/config-h.in        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,269 @@
</span><ins>+/* config-h.in. Generated from configure.ac by autoheader. */
+
+/* Do not expect a misaligned memory access to work correctly */
+#undef BROADVOICE_MISALIGNED_ACCESS_FAILS
+
+/* Use the library symbol export capability of the compiler */
+#undef BROADVOICE_USE_EXPORT_CAPABILITY
+
+/* Enable fixed point processing, where possible, instead of floating point */
+#undef BROADVOICE_USE_FIXED_POINT
+
+/* Use the MMX instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_MMX
+
+/* Use the SSE instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE
+
+/* Use the SSE2 instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE2
+
+/* Use the SSE3 instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE3
+
+/* Use the SSE4A instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE4A
+
+/* Use the SSE4.1 instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE4_1
+
+/* Use the SSE4.2 instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE4_2
+
+/* Use the SSE5 instruction set (i386 and x86_64 only). */
+#undef BROADVOICE_USE_SSE5
+
+/* Define to 1 if you have the acosf() function. */
+#undef HAVE_ACOSF
+
+/* Define to 1 if you have the asinf() function. */
+#undef HAVE_ASINF
+
+/* Define to 1 if you have the atan2f() function. */
+#undef HAVE_ATAN2F
+
+/* Define to 1 if you have the atanf() function. */
+#undef HAVE_ATANF
+
+/* Define to 1 if you have the ceilf() function. */
+#undef HAVE_CEILF
+
+/* Define to 1 if you have the cosf() function. */
+#undef HAVE_COSF
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* Define to 1 if you have the expf() function. */
+#undef HAVE_EXPF
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the <float.h> header file. */
+#undef HAVE_FLOAT_H
+
+/* Define to 1 if you have the floorf() function. */
+#undef HAVE_FLOORF
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define if you have C99's llrint function. */
+#undef HAVE_LLRINT
+
+/* Define if you have C99's llrintf function. */
+#undef HAVE_LLRINTF
+
+/* Define to 1 if you have the log10f() function. */
+#undef HAVE_LOG10F
+
+/* Define to 1 if you have the logf() function. */
+#undef HAVE_LOGF
+
+/* Define to 1 if the system has the type `long double'. */
+#undef HAVE_LONG_DOUBLE
+
+/* Define to 1 if the system has the type `long long'. */
+#undef HAVE_LONG_LONG
+
+/* Define if you have C99's lrint function. */
+#undef HAVE_LRINT
+
+/* Define if you have C99's lrintf function. */
+#undef HAVE_LRINTF
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#undef HAVE_MALLOC
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have the powf() function. */
+#undef HAVE_POWF
+
+/* Define to 1 if your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#undef HAVE_REALLOC
+
+/* Define to 1 if you have the `select' function. */
+#undef HAVE_SELECT
+
+/* Define to 1 if you have the sinf() function. */
+#undef HAVE_SINF
+
+/* Define to 1 if you have the <sndfile.h> header file. */
+#undef HAVE_SNDFILE_H
+
+/* Define to 1 if you have the <socket.h> header file. */
+#undef HAVE_SOCKET_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#undef HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strchr' function. */
+#undef HAVE_STRCHR
+
+/* Define to 1 if you have the `strdup' function. */
+#undef HAVE_STRDUP
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the <sys/fcntl.h> header file. */
+#undef HAVE_SYS_FCNTL_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the tanf() function. */
+#undef HAVE_TANF
+
+/* Define to 1 if you have the <tgmath.h> header file. */
+#undef HAVE_TGMATH_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#undef RETSIGTYPE
+
+/* Define to the type of arg 1 for `select'. */
+#undef SELECT_TYPE_ARG1
+
+/* Define to the type of args 2, 3 and 4 for `select'. */
+#undef SELECT_TYPE_ARG234
+
+/* Define to the type of arg 5 for `select'. */
+#undef SELECT_TYPE_ARG5
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+ calls it, or to nothing if 'inline' is not supported under any name. */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to rpl_realloc if the replacement function should be used. */
+#undef realloc
+
+/* Define to empty if the keyword `volatile' does not work. Warning: valid
+ code using `volatile' can become incorrect without. Disable with care. */
+#undef volatile
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceconfigureac"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/configure.ac (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/configure.ac         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/configure.ac        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,393 @@
</span><ins>+#
+# broadvoice - a library for the BroadVoice 16 and 32 codecs
+#
+# configure.ac -- Process this file with autoconf to produce configure
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Id: configure.ac,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+# @start 1
+
+AC_INIT
+
+m4_include(config/ax_compiler_vendor.m4)
+m4_include(config/ax_check_real_file.m4)
+m4_include(config/ax_fixed_point_machine.m4)
+m4_include(config/ax_misaligned_access_fails.m4)
+m4_include(config/ax_c99_features.m4)
+m4_include(config/ax_check_export_capability.m4)
+
+BROADVOICE_MAJOR_VERSION=0
+BROADVOICE_MINOR_VERSION=0
+BROADVOICE_MICRO_VERSION=1
+
+BROADVOICE_LT_CURRENT=0
+BROADVOICE_LT_REVISION=1
+BROADVOICE_LT_AGE=0
+
+VERSION=$BROADVOICE_MAJOR_VERSION.$BROADVOICE_MINOR_VERSION.$BROADVOICE_MICRO_VERSION
+PACKAGE=broadvoice
+
+AC_SUBST(BROADVOICE_LT_CURRENT)
+AC_SUBST(BROADVOICE_LT_REVISION)
+AC_SUBST(BROADVOICE_LT_AGE)
+
+AC_CONFIG_SRCDIR([src/bitpack32.c])
+AC_CONFIG_AUX_DIR([config])
+AC_CONFIG_HEADERS([src/config.h:config-h.in])
+AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+
+AC_CANONICAL_HOST
+#AC_CANONICAL_BUILD
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_GCC_TRADITIONAL
+AC_PROG_LIBTOOL
+AC_LANG([C])
+
+AX_COMPILER_VENDOR
+
+if test "${build}" != "${host}"
+then
+ # If we are doing a Canadian Cross, in which the host and build systems
+ # are not the same, we set reasonable default values for the tools.
+
+ CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
+ CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
+ CC=${CC-${host_alias}-gcc}
+ CFLAGS=${CFLAGS-"-g -O2"}
+ CXX=${CXX-${host_alias}-c++}
+ CXXFLAGS=${CXXFLAGS-"-g -O2"}
+else
+ # Set reasonable default values for some tools even if not Canadian.
+ # Of course, these are different reasonable default values, originally
+ # specified directly in the Makefile.
+ # We don't export, so that autoconf can do its job.
+ # Note that all these settings are above the fragment inclusion point
+ # in Makefile.in, so can still be overridden by fragments.
+ # This is all going to change when we autoconfiscate...
+ CC_FOR_BUILD="\$(CC)"
+ CPPFLAGS_FOR_BUILD="\$(CPPFLAGS)"
+ AC_PROG_CC
+
+ # We must set the default linker to the linker used by gcc for the correct
+ # operation of libtool. If LD is not defined and we are using gcc, try to
+ # set the LD default to the ld used by gcc.
+ if test -z "$LD"
+ then
+ if test "$GCC" = yes
+ then
+ case $build in
+ *-*-mingw*)
+ gcc_prog_ld=`$CC -print-prog-name=ld 2>&1 | tr -d '\015'` ;;
+ *)
+ gcc_prog_ld=`$CC -print-prog-name=ld 2>&1` ;;
+ esac
+ case $gcc_prog_ld in
+ # Accept absolute paths.
+ [[\\/]* | [A-Za-z]:[\\/]*)]
+ LD="$gcc_prog_ld" ;;
+ esac
+ fi
+ fi
+
+ CXX=${CXX-"c++"}
+ CFLAGS=${CFLAGS-"-g -O2"}
+ CXXFLAGS=${CXXFLAGS-"-g -O2"}
+fi
+
+AC_DEFUN([REMOVE_FROM_VAR],[
+ new_val=""
+ removed=0
+ for i in $$1; do
+ if test "x$i" != "x$2"; then
+ new_val="$new_val $i"
+ else
+ removed=1
+ fi
+ done
+ if test $removed = "1"; then
+ echo " removed \"$2\" from $1"
+ $1=$new_val
+ fi
+])
+
+AC_C_CONST
+AC_C_INLINE
+AC_C_VOLATILE
+
+AC_CHECK_TYPES(long long)
+AC_CHECK_TYPES(long double)
+
+AC_TYPE_SIGNAL
+
+AC_ARG_ENABLE(doc, [ --enable-doc Build the documentation])
+AC_ARG_ENABLE(tests, [ --enable-tests Build the test programs])
+AC_ARG_ENABLE(mmx, [ --enable-mmx Enable MMX support])
+AC_ARG_ENABLE(sse, [ --enable-sse Enable SSE support])
+AC_ARG_ENABLE(sse2, [ --enable-sse2 Enable SSE2 support])
+AC_ARG_ENABLE(sse3, [ --enable-sse3 Enable SSE3 support])
+AC_ARG_ENABLE(sse3, [ --enable-sse3 Enable SSE3 support])
+AC_ARG_ENABLE(sse4_1, [ --enable-sse4-1 Enable SSE4.1 support])
+AC_ARG_ENABLE(sse4_2, [ --enable-sse4-2 Enable SSE4.2 support])
+AC_ARG_ENABLE(sse4a, [ --enable-sse4a Enable SSE4A support])
+AC_ARG_ENABLE(sse5, [ --enable-sse5 Enable SSE5 support])
+AC_ARG_ENABLE(fixed_point, [ --enable-fixed-point Enable fixed point support])
+
+AC_FUNC_ERROR_AT_LINE
+AC_FUNC_VPRINTF
+AC_FUNC_MALLOC
+AC_FUNC_MEMCMP
+AC_FUNC_REALLOC
+AC_FUNC_SELECT_ARGTYPES
+
+AX_C99_FUNC_LRINT
+AX_C99_FUNC_LRINTF
+AX_C99_FUNC_LLRINT
+AX_C99_FUNC_LLRINTF
+
+if test "x$ac_cv_c99_lrint" = "xno" ; then
+ if test "x$ac_cv_c99_lrintf" = "xno" ; then
+ AC_MSG_WARN([[*** Missing C99 standard functions lrint() and lrintf().]])
+ AC_MSG_WARN([[*** This may cause benign compiler warnings on some systems (ie Solaris).]])
+ fi
+fi
+
+AX_C99_FLEXIBLE_ARRAY
+
+AC_CHECK_FUNCS([memmove])
+AC_CHECK_FUNCS([memset])
+AC_CHECK_FUNCS([select])
+AC_CHECK_FUNCS([strcasecmp])
+AC_CHECK_FUNCS([strchr])
+AC_CHECK_FUNCS([strdup])
+AC_CHECK_FUNCS([strerror])
+AC_CHECK_FUNCS([strstr])
+AC_CHECK_FUNCS([strtol])
+AC_CHECK_FUNCS([gettimeofday])
+
+AC_HEADER_STDC
+AC_HEADER_SYS_WAIT
+AC_HEADER_TIME
+
+# Check for header files.
+AC_CHECK_HEADERS([socket.h])
+AC_CHECK_HEADERS([inttypes.h], [INSERT_INTTYPES_HEADER="#include <inttypes.h>"])
+AC_CHECK_HEADERS([stdint.h], [INSERT_STDINT_HEADER="#include <stdint.h>"])
+AC_CHECK_HEADERS([unistd.h])
+AC_CHECK_HEADERS([stdlib.h])
+AC_CHECK_HEADERS([string.h])
+AC_CHECK_HEADERS([strings.h])
+AC_CHECK_HEADERS([malloc.h])
+AC_CHECK_HEADERS([tgmath.h], [INSERT_TGMATH_HEADER="#include <tgmath.h>"])
+AC_CHECK_HEADERS([math.h], [INSERT_MATH_HEADER="#include <math.h>"])
+AC_CHECK_HEADERS([float.h])
+AC_CHECK_HEADERS([fcntl.h])
+AC_CHECK_HEADERS([sys/time.h])
+AC_CHECK_HEADERS([sys/select.h])
+AC_CHECK_HEADERS([sys/ioctl.h])
+AC_CHECK_HEADERS([sys/fcntl.h])
+AC_CHECK_HEADERS([sndfile.h])
+
+AC_LANG([C])
+
+if test "${build}" == "${host}"
+then
+ case "${host}" in
+ x86_64-*)
+ AX_CHECK_REAL_FILE([${prefix}/lib64], libdir='$(exec_prefix)/lib64')
+ ;;
+ esac
+fi
+
+# Checks for libraries.
+AC_CHECK_LIB([m], [cos])
+# Some platforms still seem to lack the basic single precision trig and power related function.
+AC_SEARCH_LIBS([sinf], [m], AC_DEFINE([HAVE_SINF], [1], [Define to 1 if you have the sinf() function.]))
+AC_SEARCH_LIBS([cosf], [m], AC_DEFINE([HAVE_COSF], [1], [Define to 1 if you have the cosf() function.]))
+AC_SEARCH_LIBS([tanf], [m], AC_DEFINE([HAVE_TANF], [1], [Define to 1 if you have the tanf() function.]))
+AC_SEARCH_LIBS([asinf], [m], AC_DEFINE([HAVE_ASINF], [1], [Define to 1 if you have the asinf() function.]))
+AC_SEARCH_LIBS([acosf], [m], AC_DEFINE([HAVE_ACOSF], [1], [Define to 1 if you have the acosf() function.]))
+AC_SEARCH_LIBS([atanf], [m], AC_DEFINE([HAVE_ATANF], [1], [Define to 1 if you have the atanf() function.]))
+AC_SEARCH_LIBS([atan2f], [m], AC_DEFINE([HAVE_ATAN2F], [1], [Define to 1 if you have the atan2f() function.]))
+AC_SEARCH_LIBS([ceilf], [m], AC_DEFINE([HAVE_CEILF], [1], [Define to 1 if you have the ceilf() function.]))
+AC_SEARCH_LIBS([floorf], [m], AC_DEFINE([HAVE_FLOORF], [1], [Define to 1 if you have the floorf() function.]))
+AC_SEARCH_LIBS([powf], [m], AC_DEFINE([HAVE_POWF], [1], [Define to 1 if you have the powf() function.]))
+AC_SEARCH_LIBS([expf], [m], AC_DEFINE([HAVE_EXPF], [1], [Define to 1 if you have the expf() function.]))
+AC_SEARCH_LIBS([logf], [m], AC_DEFINE([HAVE_LOGF], [1], [Define to 1 if you have the logf() function.]))
+AC_SEARCH_LIBS([log10f], [m], AC_DEFINE([HAVE_LOG10F], [1], [Define to 1 if you have the log10f() function.]))
+if test -n "$enable_tests" ; then
+ AC_CHECK_LIB([sndfile], [sf_open], TESTLIBS="$TESTLIBS -lsndfile", AC_MSG_ERROR("Can't make tests without libsndfile (does your system require a libsndfile-devel package?)"))
+fi
+
+AX_CHECK_EXPORT_CAPABILITY([$host],
+ [AC_DEFINE([BROADVOICE_USE_EXPORT_CAPABILITY], [1], [Use the library symbol export capability of the compiler])
+ BROADVOICE_USE_EXPORT_CAPABILITY="#define BROADVOICE_USE_EXPORT_CAPABILITY 1"],
+ [BROADVOICE_USE_EXPORT_CAPABILITY="#undef BROADVOICE_USE_EXPORT_CAPABILITY"])
+
+case "${ax_cv_c_compiler_vendor}" in
+gnu)
+ COMP_VENDOR_CFLAGS="-std=gnu99 -ffast-math -Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes"
+ if test "$enable_sse5" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse5 $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse4a" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse4a $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse4_2" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse42 $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse4_1" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse41 $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse3" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse3 $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse2" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse2 $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-msse $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_mmx" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-mmmx $COMP_VENDOR_CFLAGS"
+ fi
+ case $host_os in
+ mingw* | cygwin*)
+ COMP_VENDOR_LDFLAGS="-no-undefined"
+ ;;
+ *)
+ COMP_VENDOR_LDFLAGS=
+ ;;
+ esac
+ ;;
+sun)
+ COMP_VENDOR_CFLAGS="-xc99=all -mt -xCC -errwarn=%all -xvpara"
+ if test "$enable_sse3" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-native -fast $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse2" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-native -fast $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_sse" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-native -fast $COMP_VENDOR_CFLAGS"
+ fi
+ if test "$enable_mmx" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-native -fast $COMP_VENDOR_CFLAGS"
+ fi
+ COMP_VENDOR_LDFLAGS=
+ REMOVE_FROM_VAR(CFLAGS, -Xc)
+ ;;
+*)
+ COMP_VENDOR_CFLAGS="-std=c99 -Wall -Wunused-variable -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes"
+ COMP_VENDOR_LDFLAGS=
+ ;;
+esac
+
+COMP_VENDOR_CFLAGS="-DNDEBUG $COMP_VENDOR_CFLAGS"
+
+AM_CONDITIONAL([COND_DOC], [test "$enable_doc" = yes])
+AM_CONDITIONAL([COND_TESTS], [test "$enable_tests" = yes])
+AM_CONDITIONAL([COND_TESTDATA], [test "$enable_test_data" = yes])
+AM_CONDITIONAL([COND_MMX], [test "$enable_mmx" = yes])
+AM_CONDITIONAL([COND_SSE], [test "$enable_sse" = yes])
+AM_CONDITIONAL([COND_SSE2], [test "$enable_sse2" = yes])
+AM_CONDITIONAL([COND_SSE3], [test "$enable_sse3" = yes])
+AM_CONDITIONAL([COND_SSE4_1], [test "$enable_sse4_1" = yes])
+AM_CONDITIONAL([COND_SSE4_2], [test "$enable_sse4_2" = yes])
+AM_CONDITIONAL([COND_SSE4A], [test "$enable_sse4a" = yes])
+AM_CONDITIONAL([COND_SSE5], [test "$enable_sse5" = yes])
+if test "$enable_fixed_point" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_FIXED_POINT], [1], [Enable fixed point processing, where possible, instead of floating point])
+ BROADVOICE_USE_FIXED_POINT="#define BROADVOICE_USE_FIXED_POINT 1"
+ BROADVOICE_VECTORS_FOR_TESTS="fixed"
+else
+ AX_FIXED_POINT_MACHINE([$host],
+ [AC_DEFINE([BROADVOICE_USE_FIXED_POINT], [1], [Enable fixed point processing, where possible, instead of floating point])
+ BROADVOICE_USE_FIXED_POINT="#define BROADVOICE_USE_FIXED_POINT 1"],
+ [BROADVOICE_USE_FIXED_POINT="#undef BROADVOICE_USE_FIXED_POINT"])
+ BROADVOICE_VECTORS_FOR_TESTS="floating"
+fi
+AX_MISALIGNED_ACCESS_FAILS([$host],
+ [AC_DEFINE([BROADVOICE_MISALIGNED_ACCESS_FAILS], [1], [Do not expect a misaligned memory access to work correctly])
+ BROADVOICE_MISALIGNED_ACCESS_FAILS="#define BROADVOICE_MISALIGNED_ACCESS_FAILS 1"],
+ [BROADVOICE_MISALIGNED_ACCESS_FAILS="#undef BROADVOICE_MISALIGNED_ACCESS_FAILS"])
+
+if test "$enable_sse5" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE5], [1], [Use the SSE5 instruction set (i386 and x86_64 only).])
+ enable_sse4a="yes"
+fi
+if test "$enable_sse4a" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE4A], [1], [Use the SSE4A instruction set (i386 and x86_64 only).])
+ enable_sse4_2="yes"
+fi
+if test "$enable_sse4_2" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE4_2], [1], [Use the SSE4.2 instruction set (i386 and x86_64 only).])
+ enable_sse4_1="yes"
+fi
+if test "$enable_sse4_1" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).])
+ enable_sse3="yes"
+fi
+if test "$enable_sse3" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE3], [1], [Use the SSE3 instruction set (i386 and x86_64 only).])
+ enable_sse2="yes"
+fi
+if test "$enable_sse2" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE2], [1], [Use the SSE2 instruction set (i386 and x86_64 only).])
+ enable_sse="yes"
+fi
+if test "$enable_sse" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_SSE], [1], [Use the SSE instruction set (i386 and x86_64 only).])
+ enable_mmx="yes"
+fi
+if test "$enable_mmx" = "yes" ; then
+ AC_DEFINE([BROADVOICE_USE_MMX], [1], [Use the MMX instruction set (i386 and x86_64 only).])
+fi
+
+AC_SUBST(CC_FOR_BUILD)
+AC_SUBST(COMP_VENDOR_CFLAGS)
+AC_SUBST(COMP_VENDOR_LDFLAGS)
+AC_SUBST(TESTLIBS)
+AC_SUBST(BROADVOICE_USE_FIXED_POINT)
+AC_SUBST(BROADVOICE_MISALIGNED_ACCESS_FAILS)
+AC_SUBST(BROADVOICE_USE_EXPORT_CAPABILITY)
+AC_SUBST(BROADVOICE_VECTORS_FOR_TESTS)
+AC_SUBST(INSERT_INTTYPES_HEADER)
+AC_SUBST(INSERT_STDINT_HEADER)
+AC_SUBST(INSERT_TGMATH_HEADER)
+AC_SUBST(INSERT_MATH_HEADER)
+
+AC_CONFIG_FILES([Makefile
+ doc/Makefile
+ test-data/Makefile
+ test-data/local/Makefile
+ test-data/broadcom/Makefile
+ test-data/broadcom/fixed/Makefile
+ test-data/broadcom/floating/Makefile
+ test-data/broadcom/fixed/bv16/Makefile
+ test-data/broadcom/fixed/bv32/Makefile
+ test-data/broadcom/floating/bv16/Makefile
+ test-data/broadcom/floating/bv32/Makefile
+ src/Makefile
+ src/broadvoice.h
+ tests/Makefile
+ broadvoice.spec])
+
+AC_CONFIG_FILES([tests/regression_tests.sh], [chmod +x tests/regression_tests.sh])
+
+AC_OUTPUT
+
+# @end 1
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebianchangelog"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/changelog (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/changelog         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/changelog        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+broadvoice (0.0.1) unstable; urgency=low
+
+ [ Steve Underwood ]
+ * Begun
+
+ -- Steve Underwood <steveu@coppice.org> Tue, 19 Feb 2008 09:53:06 +0300
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebiancompat"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/compat (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/compat         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/compat        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+4
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebiancontrol"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/control (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/control         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/control        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+Source: broadvoice
+Section: libs
+Priority: optional
+Maintainer: Debian VoIP Team <pkg-voip-maintainers@lists.alioth.debian.org>
+Uploaders: Jose Carlos Garcia Sogo <jsogo@debian.org>, Kilian Krause <kilian@debian.org>, Santiago Garcia Mantinan <manty@debian.org>, Mark Purcell <msp@debian.org>, Tzafrir Cohen <tzafrir.cohen@xorcom.com>, Santiago Ruano Rincón <santiago@debian.org>
+Build-Depends: debhelper (>= 4.0.0), dpatch, doxygen, autotools-dev
+Standards-Version: 3.7.2
+XS-Vcs-Svn: svn://svn.debian.org/pkg-voip/
+XS-Vcs-Browser: http://svn.debian.org/wsvn/pkg-voip/
+
+Package: libgbroadvoice
+Architecture: any
+Depends: ${shlibs:Depends}
+Conflicts: libbroadvoice0, libbroadvoice1, libbroadvoice2
+Description: Telephony signal processing library
+ This package contains the BroadVoice 16 and 32 low bit rate speech codecs.
+ .
+ This package contains the shared library.
+
+Package: libbroadvoice-dev
+Section: libdevel
+Architecture: any
+Depends: libbroadvoice3 (= ${Source-Version})
+Description: Telephony signal processing library
+ This package contains the BroadVoice 16 and 32 low bit rate speech codecs.
+ .
+ This package contains the static library and development headers.
+ .
+ Homepage: http://www.soft-switch.org/
+
+Package: libbroadvoice-doc
+Section: doc
+Architecture: all
+Description: Documentation for the Broadvoice 16 and 32 low bit rate speech codecs.
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebiancopyright"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/copyright (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/copyright         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/copyright        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+This package was debianized by Steve Underwood <steveu@coppice.org> on
+Tue, 19 Feb 2008 15:22:58 +0100.
+
+It was downloaded from http://soft-switch.org/downloads/codecs/
+
+Copyright: Various
+
+License:
+
+LGPL 2.1
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebianlibbroadvoicedevinstall"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-dev.install (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-dev.install         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-dev.install        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+debian/tmp/usr/include
+debian/tmp/usr/lib/libbroadvoice.so
+debian/tmp/usr/lib/libbroadvoice.la
+debian/tmp/usr/lib/libbroadvoice.a
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebianlibbroadvoicedocinstall"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-doc.install (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-doc.install         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/libbroadvoice-doc.install        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+doc/api/html usr/share/doc/broadvoice-doc/api/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebianlibbroadvoice1install"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/libbroadvoice1.install (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/libbroadvoice1.install         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/libbroadvoice1.install        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+debian/tmp/usr/lib/libbroadvoice.so.0.*
+debian/tmp/usr/lib/libbroadvoice.so.0
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebianrules"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/rules (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/rules         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/rules        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,106 @@
</span><ins>+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+DEBVERSION:=$(shell head -n 1 debian/changelog \
+                 | sed -e 's/^[^(]*(\([^)]*\)).*/\1/')
+ORIGTARVER:=$(shell echo $(DEBVERSION) | sed -e 's/^.*://' -e 's/-[0-9.]*$$//')# -e 's/.dfsg$$//' -e 's/~//')
+
+UPVERSION:=$(shell echo $(ORIGTARVER) | tr -d '~')
+
+FILENAME := broadvoice_$(ORIGTARVER).orig.tar.gz
+FULLNAME := broadvoice-$(UPVERSION)
+URL := http://soft-switch.org/downloads/codecs/broadvoice-$(UPVERSION).tgz
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+        CFLAGS += -O0
+else
+        CFLAGS += -O2
+endif
+
+include /usr/share/dpatch/dpatch.make
+
+
+autotools: patch-stamp
+        ln -s /usr/share/misc/config.sub config.sub
+        ln -s /usr/share/misc/config.guess config.guess
+        touch autotools
+
+config.status: autotools configure
+        dh_testdir
+        CFLAGS="$(CFLAGS)" ./configure \
+         --host=$(DEB_HOST_GNU_TYPE) \
+         --build=$(DEB_BUILD_GNU_TYPE) \
+         --prefix=/usr \
+         --mandir=\$${prefix}/share/man \
+         --infodir=\$${prefix}/share/info \
+         --enable-doc
+
+build: build-stamp
+
+build-stamp: config.status
+        dh_testdir
+        $(MAKE)
+        touch build-stamp
+
+clean: clean-patched unpatch
+clean-patched:
+        dh_testdir
+        dh_testroot
+        rm -f build-stamp autotools
+        -$(MAKE) distclean
+
+        -$(RM) -f config.sub
+        -$(RM) -f config.guess
+
+        dh_clean
+
+install: build-stamp
+        dh_testdir
+        dh_testroot
+        dh_clean -k
+        $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
+
+binary-indep: build-stamp install
+        dh_testdir -i
+        dh_testroot -i
+        dh_installchangelogs -i ChangeLog
+        dh_installdocs -i DueDiligence
+        dh_install -i
+        dh_compress -i
+        dh_fixperms -i
+        dh_installdeb -i
+        dh_gencontrol -i
+        dh_md5sums -i
+        dh_builddeb -i
+
+binary-arch: build-stamp install
+        dh_testdir -a
+        dh_testroot -a
+        dh_installchangelogs -a ChangeLog
+        dh_installdocs -a DueDiligence
+        dh_install -a
+        dh_strip -a
+        dh_compress -a
+        dh_fixperms -a
+        dh_makeshlibs -a
+        dh_installdeb -a
+        dh_shlibdeps -a
+        dh_gencontrol -a
+        dh_md5sums -a
+        dh_builddeb -a
+
+get-orig-source:
+        -@@dh_testdir
+        @@[ -d ../tarballs/. ]||mkdir -p ../tarballs
+        @@echo Downloading $(FILENAME) from $(URL) ...
+        @@wget -N -nv -T10 -t3 -O ../tarballs/$(FILENAME) $(URL)
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install patch unpatch
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedebianwatch"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/debian/watch (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/debian/watch         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/debian/watch        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+# See uscan(1) for format
+
+# Compulsory line, this is a version 1 file
+version=1
+
+# <Webpage URL> <string match>
+http://soft-switch.org/downloads/voipcodecs/ broadvoice-(.*)\.tgz debian svn-upgrade
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedocMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/doc/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/doc/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/doc/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = css.css \
+ wrapper.xsl
+
+all: doxydocs
+
+doxydocs:
+        doxygen broadvoice-doxygen
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedocbroadvoicedoxygen"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/doc/broadvoice-doxygen (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/doc/broadvoice-doxygen         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/doc/broadvoice-doxygen        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,1229 @@
</span><ins>+# Doxyfile 1.4.4
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = libg722_1
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = 0.0.1
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = api
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = YES
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the progam writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT =
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ..
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS = *.c \
+ *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = NO
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 2
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT =
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET = css.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT =
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT =
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT =
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION =
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedoccsscss"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/doc/css.css (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/doc/css.css         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/doc/css.css        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,564 @@
</span><ins>+body {
+        background-image: url("../images/weave.jpg");
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        color: black;
+        margin-right: 20px;
+        margin-left: 20px;
+}
+
+h1 {
+        text-align: center;
+}
+
+h2 {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        border-color: #c00000;
+        color : black;
+        margin-top: 0.8em;
+        border-style: solid;
+        border-width: 0px 0px 3px 0.5em;
+        line-height : 130%;
+}
+
+h3 {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        border-color: #f02020;
+        color : black;
+        border-width: 0px 0px 2px 0.5em;
+        border-style: solid;
+        margin-right: 20%;
+        line-height : 130%;
+}
+caption {
+        font-weight: bold
+}
+a.qindex {}
+a.qindexRef {}
+a.el {
+        text-decoration: none;
+        font-weight: bold
+}
+a.elRef {
+        font-weight: bold
+}
+a.code {
+        text-decoration: none;
+        font-weight: normal;
+        color: #4444ee
+}
+a.codeRef {
+        font-weight: normal;
+        color: #4444ee
+}
+a:hover {
+        text-decoration: none;
+        background-color: #f2f2ff
+}
+dl.el {
+        margin-left: -1cm
+}
+div.fragment {
+        width: 100%;
+        border: none;
+        background-color: #eeeeee
+}
+div.ah {
+        background-color: black;
+        font-weight: bold;
+        color: #ffffff;
+        margin-bottom: 3px;
+        margin-top: 3px
+}
+
+td {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        font-weight: bold;
+}
+
+.navheader {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        background-color: #B2B2ff;
+        font-weight: bold;
+}
+
+.navfooter {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        background-color: #B2B2ff;
+        font-weight: bold;
+}
+
+table.menu {
+        background-color: #000066;
+        font-weight: bold;
+        text-align: center;
+        width: 100%;
+}
+
+tr.menu {
+        background-color: #ccffff;
+        font-weight: bold;
+        text-align: center;
+}
+td.menu {
+        background-color: #f2e0d0;
+        font-weight: bold;
+        text-align: center;
+}
+
+td.md {
+        background-color: #f2f2ff;
+        font-weight: bold;
+}
+td.mdname1 {
+        background-color: #f2f2ff;
+        font-weight: bold;
+        color: #602020;
+}
+td.mdname {
+        background-color: #f2f2ff;
+        font-weight: bold;
+        color: #602020;
+        width: 600px;
+}
+div.groupHeader {
+        margin-left: 16px;
+        margin-top: 12px;
+        margin-bottom: 6px;
+        font-weight: bold
+}
+div.groupText {
+        margin-left: 16px;
+        font-style: italic;
+        font-size: smaller
+}
+td.indexkey {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        background-color: #eeeeff;
+        font-weight: bold;
+        padding-right : 10px;
+        padding-top : 2px;
+        padding-left : 10px;
+        padding-bottom : 2px;
+        margin-left : 0px;
+        margin-right : 0px;
+        margin-top : 2px;
+        margin-bottom : 2px
+}
+td.indexvalue {
+        font-family: Verdana, Arial, Helvetica, Sans-serif;
+        background-color: #eeeeff;
+        font-style: italic;
+        padding-right : 10px;
+        padding-top : 2px;
+        padding-left : 10px;
+        padding-bottom : 2px;
+        margin-left : 0px;
+        margin-right : 0px;
+        margin-top : 2px;
+        margin-bottom : 2px
+}
+span.keyword {
+        color: #008000
+}
+span.keywordtype {
+        color: #604020
+}
+span.keywordflow {
+        color: #e08000
+}
+span.comment {
+        color: #800000
+}
+span.preprocessor {
+        color: #806020
+}
+span.stringliteral {
+        color: #002080
+}
+span.charliteral {
+        color: #008080
+}
+em {
+        color: #990000;
+        background-color: transparent;
+}
+h1,h2,h3,h4,h5,h6,p,center,td,th,ul,dl,div {
+        font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+body,td {
+        font-size: 90%;
+}
+h1 {
+        text-align: center;
+        font-size: 160%;
+}
+h2 {
+        font-size: 120%;
+}
+h3 {
+        font-size: 100%;
+}
+caption {
+        font-weight: bold
+}
+div.qindex {
+        width: 100%;
+        background-color: #eeeeff;
+        border: 1px solid #b0b0b0;
+        text-align: center;
+        margin: 2px;
+        padding: 2px;
+        line-height: 140%;
+}
+div.nav {
+        width: 100%;
+        background-color: #eeeeff;
+        border: 1px solid #b0b0b0;
+        text-align: center;
+        margin: 2px;
+        padding: 2px;
+        line-height: 140%;
+}
+div.navtab {
+        background-color: #eeeeff;
+        border: 1px solid #b0b0b0;
+        text-align: center;
+        margin: 2px;
+        margin-right: 15px;
+        padding: 2px;
+}
+td.navtab {
+        font-size: 70%;
+}
+a.qindex {
+        text-decoration: none;
+        font-weight: bold;
+        color: #1a419d;
+}
+a.qindex:visited {
+        text-decoration: none;
+        font-weight: bold;
+        color: #1a419d
+}
+a.qindex:hover {
+        text-decoration: none;
+        background-color: #ddddff;
+}
+a.qindexHL {
+        text-decoration: none;
+        font-weight: bold;
+        background-color: #6666cc;
+        color: #ffffff;
+        border: 1px double #9295C2;
+}
+a.qindexHL:hover {
+        text-decoration: none;
+        background-color: #6666cc;
+        color: #ffffff;
+}
+a.qindexHL:visited {
+        text-decoration: none;
+        background-color: #6666cc;
+        color: #ffffff
+}
+a.el {
+        text-decoration: none;
+        font-weight: bold
+}
+a.elRef {
+        font-weight: bold
+}
+a.code:link {
+        text-decoration: none;
+        font-weight: normal;
+        color: #0000FF
+}
+a.code:visited {
+        text-decoration: none;
+        font-weight: normal;
+        color: #0000FF
+}
+a.codeRef:link {
+        font-weight: normal;
+        color: #0000FF
+}
+a.codeRef:visited {
+        font-weight: normal;
+        color: #0000FF
+}
+a:hover {
+        text-decoration: none;
+        background-color: #f2f2ff
+}
+dl.el {
+        margin-left: -1cm
+}
+.fragment {
+        font-family: Fixed, monospace;
+        font-size: 95%;
+}
+pre.fragment {
+        border: 1px solid #CCCCCC;
+        background-color: #f5f5f5;
+        margin-top: 4px;
+        margin-bottom: 4px;
+        margin-left: 2px;
+        margin-right: 8px;
+        padding-left: 6px;
+        padding-right: 6px;
+        padding-top: 4px;
+        padding-bottom: 4px;
+}
+div.ah {
+        background-color: black;
+        font-weight: bold;
+        color: #ffffff;
+        margin-bottom: 3px;
+        margin-top: 3px
+}
+td.md {
+        background-color: #F4F4FB;
+        font-weight: bold;
+}
+td.mdPrefix {
+        background-color: #F4F4FB;
+        color: #606060;
+        font-size: 80%;
+}
+td.mdname1 {
+        background-color: #F4F4FB;
+        font-weight: bold;
+        color: #602020;
+}
+td.mdname {
+        background-color: #F4F4FB;
+        font-weight: bold;
+        color: #602020;
+        width: 600px;
+}
+div.groupHeader {
+        margin-left: 16px;
+        margin-top: 12px;
+        margin-bottom: 6px;
+        font-weight: bold;
+}
+div.groupText {
+        margin-left: 16px;
+        font-style: italic;
+        font-size: 90%
+}
+td.indexkey {
+        background-color: #eeeeff;
+        font-weight: bold;
+        padding-right : 10px;
+        padding-top : 2px;
+        padding-left : 10px;
+        padding-bottom : 2px;
+        margin-left : 0px;
+        margin-right : 0px;
+        margin-top : 2px;
+        margin-bottom : 2px;
+        border: 1px solid #CCCCCC;
+}
+td.indexvalue {
+        background-color: #eeeeff;
+        font-style: italic;
+        padding-right : 10px;
+        padding-top : 2px;
+        padding-left : 10px;
+        padding-bottom : 2px;
+        margin-left : 0px;
+        margin-right : 0px;
+        margin-top : 2px;
+        margin-bottom : 2px;
+        border: 1px solid #CCCCCC;
+}
+tr.memlist {
+        background-color: #f0f0f0;
+}
+p.formulaDsp {
+        text-align: center;
+}
+img.formulaDsp {
+}
+img.formulaInl {
+        vertical-align: middle;
+}
+span.keyword {
+        color: #008000
+}
+span.keywordtype {
+        color: #604020
+}
+span.keywordflow {
+        color: #e08000
+}
+span.comment {
+        color: #800000
+}
+span.preprocessor {
+        color: #806020
+}
+span.stringliteral {
+        color: #002080
+}
+span.charliteral {
+        color: #008080
+}
+.mdTable {
+        border: 1px solid #868686;
+        background-color: #F4F4FB;
+}
+.mdRow {
+        padding: 8px 10px;
+}
+.mdescLeft {
+        padding: 0px 8px 4px 8px;
+        font-size: 80%;
+        font-style: italic;
+        background-color: #FAFAFA;
+        border-top: 1px none #E0E0E0;
+        border-right: 1px none #E0E0E0;
+        border-bottom: 1px none #E0E0E0;
+        border-left: 1px none #E0E0E0;
+        margin: 0px;
+}
+.mdescRight {
+        padding: 0px 8px 4px 8px;
+        font-size: 80%;
+        font-style: italic;
+        background-color: #FAFAFA;
+        border-top: 1px none #E0E0E0;
+        border-right: 1px none #E0E0E0;
+        border-bottom: 1px none #E0E0E0;
+        border-left: 1px none #E0E0E0;
+        margin: 0px;
+}
+.memItemLeft {
+        padding: 1px 0px 0px 8px;
+        margin: 4px;
+        border-top-width: 1px;
+        border-right-width: 1px;
+        border-bottom-width: 1px;
+        border-left-width: 1px;
+        border-top-color: #E0E0E0;
+        border-right-color: #E0E0E0;
+        border-bottom-color: #E0E0E0;
+        border-left-color: #E0E0E0;
+        border-top-style: solid;
+        border-right-style: none;
+        border-bottom-style: none;
+        border-left-style: none;
+        background-color: #FAFAFA;
+        font-size: 80%;
+}
+.memItemRight {
+        padding: 1px 8px 0px 8px;
+        margin: 4px;
+        border-top-width: 1px;
+        border-right-width: 1px;
+        border-bottom-width: 1px;
+        border-left-width: 1px;
+        border-top-color: #E0E0E0;
+        border-right-color: #E0E0E0;
+        border-bottom-color: #E0E0E0;
+        border-left-color: #E0E0E0;
+        border-top-style: solid;
+        border-right-style: none;
+        border-bottom-style: none;
+        border-left-style: none;
+        background-color: #FAFAFA;
+        font-size: 80%;
+}
+.memTemplItemLeft {
+        padding: 1px 0px 0px 8px;
+        margin: 4px;
+        border-top-width: 1px;
+        border-right-width: 1px;
+        border-bottom-width: 1px;
+        border-left-width: 1px;
+        border-top-color: #E0E0E0;
+        border-right-color: #E0E0E0;
+        border-bottom-color: #E0E0E0;
+        border-left-color: #E0E0E0;
+        border-top-style: none;
+        border-right-style: none;
+        border-bottom-style: none;
+        border-left-style: none;
+        background-color: #FAFAFA;
+        font-size: 80%;
+}
+.memTemplItemRight {
+        padding: 1px 8px 0px 8px;
+        margin: 4px;
+        border-top-width: 1px;
+        border-right-width: 1px;
+        border-bottom-width: 1px;
+        border-left-width: 1px;
+        border-top-color: #E0E0E0;
+        border-right-color: #E0E0E0;
+        border-bottom-color: #E0E0E0;
+        border-left-color: #E0E0E0;
+        border-top-style: none;
+        border-right-style: none;
+        border-bottom-style: none;
+        border-left-style: none;
+        background-color: #FAFAFA;
+        font-size: 80%;
+}
+.memTemplParams {
+        padding: 1px 0px 0px 8px;
+        margin: 4px;
+        border-top-width: 1px;
+        border-right-width: 1px;
+        border-bottom-width: 1px;
+        border-left-width: 1px;
+        border-top-color: #E0E0E0;
+        border-right-color: #E0E0E0;
+        border-bottom-color: #E0E0E0;
+        border-left-color: #E0E0E0;
+        border-top-style: solid;
+        border-right-style: none;
+        border-bottom-style: none;
+        border-left-style: none;
+        color: #606060;
+        background-color: #FAFAFA;
+        font-size: 80%;
+}
+.search {
+        color: #003399;
+        font-weight: bold;
+}
+form.search {
+        margin-bottom: 0px;
+        margin-top: 0px;
+}
+input.search {
+        font-size: 75%;
+        color: #000080;
+        font-weight: normal;
+        background-color: #eeeeff;
+}
+td.tiny {
+        font-size: 75%;
+}
+a {
+        color: #252e78;
+}
+a:visited {
+        color: #3d2185;
+}
+.dirtab {
+        padding: 4px;
+        border-collapse: collapse;
+        border: 1px solid #b0b0b0;
+}
+th.dirtab {
+        background: #eeeeff;
+        font-weight: bold;
+}
+hr {
+        height: 1px;
+        border: none;
+        border-top: 1px solid black;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicedocwrapperxsl"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/doc/wrapper.xsl (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/doc/wrapper.xsl         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/doc/wrapper.xsl        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
+ <xsl:param name="html.stylesheet">css.css</xsl:param>
+</xsl:stylesheet>
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,166 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the Lesser GNU General Public License version 2.1, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
+AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
+
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = broadvoice/version.h.in \
+ broadvoice.dsp \
+ broadvoice.sln \
+ broadvoice.vcproj \
+ msvc/gettimeofday.c \
+ msvc/inttypes.h \
+ msvc/tgmath.h \
+ msvc/unistd.h \
+ msvc/sys/time.h \
+ msvc/broadvoice.def \
+ msvc/msvcproj.head \
+ msvc/msvcproj.foot \
+ msvc/vc8proj.head \
+ msvc/vc8proj.foot
+
+INCLUDES = -I$(top_builddir) -Ifloating/common -Ifloating/bv16 -Ifloating/bv32
+
+lib_LTLIBRARIES = libbroadvoice.la
+
+libbroadvoice_la_SOURCES = bitstream.c \
+ floating/common/a2lsp.c \
+ floating/common/allpole.c \
+ floating/common/allzero.c \
+ floating/common/autocor.c \
+ floating/common/cmtables.c \
+ floating/common/levdur.c \
+ floating/common/lsp2a.c \
+ floating/common/stblchck.c \
+ floating/common/stblzlsp.c \
+ floating/common/utility.c \
+ bitpack16.c \
+ floating/bv16/bv16decoder.c \
+ floating/bv16/bv16encoder.c \
+ floating/bv16/bv16coarse_pitch.c \
+ floating/bv16/bv16excdec.c \
+ floating/bv16/bv16excquan.c \
+ floating/bv16/bv16fine_pitch.c \
+ floating/bv16/bv16gaindec.c \
+ floating/bv16/bv16gainquan.c \
+ floating/bv16/bv16levelest.c \
+ floating/bv16/bv16lspdec.c \
+ floating/bv16/bv16lspquan.c \
+ floating/bv16/bv16plc.c \
+ floating/bv16/bv16ptdec.c \
+ floating/bv16/bv16postfilter.c \
+ floating/bv16/bv16ptquan.c \
+ floating/bv16/bv16tables.c \
+ bitpack32.c \
+ floating/bv32/bv32decoder.c \
+ floating/bv32/bv32encoder.c \
+ floating/bv32/bv32coarse_pitch.c \
+ floating/bv32/bv32excdec.c \
+ floating/bv32/bv32excquan.c \
+ floating/bv32/bv32fine_pitch.c \
+ floating/bv32/bv32gaindec.c \
+ floating/bv32/bv32gainquan.c \
+ floating/bv32/bv32levelest.c \
+ floating/bv32/bv32lspdec.c \
+ floating/bv32/bv32lspquan.c \
+ floating/bv32/bv32plc.c \
+ floating/bv32/bv32ptdec.c \
+ floating/bv32/bv32ptquan.c \
+ floating/bv32/bv32tables.c
+
+libbroadvoice_la_LDFLAGS = -version-info @BROADVOICE_LT_CURRENT@:@BROADVOICE_LT_REVISION@:@BROADVOICE_LT_AGE@ $(COMP_VENDOR_LDFLAGS)
+
+nobase_include_HEADERS = broadvoice/broadvoice.h \
+ broadvoice/version.h \
+ broadvoice/private/broadvoice.h
+
+nodist_include_HEADERS = broadvoice.h
+
+noinst_HEADERS = bitpack16.h \
+ bitpack32.h \
+ bitstream.h \
+ floating/bv16/bv16cnst.h \
+ floating/bv16/bv16externs.h \
+ floating/bv16/bv16postfilter.h \
+ floating/bv16/bv16strct.h \
+ floating/bv32/bv32cnst.h \
+ floating/bv32/bv32externs.h \
+ floating/bv32/bv32strct.h \
+ floating/common/bvcommon.h \
+ floating/common/typedef.h \
+ floating/common/utility.h
+
+noinst_PROGRAMS =
+
+DSP = broadvoice.dsp
+VCPROJ = broadvoice.vcproj
+
+WIN32SOURCES = $(broadvoice_la_SOURCES) msvc/gettimeofday.c
+WIN32HEADERS = $(nobase_include_HEADERS) broadvoice.h
+
+DSPOUT = | awk '{printf("%s\r\n", $$0)}' >> $(DSP)
+VCPROJOUT = | awk '{printf("%s\r\n", $$0)}' >> $(VCPROJ)
+
+$(DSP): msvc/msvcproj.head msvc/msvcproj.foot Makefile.am
+        echo "creating $(DSP)"
+        @(cp $(srcdir)/msvc/msvcproj.head $(DSP); \
+        echo "# Begin Group \"Source Files\"" $(DSPOUT); \
+        for file in $(WIN32SOURCES); do \
+        echo "# Begin Source File" $(DSPOUT); \
+        echo "" $(DSPOUT); \
+        echo "SOURCE=.\\"$$file $(DSPOUT); \
+        echo "# End Source File" $(DSPOUT); \
+        done; \
+        echo "# End Group" $(DSPOUT); \
+        echo "# Begin Group \"Header Files\"" $(DSPOUT); \
+        for file in $(WIN32HEADERS); do \
+        echo "# Begin Source File" $(DSPOUT); \
+        echo "" $(DSPOUT); \
+        echo "SOURCE=.\\"$$file $(DSPOUT); \
+        echo "# End Source File" $(DSPOUT); \
+        done; \
+        echo "# End Group" $(DSPOUT); \
+        cat $(srcdir)/msvc/msvcproj.foot $(DSPOUT) )
+
+$(VCPROJ): msvc/vc8proj.head msvc/vc8proj.foot Makefile.am
+        echo "creating $(VCPROJ)"
+        @(cp $(srcdir)/msvc/vc8proj.head $(VCPROJ); \
+        for file in $(WIN32SOURCES); do \
+                echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
+        done; \
+        echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT); \
+        for file in $(WIN32HEADERS); do \
+                echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
+        done; \
+        cat $(srcdir)/msvc/vc8proj.foot $(VCPROJOUT) )
+
+broadvoice/version.h:
+        NOWDATE=`date --utc +"%Y%m%d"` ; \
+        NOWTIME=`date --utc +"%H%M%S"` ; \
+        sed 's/$$BROADVOICE_RELEASE_DATE/'$$NOWDATE'/;s/$$BROADVOICE_RELEASE_TIME/'$$NOWTIME'/' \
+                <broadvoice/version.h.in >broadvoice/version.h
+
+dist-hook:
+        NOWDATE=`date --utc +"%Y%m%d"` ; \
+        NOWTIME=`date --utc +"%H%M%S"` ; \
+        sed 's/$$BROADVOICE_RELEASE_DATE/'$$NOWDATE'/;s/$$BROADVOICE_RELEASE_TIME/'$$NOWTIME'/' \
+                <broadvoice/version.h.in >broadvoice/version.h
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbitpack16c"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/bitpack16.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/bitpack16.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/bitpack16.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bitpack16.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bitpack16.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+
+#include "broadvoice.h"
+#include "bv16strct.h"
+#include "bitstream.h"
+#include "bitpack16.h"
+
+/*
+ * The following is the bit table within the bit structure for
+ * BroadVoice16
+ *
+ * int16_t bit_table[] =
+ * {
+ * 7, 7, // LSP
+ * 7, // Pitch Lag
+ * 5, // Pitch Gain
+ * 4, // Excitation Vector Log-Gain
+ * 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 // Excitation Vector
+ * };
+ */
+
+int bv16_bitpack(uint8_t *PackedStream, struct BV16_Bit_Stream *BitStruct)
+{
+ bitstream_state_t bs;
+ uint8_t *stream;
+ int i;
+
+ stream = PackedStream;
+ bitstream_init(&bs);
+ bitstream_put(&bs, &stream, BitStruct->lspidx[0], 7);
+ bitstream_put(&bs, &stream, BitStruct->lspidx[1], 7);
+ bitstream_put(&bs, &stream, BitStruct->ppidx, 7);
+ bitstream_put(&bs, &stream, BitStruct->bqidx, 5);
+ bitstream_put(&bs, &stream, BitStruct->gidx, 4);
+
+ for (i = 0; i < 10; i++)
+ bitstream_put(&bs, &stream, BitStruct->qvidx[i], 5);
+ bitstream_flush(&bs, &stream);
+ return stream - PackedStream;
+}
+
+void bv16_bitunpack(const uint8_t *PackedStream, struct BV16_Bit_Stream *BitStruct)
+{
+ bitstream_state_t bs;
+ const uint8_t *stream;
+ int i;
+
+ stream = PackedStream;
+ bitstream_init(&bs);
+
+ BitStruct->lspidx[0] = bitstream_get(&bs, &stream, 7);
+ BitStruct->lspidx[1] = bitstream_get(&bs, &stream, 7);
+ BitStruct->ppidx = bitstream_get(&bs, &stream, 7);
+ BitStruct->bqidx = bitstream_get(&bs, &stream, 5);
+ BitStruct->gidx = bitstream_get(&bs, &stream, 4);
+
+ for (i = 0; i < 10; i++)
+ BitStruct->qvidx[i] = bitstream_get(&bs, &stream, 5);
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbitpack16h"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/bitpack16.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/bitpack16.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/bitpack16.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bitpack16.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bitpack16.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_BITPACK16_H_)
+#define _BITPACK16_H_
+
+int bv16_bitpack(uint8_t *PackedStream, struct BV16_Bit_Stream *BitStruct);
+void bv16_bitunpack(const uint8_t *PackedStream, struct BV16_Bit_Stream *BitStruct);
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbitpack32c"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/bitpack32.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/bitpack32.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/bitpack32.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,96 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bitpack32.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bitpack32.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+
+#include "broadvoice.h"
+#include "bv32strct.h"
+#include "bitstream.h"
+#include "bitpack32.h"
+
+/*
+ * The following is the bit table within the bit structure for
+ * BroadVoice32
+ *
+ * int16_t bit_table[] =
+ * {
+ * 7, 5, 5, // LSP
+ * 8, // Pitch Lag
+ * 5, // Pitch Gain
+ * 5, 5, // Excitation Vector Log-Gain
+ * 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, // Excitation Vector 1st subframe
+ * 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 // Excitation Vector 2nd subframe
+ * };
+ */
+
+int bv32_bitpack(uint8_t *PackedStream, struct BV32_Bit_Stream *BitStruct)
+{
+ bitstream_state_t bs;
+ uint8_t *stream;
+ int i;
+
+ stream = PackedStream;
+ bitstream_init(&bs);
+ bitstream_put(&bs, &stream, BitStruct->lspidx[0], 7);
+ bitstream_put(&bs, &stream, BitStruct->lspidx[1], 5);
+ bitstream_put(&bs, &stream, BitStruct->lspidx[2], 5);
+ bitstream_put(&bs, &stream, BitStruct->ppidx, 8);
+ bitstream_put(&bs, &stream, BitStruct->bqidx, 5);
+ bitstream_put(&bs, &stream, BitStruct->gidx[0], 5);
+ bitstream_put(&bs, &stream, BitStruct->gidx[1], 5);
+ for (i = 0; i < 20; i++)
+ bitstream_put(&bs, &stream, BitStruct->qvidx[i], 6);
+ bitstream_flush(&bs, &stream);
+ return stream - PackedStream;
+}
+
+void bv32_bitunpack(const uint8_t *PackedStream, struct BV32_Bit_Stream *BitStruct)
+{
+ bitstream_state_t bs;
+ const uint8_t *stream;
+ int i;
+
+ stream = PackedStream;
+ bitstream_init(&bs);
+
+ BitStruct->lspidx[0] = bitstream_get(&bs, &stream, 7);
+ BitStruct->lspidx[1] = bitstream_get(&bs, &stream, 5);
+ BitStruct->lspidx[2] = bitstream_get(&bs, &stream, 5);
+
+ BitStruct->ppidx = bitstream_get(&bs, &stream, 8);
+ BitStruct->bqidx = bitstream_get(&bs, &stream, 5);
+ BitStruct->gidx[0] = bitstream_get(&bs, &stream, 5);
+ BitStruct->gidx[1] = bitstream_get(&bs, &stream, 5);
+
+ for (i = 0; i < 20; i++)
+ BitStruct->qvidx[i] = bitstream_get(&bs, &stream, 6);
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbitpack32h"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/bitpack32.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/bitpack32.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/bitpack32.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bitpack32.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bitpack32.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_BITPACK32_H_)
+#define _BITPACK32_H_
+
+int bv32_bitpack(uint8_t *PackedStream, struct BV32_Bit_Stream *BitStruct);
+void bv32_bitunpack(const uint8_t *PackedStream, struct BV32_Bit_Stream *BitStruct);
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbitstreamc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/bitstream.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/bitstream.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/bitstream.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,123 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bitstream.c -
+ *
+ * Copyright 2009 by Steve Underwood <steveu@coppice.org>
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bitstream.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "bitstream.h"
+
+void bitstream_put(bitstream_state_t *s, uint8_t **c, uint32_t value, int bits)
+{
+ if (bits < 32)
+ value &= ((1 << bits) - 1);
+ if (bits > 24)
+ {
+ /* We can't deal with this many bits in one go. Split up the operation */
+ bits -= 8;
+ s->bitstream = (s->bitstream << bits) | (value >> 8);
+ s->residue += bits;
+ while (s->residue >= 8)
+ {
+ s->residue -= 8;
+ *(*c)++ = (uint8_t) ((s->bitstream >> s->residue) & 0xFF);
+ }
+ bits = 8;
+ value &= 0xFF;
+ }
+ s->bitstream = (s->bitstream << bits) | value;
+ s->residue += bits;
+ while (s->residue >= 8)
+ {
+ s->residue -= 8;
+ *(*c)++ = (uint8_t) ((s->bitstream >> s->residue) & 0xFF);
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+uint32_t bitstream_get(bitstream_state_t *s, const uint8_t **c, int bits)
+{
+ uint32_t x;
+
+ if (bits > 24)
+ {
+ /* We can't deal with this many bits in one go. Split up the operation */
+ while (s->residue < 24)
+ {
+ s->bitstream = (s->bitstream << 8) | ((uint32_t) *(*c)++);
+ s->residue += 8;
+ }
+ s->residue -= 24;
+ bits -= 24;
+ x = ((s->bitstream >> s->residue) & 0xFFFFFF) << bits;
+ while (s->residue < bits)
+ {
+ s->bitstream = (s->bitstream << 8) | ((uint32_t) *(*c)++);
+ s->residue += 8;
+ }
+ s->residue -= bits;
+ x |= (s->bitstream >> s->residue) & ((1 << bits) - 1);
+ }
+ else
+ {
+ while (s->residue < bits)
+ {
+ s->bitstream = (s->bitstream << 8) | ((uint32_t) *(*c)++);
+ s->residue += 8;
+ }
+ s->residue -= bits;
+ x = (s->bitstream >> s->residue) & ((1 << bits) - 1);
+ }
+ return x;
+}
+/*- End of function --------------------------------------------------------*/
+
+void bitstream_flush(bitstream_state_t *s, uint8_t **c)
+{
+ if (s->residue > 0)
+ {
+ *(*c)++ = (uint8_t) ((s->bitstream << (8 - s->residue)) & 0xFF);
+ s->residue = 0;
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+bitstream_state_t *bitstream_init(bitstream_state_t *s)
+{
+ if (s == NULL)
+ return NULL;
+ s->bitstream = 0;
+ s->residue = 0;
+ return s;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbitstreamh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/bitstream.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/bitstream.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/bitstream.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bitstream.c -
+ *
+ * Copyright 2009 by Steve Underwood <steveu@coppice.org>
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bitstream.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_BITSTREAM_H_)
+#define _BITSTREAM_H_
+
+/*! Bitstream handler state */
+typedef struct
+{
+ /*! The bit stream. */
+ uint32_t bitstream;
+ /*! The residual bits in bitstream. */
+ int residue;
+} bitstream_state_t;
+
+void bitstream_put(bitstream_state_t *s, uint8_t **c, uint32_t value, int bits);
+
+uint32_t bitstream_get(bitstream_state_t *s, const uint8_t **c, int bits);
+
+void bitstream_flush(bitstream_state_t *s, uint8_t **c);
+
+bitstream_state_t *bitstream_init(bitstream_state_t *s);
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoicebroadvoiceh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice/broadvoice.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice/broadvoice.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice/broadvoice.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,123 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * broadvoice.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: broadvoice.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_BROADVOICE_BROADVOICE_H_)
+#define _BROADVOICE_BROADVOICE_H_
+
+#if defined(_M_IX86) || defined(_M_X64)
+#if defined(BROADVOICE_EXPORTS)
+#define BV_DECLARE(type) __declspec(dllexport) type __stdcall
+#define BV_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl
+#define BV_DECLARE_DATA __declspec(dllexport)
+#else
+#define BV_DECLARE(type) __declspec(dllimport) type __stdcall
+#define BV_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl
+#define BV_DECLARE_DATA __declspec(dllimport)
+#endif
+#elif defined(BROADVOICE_USE_EXPORT_CAPABILITY) && (defined(__GNUC__) || defined(__SUNCC__))
+#define BV_DECLARE(type) __attribute__((visibility("default"))) type
+#define BV_DECLARE_NONSTD(type) __attribute__((visibility("default"))) type
+#define BV_DECLARE_DATA __attribute__((visibility("default")))
+#else
+#define BV_DECLARE(type) /**/ type
+#define BV_DECLARE_NONSTD(type) /**/ type
+#define BV_DECLARE_DATA /**/
+#endif
+
+typedef struct bv16_encode_state_s bv16_encode_state_t;
+typedef struct bv16_decode_state_s bv16_decode_state_t;
+typedef struct bv32_encode_state_s bv32_encode_state_t;
+typedef struct bv32_decode_state_s bv32_decode_state_t;
+
+#define BV16_FRAME_LEN 40
+#define BV32_FRAME_LEN 80
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+BV_DECLARE(bv16_encode_state_t *) bv16_encode_init(bv16_encode_state_t *s);
+
+BV_DECLARE(int) bv16_encode(bv16_encode_state_t *cs,
+ uint8_t *out,
+ const int16_t amp[],
+ int len);
+
+BV_DECLARE(int) bv16_encode_release(bv16_encode_state_t *s);
+
+BV_DECLARE(int) bv16_encode_free(bv16_encode_state_t *s);
+
+
+BV_DECLARE(bv16_decode_state_t *) bv16_decode_init(bv16_decode_state_t *s);
+
+BV_DECLARE(int) bv16_decode(bv16_decode_state_t *s,
+ int16_t amp[],
+ const uint8_t *in,
+ int len);
+
+BV_DECLARE(int) bv16_fillin(bv16_decode_state_t *s,
+ int16_t amp[],
+ int len);
+
+BV_DECLARE(int) bv16_decode_release(bv16_decode_state_t *s);
+
+BV_DECLARE(int) bv16_decode_free(bv16_decode_state_t *s);
+
+
+BV_DECLARE(bv32_encode_state_t *) bv32_encode_init(bv32_encode_state_t *s);
+
+BV_DECLARE(int) bv32_encode(bv32_encode_state_t *s,
+ uint8_t *out,
+ const int16_t amp[],
+ int len);
+
+BV_DECLARE(int) bv32_encode_release(bv32_encode_state_t *s);
+
+BV_DECLARE(int) bv32_encode_free(bv32_encode_state_t *s);
+
+
+BV_DECLARE(bv32_decode_state_t *) bv32_decode_init(bv32_decode_state_t *s);
+
+BV_DECLARE(int) bv32_decode(bv32_decode_state_t *s,
+ int16_t amp[],
+ const uint8_t *in,
+ int len);
+
+BV_DECLARE(int) bv32_fillin(bv32_decode_state_t *ds,
+ int16_t amp[],
+ int len);
+
+BV_DECLARE(int) bv32_decode_release(bv32_decode_state_t *s);
+
+BV_DECLARE(int) bv32_decode_free(bv32_decode_state_t *s);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoiceprivatebroadvoiceh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice/private/broadvoice.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice/private/broadvoice.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice/private/broadvoice.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,184 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * broadvoice.h - The head guy amongst the headers
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2009 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * $Id: broadvoice.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if !defined(_BROADVOICE_PRIVATE_BROADVOICE_H_)
+#define _BROADVOICE_PRIVATE_BROADVOICE_H_
+
+typedef        double Float;
+
+#define LPCO 8 /* LPC Order */
+#define HPO 2 /* Front end 150Hz high-pass filter order */
+#define DFO 4
+
+#define BV16_FRSZ 40 /* Frame size */
+#define BV16_MAXPP 137 /* MAXimum Pitch Period */
+#define BV16_PWSZ 120         /* Pitch analysis Window SiZe */
+#define BV16_XQOFF (BV16_MAXPP + 1) /* xq() offset before current subframe */
+#define BV16_XOFF (BV16_MAXPP + 1) /* Offset for x() frame */
+#define BV16_LTMOFF (BV16_MAXPP + 1) /* Long-Term filter Memory OFFset */
+#define BV16_LSPPORDER 8 /* LSP MA Predictor ORDER */
+#define        BV16_NSTORDER 8 /* Pole-zero NFC shaping filter */
+#define BV16_LGPORDER 8 /* Log-Gain Predictor OODER */
+#define BV16_DECF 4 /* DECimation Factor for coarse pitch period search */
+#define BV16_XDOFF (BV16_LXD - BV16_FRSZD)
+
+#define BV16_FRSZD (BV16_FRSZ/BV16_DECF) /* FRame SiZe in DECF:1 lowband domain */
+#define BV16_PWSZD (BV16_PWSZ/BV16_DECF) /* Pitch ana. Window SiZe in DECF:1 domain */
+#define BV16_MAXPPD (BV16_MAXPP/BV16_DECF) /* MAX Pitch in DECF:1, if MAXPP!=4n, ceil() */
+#define BV16_LXD (BV16_MAXPPD + 1 + BV16_PWSZD)
+
+#define BV32_FRSZ 80 /* Frame size */
+#define BV32_MAXPP 265 /* MAXimum Pitch Period */
+#define BV32_PWSZ 240 /* Pitch analysis Window SiZe for 8kHz lowband */
+#define BV32_XOFF (BV32_MAXPP + 1) /* offset for x() frame */
+#define BV32_LTMOFF (BV32_MAXPP + 1) /* Long-Term filter Memory OFFset */
+#define BV32_LSPPORDER        8         /* LSP MA Predictor ORDER */
+#define BV32_PFO 1 /* Preemphasis filter order */
+#define BV32_LGPORDER        16 /* Log-Gain Predictor OODER */
+#define BV32_DECF 8 /* DECimation Factor for coarse pitch period search */
+#define BV32_XDOFF (BV32_LXD - BV32_FRSZD)
+
+#define BV32_FRSZD (BV32_FRSZ/BV32_DECF) /* FRame SiZe in DECF:1 lowband domain */
+#define BV32_PWSZD (BV32_PWSZ/BV32_DECF) /* Pitch ana. Window SiZe in DECF:1 domain */
+#define BV32_MAXPPD (BV32_MAXPP/BV32_DECF) /* MAX Pitch in DECF:1, if MAXPP!=4n, ceil() */
+#define BV32_LXD (BV32_MAXPPD + 1 + BV32_PWSZD)
+
+struct bv16_decode_state_s
+{
+ Float stsym[LPCO];
+ Float ltsym[BV16_LTMOFF];
+ Float lsppm[LPCO*BV16_LSPPORDER];
+ Float lgpm[BV16_LGPORDER];
+ Float lsplast[LPCO];
+ Float prevlg[2];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int16_t pp_last;
+ int16_t ngfae;
+ Float bq_last[3];
+ int16_t nggalgc;
+ Float estl_alpha_min;
+ int16_t cfecount;
+ uint32_t idum;
+ Float E;
+ Float per;
+ Float atplc[LPCO + 1];
+ Float ma_a;
+ Float b_prv[2];
+ Float xq[BV16_XQOFF];
+ int pp_prv;
+};
+
+struct bv16_encode_state_s
+{
+ Float x[BV16_XOFF]; /* 8kHz down-sampled signal memory */
+ Float xwd[BV16_XDOFF]; /* memory of DECF:1 decimated version of xw() */
+ Float dq[BV16_XOFF]; /* quantized short-term pred error */
+ Float dfm[DFO]; /* decimated xwd() filter memory */
+ Float stpem[LPCO]; /* ST Pred. Error filter memory */
+ Float stwpm[LPCO]; /* ST Weighting all-Pole Memory */
+ Float stsym[LPCO]; /* ST Synthesis filter Memory */
+ Float ltsym[BV16_MAXPP + 1 + BV16_FRSZ]; /* long-term synthesis filter memory */
+ Float ltnfm[BV16_MAXPP + 1 + BV16_FRSZ]; /* long-term noise feedback filter memory */
+ Float lsplast[LPCO];
+ Float lsppm[LPCO*BV16_LSPPORDER]; /* LSP Predictor Memory */
+ Float lgpm[BV16_LGPORDER];
+ Float hpfzm[HPO];
+ Float hpfpm[HPO];
+ Float prevlg[2];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int cpplast; /* pitch period pf the previous frame */
+ Float old_A[LPCO + 1];
+ Float stnfz[BV16_NSTORDER];
+ Float stnfp[BV16_NSTORDER];
+};
+
+struct bv32_decode_state_s
+{
+ Float stsym[LPCO];
+ Float ltsym[BV32_LTMOFF];
+ Float lsppm[LPCO*BV32_LSPPORDER];
+ Float lgpm[BV32_LGPORDER];
+ Float lsplast[LPCO];
+ Float dezfm[BV32_PFO];
+ Float depfm[BV32_PFO];
+ int16_t cfecount;
+ uint32_t idum;
+ Float E;
+ Float scplcg;
+ Float per;
+ Float atplc[LPCO + 1];
+ int16_t pp_last;
+ Float prevlg[2];
+ Float lgq_last;
+ Float bq_last[3];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int16_t nclglim;
+ int16_t lctimer;
+};
+
+struct bv32_encode_state_s
+{
+ Float x[BV32_XOFF];
+ Float xwd[BV32_XDOFF]; /* Memory of DECF:1 decimated version of xw() */
+ Float dq[BV32_XOFF]; /* Quantized short-term pred error */
+ Float dfm[DFO]; /* Decimated xwd() filter memory */
+ Float stpem[LPCO]; /* ST Pred. Error filter memory, low-band */
+ Float stwpm[LPCO]; /* ST Weighting all-Pole Memory, low-band */
+ Float stnfm[LPCO]; /* ST Noise Feedback filter Memory, Lowband */
+ Float stsym[LPCO]; /* ST Synthesis filter Memory, Lowband */
+ Float ltsym[BV32_MAXPP + 1 + BV32_FRSZ]; /* Long-term synthesis filter memory */
+ Float ltnfm[BV32_MAXPP + 1 + BV32_FRSZ]; /* Long-term noise feedback filter memory */
+ Float lsplast[LPCO];
+ Float lsppm[LPCO*BV32_LSPPORDER]; /* LSP Predictor Memory */
+ Float lgpm[BV32_LGPORDER];
+ Float hpfzm[HPO];
+ Float hpfpm[HPO];
+ Float prevlg[2];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int cpplast; /* pitch period pf the previous frame */
+ Float allast[LPCO + 1];
+};
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoiceversionh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * version.h.in - A tag file, so the exact installed revision can be assertained.
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2009 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: version.h.in,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_BROADVOICE_VERSION_H_)
+#define _BROADVOICE_VERSION_H_
+
+/* The date and time of the version are in UTC form. */
+
+#define BROADVOICE_RELEASE_DATE 20091119
+#define BROADVOICE_RELEASE_TIME 124304
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoiceversionhin"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h.in (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h.in         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice/version.h.in        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * version.h.in - A tag file, so the exact installed revision can be assertained.
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2009 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: version.h.in,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_BROADVOICE_VERSION_H_)
+#define _BROADVOICE_VERSION_H_
+
+/* The date and time of the version are in UTC form. */
+
+#define BROADVOICE_RELEASE_DATE $BROADVOICE_RELEASE_DATE
+#define BROADVOICE_RELEASE_TIME $BROADVOICE_RELEASE_TIME
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoicedsp"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice.dsp (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice.dsp         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice.dsp        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,123 @@
</span><ins>+# Microsoft Developer Studio Project File - Name="g722_1" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=g722_1 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "g722_1.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "g722_1.mak" CFG="g722_1 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "g722_1 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "g722_1 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "g722_1 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "." /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /D "_WINDLL" /FR /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /map /debug /machine:I386 /out:"Release/libg722_1.dll"
+
+!ELSEIF "$(CFG)" == "g722_1 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "." /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /FR /FD /GZ /c
+# SUBTRACT CPP /WX /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"Debug/libg722_1.dll" /pdbtype:sept
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "g722_1 - Win32 Release"
+# Name "g722_1 - Win32 Debug"
+# Begin Group "Source Files"
+# Begin Source File
+
+SOURCE=.\msvc/gettimeofday.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+# Begin Source File
+
+SOURCE=.\broadvoice/broadvoice.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\broadvoice/version.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\broadvoice/private/broadvoice.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\broadvoice.h
+# End Source File
+# End Group
+
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoicehin"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice.h.in (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice.h.in         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice.h.in        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * broadvoice.h - The head guy amongst the headers
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2009 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * $Id: broadvoice.h.in,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if !defined(_BROADVOICE_H_)
+#define _BROADVOICE_H_
+
+@BROADVOICE_USE_FIXED_POINT@
+@BROADVOICE_MISALIGNED_ACCESS_FAILS@
+
+@BROADVOICE_USE_EXPORT_CAPABILITY@
+
+#include <stdlib.h>
+@INSERT_INTTYPES_HEADER@
+#include <string.h>
+#include <limits.h>
+#include <time.h>
+@INSERT_MATH_HEADER@
+
+#include <broadvoice/broadvoice.h>
+
+#endif
+
+#if defined(BROADVOICE_EXPOSE_INTERNAL_STRUCTURES)
+#include <broadvoice/private/broadvoice.h>
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoicesln"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice.sln (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice.sln         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice.sln        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libbroadvoice.vcproj", "{CF70F278-3364-4395-A2E1-23501C9B8AD2}"
+        ProjectSection(ProjectDependencies) = postProject
+                {1CED5987-A529-46DC-B30F-870D85FF9C94} = {1CED5987-A529-46DC-B30F-870D85FF9C94}
+        EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "at_dictionary_gen", "src\msvc\at_dictionary_gen.vcproj", "{1CED5987-A529-46DC-B30F-870D85FF9C94}"
+EndProject
+Global
+        GlobalSection(SolutionConfigurationPlatforms) = preSolution
+                Debug|Win32 = Debug|Win32
+                Release|Win32 = Release|Win32
+        EndGlobalSection
+        GlobalSection(ProjectConfigurationPlatforms) = postSolution
+                {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.ActiveCfg = Debug|Win32
+                {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Debug|Win32.Build.0 = Debug|Win32
+                {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.ActiveCfg = Release|Win32
+                {CF70F278-3364-4395-A2E1-23501C9B8AD2}.Release|Win32.Build.0 = Release|Win32
+                {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.ActiveCfg = Debug|Win32
+                {1CED5987-A529-46DC-B30F-870D85FF9C94}.Debug|Win32.Build.0 = Debug|Win32
+                {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.ActiveCfg = Release|Win32
+                {1CED5987-A529-46DC-B30F-870D85FF9C94}.Release|Win32.Build.0 = Release|Win32
+        EndGlobalSection
+        GlobalSection(SolutionProperties) = preSolution
+                HideSolutionNode = FALSE
+        EndGlobalSection
+EndGlobal
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcbroadvoicevcproj"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/broadvoice.vcproj (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/broadvoice.vcproj         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/broadvoice.vcproj        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,197 @@
</span><ins>+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+        ProjectType="Visual C"
+        Version="9.00"
+        Name="libg722_1"
+        ProjectGUID="{CF70F278-3364-4395-A2E1-23501C9B8AD2}"
+        RootNamespace="libg722_1"
+        Keyword="Win32Proj"
+        TargetFrameworkVersion="131072"
+        >
+        <Platforms>
+                <Platform
+                        Name="Win32"
+                />
+        </Platforms>
+        <ToolFiles>
+        </ToolFiles>
+        <Configurations>
+                <Configuration
+                        Name="Debug|Win32"
+                        OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+                        IntermediateDirectory="$(ConfigurationName)"
+                        ConfigurationType="2"
+                        CharacterSet="1"
+                        >
+                        <Tool
+                                Name="VCPreBuildEventTool"
+                        />
+                        <Tool
+                                Name="VCCustomBuildTool"
+                        />
+                        <Tool
+                                Name="VCXMLDataGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCWebServiceProxyGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCMIDLTool"
+                        />
+                        <Tool
+                                Name="VCCLCompilerTool"
+                                Optimization="0"
+                                AdditionalIncludeDirectories="src; src\g722_1; src\msvc"
+                                PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H"
+                                MinimalRebuild="true"
+                                BasicRuntimeChecks="3"
+                                RuntimeLibrary="3"
+                                UsePrecompiledHeader="0"
+                                WarningLevel="4"
+                                Detect64BitPortabilityProblems="true"
+                                DebugInformationFormat="4"
+                                CompileAs="1"
+                        />
+                        <Tool
+                                Name="VCManagedResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCPreLinkEventTool"
+                        />
+                        <Tool
+                                Name="VCLinkerTool"
+                                LinkIncremental="2"
+                                ModuleDefinitionFile="src/msvc/g722_1.def"
+                                GenerateDebugInformation="true"
+                                SubSystem="2"
+                                RandomizedBaseAddress="1"
+                                DataExecutionPrevention="0"
+                                TargetMachine="1"
+                        />
+                        <Tool
+                                Name="VCALinkTool"
+                        />
+                        <Tool
+                                Name="VCManifestTool"
+                        />
+                        <Tool
+                                Name="VCXDCMakeTool"
+                        />
+                        <Tool
+                                Name="VCBscMakeTool"
+                        />
+                        <Tool
+                                Name="VCFxCopTool"
+                        />
+                        <Tool
+                                Name="VCAppVerifierTool"
+                        />
+                        <Tool
+                                Name="VCPostBuildEventTool"
+                        />
+                </Configuration>
+                <Configuration
+                        Name="Release|Win32"
+                        OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+                        IntermediateDirectory="$(ConfigurationName)"
+                        ConfigurationType="2"
+                        CharacterSet="1"
+                        WholeProgramOptimization="1"
+                        >
+                        <Tool
+                                Name="VCPreBuildEventTool"
+                        />
+                        <Tool
+                                Name="VCCustomBuildTool"
+                        />
+                        <Tool
+                                Name="VCXMLDataGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCWebServiceProxyGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCMIDLTool"
+                        />
+                        <Tool
+                                Name="VCCLCompilerTool"
+                                AdditionalIncludeDirectories="src; src\g722_1; src\msvc"
+                                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H"
+                                RuntimeLibrary="2"
+                                UsePrecompiledHeader="0"
+                                WarningLevel="4"
+                                Detect64BitPortabilityProblems="true"
+                                DebugInformationFormat="3"
+                        />
+                        <Tool
+                                Name="VCManagedResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCPreLinkEventTool"
+                        />
+                        <Tool
+                                Name="VCLinkerTool"
+                                LinkIncremental="1"
+                                ModuleDefinitionFile="src/msvc/g722_1.def"
+                                GenerateDebugInformation="true"
+                                SubSystem="2"
+                                OptimizeReferences="2"
+                                EnableCOMDATFolding="2"
+                                RandomizedBaseAddress="1"
+                                DataExecutionPrevention="0"
+                                TargetMachine="1"
+                        />
+                        <Tool
+                                Name="VCALinkTool"
+                        />
+                        <Tool
+                                Name="VCManifestTool"
+                        />
+                        <Tool
+                                Name="VCXDCMakeTool"
+                        />
+                        <Tool
+                                Name="VCBscMakeTool"
+                        />
+                        <Tool
+                                Name="VCFxCopTool"
+                        />
+                        <Tool
+                                Name="VCAppVerifierTool"
+                        />
+                        <Tool
+                                Name="VCPostBuildEventTool"
+                        />
+                </Configuration>
+        </Configurations>
+        <References>
+        </References>
+        <Files>
+                <Filter
+                        Name="Source Files"
+                        Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                        >
+<File RelativePath="msvc/gettimeofday.c"></File>
+</Filter><Filter Name="Header Files">
+<File RelativePath="broadvoice/broadvoice.h"></File>
+<File RelativePath="broadvoice/version.h"></File>
+<File RelativePath="broadvoice/private/broadvoice.h"></File>
+<File RelativePath="broadvoice.h"></File>
+                </Filter>
+                <Filter
+                        Name="Resource Files"
+                        Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+                        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+                        >
+                </Filter>
+        </Files>
+        <Globals>
+        </Globals>
+</VisualStudioProject>
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16cnsth"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16cnst.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16cnst.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16cnst.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,154 @@
</span><ins>+/*****************************************************************************/
+/* BroadVoice(R)16 (BV16) Floating-Point ANSI-C Source Code */
+/* Revision Date: August 19, 2009 */
+/* Version 1.0 */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* Copyright 2000-2009 Broadcom Corporation */
+/* */
+/* This software is provided under the GNU Lesser General Public License, */
+/* version 2.1, as published by the Free Software Foundation ("LGPL"). */
+/* This program is distributed in the hope that it will be useful, but */
+/* WITHOUT ANY SUPPORT OR WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LGPL for */
+/* more details. A copy of the LGPL is available at */
+/* http://www.broadcom.com/licenses/LGPLv2.1.php, */
+/* or by writing to the Free Software Foundation, Inc., */
+/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/*****************************************************************************/
+
+
+/*****************************************************************************
+ bv16cnst.h : BV16 constants
+
+ $Log: bv16cnst.h,v $
+ Revision 1.1.1.1 2009/11/19 12:10:48 steveu
+ Start from Broadcom's code
+
+ Revision 1.1.1.1 2009/11/17 14:06:02 steveu
+ start
+
+******************************************************************************/
+
+#include "typedef.h"
+
+#ifndef BV16CNST_H
+#define BV16CNST_H
+
+
+/* ----- Basic Codec Parameters ----- */
+#define FRSZ         40                 /* frame size */
+#define WINSZ        160                /* lpc analysis WINdow SiZe */
+#define MAXPP 137 /* MAXimum Pitch Period                  */
+#define MINPP 10 /* MINimum Pitch Period                  */
+#define PWSZ        120         /* Pitch analysis Window SiZe */
+#define MAXPP1 (MAXPP+1)/* MAXimum Pitch Period + 1          */
+
+/* Quantization parameters */
+#define VDIM                 4        /* excitation vector dimension */
+#define CBSZ                 16        /* excitation codebook size */
+#define PPCBSZ 32        /* pitch predictor codebook size */
+#define LGPORDER         8        /* Log-Gain Predictor OODER */
+#define LGPECBSZ         16        /* Log-Gain Prediction Error CodeBook SiZe */
+#define LSPPORDER 8        /* LSP MA Predictor ORDER */
+#define LSPECBSZ1 128        /* codebook size of 1st-stage LSP VQ */
+#define LSPECBSZ2 64        /* codebook size of 2nd-stage LSP VQ; 1-bit for sign */
+
+#define INVFRSZ (1./(Float)FRSZ)
+
+/* Excitation gain quantization */
+#define LGMEAN 11.45752 /* log2-gain mean */
+#define GPO 8 /* order of MA prediction */
+#define NG 18 /* number of relative gain bins */
+#define GLB -24. /* lower relative gain bound */
+#define NGC 12 /* number of gain change bins */
+#define GCLB -8. /* lower gain change bound */
+#define Minlg 0. /* minimum log-gain */
+#define TMinlg 1. /* minimum linear gain */
+#define LGCBSZ 16 /* size of codebook */
+
+/* Definitions for periodicity to gain scaling mapping */
+#define ScPLCGmin 0.1
+#define ScPLCGmax 0.9
+#define PePLCGmin 0.5
+#define PePLCGmax 0.9
+#define ScPLCG_b ((ScPLCGmin-ScPLCGmax)/(PePLCGmax-PePLCGmin))
+#define ScPLCG_a (ScPLCGmin-ScPLCG_b*PePLCGmax)
+#define HoldPLCG 8
+#define AttnPLCG 50
+#define AttnFacPLCG (1.0/(Float)AttnPLCG)
+
+/* Level Estimation */
+#define estl_alpha (4095./4096.)
+#define estl_alpha1 (255./256.)
+#define estl_beta (511./512.)
+#define estl_beta1 (1.-estl_beta)
+#define estl_a (255./256)
+#define estl_a1 (1-estl_a)
+#define estl_TH 0.2
+#define Nfdm 100 /* Max number of frames with fast decay of Lmin */
+
+/* Log-Gain Limitation */
+#define LGLB -24 /* Relative (to input level) Log-Gain Lower Bound */
+#define LGCLB -8 /* Log-Gain Change Lower Bound */
+#define NGB 18 /* Number of Gain Bins */
+#define NGCB 12 /* Number of Gain Change Bins */
+
+/* Buffer offsets and sizes */
+#define XOFF MAXPP1 /* offset for x() frame */
+#define LX (XOFF+FRSZ) /* Length of x() buffer */
+#define XQOFF (MAXPP1) /* xq() offset before current subframe */
+#define LXQ (XQOFF+FRSZ) /* Length of xq() buffer */
+#define LTMOFF         (MAXPP1)         /* Long-Term filter Memory OFFset */
+
+/* Long-term postfilter */
+#define DPPQNS 4 /* Delta pitch period for search */
+#define NINT 20 /* length of filter interpolation */
+#define ATHLD1 0.55 /* threshold on normalized pitch correlation */
+#define ATHLD2 0.80 /* threshold on normalized pitch correlation */
+#define ScLTPF 0.3 /* scaling of LTPF coefficient */
+
+/* coarse pitch search */
+#define        cpp_Qvalue        2
+#define        cpp_scale        (1<<cpp_Qvalue)
+#define        MAX_NPEAKS 7
+#define MPTH4 0.3 /* value to use for MPTH[] with index >= 4 */
+#define DEVTH 0.25         /* pitch period DEViation THreshold         */
+#define TH1         0.73 /* first threshold for cor*cor/energy         */
+#define TH2         0.4 /* second threshold for cor*cor/energy         */
+#define LPTH1 0.79 /* Last Pitch cor*cor/energy THreshold 1 */
+#define LPTH2 0.43 /* Last Pitch cor*cor/energy THreshold 2 */
+#define MPDTH 0.065 /* Multiple Pitch Deviation THreshold */
+#define SMDTH 0.095 /* Sub-Multiple pitch Deviation THreshold */
+#define SMDTH1 (1.0-SMDTH)
+#define SMDTH2 (1.0+SMDTH)
+#define MPR1 (1.0-MPDTH) /* Multiple Pitch Range lower threshold */
+#define MPR2 (1.0+MPDTH) /* Multiple Pitch Range upper threshold */
+
+/* Decimation parameters */
+#define DECF 4 /* DECimation Factor for coarse pitch period search */
+#define FRSZD (FRSZ/DECF) /* FRame SiZe in DECF:1 lowband domain */
+#define MAXPPD (MAXPP/DECF) /* MAX Pitch in DECF:1, if MAXPP!=4n, ceil() */
+#define MINPPD ((int) (MINPP/DECF)) /* MINimum Pitch Period in DECF:1 */
+#define PWSZD (PWSZ/DECF) /* Pitch ana. Window SiZe in DECF:1 domain */
+#define DFO 4
+#define MAXPPD1 (MAXPPD + 1)
+#define LXD (MAXPPD1 + PWSZD)
+#define XDOFF (LXD - FRSZD)
+#define HMAXPPD (MAXPPD/2)
+#define M1 (MINPPD - 1)
+#define M2 MAXPPD1
+#define HDECF (DECF/2)
+#define INVDECF (1.0F/(float)(DECF)) /* INVerse of DECF (decimation factor) */
+
+/* Front-end 150 Hz highpass filter */
+#define HPO 2 /* High-pass filter order */
+
+/* LPC weighting filter */
+#define        LTWFL        0.5
+
+/* pole-zero NFC shaping filter */
+#define        NSTORDER 8
+
+#endif /* BV16CNST_H */
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16coarse_pitchc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16coarse_pitch.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16coarse_pitch.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16coarse_pitch.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,355 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16coarse_pitch.c - Coarse pitch search
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16coarse_pitch.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "utility.h"
+#include "bv16externs.h"
+
+int coarsepitch(
+ Float *xw,
+ Float *xwdm,
+ Float *dfm,                /* (i/o) ellipse low pass filter memory */
+ int        cpplast)
+{
+ Float xwd[LXD];
+ Float cor[MAXPPD1];
+ Float cor2[MAXPPD1];
+ Float energy[MAXPPD1];
+ Float cor2i[HMAXPPD];
+ Float energyi[HMAXPPD];
+ Float mplth;
+ Float tmp[DFO + FRSZ];
+ Float threshold;
+ Float *fp0, *fp1, *fp2, *fp3, s, t, a, b, c, deltae;
+ Float cor2max, energymax, cor2m, energym, ci, eni;
+ int        i, j, k, n, npeaks, imax, im, idx[HMAXPPD], plag[HMAXPPD];
+ int        cpp, maxdev, flag, mpflag;
+
+ /* reset local buffers */
+ Fzero(cor, MAXPPD1);
+ Fzero(energy, MAXPPD1);
+
+ /* LOWPASS FILTER xw() TO 800 Hz; SHIFT & OUTPUT INTO xwd() */
+
+ /* copy xwd[] from memory to buffer */
+ Fcopy(xwd, xwdm, XDOFF);
+
+ /* copy memory to temp buffer */
+ Fcopy(tmp, dfm, DFO);
+
+ /* AP and AZ filtering and decimation */
+ fp0 = xwd + XDOFF;
+ fp1 = tmp + DFO;
+ fp3 = xw;
+ for (i = 0; i < FRSZD; i++)
+ {
+ for (k = 0; k < DECF; k++)
+ {
+ t = *fp3++;
+ fp2 = fp1 - 1;
+ for (j = 0; j < DFO; j++)
+ t -= bv16_adf[j + 1]*(*fp2--);
+ *fp1++ = t;
+ }
+ fp2 = fp1 - 1;
+ t = bv16_bdf[0]*(*fp2--);
+ for (j = 0; j < DFO; j++)
+ t += bv16_bdf[j + 1]*(*fp2--);
+ *fp0++ = t;
+ }
+
+ /* copy temp buffer to memory */
+ fp1 -= DFO;
+ for (i = 0; i < DFO; i++)
+ dfm[i] = *fp1++;
+
+ /* update xwd() memory */
+ Fcopy(xwdm, xwd + FRSZD, XDOFF);
+
+ /* COMPUTE CORRELATION & ENERGY OF PREDICTION BASIS VECTOR */
+ fp0 = xwd + MAXPPD1;
+ fp1 = xwd + MAXPPD1 - M1;
+ s = t = 0.0;
+ for (i = 0; i < (LXD - MAXPPD1); i++)
+ {
+ s += (*fp1)*(*fp1);
+ t += (*fp0++)*(*fp1++);
+ }
+ energy[M1 - 1] = s;
+ cor[M1 - 1] = t;
+ if (t > 0.0F)
+ cor2[M1 - 1] = t*t;
+ else
+ cor2[M1 - 1] = -t*t;
+
+
+ fp2 = xwd + LXD - M1 - 1;
+ fp3 = xwd + MAXPPD1 - M1 - 1;
+
+ for (i = M1; i < M2; i++)
+ {
+ fp0 = xwd + MAXPPD1;
+ fp1 = xwd + MAXPPD1 - i - 1;
+ t = 0.0;
+ for (j = 0; j < (LXD - MAXPPD1); j++)
+ t += (*fp0++)*(*fp1++);
+ cor[i] = t;
+ if (t > 0.0F)
+ cor2[i] = t*t;
+ else
+ cor2[i] = -t*t;
+ s = s - (*fp2)*(*fp2) + (*fp3)*(*fp3);
+ fp2--;
+ fp3--;
+ energy[i] = s;
+ }
+
+ /* FIND POSITIVE COR*COR/ENERGY PEAKS */
+ npeaks = 0;
+ n = MINPPD - 1;
+ while ((n < MAXPPD) && (npeaks < MAX_NPEAKS))
+ {
+ if ((cor2[n]*energy[n - 1] > cor2[n - 1]*energy[n])
+ &&
+ (cor2[n]*energy[n + 1] > cor2[n + 1]*energy[n])
+ &&
+ (cor2[n] > 0))
+ {
+ idx[npeaks] = n;
+ npeaks++;
+ }
+ n++;
+ }
+
+ /* RETURN EARLY IF THERE IS NO PEAK OR ONLY ONE PEAK */
+ if (npeaks == 0) /* if there are no positive peak, */
+ return MINPPD*cpp_scale; /* minimum pitch period in decimated domain */
+ if (npeaks == 1) /* if there is exactly one peak, */
+ return (idx[0] + 1)*cpp_scale; /* the time lag for this single peak */
+
+ /* IF PROGRAM PROCEEDS TO HERE, THERE ARE 2 OR MORE PEAKS */
+ cor2max = -1e30;
+ energymax = 1.0F;
+ imax = 0;
+ for (i = 0; i < npeaks; i++)
+ {
+ /* USE QUADRATIC INTERPOLATION TO FIND THE INTERPOLATED cor[] AND
+ energy[] CORRESPONDING TO INTERPOLATED PEAK OF cor2[]/energy[] */
+ /* first calculate coefficients of y(x)=ax^2+bx+c; */
+ n = idx[i];
+ a = 0.5F*(cor[n + 1] + cor[n - 1]) - cor[n];
+ b = 0.5F*(cor[n + 1] - cor[n - 1]);
+ c = cor[n];
+
+ /* INITIALIZE VARIABLES BEFORE SEARCHING FOR INTERPOLATED PEAK */
+ im = 0;
+ cor2m = cor2[n];
+ energym = energy[n];
+ eni = energy[n];
+
+ /* DERTERMINE WHICH SIDE THE INTERPOLATED PEAK FALLS IN, THEN
+ DO THE SEARCH IN THE APPROPRIATE RANGE */
+ if (cor2[n + 1]*energy[n - 1] > cor2[n - 1]*energy[n + 1]) /* if right side */
+ {
+ deltae = (energy[n + 1] - eni)*INVDECF; /*increment for linear interp.*/
+ for (k = 0; k < HDECF; k++)
+ {
+ ci = a*bv16_x2[k] + b*bv16_x[k] + c; /* quadratically interpolated cor[] */
+ eni += deltae; /* linearly interpolated energy[] */
+ if (ci*ci*energym > cor2m*eni)
+ {
+ im = k + 1;
+ cor2m = ci*ci;
+ energym = eni;
+ }
+ }
+ }
+ else /* if interpolated peak is on the left side */
+ {
+ deltae=(energy[n-1] - eni) * INVDECF; /*increment for linear interp.*/
+ for (k = 0; k < HDECF; k++)
+ {
+ ci = a*bv16_x2[k] - b*bv16_x[k] + c;
+ eni += deltae;
+ if (ci*ci*energym > cor2m*eni)
+ {
+ im = -k-1;
+ cor2m=ci*ci;
+ energym=eni;
+ }
+ }
+ }
+
+ /* SEARCH DONE; ASSIGN cor2[] AND energy[] CORRESPONDING TO
+ INTERPOLATED PEAK */
+ plag[i] = (idx[i] + 1)*cpp_scale + im; /* lag of interp. peak */
+ cor2i[i] = cor2m; /* interpolated cor2[] of i-th interpolated peak */
+ energyi[i] = energym; /* interpolated energy[] of i-th interpolated peak */
+
+ /* SEARCH FOR GLOBAL MAXIMUM OF INTERPOLATED cor2[]/energy[] peak */
+ if (cor2m*energymax > cor2max*energym)
+ {
+ imax = i;
+ cor2max = cor2m;
+ energymax = energym;
+ }
+ }
+ cpp = plag[imax];        /* first candidate for coarse pitch period */
+ mplth = plag[npeaks - 1]*1.0/DECF;        /* plag[] is Q2 */
+
+ /* FIND THE LARGEST PEAK (IF THERE IS ANY) AROUND THE LAST PITCH */
+ maxdev = (int) (DEVTH*cpplast); /* maximum deviation from last pitch */
+ im = -1;
+ cor2m = -1e30;
+ energym = 1.0F;
+ for (i = 0; i < npeaks; i++) /* loop thru the peaks before the largest peak */
+ {
+ if (abs(plag[i] - cpplast) <= maxdev)
+ {
+ if (cor2i[i]*energym > cor2m*energyi[i])
+ {
+ im = i;
+ cor2m = cor2i[i];
+ energym = energyi[i];
+ }
+ }
+ } /* if there is no peaks around last pitch, then im is still -1 */
+
+ /* NOW SEE IF WE SHOULD PICK ANY ALTERNATICE PEAK */
+ /* FIRST, SEARCH FIRST HALF OF PITCH RANGE, SEE IF ANY QUALIFIED PEAK
+ HAS LARGE ENOUGH PEAKS AT EVERY MULTIPLE OF ITS LAG */
+ i = 0;
+ while (plag[i] < 0.5*mplth*DECF)
+ {
+ /* DETERMINE THE APPROPRIATE THRESHOLD FOR THIS PEAK */
+ if (i != im) /* if not around last pitch, */
+ {
+ threshold = TH1; /* use a higher threshold */
+ }
+ else /* if around last pitch */
+ {
+ threshold = TH2; /* use a lower threshold */
+ }
+
+ /* IF THRESHOLD EXCEEDED, TEST PEAKS AT MULTIPLES OF THIS LAG */
+ if (cor2i[i]*energymax > threshold*cor2max*energyi[i])
+ {
+ flag = 1;
+ j = i + 1;
+ k = 0;
+ s = 2.0F*plag[i]; /* initialize t to twice the current lag */
+ while (s <= mplth*DECF) /* loop thru all multiple lag <= mplth */
+ {
+ mpflag = 0; /* initialize multiple pitch flag to 0 */
+ a = MPR1*s; /* multiple pitch range lower bound */
+ b = MPR2*s; /* multiple pitch range upper bound */
+ while (j < npeaks) /* loop thru peaks with larger lags */
+ {
+ if (plag[j] > b) /* if range exceeded, */
+ {
+ break; /* break the innermost while loop */
+ } /* if didn't break, then plag[j] <= b */
+ if (plag[j] > a) /* if current peak lag within range, */
+ {
+ /* then check if peak value large enough */
+ if (k < 4)
+ {
+ c = bv16_MPTH[k];
+ }
+ else
+ {
+ c = MPTH4;
+ }
+ if (cor2i[j]*energymax > c*cor2max*energyi[j])
+ {
+ mpflag = 1; /* if peak large enough, set mpflag, */
+ break; /* and break the innermost while loop */
+ }
+ }
+ j++;
+ }
+ /* if no qualified peak found at this multiple lag */
+ if (mpflag == 0)
+ {
+ flag = 0; /* disqualify the lag plag[i] */
+ break; /* and break the while (s<=mplth) loop */
+ }
+ k++;
+ s += plag[i]; /* update s to the next multiple pitch lag */
+ }
+ /* if there is a qualified peak at every multiple of plag[i], */
+ if (flag == 1)
+ return plag[i]; /* and return to calling function */
+ }
+ i++;
+ if (i == npeaks)
+ break; /* to avoid out of array bound error */
+ }
+
+ /* IF PROGRAM PROCEEDS TO HERE, NONE OF THE PEAKS WITH LAGS < 0.5*mplth
+ QUALIFIES AS THE FINAL PITCH. IN THIS CASE, CHECK IF
+ THERE IS ANY PEAK LARGE ENOUGH AROUND LAST PITCH. IF SO, USE ITS
+ LAG AS THE FINAL PITCH. */
+ if (im != -1) /* if there is at least one peak around last pitch */
+ {
+ if (im == imax) /* if this peak is also the global maximum, */
+ return cpp; /* return first pitch candidate at global max */
+ if (im < imax) /* if lag of this peak < lag of global max, */
+ {
+ if (cor2m*energymax > LPTH2*cor2max*energym)
+ {
+ if (plag[im] > HMAXPPD*cpp_scale)
+ return plag[im];
+ for (k = 2; k <= 5; k++) /* check if current candidate pitch */
+ {
+ s = plag[imax]/(float)(k); /* is a sub-multiple of */
+ a = SMDTH1*s; /* the time lag of */
+ b = SMDTH2*s; /* the global maximum peak */
+ if (plag[im] > a && plag[im] < b) /* if so, */
+ return plag[im]; /* and return as pitch */
+ }
+ }
+ }
+ else /* if lag of this peak > lag of global max, */
+ {
+ if (cor2m*energymax > LPTH1*cor2max*energym)
+ return plag[im]; /* accept its lag */
+ }
+ }
+
+ /* IF PROGRAM PROCEEDS TO HERE, WE HAVE NO CHOICE BUT TO ACCEPT THE
+ LAG OF THE GLOBAL MAXIMUM */
+ return cpp;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16decoderc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16decoder.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16decoder.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16decoder.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,192 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * decoder.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16decoder.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bv16strct.h"
+#include "bv16externs.h"
+#include "bvcommon.h"
+#include "utility.h"
+#include "bv16postfilter.h"
+#include "bitpack16.h"
+#include "broadvoice/broadvoice.h"
+
+BV_DECLARE(bv16_decode_state_t *) bv16_decode_init(bv16_decode_state_t *s)
+{
+ int i;
+
+ if (s == NULL)
+ {
+ if ((s = (bv16_decode_state_t *) malloc(sizeof(*s))) == NULL)
+ return NULL;
+ }
+ for (i = 0; i < LPCO; i++)
+ s->lsplast[i] = (Float)(i + 1)/(Float)(LPCO + 1);
+ Fzero(s->stsym, LPCO);
+ Fzero(s->ltsym, LTMOFF);
+ Fzero(s->xq, XQOFF);
+ Fzero(s->lgpm, LGPORDER);
+ Fzero(s->lsppm, LPCO*LSPPORDER);
+ Fzero(s->prevlg, 2);
+ s->pp_last = 50;
+ s->cfecount = 0;
+ s->idum = 0;
+ s->per = 0;
+ s->E = 0.0;
+ for (i = 0; i < LPCO; i++)
+ s->atplc[i + 1] = 0.0;
+ s->ngfae = LGPORDER + 1;
+ s->lmax = -100.0;
+ s->lmin = 100.0;
+ s->lmean = 12.5;
+ s->x1 = 17.0;
+ s->level = 17.0;
+ s->nggalgc = Nfdm + 1;
+ s->estl_alpha_min = estl_alpha;
+ s->ma_a = 0.0;
+ s->b_prv[0] = 1.0;
+ s->b_prv[1] = 0.0;
+ s->pp_prv = 100;
+ return s;
+}
+
+BV_DECLARE(int) bv16_decode(bv16_decode_state_t *ds,
+ int16_t amp[],
+ const uint8_t *in,
+ int len)
+{
+ Float xq[LXQ];                /* quantized 8 kHz low-band signal */
+ Float ltsym[LTMOFF + FRSZ];
+ Float a[LPCO + 1];
+ Float lspq[LPCO];
+ Float bq[3];
+ Float gainq;
+ Float lgq;
+ Float lg_el;
+ Float xpf[FRSZ];
+ int16_t pp;
+ Float bss;
+ Float E;
+ struct BV16_Bit_Stream bs;
+ int ii;
+ int outlen;
+
+ outlen = 0;
+ for (ii = 0; ii < len; ii += 10)
+ {
+ bv16_bitunpack(&in[ii], &bs);
+
+ /* Set frame erasure flags */
+ if (ds->cfecount != 0)
+ {
+ ds->ngfae = 1;
+ }
+ else
+ {
+ ds->ngfae++;
+ if (ds->ngfae > LGPORDER)
+ ds->ngfae = LGPORDER + 1;
+ }
+
+ /* Reset frame erasure counter */
+ ds->cfecount = 0;
+
+ /* Decode pitch period */
+ pp = bs.ppidx + MINPP;
+
+ /* Decode spectral information */
+ lspdec(lspq, bs.lspidx, ds->lsppm, ds->lsplast);
+ lsp2a(lspq, a);
+ Fcopy(ds->lsplast, lspq, LPCO);
+
+ /* Decode pitch taps */
+ bv16_pp3dec(bs.bqidx, bq);
+
+ /* Decode gain */
+ gainq = gaindec(&lgq, bs.gidx, ds->lgpm, ds->prevlg, ds->level, &ds->nggalgc, &lg_el);
+
+ /* Copy state memory to buffer */
+ Fcopy(ltsym, ds->ltsym, LTMOFF);
+ Fcopy(xq, ds->xq, XQOFF);
+
+ /* Decode the excitation signal including long-term synthesis and codevector scaling */
+ excdec_w_LT_synth(ltsym, bs.qvidx, gainq, bq, pp, bv16_cccb, &E);
+
+ ds->E = E;
+
+ /* LPC synthesis filtering of short-term excitation */
+ apfilter(a, LPCO, ltsym + LTMOFF, xq + XQOFF, FRSZ, ds->stsym, 1);
+
+ /* Update the remaining state memory */
+ ds->pp_last = pp;
+ Fcopy(ds->xq, xq + FRSZ, XQOFF);
+ Fcopy(ds->ltsym, ltsym + FRSZ, LTMOFF);
+ Fcopy(ds->bq_last, bq, 3);
+
+ /* Level estimation */
+ estlevel(lg_el, &ds->level, &ds->lmax, &ds->lmin, &ds->lmean, &ds->x1, ds->ngfae, ds->nggalgc, &ds->estl_alpha_min);
+
+ /* Adaptive postfiltering */
+ postfilter(xq, pp, &(ds->ma_a), ds->b_prv, &(ds->pp_prv), xpf);
+ F2s(&amp[outlen], xpf, FRSZ);
+
+ Fcopy(ds->atplc, a, LPCO + 1);
+
+ bss = bq[0] + bq[1] + bq[2];
+ if (bss > 1.0)
+ bss = 1.0;
+ else if (bss < 0.0)
+ bss = 0.0;
+ ds->per = 0.5*ds->per + 0.5*bss;
+ outlen += FRSZ;
+ }
+ return outlen;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv16_decode_release(bv16_decode_state_t *s)
+{
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv16_decode_free(bv16_decode_state_t *s)
+{
+ free(s);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16encoderc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16encoder.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16encoder.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16encoder.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,226 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * encoder.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16encoder.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "utility.h"
+#include "bv16externs.h"
+#include "bv16strct.h"
+#include "bvcommon.h"
+#include "bitpack16.h"
+#include "broadvoice/broadvoice.h"
+
+BV_DECLARE(bv16_encode_state_t *) bv16_encode_init(bv16_encode_state_t *s)
+{
+ int k;
+
+ if (s == NULL)
+ {
+ if ((s = (bv16_encode_state_t *) malloc(sizeof(*s))) == NULL)
+ return NULL;
+ }
+ Fzero(s->lgpm, LGPORDER);
+ s->old_A[0] = 1.0;
+ Fzero(s->old_A + 1, LPCO);
+ for (k = 0; k < LPCO; k++)
+ s->lsplast[k] = (Float) (k + 1)/(Float)(LPCO + 1);
+ Fzero(s->lsppm, LPCO*LSPPORDER);
+ Fzero(s->x, XOFF);
+ Fzero(s->xwd, XDOFF);
+ Fzero(s->dq, XOFF);
+ Fzero(s->stpem, LPCO);
+ Fzero(s->stwpm, LPCO);
+ Fzero(s->dfm, DFO);
+ Fzero(s->stsym, LPCO);
+ Fzero(s->stnfz, NSTORDER);
+ Fzero(s->stnfp, NSTORDER);
+ Fzero(s->ltsym, MAXPP1 + FRSZ);
+ Fzero(s->ltnfm, MAXPP1 + FRSZ);
+ Fzero(s->hpfzm, HPO);
+ Fzero(s->hpfpm, HPO);
+ Fzero(s->prevlg, 2);
+ s->cpplast = 12*cpp_scale;
+ s->lmax = -100.0;
+ s->lmin = 100.0;
+ s->lmean = 12.5;
+ s->x1 = 17.0;
+ s->level = 17.0;
+ return s;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv16_encode(bv16_encode_state_t *cs,
+ uint8_t *out,
+ const int16_t amp[],
+ int len)
+{
+ Float x[LX];                        /* Signal buffer */
+ Float dq[LX];                 /* Quantized int16_t term pred error, low-band */
+ Float xw[FRSZ];                 /* Perceptually weighted low-band signal */
+ Float r[NSTORDER + 1];
+ Float a[LPCO + 1];
+ Float aw[LPCO + 1];
+ Float fsz[1 + NSTORDER];
+ Float fsp[1 + NSTORDER];
+ Float lsp[LPCO];
+ Float lspq[LPCO];
+ Float cbs[VDIM*CBSZ];
+ Float bq[3];
+ Float beta;
+ Float gainq;
+ Float lg;
+ Float ppt;
+ Float lth;
+ Float dummy;
+ int        pp;
+ int cpp;
+ int        i;
+ struct BV16_Bit_Stream bs;
+ int ii;
+ int outlen;
+
+ outlen = 0;
+ for (ii = 0; ii < len; ii += FRSZ)
+ {
+ /* Copy state memory to local memory buffers */
+ Fcopy(x, cs->x, XOFF);
+ for (i = 0; i < FRSZ; i++)
+ x[XOFF + i] = (Float) amp[ii + i];
+
+ /* 150Hz high pass filtering */
+ azfilter(bv16_hpfb, HPO, x + XOFF, x + XOFF, FRSZ, cs->hpfzm, 1);
+ apfilter(bv16_hpfa, HPO, x + XOFF, x + XOFF, FRSZ, cs->hpfpm, 1);
+
+ /* Update highpass filtered signal buffer */
+ Fcopy(cs->x, x + FRSZ, XOFF);
+
+ /* Perform lpc analysis with asymmetrical window */
+ Autocor(r, x + LX - WINSZ, bv16_winl, WINSZ, NSTORDER); /* get autocorrelation lags */
+ for (i = 0; i <= NSTORDER; i++)
+ r[i] *= bv16_sstwin[i]; /* apply spectral smoothing */
+ Levinson(r, a, cs->old_A, LPCO);                         /* Levinson-Durbin recursion */
+
+ /* Pole-zero noise feedback filter */
+ for (i = 0; i <= NSTORDER; i++)
+ {
+ fsz[i] = a[i]*bv16_gfsz[i];
+ fsp[i] = a[i]*bv16_gfsp[i];
+ }
+
+ /* Bandwidth expansion */
+ for (i = 0; i <= LPCO; i++)
+ a[i] *= bwel[i];
+
+ /* LPC -> LSP Conversion */
+ a2lsp(a, lsp, cs->lsplast);
+
+ /* Spectral Quantization */
+ lspquan(lspq, bs.lspidx, lsp, cs->lsppm);
+
+ lsp2a(lspq, a);
+
+ /* Calculate lpc prediction residual */
+ Fcopy(dq, cs->dq, XOFF);                         /* copy dq() state to buffer */
+ azfilter(a, LPCO, x + XOFF, dq + XOFF, FRSZ, cs->stpem, 1);
+
+ /* Weighted version of lpc filter to generate weighted speech */
+ for (i = 0; i <= LPCO; i++)
+ aw[i] = STWAL[i]*a[i];
+
+ /* Get perceptually weighted speech signal */
+ apfilter(aw, LPCO, dq + XOFF, xw, FRSZ, cs->stwpm, 1);
+
+ /* Get the coarse version of pitch period using 4:1 decimation */
+ cpp = coarsepitch(xw, cs->xwd, cs->dfm, cs->cpplast);
+ cs->cpplast = cpp;
+
+ /* Refine the pitch period in the neighborhood of coarse pitch period
+ also calculate the pitch predictor tap for single-tap predictor */
+ pp = refinepitch(dq, cpp, &ppt);
+ bs.ppidx = pp - MINPP;
+
+ /* Vector quantize 3 pitch predictor taps with minimum residual energy */
+ bs.bqidx = pitchtapquan(dq, pp, bq, &lg);
+
+ /* Get coefficients of long-term noise feedback filter */
+ if (ppt > 1.0)
+ beta = LTWFL;
+ else if (ppt < 0.0)
+ beta = 0.0;
+ else
+ beta = LTWFL*ppt;
+
+ /* Gain quantization */
+ lg = (lg < FRSZ) ? 0 : log(lg/FRSZ)/log(2.0);
+ bs.gidx = gainquan(&gainq, lg, cs->lgpm, cs->prevlg, cs->level);
+
+ /* Level estimation */
+ dummy = estl_alpha;
+ lth = estlevel(cs->prevlg[0], &cs->level, &cs->lmax, &cs->lmin,
+ &cs->lmean, &cs->x1, LGPORDER + 1, Nfdm + 1, &dummy);
+
+ /* Scale the scalar quantizer codebook */
+ for (i = 0; i < (VDIM*CBSZ); i++)
+ cbs[i] = gainq*bv16_cccb[i];
+
+ /* Perform noise feedback coding of the excitation signal */
+ excquan(bs.qvidx, x + XOFF, a, fsz, fsp, bq, beta, cs->stsym,
+ cs->ltsym, cs->ltnfm, cs->stnfz, cs->stnfp, cbs, pp);
+
+ /* Update state memory */
+ Fcopy(dq + XOFF, cs->ltsym + MAXPP1, FRSZ);
+ Fcopy(cs->dq, dq + FRSZ, XOFF);
+ i = bv16_bitpack(out, &bs);
+ out += i;
+ outlen += i;
+ }
+ return outlen;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv16_encode_release(bv16_encode_state_t *s)
+{
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv16_encode_free(bv16_encode_state_t *s)
+{
+ free(s);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16excdecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excdec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excdec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excdec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,86 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16excdec.c - Excitation signal decoding including long-term synthesis.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16excdec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bv16externs.h"
+
+void excdec_w_LT_synth(Float *ltsym, /* Long-term synthesis filter memory at decoder */
+ int16_t *idx, /* Excitation codebook index array for current subframe */
+ Float gainq, /* Quantized linear gains for sub-subframes */
+ Float *b, /* Coefficient of 3-tap pitch predictor */
+ int16_t pp, /* Pitch period */
+ const Float *cb, /* Scalar quantizer codebook */
+ Float *EE)
+{
+ Float a0;
+ Float *fp1;
+ Float *fp2;
+ const Float *fp3;
+ Float gain;
+ int m;
+ int n;
+ int id;
+ int16_t        *ip;
+ Float E;
+ Float t;
+
+ ip = idx;
+ fp1 = &ltsym[LTMOFF]; /* fp1 points to 1st sample of current subframe */
+ fp2 = &ltsym[LTMOFF - pp + 1];
+ E = 0.0;
+ for (m = 0; m < FRSZ; m += VDIM) /* loop thru vectors in sub-subframe */
+ {
+ id = *ip++; /* get codebook index of current vector */
+ if (id < CBSZ)
+ {
+ gain = gainq;
+ }
+ else
+ {
+ gain = -gainq;
+ id -= CBSZ;
+ }
+ fp3 = &cb[id*VDIM];
+ for (n = 0; n < VDIM; n++)
+ {
+ a0 = b[0] * *fp2--;
+ a0 += b[1] * *fp2--;
+ a0 += b[2] * *fp2;/* a0=pitch predicted value of LT syn filt */
+ t = *fp3++ * gain;
+ E += t*t;
+ *fp1++ = a0 + t; /* add scale codevector to a0 */
+ fp2 = &fp2[3]; /* prepare fp2 for filtering next sample */
+ }
+ }
+ *EE = E;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16excquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16excquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,314 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16excquan.c : Vector Quantizer for 2-Stage Noise Feedback Coding
+ * with long-term predictive noise feedback coding embedded
+ * inside the int16_t-term predictive noise feedback coding loop.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16excquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <assert.h>
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bvcommon.h"
+#include "bv16externs.h"
+
+void excquan(int16_t *idx, /* quantizer codebook index for uq[] vector */
+ Float *s, /* input speech signal vector */
+ Float *aq, /* int16_t-term predictor coefficient array */
+ Float *fsz, /* int16_t-term noise feedback filter - numerator */
+ Float *fsp, /* int16_t-term noise feedback filter - denominator */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ Float beta, /* coefficient of 1-tap LT noise feedback filter */
+ Float *stsym, /* int16_t-term synthesis filter memory */
+ Float *ltsym, /* long-term synthesis filter memory */
+ Float *ltnfm, /* long-term noise feedback filter memory */
+ Float *stnfz,
+ Float *stnfp,
+ Float *cb, /* scalar quantizer codebook */
+ int pp) /* pitch period */
+{
+ Float qzir[VDIM]; /* Zero-input response */
+ Float qzsr[VDIM*CBSZ]; /* Negated zero-state response of codebook */
+ Float uq[VDIM]; /* Selected codebook vector (incl. sign) */
+ Float buf1[LPCO + FRSZ]; /* Buffer for filter memory & signal */
+ Float buf2[NSTORDER + FRSZ]; /* Buffer for filter memory */
+ Float buf3[NSTORDER + FRSZ]; /* Buffer for filter memory */
+ Float buf4[VDIM]; /* Buffer for filter memory */
+ Float a0;
+ Float a1;
+ Float a2;
+ Float *fp1;
+ Float *fp2;
+ Float *fp3;
+ Float *fp4;
+ Float sign;
+ Float *fpa;
+ Float *fpb;
+ Float ltfv[VDIM];
+ Float ppv[VDIM];
+ int i;
+ int j;
+ int m;
+ int n;
+ int jmin;
+ int iv;
+ Float buf5[VDIM]; /* Buffer for filter memory */
+ Float buf6[VDIM]; /* Buffer for filter memory */
+ Float e;
+ Float E;
+ Float Emin;
+ Float *p_ppv;
+ Float *p_ltfv;
+ Float *p_uq;
+ Float v;
+
+ /* copy filter memory to beginning part of temporary buffer */
+ fp1 = &stsym[LPCO - 1];
+ for (i = 0; i < LPCO; i++)
+ buf1[i] = *fp1--; /* this buffer is used to avoid memory shifts */
+
+ /* copy noise feedback filter memory */
+ fp1 = &stnfz[NSTORDER - 1];
+ fp2 = &stnfp[NSTORDER - 1];
+ for (i = 0; i < NSTORDER; i++)
+ {
+ buf2[i] = *fp1--;
+ buf3[i] = *fp2--;
+ }
+
+ /************************************************************************************/
+ /* Z e r o - S t a t e R e s p o n s e */
+ /************************************************************************************/
+ /* Calculate negated Zero State Response */
+ fp2 = cb; /* fp2 points to start of first codevector */
+ fp3 = qzsr; /* fp3 points to start of first zero-state response vector */
+
+ /* For each codevector */
+ for (j = 0; j < CBSZ; j++)
+ {
+ /* Calculate the elements of the negated ZSR */
+ for (i = 0; i < VDIM; i++)
+ {
+ /* int16_t-term prediction */
+ a0 = 0.0;
+ fp1 = buf4;
+ for (n = i; n > 0; n--)
+ a0 -= *fp1++ * aq[n];
+
+ /* Update memory of int16_t-term prediction filter */
+ *fp1++ = a0 + *fp2;
+
+ /* noise feedback filter */
+ a1 = 0.0;
+ fpa = buf5;
+ fpb = buf6;
+ for (n = i; n > 0; n--)
+ a1 += ((*fpa++ * fsz[n]) - (*fpb++ * fsp[n]));
+
+ /* Update memory of pole section of noise feedback filter */
+ *fpb++ = a1;
+
+ /* ZSR */
+ *fp3 = *fp2++ + a0 + a1;
+
+ /* Update memory of zero section of noise feedback filter */
+ *fpa++ = -(*fp3++);
+ }
+ }
+
+ /* loop through every vector of the current subframe */
+ iv = 0; /* iv = index of the current vector */
+ for (m = 0; m < FRSZ; m += VDIM)
+ {
+ /********************************************************************************/
+ /* Z e r o - I n p u t R e s p o n s e */
+ /********************************************************************************/
+ /* compute pitch-predicted vector, which should be independent of the
+ residual vq codevectors being tried if vdim < min. pitch period */
+ fp2 = ltfv;
+ fp3 = ppv;
+ for (n = m; n < m + VDIM; n++)
+ {
+ fp1 = &ltsym[MAXPP1 + n - pp + 1];
+ a1 = b[0] * *fp1--;
+ a1 += b[1] * *fp1--;
+ a1 += b[2] * *fp1--;/* a1=pitch predicted vector of LT syn filt */
+ *fp3++ = a1; /* write result to ppv[] vector */
+
+ *fp2++ = a1 + beta*ltnfm[MAXPP1 + n - pp];
+ }
+
+ /* compute zero-input response */
+ fp2 = ppv;
+ fp4 = ltfv;
+ fp3 = qzir;
+ for (n = m; n < m + VDIM; n++)
+ {
+ /* perform multiply-adds along the delay line of the predictor */
+ fp1 = &buf1[n];
+ a0 = 0.;
+ for (i = LPCO; i > 0; i--)
+ a0 -= *fp1++ * aq[i];
+
+ /* perform multiply-adds along the noise feedback filter */
+ fpa = &buf2[n];
+ fpb = &buf3[n];
+ a1 = 0.;
+ for (i = NSTORDER; i > 0; i--)
+ a1 += ((*fpa++ * fsz[i]) - (*fpb++ * fsp[i]));
+ *fpb = a1;                /* update output of the noise feedback filter */
+
+ a2 = s[n] - (a0 + a1);                /* v[n] */
+
+ /* a2 now contains v[n]; subtract the sum of the two long-term
+ filters to get the zero-input response */
+ *fp3++ = a2 - *fp4++;        /* q[n] = u[n] during ZIR computation */
+
+ /* update int16_t-term noise feedback filter memory */
+ a0 += *fp2;                 /* a0 now conatins the qs[n] */
+ *fp1 = a0;
+ a2 -= *fp2++; /* a2 now contains qszi[n] */
+ *fpa = a2; /* update int16_t-term noise feedback filter memory */
+ }
+
+ /********************************************************************************/
+ /* S e a r c h C o d e b o o k */
+ /********************************************************************************/
+ /* loop through every codevector of the residual vq codebook */
+ /* and find the one that minimizes the energy of q[n] */
+ Emin = 1e30;
+ fp4 = qzsr;
+ sign = 0.0F;
+ jmin = 0;
+ for (j = 0; j < CBSZ; j++)
+ {
+ /* Try positive sign */
+ fp2 = qzir;
+ E = 0.0;
+ for (n = 0; n < VDIM; n++)
+ {
+ e = *fp2++ - *fp4++; // sign impacted by negated ZSR
+ E += e*e;
+ }
+ if (E < Emin)
+ {
+ jmin = j;
+ Emin = E;
+ sign = +1.0F;
+ }
+ /* Try negative sign */
+ fp4 -= VDIM;
+ fp2 = qzir;
+ E = 0.0;
+ for (n = 0; n < VDIM; n++)
+ {
+ e = *fp2++ + *fp4++; // sign impacted by negated ZSR
+ E += e*e;
+ }
+ if (E < Emin)
+ {
+ jmin = j;
+ Emin = E;
+ sign = -1.0F;
+ }
+ }
+
+ /* The best codevector has been found; assign vq codebook index */
+ if (sign == 1.0F)
+ idx[iv++] = jmin;
+ else
+ idx[iv++] = jmin + CBSZ; /* MSB of index is sign bit */
+
+ fp3 = &cb[jmin*VDIM]; /* fp3 points to start of best codevector */
+ for (n = 0; n < VDIM; n++)
+ uq[n] = sign * *fp3++;
+ /********************************************************************************/
+
+
+ /********************************************************************************/
+ /* U p d a t e F i l t e r M e m o r y */
+ /********************************************************************************/
+ fp3 = ltsym + MAXPP1 + m;
+ fp4 = ltnfm + MAXPP1 + m;
+ p_ltfv = ltfv;
+ p_ppv = ppv;
+ p_uq = uq;
+ for (n = m; n < m + VDIM; n++)
+ {
+ /* Update memory of long-term synthesis filter */
+ *fp3 = *p_ppv++ + *p_uq;
+
+ /* int16_t-term prediction */
+ a0 = 0.0;
+ fp1 = &buf1[n];
+ for (i = LPCO; i > 0; i--)
+ a0 -= *fp1++ * aq[i];
+
+ /* Update memory of int16_t-term synthesis filter */
+ *fp1++ = a0 + *fp3;
+
+ /* int16_t-term pole-zero noise feedback filter */
+ fpa = &buf2[n];
+ fpb = &buf3[n];
+ a1 = 0.0;
+ for (i = NSTORDER; i > 0; i--)
+ a1 += ((*fpa++ * fsz[i]) - (*fpb++ * fsp[i]));
+
+ /* Update memory of pole section of noise feedback filter */
+ *fpb++ = a1;
+
+ v = s[n] - a0 - a1;
+
+ /* Update memory of zero section of noise feedback filter */
+ *fpa++ = v - *fp3++;
+
+ /* Update memory of long-term noise feedback filter */
+ *fp4++ = v - *p_ltfv++ - *p_uq++;
+ }
+ }
+
+ /* Update short-term predictor and noise feedback filter memories after subframe */
+ for (i = 0; i < LPCO; i++)
+ stsym[i] = *--fp1;
+
+ for (i = 0; i < NSTORDER; i++)
+ {
+ stnfz[i] = *--fpa;
+ stnfp[i] = *--fpb;
+ }
+
+ /* update long-term predictor and noise feedback filter memories after subframe */
+ fp2 = &ltnfm[FRSZ];
+ fp3 = &ltsym[FRSZ];
+ for (i = 0; i < MAXPP1; i++)
+ {
+ ltnfm[i] = fp2[i];
+ ltsym[i] = fp3[i];
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16externsh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16externs.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16externs.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16externs.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,165 @@
</span><ins>+/*****************************************************************************/
+/* BroadVoice(R)16 (BV16) Floating-Point ANSI-C Source Code */
+/* Revision Date: August 19, 2009 */
+/* Version 1.0 */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* Copyright 2000-2009 Broadcom Corporation */
+/* */
+/* This software is provided under the GNU Lesser General Public License, */
+/* version 2.1, as published by the Free Software Foundation ("LGPL"). */
+/* This program is distributed in the hope that it will be useful, but */
+/* WITHOUT ANY SUPPORT OR WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LGPL for */
+/* more details. A copy of the LGPL is available at */
+/* http://www.broadcom.com/licenses/LGPLv2.1.php, */
+/* or by writing to the Free Software Foundation, Inc., */
+/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/*****************************************************************************/
+
+
+/*****************************************************************************
+ bv16externs.c : BV16 Fixed-Point externs
+
+ $Log: bv16externs.h,v $
+ Revision 1.1.1.1 2009/11/19 12:10:48 steveu
+ Start from Broadcom's code
+
+ Revision 1.1.1.1 2009/11/17 14:06:02 steveu
+ start
+
+******************************************************************************/
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bvcommon.h"
+
+/* POINTERS */
+extern const Float bv16_winl[WINSZ];
+extern const Float bv16_sstwin[1 + LPCO];
+extern const Float bv16_gfsz[];
+extern const Float bv16_gfsp[];
+extern const int bv16_idxord[];
+extern const Float bv16_hpfa[];
+extern const Float bv16_hpfb[];
+extern const Float bv16_adf[];
+extern const Float bv16_bdf[];
+extern const Float bv16_x[];
+extern const Float bv16_x2[];
+extern const Float bv16_MPTH[];
+
+/* LSP Quantization */
+extern const Float bv16_lspecb1[LSPECBSZ1*LPCO];
+extern const Float bv16_lspecb2[LSPECBSZ2*LPCO];
+extern const Float bv16_lspmean[LPCO];
+extern const Float bv16_lspp[LSPPORDER*LPCO];
+
+/* Pitch Predictor Codebook */
+extern const Float bv16_pp9cb[PPCBSZ*9];
+
+/* Log-Gain Quantization */
+extern const Float bv16_lgpecb[LGPECBSZ];
+extern const Float bv16_lgp[LGPORDER];
+extern const Float bv16_lgmean;
+
+/* Log-Gain Limitation */
+extern const Float bv16_lgclimit[];
+
+/* Excitation Codebook */
+extern const Float bv16_cccb[CBSZ*VDIM];
+
+extern const Float bv16_lgpecb_nh[];
+
+/* Function Prototypes */
+extern Float estlevel(Float lg,
+ Float *level,
+ Float *lmax,
+ Float *lmin,
+ Float *lmean,
+ Float *x1,
+ int16_t ngfae,
+ int16_t nggalgc,
+ Float *estl_alpha_min);
+
+extern void excdec_w_LT_synth(
+ Float *ltsym, /* long-term synthesis filter memory at decoder*/
+ int16_t *idx, /* excitation codebook index array for current subframe */
+ Float gainq, /* quantized linear gains for sub-subframes */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ int16_t pp, /* pitch period */
+ const Float *cb, /* scalar quantizer codebook */
+ Float *EE);
+
+extern Float gaindec(Float *lgq,
+ int16_t gidx,
+ Float *lgpm,
+ Float *prevlg,                /* previous log gains (last two frames) */
+ Float level,
+ int16_t *nggalgc,
+ Float *lg_el);
+
+extern Float gaindec_fe(Float lgq_last,
+ Float *lgpm);
+
+void gainplc(Float E,
+ Float *lgeqm,
+ Float *lgqm);
+
+extern void lspdec(
+ Float *lspq,
+ int16_t *lspidx,
+ Float *lsppm,
+ Float *lspq_last);
+
+extern void lspplc(
+ Float *lspq,
+ Float *lsppm);
+
+extern int coarsepitch(
+ Float *xw,
+ Float *xwd,
+ Float *dfm,
+ int        cpplast);
+
+extern int refinepitch(
+ Float *x,
+ int cpp,
+ Float *ppt);
+
+extern int pitchtapquan(
+ Float *x,
+ int        pp,
+ Float *b,
+ Float *re);
+
+extern void excquan(
+ int16_t *idx, /* quantizer codebook index for uq[] vector */
+ Float *s, /* input speech signal vector */
+ Float *aq, /* short-term predictor coefficient array */
+ Float *fsz, /* short-term noise feedback filter - numerator */
+ Float *fsp, /* short-term noise feedback filter - denominator */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ Float beta, /* coefficient of 1-tap LT noise feedback filter */
+ Float *stsym, /* filter memory before filtering of current vector */
+ Float *ltsym, /* long-term synthesis filter memory */
+ Float *ltnfm, /* long-term noise feedback filter memory */
+ Float *stnfz,
+ Float *stnfp,
+ Float *cb, /* scalar quantizer codebook */
+ int pp); /* pitch period (# of 8 kHz samples) */
+
+extern int gainquan(
+ Float *gainq,
+ Float lg,
+ Float *lgpm,
+ Float *prevlg,
+ Float level);
+
+extern void lspquan(
+ Float *lspq,
+ int16_t *lspidx,
+ Float *lsp,
+ Float *lsppm);
+
+extern void bv16_pp3dec(int16_t idx, Float *b);
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16fine_pitchc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16fine_pitch.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16fine_pitch.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16fine_pitch.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16fine_pitch.c - Fine pitch search
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16fine_pitch.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bv16externs.h"
+
+#define FS        (XOFF+1)        /* Frame Starting index */
+#define         FE        (XOFF+FRSZ)        /* Frame Ending index        */
+#define DEV        (DECF-1)
+
+int refinepitch(Float *x,
+ int cpp,
+ Float *ppt)
+{
+ Float cor, cor2, energy, cormax, cor2max, energymax;
+ Float *fp0, *fp1, *fp2, *fp3;
+ int        lb, ub, pp, i, j;
+
+ if (cpp >= MAXPP)
+ cpp = MAXPP - 1;
+ if (cpp < MINPP)
+ cpp = MINPP;
+ lb = cpp - DEV;
+ if (lb < MINPP)
+ lb = MINPP; /* lower bound of pitch period search range */
+ ub = cpp + DEV;
+ /* to avoid selecting MAXPP as the refined pitch period */
+ if (ub >= MAXPP)
+ ub = MAXPP - 1;/* lower bound of pitch period search range */
+
+ i = lb;                                /* start the search from lower bound         */
+
+ fp0 = x + FS - 1;
+ fp1 = x + FS - 1 - i;
+ cor = energy = 0.0;
+ for (j = 0; j < (FE - FS + 1); j++)
+ {
+ energy += (*fp1) * (*fp1);
+ cor += (*fp0++) * (*fp1++);
+ }
+
+ pp = i;
+ cormax = cor;
+ cor2max = cor*cor;
+ energymax = energy;
+
+ fp0 = x + FE - lb - 1;
+ fp1 = x + FS - lb - 2;
+ for (i = lb + 1; i <= ub; i++)
+ {
+ fp2 = x + FS - 1;
+ fp3 = x + FS - i - 1;
+ cor = 0.;
+ for (j = 0; j < (FE - FS + 1); j++)
+ cor += (*fp2++)*(*fp3++);
+ cor2 = cor*cor;
+ energy += ((*fp1)*(*fp1) - (*fp0)*(*fp0));
+ fp0--;
+ fp1--;
+ if ((cor2*energymax) > (cor2max*energy))
+ {
+ pp = i;
+ cormax = cor;
+ cor2max = cor2;
+ energymax = energy;
+ }
+ }
+
+ *ppt = (energymax != 0) ? (cormax/energymax) : 0.0;
+
+ return pp;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16gaindecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gaindec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gaindec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gaindec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,175 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16gaindec.c - Gain decoding
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16gaindec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+#include "typedef.h"
+#include "bv16strct.h"
+#include "bv16externs.h"
+
+Float gaindec(Float *lgq,
+ int16_t gidx,
+ Float *lgpm,
+ Float *prevlg,                /* previous log gains (last two frames) */
+ Float level,
+ int16_t *nggalgc,
+ Float *lg_el)
+{
+ Float gainq;
+ Float elg;
+ Float lgc;
+ Float lgq_nh;
+ int i;
+ int n;
+ int k;
+
+ /* calculate estimated log-gain */
+ elg = 0;
+ for (i = 0; i < LGPORDER; i++)
+ elg += bv16_lgp[i]*lgpm[i];
+
+ elg += bv16_lgmean;
+
+ /* Calculate decoded log-gain */
+ *lgq = bv16_lgpecb[gidx] + elg;
+
+ /* next higher gain */
+ if (gidx < LGPECBSZ - 1)
+ {
+ lgq_nh = bv16_lgpecb_nh[gidx] + elg;
+ if (*lgq < 0.0 && fabs(lgq_nh) < fabs(*lgq))
+ {
+ /* To avoid thresholding when the enc Q makes it below the threshold */
+ *lgq = 0.0;
+ }
+ }
+
+ /* look up from lgclimit() table the maximum log gain change allowed */
+ i = (int) ((prevlg[0] - level - LGLB) * 0.5F); /* get column index */
+ if (i >= NGB)
+ i = NGB - 1;
+ else if (i < 0)
+ i = 0;
+ n = (int) ((prevlg[0] - prevlg[1] - LGCLB) * 0.5F); /* get row index */
+ if (n >= NGCB)
+ n = NGCB - 1;
+ else if (n < 0)
+ n = 0;
+
+ i = i*NGCB + n;
+
+ /* update log-gain predictor memory,
+ check whether decoded log-gain exceeds lgclimit */
+ for (k = LGPORDER - 1; k > 0; k--)
+ lgpm[k] = lgpm[k - 1];
+
+ lgc = *lgq - prevlg[0];
+ if ((lgc > bv16_lgclimit[i]) && (gidx > 0)) /* if decoded log-gain exceeds limit */
+ {
+ *lgq = prevlg[0];         /* use the log-gain of previous frame */
+ lgpm[0] = *lgq - elg;
+ *nggalgc = 0;
+ *lg_el = bv16_lgclimit[i] + prevlg[0];
+ }
+ else
+ {
+ lgpm[0] = bv16_lgpecb[gidx];
+ *nggalgc = *nggalgc + 1;
+ if (*nggalgc > Nfdm)
+ *nggalgc = Nfdm + 1;
+ *lg_el = *lgq;
+ }
+
+ /* update log-gain predictor memory */
+ prevlg[1] = prevlg[0];
+ prevlg[0] = *lgq;
+
+ /* convert quantized log-gain to linear domain */
+ gainq = pow(2.0F, 0.5F * *lgq);
+
+ return gainq;
+}
+
+Float gaindec_fe(Float lgq_last,
+ Float *lgpm)
+{
+ Float elg;
+ int i;
+
+ /* calculate estimated log-gain */
+ elg = 0.0F;
+ for (i = 0; i < LGPORDER; i++)
+ elg += bv16_lgp[i]*lgpm[i];
+
+ /* update log-gain predictor memory */
+ for (i = LGPORDER - 1; i > 0; i--)
+ lgpm[i] = lgpm[ i- 1];
+ lgpm[0] = lgq_last - bv16_lgmean - elg;
+
+ return lgq_last;
+}
+
+void gainplc(Float E,
+ Float *lgeqm,
+ Float *lgqm)
+{
+ int k;
+ Float pe;
+ Float lg;
+ Float mrlg;
+ Float elg;
+ Float lge;
+
+ pe = INVFRSZ*E;
+
+ if (pe - TMinlg > 0.0)
+ lg = log(pe)/log(2.0);
+ else
+ lg = Minlg;
+
+ mrlg = lg - bv16_lgmean;
+
+ elg = 0.0;
+ for (k = 0; k < GPO; k++)
+ elg += bv16_lgp[k]*lgeqm[k];
+
+ /* Predicted log-gain error */
+ lge = mrlg - elg;
+
+ /* Update quantizer memory */
+ for (k = GPO - 1; k > 0; k--)
+ lgeqm[k] = lgeqm[k - 1];
+ lgeqm[0] = lge;
+
+ /* Update quantized log-gain memory */
+ lgqm[1] = lgqm[0];
+ lgqm[0] = lg;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16gainquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gainquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gainquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16gainquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,124 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16gainquan.c - Gain quantization based on inter-subframe
+ * moving-average prediction of logarithmic gain.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16gainquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+#include "typedef.h"
+#include "bv16externs.h"
+
+int gainquan(Float *gainq,
+ Float lg,
+ Float *lgpm,
+ Float *prevlg, /* previous log gains (last two frames) */
+ Float level)
+{
+ Float elg;
+ Float lgpe;
+ Float limit;
+ Float dmin;
+ Float d;
+ int i;
+ int n;
+ int gidx = 0;
+ const int *p_gidx;
+
+ /* Calculate estimated log-gain */
+ elg = bv16_lgmean;
+ for (i = 0; i < LGPORDER; i++)
+ elg += bv16_lgp[i]*lgpm[i];
+
+ /* subtract log-gain mean & estimated log-gain to get prediction error */
+ lgpe = lg - elg;
+
+ /* scalar quantization of log-gain prediction error */
+ dmin = 1e30;
+ p_gidx = bv16_idxord;
+ for (i = 0; i < LGPECBSZ; i++)
+ {
+ d = lgpe - bv16_lgpecb[*p_gidx++];
+ if (d < 0.0F)
+ d = -d;
+ if (d < dmin)
+ {
+ dmin = d;
+ gidx = i;
+ }
+ }
+
+ /* calculate quantized log-gain */
+ *gainq = bv16_lgpecb[bv16_idxord[gidx]] + elg;
+
+ /* look up from lgclimit() table the maximum log gain change allowed */
+ i = (int) ((prevlg[0] - level - LGLB)*0.5F); /* get column index */
+ if (i >= NGB)
+ {
+ i = NGB - 1;
+ }
+ else if (i < 0)
+ {
+ i = 0;
+ }
+ n = (int) ((prevlg[0] - prevlg[1] - LGCLB) * 0.5F); /* get row index */
+ if (n >= NGCB)
+ {
+ n = NGCB - 1;
+ }
+ else if (n < 0)
+ {
+ n = 0;
+ }
+ i = i * NGCB + n;
+
+ /* check whether quantized log-gain cause a gain change > lgclimit */
+ limit = prevlg[0] + bv16_lgclimit[i];/* limit that log-gain shouldn't exceed */
+ while ((*gainq > limit) && (gidx > 0)) /* if q log-gain exceeds limit */
+ {
+ gidx -= 1; /* decrement gain quantizer index by 1 */
+ *gainq = bv16_lgpecb[bv16_idxord[gidx]] + elg; /* use next quantizer output*/
+ }
+
+ /* Get true codebook index */
+ gidx = bv16_idxord[gidx];
+
+ /* update log-gain predictor memory */
+ prevlg[1] = prevlg[0];
+ prevlg[0] = *gainq;
+ for (i = LGPORDER - 1; i > 0; i--)
+ lgpm[i] = lgpm[i - 1];
+ lgpm[0] = bv16_lgpecb[gidx];
+
+ /* convert quantized log-gain to linear domain */
+ *gainq = pow(2.0F, 0.5F * *gainq);
+
+ return gidx;
+}
+
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16levelestc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16levelest.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16levelest.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16levelest.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16levelest.c - Signal level estimation
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16levelest.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv16externs.h"
+
+Float        estlevel(
+ Float        lg,
+ Float        *level,
+ Float        *lmax,
+ Float        *lmin,
+ Float        *lmean,
+ Float        *x1,
+ int16_t ngfae,
+ int16_t nggalgc,
+ Float *estl_alpha_min)
+{
+ Float        lth;
+
+ /* Reset forgetting factor for Lmin to fast decay. This is to avoid Lmin staying at an
+ incorrect low level compensating for the possibility it has caused incorrect bit-error
+ declaration by making the estimated level too low. */
+ if (nggalgc == 0)
+ {
+ *estl_alpha_min = estl_alpha1;
+ }
+ /* Reset forgetting factor for Lmin to regular decay if fast decay has taken place for
+ the past Nfdm frames. */
+ else if (nggalgc == Nfdm+1)
+ {
+ *estl_alpha_min = estl_alpha;
+ }
+
+ /* update the new maximum, minimum, & mean of log-gain */
+ if (lg > *lmax)
+ {
+ *lmax=lg;        /* use new log-gain as max if it is > max */
+ }
+ else
+ {
+ *lmax=*lmean+estl_alpha*(*lmax-*lmean); /* o.w. attenuate toward lmean */
+ }
+
+ if (lg < *lmin && ngfae == LGPORDER+1 && nggalgc > LGPORDER
+ )
+ {
+ *lmin=lg;        /* use new log-gain as min if it is < min */
+ /* Reset forgetting factor for Lmin to regular decay in case it has been on
+ fast decay since it has now found a new minimum level. */
+ *estl_alpha_min = estl_alpha;
+ }
+ else
+ {
+ *lmin=*lmean+(*estl_alpha_min)*(*lmin-*lmean); /* o.w. attenuate toward lmean */
+ }
+
+ *lmean=estl_beta*(*lmean)+estl_beta1*(0.5*(*lmax+*lmin));
+
+ /* update estimated input level, by calculating a running average
+ (using an exponential window) of log-gains exceeding lmean */
+ lth=*lmean+estl_TH*(*lmax-*lmean);
+ if (lg > lth)
+ {
+ *x1=estl_a*(*x1)+estl_a1*lg;
+ *level=estl_a*(*level)+estl_a1*(*x1);
+ }
+
+ return        lth;
+
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16lspdecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspdec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspdec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspdec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,175 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16lspdec.c - LSP decoding
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16lspdec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include "typedef.h"
+#include "bv16externs.h"
+#include "bvcommon.h"
+
+void vqdec(Float *, int16_t, const Float *, int, int);
+
+void lspdec(Float *lspq,
+ int16_t *lspidx,
+ Float *lsppm,
+ Float *lspq_last)
+{
+ Float elsp[LPCO];
+ Float lspe[LPCO];
+ Float lspeq1[LPCO];
+ Float lspeq2[LPCO];
+ Float a0;
+ Float *fp1;
+ Float *fp2;
+ const Float *fp3;
+ int i;
+ int k;
+ int sign;
+ int stbl;
+
+ /* calculate estimated (ma-predicted) lsp vector */
+ fp3 = bv16_lspp;
+ fp2 = lsppm;
+ for (i = 0; i < LPCO; i++)
+ {
+ a0 = 0.0F;
+ for (k = 0; k < LSPPORDER; k++)
+ a0 += *fp3++ * *fp2++;
+ elsp[i] = a0;
+ }
+
+ /* perform first-stage vq codebook decode */
+ vqdec(lspeq1, lspidx[0], bv16_lspecb1, LPCO, LSPECBSZ1);
+
+ /* perform second-stage vq codebook decode */
+ if (lspidx[1] >= LSPECBSZ2)
+ {
+ sign = -1;
+ lspidx[1] = (2*LSPECBSZ2 - 1) - lspidx[1];
+ }
+ else
+ {
+ sign = 1;
+ }
+ vqdec(lspeq2, lspidx[1], bv16_lspecb2, LPCO, LSPECBSZ2);
+
+ /* get overall quantizer output vector of the two-stage vq */
+ for (i = 0; i < LPCO; i++)
+ lspe[i] = lspeq1[i] + sign*lspeq2[i];
+
+ /* calculate quantized lsp for stability check */
+ for (i = 0; i < STBLDIM; i++)
+ lspq[i] = lspe[i] + elsp[i] + bv16_lspmean[i];
+
+ /* detect bit-errors based on ordering property of LSP */
+ stbl = stblchck(lspq, STBLDIM);
+
+ /* replace LSP if bit-errors are detected */
+ if (!stbl)
+ {
+ for (i = 0; i < LPCO; i++)
+ {
+ lspq[i] = lspq_last[i];
+ lspe[i] = lspq[i] - elsp[i] - bv16_lspmean[i];
+ }
+ }
+ else
+ {
+ /* calculate remaining quantized LSP for error free case */
+ for (i = STBLDIM; i < LPCO; i++)
+ lspq[i] = lspe[i] + elsp[i] + bv16_lspmean[i];
+ }
+
+ /* update lsp ma predictor memory */
+ i = LPCO * LSPPORDER - 1;
+ fp1 = &lsppm[i];
+ fp2 = &lsppm[i - 1];
+ for (i = LPCO - 1; i >= 0; i--)
+ {
+ for (k = LSPPORDER; k > 1; k--)
+ *fp1-- = *fp2--;
+ *fp1-- = lspe[i];
+ fp2--;
+ }
+
+ /* ensure correct ordering of lsp to guarantee lpc filter stability */
+ stblz_lsp(lspq, LPCO);
+}
+
+
+void vqdec(Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t idx, /* VQ codebook index for the nearest neighbor */
+ const Float *cb, /* VQ codebook */
+ int vdim, /* vector dimension */
+ int cbsz) /* codebook size (number of codevectors) */
+{
+ int j;
+ int k;
+
+ j = idx * vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = cb[j + k];
+}
+
+
+void lspplc(Float *lspq, Float *lsppm)
+{
+ Float elsp[LPCO];
+ Float a0;
+ Float *fp1;
+ const Float *fp2;
+ const Float *fp3;
+ int i;
+ int k;
+
+ /* Calculate estimated (ma-predicted) lsp vector */
+ fp3 = bv16_lspp;
+ fp2 = lsppm;
+ for (i = 0; i < LPCO; i++)
+ {
+ a0 = 0.0F;
+ for (k = 0; k < LSPPORDER; k++)
+ a0 += *fp3++ * *fp2++;
+ elsp[i] = a0;
+ }
+
+ /* Update lsp ma predictor memory */
+ i = LPCO*LSPPORDER - 1;
+ fp1 = &lsppm[i];
+ fp2 = &lsppm[i - 1];
+ for (i = LPCO - 1; i >= 0; i--)
+ {
+ for (k = LSPPORDER; k > 1; k--)
+ *fp1-- = *fp2--;
+ *fp1-- = lspq[i] - bv16_lspmean[i] - elsp[i];
+ fp2--;
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16lspquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16lspquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,269 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16lspquan.c - LSP quantization based on inter-frame moving-average
+ * prediction and two-stage VQ.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16lspquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include "typedef.h"
+#include "bv16externs.h"
+#include "bvcommon.h"
+
+void vqmse(
+ Float *xq,
+ int16_t *idx,
+ Float *x,
+ const Float *cb,
+ int vdim,
+ int cbsz);
+
+void svqwmse(
+ Float *xq,
+ int16_t *idx,
+ Float *x,
+ Float *xa,
+ Float *w,
+ const Float *cb,
+ int vdim,
+ int cbsz);
+
+void lspquan(
+ Float *lspq,
+ int16_t *lspidx,
+ Float *lsp,
+ Float *lsppm
+)
+{
+ Float d[LPCO];
+ Float w[LPCO];
+ Float elsp[LPCO];
+ Float lspe[LPCO];
+ Float lspa[LPCO];
+ Float lspeq1[LPCO];
+ Float lspeq2[LPCO];
+ Float a0;
+ Float *fp1;
+ const Float *fp2;
+ const Float *fp3;
+ int i;
+ int k;
+
+ /* calculate the weights for weighted mean-square error distortion */
+ for (i = 0; i < LPCO - 1; i++)
+ d[i] = lsp[i + 1] - lsp[i]; /* LSP difference vector */
+ w[0] = 1.0F/d[0];
+ for (i = 1; i < LPCO - 1; i++)
+ {
+ if (d[i] < d[i-1])
+ w[i] = 1.0F/d[i];
+ else
+ w[i] = 1.0F/d[i - 1];
+ }
+ w[LPCO - 1] = 1.0F/d[LPCO - 2];
+
+ /* Calculate estimated (ma-predicted) lsp vector */
+ fp3 = bv16_lspp;
+ fp2 = lsppm;
+ for (i = 0; i < LPCO; i++)
+ {
+ a0 = 0.0F;
+ for (k = 0; k < LSPPORDER; k++)
+ a0 += *fp3++ * *fp2++;
+ elsp[i] = a0;
+ }
+
+ /* Subtract lsp mean value & estimated lsp to get prediction error */
+ for (i = 0; i < LPCO; i++)
+ lspe[i] = lsp[i] - bv16_lspmean[i] - elsp[i];
+
+ /* Perform first-stage mse vq codebook search */
+ vqmse(lspeq1, &lspidx[0], lspe, bv16_lspecb1, LPCO, LSPECBSZ1);
+
+ /* Calculate quantization error vector of first-stage vq */
+ for (i = 0; i < LPCO; i++)
+ d[i] = lspe[i] - lspeq1[i];
+
+ /* Perform second-stage vq codebook search, signed codebook with wmse */
+ for (i = 0; i < LPCO; i++)
+ lspa[i] = bv16_lspmean[i] + elsp[i] + lspeq1[i];
+ svqwmse(lspeq2, &lspidx[1], d, lspa, w, bv16_lspecb2, LPCO, LSPECBSZ2);
+
+ /* Get overall quantizer output vector of the two-stage vq */
+ for (i = 0; i < LPCO; i++)
+ lspe[i] = lspeq1[i] + lspeq2[i];
+
+ /* update lsp ma predictor memory */
+ i = LPCO * LSPPORDER - 1;
+ fp1 = &lsppm[i];
+ fp2 = &lsppm[i - 1];
+ for (i = LPCO - 1; i >= 0; i--)
+ {
+ for (k = LSPPORDER; k > 1; k--)
+ *fp1-- = *fp2--;
+ *fp1-- = lspe[i];
+ fp2--;
+ }
+
+ /* calculate quantized lsp */
+ for (i = 0; i < LPCO; i++)
+ lspq[i] = lspa[i] + lspeq2[i];
+
+ /* ensure correct ordering of lsp to guarantee lpc filter stability */
+ stblz_lsp(lspq, LPCO);
+}
+
+void vqmse(Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t *idx, /* VQ codebook index for the nearest neighbor */
+ Float *x, /* input vector */
+ const Float *cb, /* VQ codebook */
+ int vdim, /* vector dimension */
+ int cbsz) /* codebook size (number of codevectors) */
+{
+ const Float *fp1;
+ Float dmin;
+ Float d;
+ int j;
+ int k;
+ Float e;
+
+ fp1 = cb;
+ dmin = 1.0e30;
+ for (j = 0; j < cbsz; j++)
+ {
+ d = 0.0F;
+ for (k = 0; k < vdim; k++)
+ {
+ e = x[k] - (*fp1++);
+ d += e*e;
+ }
+ if (d < dmin)
+ {
+ dmin = d;
+ *idx = j;
+ }
+ }
+
+ j = *idx * vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = cb[j + k];
+}
+
+/* Signed WMSE VQ */
+void svqwmse(
+ Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t *idx, /* VQ codebook index for the nearest neighbor */
+ Float *x, /* input vector */
+ Float *xa, /* approximation prior to current stage */
+ Float *w, /* weights for weighted Mean-Square Error */
+ const Float *cb, /* VQ codebook */
+ int vdim, /* vector dimension */
+ int cbsz /* codebook size (number of codevectors) */
+)
+{
+ const Float *fp1;
+ const Float *fp2;
+ Float dmin;
+ Float d;
+ Float xqc[STBLDIM];
+ int j, k, stbl, sign=1;
+ Float e;
+
+ fp1 = cb;
+ dmin = 1e30;
+ *idx = -1;
+
+ for (j = 0; j < cbsz; j++)
+ {
+ /* Try negative sign */
+ d = 0.0;
+ fp2 = fp1;
+
+ for (k = 0; k < vdim; k++)
+ {
+ e = x[k] + *fp1++;
+ d += w[k]*e*e;
+ }
+
+ /* check candidate - negative sign */
+ if (d < dmin)
+ {
+ for (k = 0; k < STBLDIM; k++)
+ xqc[k] = xa[k] - *fp2++;
+ /* check stability - negative sign */
+ stbl = stblchck(xqc, STBLDIM);
+ if (stbl > 0)
+ {
+ dmin = d;
+ *idx = j;
+ sign = -1;
+ }
+ }
+
+ /* Try positive sign */
+ fp1 -= vdim;
+ d = 0.0;
+ fp2 = fp1;
+
+ for (k = 0; k < vdim; k++)
+ {
+ e = x[k] - *fp1++;
+ d += w[k]*e*e;
+ }
+
+ /* check candidate - positive sign */
+ if (d < dmin)
+ {
+ for (k = 0; k < STBLDIM; k++)
+ xqc[k] = xa[k] + *fp2++;
+
+ /* check stability - positive sign */
+ stbl = stblchck(xqc, STBLDIM);
+ if (stbl > 0)
+ {
+ dmin = d;
+ *idx = j;
+ sign = +1;
+ }
+ }
+ }
+
+ if (*idx == -1)
+ {
+ printf("\nWARNING: Encoder-decoder synchronization lost for clean channel!!!\n");
+ *idx = 0;
+ sign = 1;
+ }
+
+ fp1 = cb + (*idx)*vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = (double) sign*(*fp1++);
+ if (sign < 0)
+ *idx = (2*cbsz - 1) - (*idx);
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16plcc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16plc.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16plc.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16plc.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,148 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16plc.c - Packet loss concealment
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16plc.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bv16strct.h"
+#include "bv16externs.h"
+#include "bvcommon.h"
+
+#include "utility.h"
+#include "bv16postfilter.h"
+#include "broadvoice/broadvoice.h"
+
+BV_DECLARE(int) bv16_fillin(bv16_decode_state_t *ds, int16_t amp[], int len)
+{
+ int n;
+ Float r[FRSZ]; /* random excitation */
+ Float E;
+ Float gain;
+ Float scplcg;
+ Float xq[LXQ];
+ Float s[FRSZ]; /* enhanced short-term excitation */
+ Float d[LTMOFF + FRSZ];        /* long-term synthesis filter memory */
+ Float *sq;
+
+ /************************************************************/
+ /* Copy decoder state memory */
+ /************************************************************/
+ Fcopy(d, ds->ltsym, LTMOFF); /* excitation */
+ Fcopy(xq, ds->xq, XQOFF);
+
+ sq = xq + XQOFF;
+ /************************************************************/
+ /* Update counter of consecutive list frames */
+ /************************************************************/
+ if (ds->cfecount < HoldPLCG + AttnPLCG - 1)
+ ds->cfecount++;
+ ds->ngfae = 0;
+
+ /************************************************************/
+ /* Generate Unscaled Excitation */
+ /************************************************************/
+ E = 0.0;
+ for (n = 0; n < FRSZ; n++)
+ {
+ ds->idum = 1664525L*ds->idum + 1013904223L;
+ r[n] = (Float)(ds->idum >> 16) - 32767.0;
+ E += r[n]*r[n];
+ }
+
+ /************************************************************/
+ /* Calculate Scaling */
+ /************************************************************/
+ scplcg = ScPLCG_a + ScPLCG_b*ds->per;
+ if (scplcg > ScPLCGmax)
+ scplcg = ScPLCGmax;
+ else if (scplcg < ScPLCGmin)
+ scplcg = ScPLCGmin;
+ gain = scplcg * sqrt(ds->E/E);
+
+ /************************************************************/
+ /* Long-term synthesis filter */
+ /************************************************************/
+ for (n = 0; n < FRSZ; n++)
+ {
+ d[LTMOFF+n] = gain*r[n];
+ d[LTMOFF+n] += ds->bq_last[0]*d[LTMOFF + n-ds->pp_last + 1];
+ d[LTMOFF+n] += ds->bq_last[1]*d[LTMOFF + n-ds->pp_last];
+ d[LTMOFF+n] += ds->bq_last[2]*d[LTMOFF + n-ds->pp_last - 1];
+ }
+
+ /************************************************************/
+ /* Short-term synthesis filter */
+ /************************************************************/
+ apfilter(ds->atplc, LPCO, d+LTMOFF, sq, FRSZ, ds->stsym, 1);
+
+ /************************************************************/
+ /* Save decoder state memory */
+ /************************************************************/
+ Fcopy(ds->ltsym, d+FRSZ, LTMOFF); /* excitation */
+
+ /************************************************************/
+ /* Update memory of predictive LSP quantizer */
+ /************************************************************/
+ lspplc(ds->lsplast, ds->lsppm);
+
+ /************************************************************/
+ /* Update memory of predictive gain quantizer */
+ /************************************************************/
+ gainplc(ds->E, ds->lgpm, ds->prevlg);
+
+ /************************************************************/
+ /* Signal level estimation */
+ /************************************************************/
+ estlevel(ds->prevlg[0], &ds->level, &ds->lmax, &ds->lmin, &ds->lmean,
+ &ds->x1, ds->ngfae, ds->nggalgc, &ds->estl_alpha_min);
+
+ /************************************************************/
+ /* Attenuation during long packet losses */
+ /************************************************************/
+ if (ds->cfecount >= HoldPLCG)
+ {
+ gain = 1.0 - AttnFacPLCG*(Float)(ds->cfecount - (HoldPLCG - 1));
+ ds->bq_last[0] = gain*ds->bq_last[0];
+ ds->bq_last[1] = gain*ds->bq_last[1];
+ ds->bq_last[2] = gain*ds->bq_last[2];
+ ds->E = (gain*gain)*ds->E;
+ }
+
+ /************************************************************/
+ /* Adaptive Postfiltering */
+ /************************************************************/
+ postfilter(xq, ds->pp_last, &(ds->ma_a), ds->b_prv, &(ds->pp_prv), s);
+ F2s(amp, s, FRSZ);
+ Fcopy(ds->xq, xq + FRSZ, XQOFF);
+
+ return FRSZ;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16postfilterc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,168 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * postfilt.c - Pitch postfilter
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16postfilter.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+#include "typedef.h"
+#include "bv16strct.h"
+#include "bv16postfilter.h"
+
+/* Standard Long-Term Postfilter */
+
+void postfilter(Float *s, /* input : quantized speech signal */
+ int pp, /* input : pitch period */
+ Float *ma_a,
+ Float *b_prv,
+ int *pp_prv,
+ Float *e) /* output: enhanced speech signal */
+{
+ int n;
+ Float gain;
+ Float w1;
+ Float w2;
+ int ppt;
+ int pptmin;
+ int pptmax;
+ int ppnew;
+ Float Rx0x1Sq;
+ Float Rx0Rx1;
+ Float Rx0x1Sqmax;
+ Float Rx0Rx1max;
+ Float Rx0x1max;
+ Float bi0;
+ Float bi1c;
+ Float bi1p;
+ Float Rx0x1;
+ Float Rx0;
+ Float Rx1;
+ Float Rxf;
+ Float a;
+ Float b[2];
+
+ /********************************************************************/
+ /* pitch search around decoded pitch */
+ /********************************************************************/
+ pptmin = pp - DPPQNS;
+ pptmax = pp + DPPQNS;
+ if (pptmin < MINPP)
+ {
+ pptmin = MINPP;
+ pptmax = pptmin + 2 * DPPQNS;
+ }
+ else if (pptmax > MAXPP)
+ {
+ pptmax = MAXPP;
+ pptmin = pptmax - 2 * DPPQNS;
+ }
+ Rx0 = 0.0;
+ Rx1 = 0.0;
+ Rx0x1 = 0.0;
+ for (n = 0; n < FRSZ; n++)
+ {
+ Rx0 += s[XQOFF + n]*s[XQOFF + n];
+ Rx1 += s[XQOFF + n - pptmin]*s[XQOFF + n - pptmin];
+ Rx0x1 += s[XQOFF + n]*s[XQOFF + n - pptmin];
+ }
+ ppnew = pptmin;
+ Rx0Rx1max = Rx0*Rx1;
+ Rx0x1max = Rx0x1;
+ Rx0x1Sqmax = Rx0x1*Rx0x1;
+ for (ppt = pptmin + 1; ppt <= pptmax; ppt++)
+ {
+ Rx1 -= s[XQOFF + FRSZ - ppt]*s[XQOFF + FRSZ - ppt];
+ Rx1 += s[XQOFF - ppt]*s[XQOFF - ppt];
+ Rx0Rx1 = Rx0*Rx1;
+ Rx0x1 = 0.0;
+ for (n = 0; n < FRSZ; n++)
+ Rx0x1 += s[XQOFF + n]*s[XQOFF + n - ppt];
+ Rx0x1Sq = Rx0x1 * Rx0x1;
+ if (Rx0x1Sq*Rx0Rx1max > Rx0x1Sqmax*Rx0Rx1)
+ {
+ ppnew = ppt;
+ Rx0x1Sqmax = Rx0x1Sq;
+ Rx0x1max = Rx0x1;
+ Rx0Rx1max = Rx0Rx1;
+ }
+ }
+
+ /******************************************************************/
+ /* calculate all-zero pitch postfilter */
+ /******************************************************************/
+ if (Rx0Rx1max == 0.0 || Rx0x1max <= 0.0)
+ a = 0.0;
+ else
+ a = Rx0x1max/sqrt(Rx0Rx1max);
+ *ma_a = 0.75*(*ma_a) + 0.25*a;
+ if (*ma_a < ATHLD1 && a < ATHLD2)
+ a = 0.0;
+ b[1] = ScLTPF*a;
+
+ /******************************************************************/
+ /* calculate normalization energies */
+ /******************************************************************/
+ Rxf = 0.0;
+ for (n = 0; n < FRSZ; n++)
+ {
+ e[n] = s[XQOFF + n] + b[1]*s[XQOFF + n - ppnew];
+ Rxf += e[n]*e[n];
+ }
+ if (Rx0 == 0.0 || Rxf == 0.0)
+ gain = 1.0;
+ else
+ gain = sqrt(Rx0/Rxf);
+
+ /******************************************************************/
+ /* interpolate from the previous postfilter to the current */
+ /******************************************************************/
+ b[0] = gain;
+ b[1] = gain*b[1];
+ for (n = 0; n < NINT; n++)
+ {
+ w1 = ((Float) (n + 1))/((Float) (NINT + 1));
+ w2 = 1.0 - w1;
+
+ /* interpolate between two filters */
+ bi0 = w1*b[0] + w2*b_prv[0];
+ bi1c = w1*b[1];
+ bi1p = w2*b_prv[1];
+ e[n] = bi1c*s[XQOFF + n - ppnew] + bi1p*s[XQOFF + n - (*pp_prv)] + bi0*s[XQOFF + n];
+
+ }
+ for (n = NINT; n < FRSZ; n++)
+ e[n] = gain*e[n];
+
+ /******************************************************************/
+ /* save state memory */
+ /******************************************************************/
+ b_prv[0] = b[0];
+ b_prv[1] = b[1];
+ *pp_prv = ppnew;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16postfilterh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16postfilter.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+/*****************************************************************************/
+/* BroadVoice(R)16 (BV16) Floating-Point ANSI-C Source Code */
+/* Revision Date: August 19, 2009 */
+/* Version 1.0 */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* Copyright 2000-2009 Broadcom Corporation */
+/* */
+/* This software is provided under the GNU Lesser General Public License, */
+/* version 2.1, as published by the Free Software Foundation ("LGPL"). */
+/* This program is distributed in the hope that it will be useful, but */
+/* WITHOUT ANY SUPPORT OR WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LGPL for */
+/* more details. A copy of the LGPL is available at */
+/* http://www.broadcom.com/licenses/LGPLv2.1.php, */
+/* or by writing to the Free Software Foundation, Inc., */
+/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/*****************************************************************************/
+
+
+/*****************************************************************************
+ postfilt.h : BV16 Post Filter
+
+ $Log: bv16postfilter.h,v $
+ Revision 1.1.1.1 2009/11/19 12:10:48 steveu
+ Start from Broadcom's code
+
+ Revision 1.1.1.1 2009/11/17 14:06:02 steveu
+ start
+
+******************************************************************************/
+
+void postfilter(Float *s, /* input : quantized speech signal */
+ int pp, /* input : pitch period */
+ Float *ma_a,
+ Float *b_prv,
+ int *pp_prv,
+ Float *e); /* output: enhanced speech signal */
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16ptdecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptdec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptdec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptdec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16ptdec.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16ptdec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv16externs.h"
+
+void bv16_pp3dec(int16_t idx, Float *b)
+{
+ const Float *fp;
+ int        i;
+
+ fp = bv16_pp9cb + idx*9;
+ for (i = 0; i < 3; i++)
+ b[i] = fp[i]*0.5;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16ptquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16ptquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,125 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * ptquan.c - Pitch quantizer
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16ptquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bv16externs.h"
+
+int pitchtapquan(
+ Float *x,
+ int        pp,
+ Float *b,
+ Float *re)
+{
+ Float p[9], t, s0, s1, s2, cormax, cor;
+ Float t0, t1, t2;
+ Float *xt;
+ Float *fp0;
+ Float *fp1;
+ const Float *fp2;
+ int        ppm2, qidx=0, i, j;
+
+ ppm2 = pp - 2;
+ xt = x + XOFF;
+
+ for (i = 0; i < 3; i++)
+ {
+ fp0 = xt;
+ fp1 = x + XOFF - ppm2 - i - 1;
+ t = 0;
+ for (j = 0; j < FRSZ; j++)
+ t += (*fp0++) * (*fp1++);
+ p[i] = t;
+ }
+
+ fp0 = x+XOFF-ppm2-3;
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ t0 = p[8] = s0*s0;
+ t1 = p[4] = s0*s1;
+ p[5] = s0*s2;
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ t2 = s0*s0;
+ p[8] += t2;
+ p[4] += s0*s1;
+ p[5] += s0*s2;
+ for (i = 0; i < (FRSZ - 2); i++)
+ {
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ p[8] += s0*s0;
+ p[4] += s0*s1;
+ p[5] += s0*s2;
+ }
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ p[7] = p[8] + (s0*s0) - t0;
+ p[3] = p[4] + (s0*s1) - t1;
+ p[6] = p[7] + (s1*s1) - t2;
+
+ cormax = -1.0e30;
+ fp2 = bv16_pp9cb;
+ for (i = 0; i < PPCBSZ; i++)
+ {
+ cor = 0.0;
+ fp1 = p;
+ for (j = 0; j < 9; j++)
+ cor += (*fp2++)*(*fp1++);
+ if (cor > cormax)
+ {
+ cormax = cor;
+ qidx = i;
+ }
+ }
+
+ fp2 = bv16_pp9cb + qidx*9;
+ for (i = 0; i < 3; i++)
+ b[i] = fp2[i]*0.5;
+
+ fp0 = x + XOFF;
+ fp1 = x + XOFF - ppm2 - 1;
+ t = 0;
+ for (i = 0; i < FRSZ; i++)
+ {
+ t0 = *fp0++ - b[0]*fp1[0] - b[1]*fp1[-1] - b[2]*fp1[-2];
+ fp1++;
+ t += t0*t0;
+ }
+ *re = t;
+ return qidx;
+}
+
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16strcth"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16strct.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16strct.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16strct.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+/*****************************************************************************/
+/* BroadVoice(R)16 (BV16) Floating-Point ANSI-C Source Code */
+/* Revision Date: August 19, 2009 */
+/* Version 1.0 */
+/*****************************************************************************/
+
+/*****************************************************************************/
+/* Copyright 2000-2009 Broadcom Corporation */
+/* */
+/* This software is provided under the GNU Lesser General Public License, */
+/* version 2.1, as published by the Free Software Foundation ("LGPL"). */
+/* This program is distributed in the hope that it will be useful, but */
+/* WITHOUT ANY SUPPORT OR WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LGPL for */
+/* more details. A copy of the LGPL is available at */
+/* http://www.broadcom.com/licenses/LGPLv2.1.php, */
+/* or by writing to the Free Software Foundation, Inc., */
+/* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/*****************************************************************************/
+
+
+/*****************************************************************************
+ bv16strct.h : BV16 data structures
+
+ $Log: bv16strct.h,v $
+ Revision 1.1.1.1 2009/11/19 12:10:48 steveu
+ Start from Broadcom's code
+
+ Revision 1.1.1.1 2009/11/17 14:06:02 steveu
+ start
+
+******************************************************************************/
+
+#include "typedef.h"
+#include "bv16cnst.h"
+#include "bvcommon.h"
+
+#if !defined(_BV16STRCT_H_)
+#define _BV16STRCT_H_
+
+struct bv16_decode_state_s
+{
+ Float stsym[LPCO];
+ Float ltsym[LTMOFF];
+ Float lsppm[LPCO*LSPPORDER];
+ Float lgpm[LGPORDER];
+ Float lsplast[LPCO];
+ Float prevlg[2];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int16_t pp_last;
+ int16_t ngfae;
+ Float bq_last[3];
+ int16_t nggalgc;
+ Float estl_alpha_min;
+ int16_t cfecount;
+ uint32_t idum;
+ Float E;
+ Float per;
+ Float atplc[LPCO + 1];
+ Float ma_a;
+ Float b_prv[2];
+ Float xq[XQOFF];
+ int pp_prv;
+};
+
+struct bv16_encode_state_s
+{
+ Float x[XOFF]; /* 8kHz down-sampled signal memory */
+ Float xwd[XDOFF]; /* memory of DECF:1 decimated version of xw() */
+ Float dq[XOFF]; /* quantized short-term pred error */
+ Float dfm[DFO]; /* decimated xwd() filter memory */
+ Float stpem[LPCO]; /* ST Pred. Error filter memory */
+ Float stwpm[LPCO]; /* ST Weighting all-Pole Memory */
+ Float stsym[LPCO]; /* ST Synthesis filter Memory */
+ Float ltsym[MAXPP1 + FRSZ]; /* long-term synthesis filter memory */
+ Float ltnfm[MAXPP1 + FRSZ]; /* long-term noise feedback filter memory */
+ Float lsplast[LPCO];
+ Float lsppm[LPCO*LSPPORDER]; /* LSP Predictor Memory */
+ Float lgpm[LGPORDER];
+ Float hpfzm[HPO];
+ Float hpfpm[HPO];
+ Float prevlg[2];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int cpplast; /* pitch period pf the previous frame */
+ Float old_A[LPCO + 1];
+ Float stnfz[NSTORDER];
+ Float stnfp[NSTORDER];
+};
+
+struct BV16_Bit_Stream
+{
+ int16_t lspidx[2];
+ int16_t ppidx;
+ int16_t bqidx;
+ int16_t gidx;
+ int16_t qvidx[FRSZ/VDIM];
+};
+
+#endif /* BV16STRCT_H */
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv16bv16tablesc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16tables.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16tables.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv16/bv16tables.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,406 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * tables.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16tables.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv16externs.h"
+
+const Float bv16_lgclimit[] =
+{
+ 0.00000, 0.79102, 0.55664, 14.26563, 14.08398, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ 0.00000, 13.85156, 1.73047, 13.76758, 13.92773, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ -1.96094, 8.91211, 7.83594, 14.09961, 13.77930, 0.91016, -2.41406, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ -1.96094, 8.66992, 13.53125, 14.09570, 13.95117, 12.97461, 2.14648, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ -1.47266, 9.29297, 13.92578, 13.89063, 13.87891, 13.93750, 12.20703, -4.99023, 0.00000, 0.00000, 0.00000, 0.00000,
+ 4.60547, 12.33398, 14.09180, 14.14258, 14.16016, 13.48633, 12.39063, 2.01172, 0.00000, 0.00000, 0.00000, 0.00000,
+ 10.66016, 10.72656, 13.83203, 13.68359, 13.93945, 13.77930, 13.09570, 10.17578, -0.15430, -2.92578, 0.00000, 0.00000,
+ 6.59375, 10.19531, 13.34375, 12.87305, 13.36719, 13.36328, 13.12891, 12.66797, 0.72852, 0.30078, 4.87109, 7.85742,
+ 2.64063, 9.52539, 9.85547, 10.35938, 10.63086, 12.92383, 12.70508, 12.65234, 8.96680, 1.32422, 4.86719, 7.81445,
+ 6.24805, 8.26758, 8.78125, 9.08594, 9.03125, 10.34180, 11.21875, 11.07227, 8.32617, 8.41992, 7.70313, 7.86133,
+ 6.18945, 6.71875, 7.98438, 7.37109, 7.50391, 7.69922, 9.09180, 8.73633, 6.91211, 7.68750, 7.22266, 3.50977,
+ 4.40430, 5.46484, 6.17773, 6.04492, 6.14063, 6.84766, 5.89063, 5.43750, 4.67188, 5.58008, 7.70898, 7.46094,
+ 3.39648, 5.41602, 5.40039, 4.77734, 4.59375, 4.63477, 6.43359, 3.54102, 4.37891, 3.70117, 6.64844, 4.74414,
+ 0.00000, 3.50000, 4.60352, 3.92188, 3.68164, 4.21680, 4.18750, 3.32617, 3.38867, 2.32813, 5.15039, 1.76563,
+ 0.00000, 1.10156, 3.04492, 3.18945, 2.60156, 2.43164, 2.91016, 1.48438, 0.43555, 0.44336, 1.50391, 1.75391,
+ 0.00000, -0.11914, -1.13672, 1.41602, 1.49609, 0.72852, 0.60352, -0.35352, -0.98242, -1.15039, -1.99414, 0.00000,
+ 0.00000, 0.00000, 0.00000, 1.36861, 1.18557, -0.36990, -4.01682, -2.21214, 0.00000, -1.33077, -3.04360, 0.00000,
+ 0.00000, 0.00000, 0.00000, 0.52843, 0.43190, 0.00000, 0.00000, -2.86324, 0.00000, 0.00000, 0.00000, 0.00000
+};
+
+const Float bv16_lspecb1[] =
+{
+ -0.0059814, -0.0075378, -0.0113449, -0.0002670, -0.0103607, -0.0055771, 0.0091400, -0.0032730,
+ -0.0053177, -0.0019302, 0.0037079, -0.0106049, -0.0021820, -0.0003815, 0.0100098, 0.0037460,
+ -0.0009308, -0.0001831, -0.0040741, -0.0110474, -0.0238800, -0.0042191, 0.0014114, -0.0061035,
+ 0.0031128, 0.0013046, 0.0076218, -0.0042191, -0.0073776, -0.0045013, -0.0051651, 0.0158539,
+ -0.0023270, -0.0014496, -0.0036392, 0.0071030, 0.0026093, -0.0172119, -0.0009613, -0.0059662,
+ -0.0081329, -0.0077362, 0.0091782, 0.0048294, 0.0101395, 0.0007172, 0.0030212, 0.0013885,
+ 0.0006104, 0.0040817, -0.0010300, -0.0081787, -0.0126343, -0.0218582, -0.0007629, -0.0092163,
+ 0.0090561, 0.0081329, 0.0096436, 0.0009613, 0.0011063, -0.0042572, 0.0038910, -0.0034485,
+ -0.0044785, -0.0070572, -0.0158615, 0.0019913, 0.0087204, 0.0005951, 0.0022583, -0.0074539,
+ 0.0042114, 0.0052719, -0.0061417, 0.0057449, 0.0057068, -0.0022202, 0.0133896, 0.0077362,
+ -0.0039902, -0.0037308, -0.0103226, -0.0064774, -0.0049667, -0.0043411, -0.0066986, -0.0186844,
+ 0.0035553, 0.0042877, 0.0199356, 0.0078812, 0.0031281, -0.0082245, -0.0142746, -0.0015106,
+ 0.0032806, 0.0013351, -0.0004501, 0.0149384, 0.0076141, 0.0033264, -0.0038376, -0.0110245,
+ 0.0010910, 0.0050964, 0.0128632, 0.0091553, 0.0088348, 0.0151443, 0.0096664, 0.0043411,
+ -0.0047226, -0.0046234, 0.0096664, 0.0042496, -0.0064697, -0.0039902, -0.0056915, -0.0162430,
+ -0.0000229, 0.0000000, 0.0265427, 0.0128021, 0.0049896, 0.0054398, 0.0008698, -0.0047150,
+ -0.0074081, -0.0089569, -0.0175552, -0.0174561, -0.0057831, -0.0148010, 0.0076141, 0.0079803,
+ -0.0019760, -0.0027161, -0.0077667, -0.0104675, -0.0090866, -0.0027542, 0.0306244, 0.0160751,
+ -0.0044403, -0.0059509, -0.0128784, -0.0197525, -0.0304413, -0.0161133, 0.0037613, 0.0098114,
+ -0.0001907, 0.0020599, 0.0160294, 0.0045853, -0.0091476, -0.0058670, 0.0226593, 0.0125122,
+ -0.0057526, -0.0060425, -0.0029755, -0.0092010, 0.0054550, -0.0046692, -0.0137711, -0.0035477,
+ -0.0022125, -0.0046158, -0.0083923, 0.0117264, 0.0248260, 0.0126343, 0.0082626, 0.0001907,
+ -0.0016632, 0.0000076, -0.0051346, -0.0084305, -0.0128784, -0.0196915, -0.0223007, -0.0168076,
+ 0.0046158, 0.0114517, 0.0148926, 0.0092087, 0.0188599, -0.0058212, 0.0079727, 0.0046082,
+ -0.0006714, -0.0006714, -0.0119095, -0.0186539, 0.0112305, -0.0053024, 0.0070267, -0.0016022,
+ 0.0114136, 0.0131760, 0.0045929, -0.0096207, 0.0138092, 0.0076675, 0.0137863, 0.0142441,
+ 0.0089951, 0.0114975, -0.0246811, -0.0092545, -0.0067444, -0.0065155, -0.0055161, -0.0072098,
+ 0.0116730, 0.0303574, 0.0396042, 0.0238495, 0.0113144, 0.0006714, -0.0080719, 0.0067749,
+ 0.0061035, 0.0072174, 0.0028000, -0.0075989, 0.0156174, 0.0043716, -0.0073624, -0.0141525,
+ 0.0069580, 0.0107727, 0.0140839, 0.0036621, 0.0325394, 0.0216980, 0.0056152, 0.0061188,
+ 0.0065002, 0.0056458, 0.0067139, 0.0007935, 0.0008087, -0.0099030, -0.0182724, -0.0288086,
+ 0.0147324, 0.0161285, 0.0276260, 0.0238800, 0.0214386, 0.0131302, 0.0047607, -0.0047836,
+ -0.0083008, -0.0135345, -0.0167313, -0.0003433, -0.0090408, -0.0008469, -0.0017624, 0.0161667,
+ -0.0031662, -0.0056992, -0.0011444, 0.0063324, -0.0090790, 0.0121918, 0.0022354, 0.0048523,
+ -0.0050354, -0.0077744, -0.0103531, -0.0145035, -0.0191193, -0.0035934, -0.0159454, 0.0042343,
+ 0.0078888, 0.0054169, 0.0038223, -0.0016632, -0.0109177, -0.0039520, -0.0170212, -0.0018616,
+ -0.0038910, -0.0082321, -0.0112686, 0.0100861, -0.0043945, -0.0049820, -0.0151062, 0.0018616,
+ -0.0030060, -0.0051117, 0.0013962, 0.0250015, -0.0003738, -0.0045395, 0.0120697, 0.0071411,
+ -0.0017471, -0.0031509, -0.0094299, -0.0154495, -0.0188980, -0.0264816, -0.0149384, 0.0071030,
+ 0.0070190, 0.0111084, 0.0142746, 0.0070648, -0.0085373, -0.0219345, 0.0042267, 0.0029221,
+ -0.0084000, -0.0120621, -0.0198364, -0.0063629, 0.0110550, 0.0045700, 0.0082169, 0.0152664,
+ -0.0012970, -0.0023575, 0.0041809, 0.0055084, 0.0066299, 0.0041122, 0.0141602, 0.0310822,
+ -0.0008011, 0.0027390, -0.0027847, -0.0278168, -0.0051651, -0.0065536, -0.0094833, -0.0070724,
+ 0.0257950, 0.0224075, 0.0190277, 0.0123291, 0.0018692, -0.0124512, -0.0261765, -0.0093994,
+ 0.0024414, 0.0011520, -0.0020218, 0.0018616, 0.0149918, 0.0050735, -0.0103073, 0.0105972,
+ 0.0045166, 0.0086136, 0.0284348, 0.0160980, 0.0127563, 0.0124054, 0.0261307, 0.0190277,
+ -0.0064392, -0.0072556, 0.0081406, 0.0079956, -0.0225372, -0.0159760, -0.0059891, -0.0012741,
+ -0.0008316, 0.0018845, 0.0423431, 0.0217514, 0.0008698, -0.0041199, 0.0085602, 0.0102158,
+ -0.0227127, -0.0309753, -0.0029831, -0.0045471, -0.0044708, -0.0003662, 0.0006409, 0.0024567,
+ 0.0003204, -0.0007782, 0.0007553, -0.0061646, -0.0099792, 0.0272598, 0.0179977, 0.0155029,
+ -0.0022583, -0.0034180, -0.0074692, -0.0160370, -0.0401917, -0.0083847, -0.0189896, -0.0101929,
+ 0.0022202, 0.0045013, 0.0243607, 0.0083466, -0.0246048, 0.0046997, -0.0021439, 0.0023041,
+ -0.0029678, -0.0052338, 0.0025406, 0.0110321, 0.0029221, -0.0056763, -0.0311356, -0.0081024,
+ 0.0019226, 0.0010529, 0.0046844, 0.0322113, 0.0202255, 0.0150070, 0.0069733, 0.0021973,
+ 0.0002441, 0.0029984, 0.0021286, 0.0054932, -0.0150223, -0.0383453, -0.0137787, -0.0153046,
+ 0.0024185, 0.0418625, 0.0316925, 0.0256805, 0.0141296, 0.0077591, 0.0154495, 0.0091095,
+ -0.0076904, -0.0126266, -0.0251846, -0.0261307, 0.0040588, 0.0132675, 0.0196609, 0.0226059,
+ 0.0066910, 0.0088730, 0.0157623, 0.0102997, 0.0193558, 0.0230255, 0.0201874, 0.0446930,
+ -0.0050049, -0.0121231, -0.0460205, -0.0182266, -0.0260468, -0.0259018, -0.0209122, -0.0175323,
+ 0.0057602, 0.0139847, 0.0579147, 0.0351944, -0.0040665, -0.0186386, -0.0284729, -0.0171432,
+ 0.0025711, 0.0053101, 0.0119553, 0.0070419, 0.0170135, 0.0213165, -0.0242462, -0.0078735,
+ 0.0176849, 0.0341110, 0.0360947, 0.0325394, 0.0362167, 0.0317612, 0.0233765, 0.0178757,
+ 0.0018082, 0.0054245, 0.0223770, 0.0096283, -0.0214233, -0.0161209, -0.0263824, -0.0237961,
+ 0.0040436, 0.0186539, 0.0682678, 0.0692520, 0.0290146, 0.0145493, 0.0086975, 0.0001144,
+ -0.0073166, -0.0097580, -0.0165558, -0.0164719, -0.0054932, 0.0104904, 0.0003052, -0.0026093,
+ 0.0012283, 0.0010452, -0.0012741, -0.0147095, 0.0082169, 0.0179520, 0.0043182, 0.0050583,
+ -0.0025101, -0.0054626, -0.0107498, -0.0207672, -0.0277328, 0.0124207, 0.0075836, 0.0025177,
+ 0.0082932, 0.0077057, 0.0032272, -0.0084229, -0.0114975, 0.0151215, 0.0005341, -0.0019226,
+ -0.0067825, -0.0089111, -0.0184479, 0.0017242, -0.0064545, -0.0217209, -0.0024490, -0.0019455,
+ -0.0006104, -0.0049820, 0.0121994, 0.0176392, 0.0069962, 0.0066605, -0.0074310, 0.0169830,
+ -0.0000534, 0.0012283, -0.0020981, -0.0062180, -0.0171661, -0.0240707, 0.0151367, 0.0081100,
+ 0.0176697, 0.0149918, 0.0140686, 0.0097809, 0.0034790, 0.0105209, 0.0014572, 0.0027390,
+ -0.0064240, -0.0083618, -0.0160828, -0.0105820, 0.0212021, 0.0123367, -0.0018921, -0.0081329,
+ -0.0053406, -0.0044250, -0.0000076, 0.0004807, 0.0158310, 0.0097198, 0.0251846, 0.0064545,
+ -0.0037766, -0.0038528, -0.0154724, -0.0229874, 0.0008011, 0.0042114, -0.0171432, -0.0225220,
+ 0.0014191, 0.0062637, 0.0232925, 0.0124817, 0.0117035, 0.0014648, -0.0106812, -0.0250015,
+ -0.0061264, -0.0116348, -0.0150681, 0.0248032, 0.0146561, 0.0051270, -0.0047836, -0.0073013,
+ -0.0086670, -0.0107346, 0.0193634, 0.0210648, 0.0206528, 0.0170822, 0.0147781, 0.0120239,
+ -0.0034256, -0.0035858, -0.0015869, -0.0019073, -0.0142975, 0.0131302, -0.0151138, -0.0197067,
+ -0.0020447, 0.0006714, 0.0414658, 0.0249710, 0.0197296, 0.0175705, -0.0016098, 0.0003967,
+ -0.0080795, -0.0119095, -0.0216980, -0.0280533, -0.0105896, -0.0002365, -0.0009079, 0.0161667,
+ 0.0123291, 0.0056229, -0.0075455, -0.0211258, -0.0128326, 0.0001068, 0.0061417, 0.0149689,
+ -0.0029373, -0.0080795, -0.0181351, -0.0304947, -0.0477219, 0.0010223, 0.0070724, 0.0156937,
+ 0.0141983, 0.0176315, 0.0056763, -0.0044098, -0.0164795, 0.0085678, 0.0159912, 0.0168228,
+ -0.0061722, -0.0097046, -0.0205307, -0.0133286, 0.0058441, -0.0068512, -0.0228195, 0.0043335,
+ -0.0051880, -0.0111084, -0.0178680, 0.0235138, 0.0195084, 0.0178680, 0.0160370, 0.0151443,
+ 0.0019531, -0.0010757, -0.0006256, -0.0082626, -0.0146942, -0.0227509, -0.0364304, 0.0097427,
+ 0.0283661, 0.0346222, 0.0130768, 0.0101700, 0.0174866, 0.0197144, 0.0173874, 0.0145874,
+ -0.0066528, -0.0088272, -0.0246811, -0.0331345, 0.0143738, 0.0057602, -0.0002747, -0.0007629,
+ 0.0018539, 0.0035934, -0.0006332, -0.0124893, 0.0327225, 0.0176163, 0.0233994, 0.0193710,
+ -0.0135727, -0.0340042, -0.0894012, -0.0189590, -0.0093231, -0.0084381, -0.0090332, -0.0088577,
+ 0.0099640, 0.0462646, 0.0453796, 0.0276489, 0.0160370, 0.0025406, -0.0106049, -0.0192184,
+ -0.0034714, -0.0054245, -0.0114441, 0.0039444, 0.0178375, 0.0054550, -0.0171051, -0.0267639,
+ -0.0011978, 0.0003204, 0.0082169, 0.0209274, 0.0536499, 0.0358963, 0.0197830, 0.0092850,
+ 0.0023346, 0.0034943, -0.0014572, 0.0014343, -0.0054932, -0.0127716, -0.0328522, -0.0487366,
+ 0.0088501, 0.0262756, 0.0493164, 0.0377655, 0.0499496, 0.0279236, -0.0018158, -0.0138168,
+ -0.0091782, -0.0182266, -0.0430679, 0.0019302, 0.0016556, 0.0016785, -0.0005188, -0.0010605,
+ -0.0042267, -0.0044327, -0.0011826, 0.0068283, 0.0034714, 0.0279465, 0.0020370, -0.0107651,
+ -0.0088577, -0.0077744, -0.0206451, -0.0217667, -0.0166931, -0.0166321, -0.0041122, -0.0111160,
+ 0.0114822, 0.0137863, 0.0051422, 0.0017090, -0.0126801, -0.0010223, -0.0035172, -0.0167770,
+ -0.0047989, -0.0082703, -0.0190659, 0.0137558, -0.0056305, -0.0116806, -0.0150452, -0.0211258,
+ -0.0013351, -0.0021439, 0.0114136, 0.0434952, 0.0037308, -0.0042496, -0.0063400, -0.0076370,
+ -0.0027390, -0.0010986, -0.0103989, -0.0135803, -0.0289612, -0.0440826, 0.0028915, 0.0004730,
+ 0.0343170, 0.0352859, 0.0218124, 0.0093842, -0.0054703, -0.0086594, 0.0062637, 0.0050507,
+ -0.0057678, -0.0092545, -0.0224991, -0.0150681, 0.0306778, 0.0213089, 0.0150299, 0.0065155,
+ -0.0029221, -0.0022583, 0.0017624, 0.0089951, 0.0164185, 0.0172653, 0.0484390, 0.0271988,
+ -0.0026627, 0.0002594, -0.0224304, -0.0537415, -0.0119095, -0.0128479, -0.0069809, -0.0067749,
+ 0.0076294, 0.0422287, 0.0109787, 0.0002823, 0.0060196, 0.0020523, -0.0027847, -0.0075226,
+ -0.0038986, -0.0030670, 0.0042572, 0.0127869, 0.0384750, 0.0027542, -0.0117798, -0.0054169,
+ -0.0036087, 0.0035782, 0.0424576, 0.0331345, 0.0332794, 0.0281830, 0.0280609, 0.0207291,
+ 0.0046082, 0.0080490, 0.0111084, -0.0065918, -0.0519485, -0.0157547, -0.0019455, -0.0029144,
+ 0.0034485, 0.0175858, 0.0821762, 0.0272980, 0.0156860, 0.0159531, 0.0184174, 0.0143356,
+ -0.0314102, -0.0573120, -0.0361557, -0.0185471, -0.0215912, -0.0093765, -0.0097656, -0.0018997,
+ 0.0007401, 0.0014343, 0.0100021, 0.0084229, 0.0087585, 0.0477676, 0.0178299, 0.0107193,
+ -0.0015106, -0.0081024, -0.0302200, -0.0461807, -0.0730972, -0.0303497, -0.0201721, -0.0060349,
+ 0.0099411, 0.0259781, 0.0389252, -0.0061798, -0.0111618, 0.0061264, 0.0084991, -0.0016098,
+ -0.0020447, -0.0056534, -0.0065460, -0.0004425, -0.0104218, -0.0178070, -0.0585556, -0.0127106,
+ -0.0028152, -0.0029221, 0.0108337, 0.0616455, 0.0292282, 0.0216827, 0.0112686, 0.0042725,
+ 0.0102158, 0.0152206, -0.0010757, -0.0186920, -0.0433731, -0.0584030, -0.0330887, -0.0182495,
+ 0.0341263, 0.0759430, 0.0464096, 0.0330963, 0.0261612, 0.0209045, 0.0158920, 0.0113602,
+ -0.0082016, -0.0157471, -0.0547714, -0.0575638, 0.0062866, 0.0029297, 0.0097733, 0.0060959,
+ 0.0022659, 0.0080261, 0.0222321, 0.0229797, 0.0417252, 0.0456924, 0.0649796, 0.0428009,
+ -0.0109406, -0.0265427, -0.0845337, -0.0739746, -0.0471725, -0.0384445, -0.0217361, -0.0125504,
+ 0.0284500, 0.0826721, 0.1126251, 0.0532761, 0.0114975, -0.0184174, -0.0278168, -0.0385132,
+ -0.0009766, -0.0013504, 0.0082321, 0.0411072, 0.0223083, 0.0020828, -0.0291138, -0.0363312,
+ 0.0068207, 0.0242920, 0.0580826, 0.0683975, 0.0789490, 0.0621414, 0.0445786, 0.0190887,
+ 0.0293198, 0.0630722, 0.0497131, -0.0120468, -0.0440521, -0.0440979, -0.0299225, -0.0291214,
+ 0.0271988, 0.0838776, 0.1353760, 0.1022873, 0.0741501, 0.0458984, 0.0275192, -0.0002823
+};
+
+const Float bv16_lspecb2[] =
+{
+ -0.00045776, 0.00002289, 0.00099182, 0.00270081, 0.00746155, 0.00529480, -0.00106049, -0.00178528,
+ -0.00029755, -0.00101471, -0.00086212, 0.00087738, -0.00106049, 0.00087738, -0.01163483, 0.00027466,
+ -0.00118256, -0.00199127, -0.00380707, -0.00403595, -0.00030518, 0.00240326, 0.00474548, 0.00889587,
+ -0.00337219, -0.00188446, 0.00494385, -0.00525665, 0.00161743, -0.00501251, 0.00176239, 0.00527191,
+ 0.00021362, 0.00082397, -0.00271606, -0.00733185, 0.00150299, 0.00543213, 0.00144958, -0.00333405,
+ -0.00189972, -0.00291443, -0.00379944, -0.00436401, -0.00100708, -0.00173187, -0.00433350, -0.00628662,
+ -0.00256348, -0.00302124, -0.00202942, 0.00238037, -0.00732422, 0.00712585, 0.00381470, 0.00191498,
+ -0.00487518, -0.00572205, 0.00082397, 0.00188446, -0.00714111, -0.00489044, -0.00206757, -0.00262451,
+ -0.00010681, -0.00145721, -0.00476074, 0.00331116, 0.01039886, -0.00167847, 0.00269318, 0.00548553,
+ -0.00064850, -0.00139618, -0.00781250, -0.00374603, 0.00415039, -0.00397491, -0.00685883, 0.00500488,
+ -0.00432587, -0.00485229, -0.00765228, 0.00385284, 0.00276184, -0.00205231, 0.00595856, -0.00077057,
+ -0.01011658, 0.00389099, -0.00176239, 0.00331116, 0.00072479, -0.00367737, -0.00161743, -0.00171661,
+ -0.00463867, -0.00547791, -0.00512695, -0.00231171, 0.00556183, 0.00563049, -0.00107574, 0.00090027,
+ -0.00424957, -0.00586700, -0.00111389, 0.00374603, 0.00692749, -0.00564575, -0.00616455, -0.00193024,
+ -0.00263214, -0.00723267, -0.00938416, 0.00535583, -0.00386810, 0.00198364, -0.00283813, 0.00453949,
+ 0.00451660, -0.01326752, -0.00163269, -0.00040436, 0.00058746, -0.00355530, -0.00116730, -0.00093842,
+ 0.00000763, 0.00039673, 0.00560760, -0.00251770, 0.00186157, 0.01089478, -0.00137329, 0.00457001,
+ -0.00207520, -0.00434113, 0.00380707, 0.00775909, -0.00274658, 0.00917053, -0.00515747, -0.00215149,
+ -0.00079346, -0.00209808, 0.00601196, -0.00038147, -0.00785828, 0.00248718, -0.00209808, 0.01184082,
+ -0.00298309, -0.00412750, 0.01414490, 0.00212097, -0.00019073, -0.00061798, -0.00274658, 0.00065613,
+ 0.00035858, 0.00170898, 0.00259399, -0.01609802, -0.00000763, 0.00162506, -0.00133514, 0.00100708,
+ -0.00503540, -0.00462341, 0.00434875, -0.00257874, 0.00315094, 0.00467682, 0.00090790, -0.01029968,
+ -0.00057220, -0.00221252, -0.00485992, -0.00782013, -0.00888824, 0.00464630, -0.00598145, 0.00544739,
+ -0.00719452, -0.01031494, 0.00247192, -0.00617218, -0.00236511, 0.00193024, -0.00309753, 0.00254059,
+ -0.00290680, -0.00582886, 0.00511169, 0.00539398, 0.00604248, 0.00421143, 0.00669861, 0.00392151,
+ -0.00224304, -0.00450134, 0.00026703, 0.00598907, 0.00528717, 0.00506592, -0.00660706, 0.01150513,
+ -0.00428772, -0.00616455, 0.00080872, 0.00531769, -0.00407410, -0.00506592, 0.00903320, 0.00828552,
+ -0.01528931, -0.00518799, 0.00449371, 0.00463104, 0.00074005, 0.00062561, 0.00030518, 0.00215912,
+ -0.00177765, -0.00195313, -0.00070953, -0.01091003, 0.01485443, 0.00244141, 0.00580597, -0.00041199,
+ -0.00414276, -0.00515747, -0.00126648, 0.00601959, 0.01933289, 0.00696564, -0.00712585, -0.00523376,
+ -0.00677490, -0.01074219, -0.01129150, -0.00234985, -0.00765991, -0.00885773, 0.00039673, 0.00651550,
+ -0.00891113, -0.01766968, 0.00561523, 0.00578308, 0.00490570, 0.00194550, -0.00356293, -0.00082397,
+ -0.00096130, -0.00098419, -0.00413513, 0.00173950, 0.00495911, 0.01183319, 0.00845337, -0.00122833,
+ -0.00326538, -0.00333405, 0.00357056, -0.00922394, 0.00468445, 0.00469971, -0.01351166, -0.00124359,
+ -0.00380707, -0.00453949, -0.00596619, -0.00867462, -0.00395966, -0.00065613, 0.00699615, -0.00128174,
+ -0.00752258, -0.00469208, 0.00773621, -0.00899506, 0.00354004, -0.01000214, 0.00416565, -0.00489044,
+ 0.00000763, -0.00075531, -0.00958252, -0.00546265, -0.00563049, 0.01355743, 0.00136566, -0.01033783,
+ -0.00630951, -0.00655365, -0.00659943, 0.00173950, -0.00452423, 0.00329590, -0.00886536, -0.01154327,
+ -0.00095367, -0.00313568, -0.00857544, 0.00354767, -0.01430511, 0.00208282, 0.00795746, -0.00600433,
+ -0.00719452, -0.01290894, 0.00675201, 0.00386047, -0.01235962, -0.00559235, 0.00556183, -0.00572968,
+ -0.00801086, -0.00989532, -0.00411224, -0.00192261, 0.01290894, -0.00526428, 0.00534058, 0.01023865,
+ -0.00186920, -0.00344086, -0.00266266, -0.01030731, 0.00197601, -0.00857544, -0.01191711, 0.01605988,
+ -0.00836945, -0.00853729, -0.00543976, 0.00074005, 0.00202942, -0.00057983, 0.01557922, -0.00852203,
+ -0.01739502, 0.00542450, -0.00310516, -0.00865936, -0.00068665, 0.00004578, 0.00126648, 0.00104523,
+ -0.00631714, -0.01346588, -0.01500702, -0.00602722, 0.00646210, 0.01339722, -0.00647736, -0.00049591,
+ -0.00720215, -0.01295471, -0.00642395, -0.00480652, 0.01066589, -0.01364136, -0.01339722, -0.00752258,
+ -0.00552368, -0.01621246, -0.01331329, 0.01739502, -0.00738525, 0.00836182, 0.00555420, 0.00202942,
+ 0.00701904, -0.02751923, 0.00681305, 0.00177765, -0.00151062, -0.00057220, 0.00139618, 0.00026703,
+ 0.00125885, 0.00099945, 0.00302887, -0.00566864, -0.00022125, 0.02838135, -0.00177765, 0.00128937,
+ -0.00152588, -0.00276184, 0.01119232, 0.00526428, -0.00367737, 0.01557159, -0.01921844, -0.00600433,
+ -0.00518036, -0.00488281, 0.00891876, -0.00863647, -0.00762939, 0.00898743, 0.00974274, 0.00371552,
+ -0.00656891, -0.00149536, 0.02567291, -0.01044464, -0.00462341, -0.00055695, -0.00331879, -0.00172424,
+ 0.00264740, 0.00337219, -0.00964355, -0.03454590, 0.00086975, 0.01454163, 0.00080109, 0.00027466,
+ -0.00373077, -0.00283813, 0.00484467, -0.00320435, 0.00572968, 0.00675201, -0.00530243, -0.03117371,
+ -0.00197601, -0.01000214, -0.00423431, -0.00650787, -0.02683258, 0.01259613, -0.00359344, 0.00352478,
+ -0.01738739, -0.02180481, 0.00868988, -0.01496887, -0.00506592, -0.00038147, -0.00035858, 0.00020599,
+ -0.00734711, -0.00748444, 0.01610565, 0.00942993, 0.01790619, 0.01776123, 0.01367950, 0.01322937,
+ -0.00354767, -0.00787354, -0.00128937, 0.00877380, -0.00132751, 0.00061798, -0.02446747, 0.01464081,
+ -0.00668335, -0.00952911, 0.00102997, 0.00148010, -0.00872040, 0.00305176, 0.03495026, 0.01872253,
+ -0.03459930, 0.00503540, 0.00631714, 0.00146484, 0.00110626, -0.00109100, -0.00064850, 0.00020599,
+ -0.00075531, -0.00411224, -0.02098846, -0.01145172, 0.03794098, 0.02877808, 0.01161194, 0.00054932,
+ -0.00887299, -0.02392578, -0.01149750, 0.03517151, 0.02966309, 0.00566864, -0.02129364, -0.02059937,
+ -0.01180267, -0.03713226, -0.03850555, -0.00773621, -0.01717377, -0.01065826, -0.00489044, -0.00129700,
+ -0.02636719, -0.04943848, 0.01272583, 0.01393127, 0.00457001, 0.00045776, 0.00072479, 0.00040436
+};
+
+const Float bv16_lspmean[] = /* mean value of LSP components */
+{
+ 0.0950317, 0.1489563, 0.2513123, 0.3629456, 0.4780884, 0.5877075, 0.7058105, 0.8007202
+};
+
+const Float bv16_lspp[] = /* LSP Predictor Coefficients */
+{
+ 1.040710, 0.844971, 0.682922, 0.575989, 0.464600, 0.346008, 0.226074, 0.103577,
+ 1.034851, 0.884094, 0.723816, 0.609863, 0.489563, 0.366516, 0.240234, 0.109253,
+ 1.055237, 0.922180, 0.762695, 0.644531, 0.512695, 0.373474, 0.238037, 0.108337,
+ 1.076843, 0.935608, 0.790771, 0.673523, 0.540588, 0.399841, 0.264221, 0.118774,
+ 1.065552, 0.901978, 0.746155, 0.636047, 0.514282, 0.386169, 0.256165, 0.117493,
+ 1.037476, 0.848816, 0.684326, 0.577393, 0.463684, 0.347717, 0.232666, 0.107239,
+ 1.022278, 0.809021, 0.645081, 0.535767, 0.430481, 0.325562, 0.219055, 0.099304,
+ 0.964844, 0.743469, 0.578125, 0.484375, 0.393250, 0.297913, 0.201416, 0.091736
+};
+
+const Float bv16_lgpecb[] =         /* Log-Gain Prediction Error CodeBook */
+{
+ -5.38477, -3.68066, -2.76855, -2.09717, -1.47217, -0.33984, 0.67285, 1.82031,
+ -0.88525, 0.16748, 1.20313, 2.62549, 3.80518, 5.64551, 8.70605, 11.85156
+};
+
+const Float bv16_lgp[] =
+{
+ 0.7801514, 0.7377625, 0.6150818, 0.5926208, 0.4674072, 0.3635864, 0.2378540, 0.1286926
+};
+
+const Float bv16_lgmean = 11.45752;
+
+const Float bv16_cccb[] =
+{
+ -0.514526, 0.847412, 0.166748, 0.120605,
+ 0.389648, 1.125000, -1.070557, 0.048584,
+ -0.263916, -0.053101, 0.189209, 0.177734,
+ 2.927368, -0.262695, -0.092896, 0.274292,
+ -0.348755, -0.356812, -0.765747, -0.639038,
+ 1.912231, 0.890869, -2.045654, -0.802124,
+ -0.180298, -1.221802, -1.728760, -0.965210,
+ 1.743286, -1.338379, 0.184204, -0.281128,
+ -1.407593, 1.109497, 1.724487, -0.347900,
+ 2.324219, 1.637939, 0.742188, 0.526001,
+ -0.330933, -0.405396, 0.890747, 1.477661,
+ 1.545532, -0.195068, 0.148560, 0.073486,
+ -0.583740, 0.456055, 0.253296, -1.269043,
+ 0.587769, -0.129028, 0.616699, -0.256714,
+ -1.211426, -0.743896, -0.608887, -0.219360,
+ 0.196289, -1.870728, -0.309326, 1.111694
+};
+
+const Float bv16_pp9cb[PPCBSZ*9] =
+{
+ -0.022522, -0.353455, 0.002197, -0.003967, 0.000366, 0.000000, -0.000122, -0.031250, 0.000000,
+ -0.426147, 0.989624, 0.063049, 0.210876, -0.031189, 0.013428, -0.045410, -0.244812, -0.000977,
+ 0.337036, -1.186096, 0.409424, 0.199890, 0.242798, -0.068970, -0.028381, -0.351685, -0.041931,
+ 0.262207, 0.473328, 0.251770, -0.062073, -0.059570, -0.033020, -0.017212, -0.056030, -0.015869,
+ 0.534241, 0.753235, 0.150085, -0.201172, -0.056519, -0.040100, -0.071350, -0.141846, -0.005615,
+ 0.545532, 1.699646, -0.329407, -0.463623, 0.279907, 0.089844, -0.074402, -0.722168, -0.027100,
+ 0.283752, 0.565430, -0.156372, -0.080200, 0.044189, 0.022217, -0.020142, -0.079956, -0.006104,
+ 0.838562, 1.034973, 0.089111, -0.433960, -0.046143, -0.037354, -0.175781, -0.267761, -0.002014,
+ -0.158081, 0.575684, -0.197205, 0.045471, 0.056763, -0.015564, -0.006226, -0.082825, -0.009705,
+ 0.020447, 1.079346, -0.422424, -0.011047, 0.227966, 0.004333, -0.000122, -0.291260, -0.044617,
+ 0.236511, -0.646912, -0.251587, 0.076538, -0.081360, 0.029785, -0.013977, -0.104614, -0.015808,
+ 0.116882, 0.874512, 0.108887, -0.051086, -0.047607, -0.006348, -0.003418, -0.191162, -0.002991,
+ 0.535400, 1.342102, -0.004028, -0.359253, 0.002686, 0.001099, -0.071655, -0.450317, 0.000000,
+ 0.102112, 1.911194, -0.150574, -0.097534, 0.143860, 0.007690, -0.002625, -0.913147, -0.005676,
+ 0.576660, 0.916931, -0.272522, -0.264404, 0.124939, 0.078552, -0.083130, -0.210205, -0.018555,
+ 0.921509, 1.341675, -0.355408, -0.618164, 0.238403, 0.163757, -0.212280, -0.450012, -0.031555,
+ 0.053589, 0.331238, 0.060120, -0.008850, -0.009949, -0.001587, -0.000732, -0.027405, -0.000916,
+ -0.334106, 1.298950, 0.939758, 0.216980, -0.610352, 0.156982, -0.027893, -0.421814, -0.220764,
+ 0.198242, -0.586304, 0.324402, 0.058105, 0.095093, -0.032166, -0.009827, -0.085938, -0.026306,
+ 0.101135, 0.724731, 0.504761, -0.036621, -0.182922, -0.025513, -0.002563, -0.131287, -0.063721,
+ 0.157104, 0.999268, 0.802124, -0.078491, -0.400757, -0.062988, -0.006165, -0.249634, -0.160828,
+ -0.035217, 1.416809, 0.517395, 0.024963, -0.366516, 0.009094, -0.000305, -0.501831, -0.066895,
+ 0.446411, 0.646851, 0.513916, -0.144409, -0.166199, -0.114685, -0.049805, -0.104614, -0.066040,
+ 0.547058, 0.942505, 0.471069, -0.257813, -0.221985, -0.128845, -0.074829, -0.222107, -0.055481,
+ -0.173523, 0.558838, 0.263611, 0.048462, -0.073669, 0.022888, -0.007507, -0.078064, -0.017395,
+ -0.424072, 1.610962, 0.640259, 0.341553, -0.515747, 0.135742, -0.044983, -0.648804, -0.102478,
+ -0.355591, -0.702820, 0.022034, -0.124939, 0.007751, 0.003906, -0.031616, -0.123474, -0.000122,
+ -0.244446, 0.940491, 0.598267, 0.114929, -0.281311, 0.073120, -0.014954, -0.221130, -0.089478,
+ 0.347046, 1.152039, 0.385620, -0.199890, -0.222168, -0.066895, -0.030090, -0.331787, -0.037170,
+ -0.189636, 1.869568, 0.246582, 0.177246, -0.230469, 0.023376, -0.008972, -0.873840, -0.015198,
+ 0.635010, 0.814880, 0.510864, -0.258728, -0.208130, -0.162231, -0.100830, -0.166016, -0.065247,
+ 0.191528, 1.579285, 0.121948, -0.151245, -0.096313, -0.011658, -0.009155, -0.623535, -0.003723
+};
+
+/* Front-end highpass filter */
+const Float bv16_hpfa[] = {1.000000, -1.899109, 0.905396};
+const Float bv16_hpfb[] = {0.924133, -1.848267, 0.924133};
+
+/* coarse pitch search */
+const Float bv16_adf[] = {1.00000000000000, -2.95802363194525, 3.63373126275837, -2.12495286948979, 0.50039692036808};
+const Float bv16_bdf[] = {0.04330826, -0.06871796, 0.09910965, -0.06871796, 0.04330826};
+const Float bv16_x[] = {0.25, 0.5};
+const Float bv16_x2[] = {0.0625, 0.25}; /* square of x[] */
+const Float bv16_MPTH[]= {0.6300049, 0.4800110, 0.4200134, 0.3599854};
+
+const Float bv16_winl[] =
+{
+ 0.0001221, 0.0004883, 0.0011292, 0.0019836, 0.0031128, 0.0044556, 0.0060730, 0.0079346,
+ 0.0100098, 0.0123596, 0.0149536, 0.0177612, 0.0208130, 0.0241394, 0.0276794, 0.0314331,
+ 0.0354309, 0.0396729, 0.0441284, 0.0488281, 0.0537415, 0.0588684, 0.0642395, 0.0697937,
+ 0.0755920, 0.0815735, 0.0877686, 0.0941772, 0.1007996, 0.1076050, 0.1145935, 0.1217957,
+ 0.1291809, 0.1367493, 0.1444702, 0.1524048, 0.1604919, 0.1687622, 0.1771851, 0.1857605,
+ 0.1945190, 0.2033997, 0.2124634, 0.2216492, 0.2309570, 0.2404175, 0.2500000, 0.2597046,
+ 0.2695313, 0.2794800, 0.2895203, 0.2996826, 0.3099365, 0.3202820, 0.3307495, 0.3412476,
+ 0.3518677, 0.3625488, 0.3732910, 0.3840942, 0.3949585, 0.4058838, 0.4168396, 0.4278259,
+ 0.4388733, 0.4499512, 0.4610596, 0.4721680, 0.4833069, 0.4944153, 0.5055847, 0.5166931,
+ 0.5278320, 0.5389404, 0.5500488, 0.5611267, 0.5721741, 0.5831604, 0.5941162, 0.6050415,
+ 0.6159058, 0.6267090, 0.6374512, 0.6481323, 0.6587524, 0.6692505, 0.6797180, 0.6900635,
+ 0.7003174, 0.7104797, 0.7205200, 0.7304688, 0.7402954, 0.7500000, 0.7595825, 0.7690430,
+ 0.7783508, 0.7875366, 0.7966003, 0.8054810, 0.8142395, 0.8228149, 0.8312378, 0.8395081,
+ 0.8475952, 0.8555298, 0.8632507, 0.8708191, 0.8782043, 0.8854065, 0.8923950, 0.8992004,
+ 0.9058228, 0.9122314, 0.9184265, 0.9244080, 0.9302063, 0.9357605, 0.9411316, 0.9462585,
+ 0.9511719, 0.9558716, 0.9603271, 0.9645691, 0.9685669, 0.9723206, 0.9758606, 0.9791870,
+ 0.9822388, 0.9850464, 0.9876404, 0.9899902, 0.9920654, 0.9939270, 0.9955444, 0.9968872,
+ 0.9980164, 0.9988708, 0.9995117, 0.9998779, 1.0000000, 0.9969177, 0.9877014, 0.9723816,
+ 0.9510498, 0.9238892, 0.8910217, 0.8526306, 0.8090210, 0.7604065, 0.7070923, 0.6494446,
+ 0.5877991, 0.5224915, 0.4539795, 0.3826904, 0.3090210, 0.2334595, 0.1564331, 0.0784607
+};
+
+const Float bv16_sstwin[] =
+{
+ 1.00009999953429, 0.99950664069252, 0.99802802477777, 0.99556852473654, 0.99213540467992,
+ 0.98773878257675, 0.98239158368278, 0.97610947534163, 0.96891079060864
+};
+
+/* pole-zero noise feedback filter */
+const Float bv16_gfsz[] =
+{
+ 0.00000000000000, -0.40000000000000, -0.54000000000000, -0.56275000000000,
+ -0.53527500000000, -0.48872828125000, -0.43730950781250, -0.38724014365234,
+ -0.34101742974609
+};
+
+const Float bv16_gfsp[] =
+{
+ 1.00000000000000, 0.87500000000000, 0.76562500000000, 0.66992187500000,
+ 0.58618164062500, 0.51290893554688, 0.44879531860352, 0.39269590377808,
+ 0.34360891580582
+};
+
+const int bv16_idxord[] = { 0, 1, 2, 3, 4, 8, 5, 9, 6, 10, 7, 11, 12, 13, 14, 15 };
+
+const Float bv16_lgpecb_nh[] =         /* Log-Gain Prediction Error Next-Higher CodeBook */
+{
+ -3.68066, -2.76855, -2.09717, -1.47217, -0.88525, 0.16748, 1.20313, 2.62549,
+ -0.33984, 0.67285, 1.82031, 3.80518, 5.64551, 8.70605, 11.85156
+};
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32cnsth"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32cnst.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32cnst.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32cnst.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,152 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32cnst.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32cnst.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#include "typedef.h"
+
+#ifndef        __BV32__
+#define __BV32__
+
+/* ----- Basic Codec Parameters ----- */
+#define SF                16                        /* input Sampling Frequency (in kHz) */
+#define FRSZ        80         /* the FRame SiZe */
+#define MAXPP        265         /* MAXimum Pitch Period */
+#define MINPP        10         /* Half of MINimum Pitch Period */
+#define NSF        2                         /* number of subframes per frame */
+#define PWSZ        240          /* Pitch analysis Window SiZe for 8kHz lowband */
+#define SFRSZ        (FRSZ/NSF)        /* SubFrame SiZe */
+#define WINSZ        160         /* Half of LPC analysis WINdow SiZe        */
+#define MAXPP1        (MAXPP+1)        /* Half of MAXimum Pitch Period + 1a */
+
+/* NFC VQ coding parameters */
+#define VDIM                4         /* excitation vector dimension */
+#define CBSZ                32         /* codebook size */
+#define PPCBSZ                32
+#define LGPORDER        16         /* Log-Gain Predictor OODER */
+#define LGPECBSZ        32         /* Log-Gain Prediction Error CodeBook SiZe */
+#define LSPPORDER        8         /* LSP MA Predictor ORDER */
+#define LSPECBSZ1        128         /* codebook size of 1st-stage LSP VQ */
+#define SVD1                3         /* split VQ dimension 1 */
+#define LSPECBSZ21        32         /* codebook size of 2nd-stage LSP split VQ */
+#define SVD2                5         /* split VQ dimension 2 */
+#define LSPECBSZ22        32         /* codebook size of 2nd stage LSP split VQ */
+
+#define NVPSF                (FRSZ/VDIM)
+#define NVPSSF                (SFRSZ/VDIM)
+
+/* Packetloss Concealment */
+#define ScPLCGmin 0.1
+#define ScPLCGmax 0.9
+#define PePLCGmin 0.5
+#define PePLCGmax 0.9
+#define ScPLCG_b ((ScPLCGmin - ScPLCGmax)/(PePLCGmax - PePLCGmin))
+#define ScPLCG_a (ScPLCGmin - ScPLCG_b*PePLCGmax)
+#define HoldPLCG 8
+#define AttnPLCG 50
+#define AttnFacPLCG (1.0/(Float)AttnPLCG)
+
+/* Pre-emphasis filter coefficients */
+#define PEAPFC 0.75
+#define PEAZFC         0.5
+
+#define INVSFRSZ (1./(Float)SFRSZ)
+#define FECNSF 2 /* number of FEC subframes per frame */
+
+#define Minlg -2.0 /* minimum log-gain */
+#define TMinlg 0.25 /* minimum linear gain */
+#define GPO 16 /* order of MA prediction */
+
+/* Level Estimation */
+#define estl_alpha (8191.0/8192.0)
+#define estl_beta (1023.0/1024.0)
+#define estl_beta1 (1.0 - estl_beta)
+#define estl_a (511.0/512.0)
+#define estl_a1 (1 - estl_a)
+#define estl_TH 0.2
+
+/* Log-Gain Limitation */
+#define LGLB -24 /* Log-Gain Lower Bound */
+#define GCLB -8 /* Log-Gain Change Lower Bound */
+#define NGB 18 /* Number of Gain Bins */
+#define NGCB 11 /* Number of Gain Change Bins */
+#define MinE -2.0
+
+#define PFO 1 /* preemphasis filter order */
+
+#define LTMOFF MAXPP1        /* Long-Term filter Memory OFFset */
+
+/* Parameters related to the gain decoder trap */
+#define NCLGLIM_TRAPPED 50 /* 0.125 sec */
+#define LEVEL_CONVERGENCE_TIME 100 /* 0.25 sec */
+
+/* front-end highpass filter */
+#define HPO 2 /* High-pass filter order */
+
+/* LPC weighting filter */
+#define        LTWFL        0.5
+
+/* Minimum gain threshold */
+#define TMinE (SFRSZ*0.25)
+
+/* coarse pitch search */
+#define cpp_Qvalue 3
+#define cpp_scale (1<<cpp_Qvalue)
+
+/* ------ Decimation Parameters ----- */
+#define DECF 8 /* DECimation Factor for coarse pitch period search */
+#define FRSZD (FRSZ/DECF) /* FRame SiZe in DECF:1 lowband domain */
+#define MAXPPD (MAXPP/DECF) /* MAX Pitch in DECF:1, if MAXPP!=4n, ceil() */
+#define MINPPD ((int) (MINPP/DECF)) /* MINimum Pitch Period in DECF:1 */
+#define PWSZD (PWSZ/DECF) /* Pitch ana. Window SiZe in DECF:1 domain */
+#define DFO 4
+#define MAXPPD1 (MAXPPD + 1)
+#define LXD (MAXPPD1 + PWSZD)
+#define XDOFF (LXD - FRSZD)
+#define HMAXPPD (MAXPPD/2)
+#define M1 (MINPPD - 1)
+#define M2 MAXPPD1
+#define HDECF (DECF/2)
+#define INVDECF (1.0F/(float)(DECF)) /* INVerse of DECF (decimation factor) */
+
+/* coarse pitch */
+#define MPTH4 0.3 /* value to use for MPTH[] with index >= 4 */
+#define DEVTH        0.25        /* pitch period DEViation THreshold         */
+#define TH1         0.73 /* first threshold for cor*cor/energy         */
+#define TH2         0.4 /* second threshold for cor*cor/energy         */
+#define LPTH1 0.78 /* Last Pitch cor*cor/energy THreshold 1 */
+#define LPTH2 0.43 /* Last Pitch cor*cor/energy THreshold 2 */
+#define MPDTH 0.06 /* Multiple Pitch Deviation THreshold */
+#define SMDTH 0.095 /* Sub-Multiple pitch Deviation THreshold */
+#define SMDTH1 (1.0 - SMDTH)
+#define SMDTH2 (1.0 + SMDTH)
+#define MPR1 (1.0 - MPDTH) /* Multiple Pitch Range lower threshold */
+#define MPR2 (1.0 + MPDTH) /* Multiple Pitch Range upper threshold */
+#define MAX_NPEAKS        7
+
+/* buffer offset and length */
+#define XOFF MAXPP1 /* offset for x() frame */
+#define LX (XOFF+FRSZ) /* Length of x() buffer */
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32coarse_pitchc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32coarse_pitch.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32coarse_pitch.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32coarse_pitch.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,361 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32_coarptch.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32coarse_pitch.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "utility.h"
+#include "bv32externs.h"
+
+int bv32_coarsepitch(Float *xw,
+ Float *xwdm,
+ Float *dfm, /* (i/o) ellipse low pass filter memory */
+ int cpplast) /* in the undecimated domain Q3 */
+{
+ Float xwd[LXD];
+ Float _cor[MAXPPD1 + 1];
+ Float _cor2[MAXPPD1 + 1];
+ Float _energy[MAXPPD1 + 1];
+ Float *cor, *cor2, *energy;
+ Float cor2i[MAX_NPEAKS], energyi[MAX_NPEAKS];
+ Float tmp[DFO+FRSZ], threshold;
+ Float *fp0, *fp1, *fp2, *fp3, s, t, a, b, c, deltae;
+ Float cor2max, energymax, cor2m, energym, ci, eni;
+ int        cpp, maxdev, plag[MAX_NPEAKS], mplth;        /* in the undecimated domain Q3 */
+ int i, j, k, n, npeaks, imax, im, idx[HMAXPPD];
+ int flag, mpflag;
+
+ cor = _cor + 1;
+ cor2 = _cor2 + 1;
+ energy = _energy + 1;
+
+ /* LOWPASS FILTER xw() TO 800 Hz; SHIFT & OUTPUT INTO xwd() */
+
+ /* load xwd[] buffer memory */
+ Fcopy(xwd, xwdm, XDOFF);
+
+ /* copy memory to temp buffer */
+ fp1 = tmp;
+ fp2 = dfm;
+ for (i = 0; i < DFO; i++)
+ *fp1++ = *fp2++;
+
+ /* AP and AZ filtering and decimation */
+ fp0 = xwd + XDOFF;
+ fp3 = xw;
+ for (i = 0; i < FRSZD; i++)
+ {
+ for (k = 0; k < DECF; k++)
+ {
+ t = *fp3++;
+ fp2 = fp1 - 1;
+ for (j = 0; j < DFO; j++)
+ t -= bv32_adf[j + 1]*(*fp2--);
+ *fp1++ = t;
+ }
+ fp2 = fp1 - 1;
+ t = bv32_bdf[0]*(*fp2--);
+ for (j = 0; j < DFO; j++)
+ t += bv32_bdf[j + 1]*(*fp2--);
+ *fp0++ = t;
+ }
+
+ /* copy temp buffer to memory */
+ fp1 -= DFO;
+ for (i = 0; i < DFO; i++)
+ dfm[i] = *fp1++;
+ Fcopy(xwdm, xwd + FRSZD, XDOFF);
+
+ /* COMPUTE CORRELATION & ENERGY OF PREDICTION BASIS VECTOR */
+ fp0 = xwd + MAXPPD1;
+ fp1 = xwd + MAXPPD1 - M1;
+ s = t = 0.0;
+ for (i = 0; i < (LXD - MAXPPD1); i++)
+ {
+ s += (*fp1)*(*fp1);
+ t += (*fp0++)*(*fp1++);
+ }
+ if (s < 1.e-10)
+ {
+ s = t = 0.0;
+ }
+ energy[M1 - 1] = s;
+ cor[M1 - 1] = t;
+ if (t > 0.0F)
+ cor2[M1 - 1] = t*t;
+ else
+ cor2[M1 - 1] = -t*t;
+
+
+ fp2 = xwd + LXD - M1 - 1;
+ fp3 = xwd + MAXPPD1 - M1 - 1;
+
+ for (i = M1; i < M2; i++)
+ {
+ fp0 = xwd + MAXPPD1;
+ fp1 = xwd + MAXPPD1 - i - 1;
+ t = 0.0;
+ for (j = 0; j < (LXD - MAXPPD1); j++)
+ t += (*fp0++)*(*fp1++);
+ s = s - (*fp2)*(*fp2) + (*fp3)*(*fp3);
+ if (s < 1.e-10)
+ {
+ s = t = 0.0;
+ }
+ cor[i] = t;
+ if (t > 0.0F)
+ cor2[i] = t*t;
+ else
+ cor2[i] = -t*t;
+ fp2--;
+ fp3--;
+ energy[i] = s;
+ }
+
+ /* FIND POSITIVE COR*COR/ENERGY PEAKS */
+ npeaks = 0;
+ n = MINPPD-1;
+ while ((npeaks < MAX_NPEAKS) && (n < MAXPPD))
+ {
+ if ((cor2[n]*energy[n - 1] > cor2[n - 1]*energy[n])
+ &&
+ (cor2[n]*energy[n + 1] > cor2[n + 1]*energy[n])
+ &&
+ (cor2[n] > 0))
+ {
+ idx[npeaks] = n;
+ npeaks++;
+ }
+ n++;
+ }
+
+ /* RETURN EARLY IF THERE IS NO PEAK OR ONLY ONE PEAK */
+ if (npeaks == 0) /* if there are no positive peak, */
+ return MINPPD*cpp_scale; /* return minimum pitch period */
+ if (npeaks == 1) /* if there is exactly one peak, */
+ return (idx[0] + 1)*cpp_scale; /* return the time lag for this peak */
+
+ /* IF PROGRAM PROCEEDS TO HERE, THERE ARE 2 OR MORE PEAKS */
+ cor2max = -1e30;
+ energymax = 1.0F;
+ imax = 0;
+ for (i = 0; i < npeaks; i++)
+ {
+ /* USE QUADRATIC INTERPOLATION TO FIND THE INTERPOLATED cor[] AND
+ energy[] CORRESPONDING TO INTERPOLATED PEAK OF cor2[]/energy[] */
+ /* first calculate coefficients of y(x)=ax^2+bx+c; */
+ n = idx[i];
+ a = 0.5F*(cor[n + 1] + cor[n - 1]) - cor[n];
+ b = 0.5F*(cor[n + 1] - cor[n - 1]);
+ c = cor[n];
+
+ /* INITIALIZE VARIABLES BEFORE SEARCHING FOR INTERPOLATED PEAK */
+ im = 0;
+ cor2m = cor2[n];
+ energym = energy[n];
+ eni = energy[n];
+
+ /* DERTERMINE WHICH SIDE THE INTERPOLATED PEAK FALLS IN, THEN
+ DO THE SEARCH IN THE APPROPRIATE RANGE */
+ if (cor2[n + 1]*energy[n - 1] > cor2[n - 1]*energy[n + 1]) /* if right side */
+ {
+ deltae=(energy[n + 1] - eni)*INVDECF; /*increment for linear interp.*/
+ for (k = 0; k < HDECF; k++)
+ {
+ ci = a*bv32_x2[k] + b*bv32_x[k] + c; /* quadratically interpolated cor[] */
+ eni += deltae; /* linearly interpolated energy[] */
+ if (ci*ci*energym > cor2m*eni)
+ {
+ im = k + 1;
+ cor2m = ci*ci;
+ energym = eni;
+ }
+ }
+ }
+ else /* if interpolated peak is on the left side */
+ {
+ deltae = (energy[n-1] - eni)*INVDECF; /*increment for linear interp.*/
+ for (k = 0; k < HDECF; k++)
+ {
+ ci = a*bv32_x2[k] - b*bv32_x[k] + c;
+ eni += deltae;
+ if (ci*ci*energym > cor2m*eni)
+ {
+ im = -k - 1;
+ cor2m = ci*ci;
+ energym = eni;
+ }
+ }
+ }
+
+ /* SEARCH DONE; ASSIGN cor2[] AND energy[] CORRESPONDING TO
+ INTERPOLATED PEAK */
+ plag[i] = (idx[i] + 1)*cpp_scale + im;                 /* lag of interp. peak */
+ cor2i[i] = cor2m; /* interpolated cor2[] of i-th interpolated peak */
+ energyi[i] = energym; /* interpolated energy[] of i-th interpolated peak */
+
+ /* SEARCH FOR GLOBAL MAXIMUM OF INTERPOLATED cor2[]/energy[] peak */
+ if (cor2m*energymax > cor2max*energym)
+ {
+ imax = i;
+ cor2max = cor2m;
+ energymax = energym;
+ }
+ }
+ cpp = plag[imax];        /* first candidate for coarse pitch period */
+ mplth = plag[npeaks - 1]; /* set mplth to the lag of last peak */
+
+ /* FIND THE LARGEST PEAK (IF THERE IS ANY) AROUND THE LAST PITCH */
+ maxdev = (int) (DEVTH*cpplast); /* maximum deviation from last pitch */
+ im = -1;
+ cor2m = -1.0e30;
+ energym = 1.0F;
+ for (i = 0; i < npeaks; i++) /* loop thru the peaks before the largest peak */
+ {
+ if (abs(plag[i] - cpplast) <= maxdev)
+ {
+ if (cor2i[i]*energym > cor2m*energyi[i])
+ {
+ im = i;
+ cor2m = cor2i[i];
+ energym = energyi[i];
+ }
+ }
+ } /* if there is no peaks around last pitch, then im is still -1 */
+
+ /* NOW SEE IF WE SHOULD PICK ANY ALTERNATICE PEAK */
+ /* FIRST, SEARCH FIRST HALF OF PITCH RANGE, SEE IF ANY QUALIFIED PEAK
+ HAS LARGE ENOUGH PEAKS AT EVERY MULTIPLE OF ITS LAG */
+ i = 0;
+ while (plag[i] < 0.5*mplth)
+ {
+ /* DETERMINE THE APPROPRIATE THRESHOLD FOR THIS PEAK */
+ if (i != im) /* if not around last pitch, */
+ {
+ threshold = TH1; /* use a higher threshold */
+ }
+ else /* if around last pitch */
+ {
+ threshold = TH2; /* use a lower threshold */
+ }
+
+ /* IF THRESHOLD EXCEEDED, TEST PEAKS AT MULTIPLES OF THIS LAG */
+ if (cor2i[i]*energymax > threshold*cor2max*energyi[i])
+ {
+ flag = 1;
+ j = i + 1;
+ k = 0;
+ s = 2.0F*plag[i]; /* initialize t to twice the current lag */
+ while (s <= mplth) /* loop thru all multiple lag <= mplth */
+ {
+ mpflag = 0; /* initialize multiple pitch flag to 0 */
+ a = MPR1*s; /* multiple pitch range lower bound */
+ b = MPR2*s; /* multiple pitch range upper bound */
+ while (j < npeaks) /* loop thru peaks with larger lags */
+ {
+ if (plag[j] > b) /* if range exceeded, */
+ {
+ break; /* break the innermost while loop */
+ } /* if didn't break, then plag[j] <= b */
+ if (plag[j] > a) /* if current peak lag within range, */
+ {
+ /* then check if peak value large enough */
+ if (k < 4)
+ {
+ c = bv32_MPTH[k];
+ }
+ else
+ {
+ c = MPTH4;
+ }
+ if (cor2i[j]*energymax > c*cor2max*energyi[j])
+ {
+ mpflag = 1; /* if peak large enough, set mpflag, */
+ break; /* and break the innermost while loop */
+ }
+ }
+ j++;
+ }
+ /* if no qualified peak found at this multiple lag */
+ if (mpflag == 0)
+ {
+ flag=0; /* disqualify the lag plag[i] */
+ break; /* and break the while (s<=mplth) loop */
+ }
+ k++;
+ s += plag[i]; /* update s to the next multiple pitch lag */
+ }
+ /* if there is a qualified peak at every multiple of plag[i], */
+ if (flag == 1)
+ return plag[i]; /* and return to calling function */
+ }
+ i++;
+ if (i == npeaks)
+ break; /* to avoid out of array bound error */
+ }
+
+ /* IF PROGRAM PROCEEDS TO HERE, NONE OF THE PEAKS WITH LAGS < 0.5*mplth
+ QUALIFIES AS THE FINAL PITCH. IN THIS CASE, CHECK IF
+ THERE IS ANY PEAK LARGE ENOUGH AROUND LAST PITCH. IF SO, USE ITS
+ LAG AS THE FINAL PITCH. */
+ if (im != -1) /* if there is at least one peak around last pitch */
+ {
+ if (im == imax) /* if this peak is also the global maximum, */
+ return cpp; /* return first pitch candidate at global max */
+ if (im < imax) /* if lag of this peak < lag of global max, */
+ {
+ if (cor2m*energymax > LPTH2*cor2max*energym)
+ {
+ if (plag[im] > HMAXPPD*cpp_scale)
+ return plag[im];
+ for (k = 2; k <= 5; k++) /* check if current candidate pitch */
+ {
+ s = plag[imax]/(float)(k); /* is a sub-multiple of */
+ a = SMDTH1*s; /* the time lag of */
+ b = SMDTH2*s; /* the global maximum peak */
+ if (plag[im] > a && plag[im] < b) /* if so, */
+ return plag[im]; /* and return as pitch */
+ }
+ }
+ }
+ else /* if lag of this peak > lag of global max, */
+ {
+ if (cor2m*energymax > LPTH1*cor2max*energym)
+ return plag[im]; /* accept its lag */
+ }
+ }
+
+ /* IF PROGRAM PROCEEDS TO HERE, WE HAVE NO CHOICE BUT TO ACCEPT THE
+ LAG OF THE GLOBAL MAXIMUM */
+ return cpp;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32decoderc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32decoder.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32decoder.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32decoder.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,194 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * decoder.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32decoder.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "utility.h"
+#include "bvcommon.h"
+#include "bv32externs.h"
+#include "bv32strct.h"
+#include "bitpack32.h"
+#include "broadvoice/broadvoice.h"
+
+BV_DECLARE(bv32_decode_state_t *) bv32_decode_init(bv32_decode_state_t *s)
+{
+ int i;
+
+ if (s == NULL)
+ {
+ if ((s = (bv32_decode_state_t *) malloc(sizeof(*s))) == NULL)
+ return NULL;
+ }
+ for (i = 0; i < LPCO; i++)
+ s->lsplast[i] = (Float)(i + 1)/(Float)(LPCO + 1);
+ Fzero(s->stsym, LPCO);
+ Fzero(s->ltsym, LTMOFF);
+ Fzero(s->lgpm, LGPORDER);
+ Fzero(s->lsppm, LPCO*LSPPORDER);
+ Fzero(s->dezfm, PFO);
+ Fzero(s->depfm, PFO);
+ s->cfecount = 0;
+ s->idum = 0;
+ s->scplcg = 1.0;
+ s->per = 0;
+ s->E = 0.0;
+ for (i = 0; i < LPCO; i++)
+ s->atplc[i + 1] = 0.0;
+ s->pp_last = 100;
+ s->prevlg[0] = MinE;
+ s->prevlg[1] = MinE;
+ s->lgq_last = MinE;
+ s->lmax = -100.0;
+ s->lmin = 100.0;
+ s->lmean = 8.0;
+ s->x1 = 13.5;
+ s->level = 13.5;
+ s->nclglim = 0;
+ s->lctimer = 0;
+ return s;
+}
+
+BV_DECLARE(int) bv32_decode(bv32_decode_state_t *ds,
+ int16_t amp[],
+ const uint8_t *in,
+ int len)
+{
+ Float xq[FRSZ];
+ Float ltsym[LTMOFF + FRSZ];
+ Float a[LPCO + 1];
+ Float lspq[LPCO];
+ Float bq[3];
+ Float gainq[NSF];
+ Float lgq[NSF];
+ Float E;
+ int16_t pp;
+ int16_t i;
+ Float bss;
+ struct BV32_Bit_Stream bs;
+ int ii;
+ int outlen;
+
+ outlen = 0;
+ for (ii = 0; ii < len; ii += 20)
+ {
+ bv32_bitunpack(&in[ii], &bs);
+
+ /* Reset frame erasure counter */
+ ds->cfecount = 0;
+
+ /* Decode spectral information */
+ bv32_lspdec(lspq, bs.lspidx, ds->lsppm, ds->lsplast);
+ lsp2a(lspq,        a);
+
+ /* Decode pitch period & 3 pitch predictor taps */
+ pp = (bs.ppidx + MINPP);
+ bv32_pp3dec(bs.bqidx, bq);
+
+ /* Decode excitation gain */
+ for (i = 0; i < NSF; i++)
+ {
+ gainq[i] = bv32_gaindec(lgq + i,
+ bs.gidx[i],
+ ds->lgpm,
+ ds->prevlg,
+ ds->level,
+ &ds->nclglim,
+ ds->lctimer);
+
+ if (ds->lctimer > 0)
+ ds->lctimer = ds->lctimer - 1;
+ if (ds->nclglim == NCLGLIM_TRAPPED)
+ ds->lctimer = LEVEL_CONVERGENCE_TIME;
+
+ /* Level estimation */
+ bv32_estlevel(ds->prevlg[0], &ds->level, &ds->lmax, &ds->lmin, &ds->lmean, &ds->x1);
+ }
+
+ /* Copy state memory ltsym[] to local buffer */
+ Fcopy(ltsym, ds->ltsym, LTMOFF);
+
+ /* Decode the excitation signal */
+ bv32_excdec_w_LT_synth(ltsym, bs.qvidx, gainq, bq, pp, &E);
+
+ ds->E = E;
+
+ /* LPC synthesis filtering of excitation */
+ apfilter(a, LPCO, ltsym + LTMOFF, xq, FRSZ, ds->stsym, 1);
+
+ /* Update pitch period of last frame */
+ ds->pp_last = pp;
+
+ /* Update signal memory */
+ Fcopy(ds->ltsym, ltsym + FRSZ, LTMOFF);
+ Fcopy(ds->bq_last, bq, 3);
+
+ /* Update average quantized log-gain */
+ ds->lgq_last = 0.5*(lgq[0] + lgq[1]);
+
+ /* De-emphasis filtering */
+ azfilter(bv32_a_pre, PFO, xq, xq, FRSZ, ds->dezfm, 1);
+ apfilter(bv32_b_pre, PFO, xq, xq, FRSZ, ds->depfm, 1);
+
+ F2s(&amp[outlen], xq, FRSZ);
+ Fcopy(ds->lsplast, lspq, LPCO);
+
+ Fcopy(ds->atplc, a, LPCO + 1);
+
+ bss = bq[0] + bq[1] + bq[2];
+ if (bss > 1.0)
+ bss = 1.0;
+ else if (bss < 0.0)
+ bss = 0.0;
+ ds->per = 0.5*ds->per + 0.5*bss;
+ outlen += FRSZ;
+ }
+ return outlen;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv32_decode_release(bv32_decode_state_t *s)
+{
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv32_decode_free(bv32_decode_state_t *s)
+{
+ free(s);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32encoderc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32encoder.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32encoder.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32encoder.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,233 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * encoder.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32encoder.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "utility.h"
+#include "bvcommon.h"
+#include "bv32externs.h"
+#include "bv32strct.h"
+#include "bitpack32.h"
+#include "broadvoice/broadvoice.h"
+
+BV_DECLARE(bv32_encode_state_t *) bv32_encode_init(bv32_encode_state_t *s)
+{
+ int k;
+
+ if (s == NULL)
+ {
+ if ((s = (bv32_encode_state_t *) malloc(sizeof(*s))) == NULL)
+ return NULL;
+ }
+ Fzero(s->lgpm, LGPORDER);
+ s->allast[0] = 1.0;
+ Fzero(s->allast + 1, LPCO);
+ for (k = 0; k < LPCO; k++)
+ s->lsplast[k] = (Float) (k + 1)/(Float)(LPCO + 1);
+ Fzero(s->lsppm, LPCO*LSPPORDER);
+ Fzero(s->x, XOFF);
+ Fzero(s->xwd, XDOFF);
+ Fzero(s->dq, XOFF);
+ Fzero(s->stpem, LPCO);
+ Fzero(s->stwpm, LPCO);
+ Fzero(s->dfm, DFO);
+ Fzero(s->stnfm, LPCO);
+ Fzero(s->stsym, LPCO);
+ Fzero(s->ltsym, MAXPP1 + FRSZ);
+ Fzero(s->ltnfm, MAXPP1 + FRSZ);
+ s->cpplast = 12*cpp_scale;
+ Fzero(s->hpfzm,HPO);
+ Fzero(s->hpfpm,HPO);
+ s->prevlg[0] = MinE;
+ s->prevlg[1] = MinE;
+ s->lmax = -100.0;
+ s->lmin = 100.0;
+ s->lmean = 8.0;
+ s->x1 = 13.5;
+ s->level = 13.5;
+ return s;
+}
+
+BV_DECLARE(int) bv32_encode(bv32_encode_state_t *cs,
+ uint8_t *out,
+ const int16_t amp[],
+ int len)
+{
+ Float x[LX];
+ Float dq[LX];
+ Float xw[FRSZ];
+ Float r[LPCO + 1];
+ Float a[LPCO + 1];
+ Float aw[LPCO + 1];
+ Float lsp[LPCO];
+ Float lspq[LPCO];
+ Float cbs[VDIM*CBSZ];
+ Float qv[SFRSZ];
+ Float bq[3];
+ Float beta;
+ Float gainq[2];
+ Float lg;
+ Float e;
+ Float ee;
+ Float ppt;
+ Float lth;
+ int        pp;
+ int cpp;
+ int        i;
+ int issf;
+ Float *fp0;
+ Float *fp1;
+ struct BV32_Bit_Stream bs;
+ int ii;
+ int outlen;
+
+ outlen = 0;
+ for (ii = 0; ii < len; ii += FRSZ)
+ {
+ /* Copy state memory to local memory buffers */
+ Fcopy(x, cs->x, XOFF);
+ for (i = 0; i < FRSZ; i++)
+ x[XOFF + i] = (Float) amp[ii + i];
+
+ /* High pass filtering & pre-emphasis filtering */
+ azfilter(bv32_hpfb, HPO, x + XOFF, x + XOFF, FRSZ, cs->hpfzm, 1);
+ apfilter(bv32_hpfa, HPO, x + XOFF, x + XOFF, FRSZ, cs->hpfpm, 1);
+
+ /* Copy to coder state */
+ Fcopy(cs->x, x + FRSZ, XOFF);
+
+ /* Perform lpc analysis with asymmetrical window */
+ Autocor(r, x + LX - WINSZ, bv32_winl, WINSZ, LPCO);        /* get autocorrelation lags */
+
+ for (i = 0; i <= LPCO; i++)
+ r[i] *= bv32_sstwin[i];        /* apply spectral smoothing */
+ Levinson(r, a, cs->allast, LPCO);                         /* Levinson-Durbin recursion */
+ for (i = 0; i <= LPCO; i++)
+ a[i] *= bwel[i];
+
+ a2lsp(a, lsp, cs->lsplast);
+
+ bv32_lspquan(lspq, bs.lspidx, lsp, cs->lsppm);
+
+ lsp2a(lspq, a);
+
+ /* Calculate LPC prediction residual */
+ Fcopy(dq, cs->dq, XOFF);                         /* copy dq() state to buffer */
+ azfilter(a, LPCO, x + XOFF, dq + XOFF, FRSZ, cs->stpem, 1);
+
+ /* Use weighted version of LPC filter as noise feedback filter */
+ for (i = 0; i <= LPCO; i++)
+ aw[i] = STWAL[i]*a[i];
+
+ /* Get perceptually weighted version of speech */
+ apfilter(aw, LPCO, dq + XOFF, xw, FRSZ, cs->stwpm, 1);
+
+ /* Get the coarse version of pitch period using 8:1 decimation */
+ cpp = bv32_coarsepitch(xw, cs->xwd, cs->dfm, cs->cpplast);
+ cs->cpplast = cpp;
+
+ /* Refine the pitch period in the neighborhood of coarse pitch period
+ also calculate the pitch predictor tap for single-tap predictor */
+ pp = bv32_refinepitch(dq, cpp, &ppt);
+ bs.ppidx = pp - MINPP;
+
+ /* vq 3 pitch predictor taps with minimum residual energy */
+ bs.bqidx = bv32_pitchtapquan(dq, pp, bq);
+
+ /* get coefficients for long-term noise feedback filter */
+ if (ppt > 1.0)
+ beta = LTWFL;
+ else if (ppt < 0.0)
+ beta = 0.0;
+ else
+ beta = LTWFL*ppt;
+
+ /* Loop over excitation sub-frames */
+ for (issf = 0; issf < NSF; issf++)
+ {
+ /* Calculate pitch prediction residual */
+ fp0 = dq + XOFF + issf*SFRSZ;
+ fp1 = dq + XOFF + issf*SFRSZ - (pp - 2) - 1;
+ ee = 0.0;
+ for (i = 0; i < SFRSZ; i++)
+ {
+ e = *fp0++ - bq[0]*fp1[0] - bq[1] * fp1[-1] - bq[2] * fp1[-2];
+ fp1++;
+ ee += e*e;
+ }
+
+ /* Log-gain quantization within each sub-frame */
+ lg = (ee < TMinE) ? MinE : log(ee/SFRSZ)/log(2.0);
+ bs.gidx[issf] = bv32_gainquan(gainq + issf, lg, cs->lgpm, cs->prevlg, cs->level);
+
+ /* Level Estimation */
+ lth = bv32_estlevel(cs->prevlg[0], &cs->level, &cs->lmax, &cs->lmin, &cs->lmean, &cs->x1);
+
+ /* Scale the excitation codebook */
+ for (i = 0; i < (VDIM*CBSZ); i++)
+ cbs[i] = gainq[issf]*bv32_cccb[i];
+
+ /* Perform noise feedback coding of the excitation signal */
+ bv32_excquan(qv, bs.qvidx + issf*NVPSSF, dq + XOFF + issf*SFRSZ, aw, bq, beta, cs->ltsym, cs->ltnfm, cs->stnfm, cbs, pp);
+
+ /* Update quantized short-term prediction residual buffer */
+ Fcopy(dq + XOFF + issf*SFRSZ, qv, SFRSZ);
+ }
+
+ /* update state memory */
+ Fcopy(cs->dq, dq + FRSZ, XOFF);
+ Fcopy(cs->lsplast, lspq, LPCO);
+ i = bv32_bitpack(out, &bs);
+ out += i;
+ outlen += i;
+ }
+ return outlen;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv32_encode_release(bv32_encode_state_t *s)
+{
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+
+BV_DECLARE(int) bv32_encode_free(bv32_encode_state_t *s)
+{
+ free(s);
+ return 0;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32excdecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excdec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excdec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excdec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * excdec.c - Excitation signal decoding including long-term synthesis.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32excdec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv32externs.h"
+
+void bv32_excdec_w_LT_synth(Float *ltsymd, /* long-term synthesis filter memory at decoder*/
+ int16_t *idx, /* excitation codebook index array for current subframe */
+ Float *gainq, /* quantized linear gains for sub-subframes */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ int16_t pp, /* pitch period (# of 8 kHz samples) */
+ Float *EE)
+{
+ Float a0;
+ Float *fp1;
+ Float *fp2;
+ const Float *fp3;
+ Float gain;
+ int i;
+ int m;
+ int n;
+ int id;
+ int16_t        *ip;
+ Float E;
+ Float t;
+
+ ip = idx;
+ fp1 = &ltsymd[LTMOFF]; /* fp1 points to 1st sample of current subframe */
+ fp2 = &ltsymd[LTMOFF - pp + 1];
+ for (i = 0; i < NSF; i++) /* loop through sub-subframes */
+ {
+ E = 0.0;
+ for (m = 0; m < SFRSZ; m += VDIM) /* loop thru vectors in sub-subframe */
+ {
+ id = *ip++; /* get codebook index of current vector */
+ if (id < CBSZ)
+ {
+ gain = gainq[i];
+ }
+ else
+ {
+ gain = -gainq[i];
+ id -= CBSZ;
+ }
+ fp3 = &bv32_cccb[id*VDIM];
+ for (n = 0; n < VDIM; n++)
+ {
+ a0 = b[0] * *fp2--;
+ a0 += b[1] * *fp2--;
+ a0 += b[2] * *fp2;/* a0=pitch predicted value of LT syn filt */
+ t = *fp3++ * gain;
+ E += t*t;
+ *fp1++ = a0 + t; /* add scale codevector to a0 */
+ fp2 = &fp2[3]; /* prepare fp2 for filtering next sample */
+ }
+ }
+ }
+ *EE = E;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32excquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32excquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,247 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * excquan.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32excquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+/*****************************************************************************
+ Vector Quantizer for 2-Stage Noise Feedback Coding
+ with long-term predictive noise feedback coding embedded
+ inside the short-term predictive noise feedback coding loop.
+
+ Note that the Noise Feedback Coding of the excitation signal is implemented
+ using the Zero-State Responsse and Zero-input Response decomposition as
+ described in: J.-H. Chen, "Novel Codec Structures for Noise Feedback
+ Coding of Speech," Proc. ICASSP, 2006.
+******************************************************************************/
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bvcommon.h"
+#include "bv32externs.h"
+
+void bv32_excquan(Float *qv, /* output quantized excitation signal vector */
+ int16_t *idx, /* quantizer codebook index for uq[] vector */
+ Float *d, /* input prediction residual signal vector */
+ Float *h, /* noise feedback filter coefficient array */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ Float beta, /* coefficient of 1-tap LT noise feedback filter */
+ Float *ltsym, /* long-term synthesis filter memory */
+ Float *ltnfm, /* long-term noise feedback filter memory */
+ Float *stnfm, /* short-term noise feedback filter memory */
+ Float *cb, /* scalar quantizer codebook */
+ int pp) /* pitch period (# of 8 kHz samples) */
+{
+ Float qzir[VDIM];
+ Float zbuf[VDIM];
+ Float buf[LPCO + SFRSZ]; /* buffer for filter memory & signal */
+ Float a0;
+ Float a1;
+ Float *fp1;
+ Float *fp2;
+ Float *fp3;
+ Float *fp4;
+ Float sign = 1.0;
+ Float ltfv[VDIM];
+ Float ppv[VDIM];
+ Float qzsr[VDIM*CBSZ];
+ int i;
+ int j;
+ int m;
+ int n;
+ int jmin;
+ int iv;
+ Float E;
+ Float Emin;
+ Float e;
+
+ /* COPY FILTER MEMORY TO BEGINNING PART OF TEMPORARY BUFFER */
+ fp1 = &stnfm[LPCO - 1];
+ for (i = 0; i < LPCO; i++)
+ buf[i] = *fp1--; /* this buffer is used to avoid memory shifts */
+
+ /* COMPUTE CODEBOOK ZERO-STATE RESPONSE */
+ fp2 = cb;
+ fp3 = qzsr;
+ for (j = 0; j < CBSZ; j++)
+ {
+ *fp3 = *fp2++;        /* no multiply-add needed for 1st ZSR vector element*/
+ for (n = 1; n < VDIM; n++) /* loop from 2nd to last vector element */
+ {
+ /* PERFORM MULTIPLY-ADDS ALONG THE DELAY LINE OF FILTER */
+ fp1 = &h[n];
+ fp4 = fp3; /* fp4 --> first element of current ZSR vector */
+ a0 = *fp2++; /* initialize a0 to codebook element */
+ for (i = 0; i < n; i++)
+ a0 -= *fp4++ * *fp1--;
+ *fp4 = a0; /* update short-term noise feedback filter memory */
+ }
+ fp3 += VDIM; /* fp3 --> 1st element of next ZSR vector */
+ }
+
+ /* LOOP THROUGH EVERY VECTOR OF THE CURRENT SUBFRAME */
+ iv = 0; /* iv = index of the current vector */
+ for (m = 0; m < SFRSZ; m += VDIM)
+ {
+ /* COMPUTE PITCH-PREDICTED VECTOR, WHICH SHOULD BE INDEPENDENT OF THE
+ RESIDUAL VQ CODEVECTORS BEING TRIED IF VDIM < MIN. PITCH PERIOD */
+ fp2 = ltfv;
+ fp3 = ppv;
+ for (n = m; n < m + VDIM; n++)
+ {
+ fp1 = &ltsym[MAXPP1 + n - pp + 1];
+ a1 = b[0] * *fp1--;
+ a1 += b[1] * *fp1--;
+ a1 += b[2] * *fp1--;/* a1=pitch predicted vector of LT syn filt */
+ *fp3++ = a1; /* write result to ppv[] vector */
+
+ *fp2++ = a1 + beta*ltnfm[MAXPP1 + n - pp];
+ }
+
+ /* COMPUTE ZERO-INPUT RESPONSE */
+ fp2 = ppv;
+ fp4 = ltfv;
+ fp3 = qzir;
+ for (n = m; n < m + VDIM; n++)
+ {
+ /* PERFORM MULTIPLY-ADDS ALONG THE DELAY LINE OF FILTER */
+ fp1 = &buf[n];
+ a0 = d[n];
+ for (i = LPCO; i > 0; i--)
+ a0 -= *fp1++ * h[i];
+
+ /* a0 NOW CONTAINS v[n]; SUBTRACT THE SUM OF THE TWO LONG_TERM
+ FILTERS TO GET THE ZERO-INPUT RESPONSE */
+ *fp3++ = a0 - *fp4++; /* q[n] = u[n] during ZIR computation */
+
+ /* UPDATE SHORT-TERM NOISE FEEDBACK FILTER MEMORY */
+ a0 -= *fp2++; /* a0 now contains qs[n] */
+ *fp1 = a0; /* update short-term noise feedback filter memory */
+ }
+
+ /* LOOP THROUGH EVERY CODEVECTOR OF THE RESIDUAL VQ CODEBOOK */
+ /* AND FIND THE ONE THAT MINIMIZES THE ENERGY OF q[n] */
+
+ Emin = 1.0e30;
+ fp4 = qzsr;
+ jmin = 0;
+ for (j = 0; j < CBSZ; j++)
+ {
+ /* Try positive sign */
+ fp2 = qzir;
+ E = 0.0;
+ for (n = 0; n < VDIM; n++)
+ {
+ e = *fp2++ - *fp4++; // sign impacted by negated ZSR
+ E += e*e;
+ }
+ if (E < Emin)
+ {
+ jmin = j;
+ Emin = E;
+ sign = +1.0F;
+ }
+ /* Try negative sign */
+ fp4 -= VDIM;
+ fp2 = qzir;
+ E = 0.0;
+ for (n = 0; n < VDIM; n++)
+ {
+ e = *fp2++ + *fp4++; // sign impacted by negated ZSR
+ E += e*e;
+ }
+ if (E < Emin)
+ {
+ jmin = j;
+ Emin = E;
+ sign = -1.0F;
+ }
+ }
+
+ /* THE BEST CODEVECTOR HAS BEEN FOUND; ASSIGN VQ CODEBOOK INDEX */
+ if (sign == 1.0F)
+ idx[iv++] = jmin;
+ else
+ idx[iv++] = jmin + CBSZ; /* MSB of index is sign bit */
+
+ /* BORROW zbuf[] TO STORE FINAL VQ OUTPUT VECTOR WITH CORRECT SIGN */
+ fp3 = &cb[jmin*VDIM]; /* fp3 points to start of best codevector */
+ for (n = 0; n < VDIM; n++)
+ zbuf[n] = sign * *fp3++;
+
+ /* UPDATE FILTER MEMORY */
+ fp2 = ppv; /* fp2 points to start of pitch-predicted vector */
+ fp3 = zbuf; /* fp3 points to start of final VQ output vector */
+ fp4 = ltfv; /* fp4 points to long-term filtered vector */
+
+ /* LOOP THROUGH EVERY ELEMENT OF THE CURRENT VECTOR */
+ for (n = m; n < m + VDIM; n++)
+ {
+ /* PERFORM MULTIPLY-ADDS ALONG THE DELAY LINE OF FILTER */
+ fp1 = &buf[n];
+ a0 = d[n];
+ for (i = LPCO; i > 0; i--)
+ a0 -= *fp1++ * h[i];
+
+ /* COMPUTE VQ INPUT SIGNAL u[n] */
+ a1 = a0 - *fp4++; /* a1 now contains u[n] */
+
+ /* COMPUTE VQ ERROR q[n] */
+ a1 -= *fp3; /* a1 now contains VQ quantization error q[n] */
+
+ /* UPDATE LONG-TERM NOISE FEEDBACK FILTER MEMORY */
+ ltnfm[MAXPP1 + n] = a1;
+
+ /* CALCULATE QUANTIZED LPC EXCITATION VECTOR qv[n] */
+ qv[n] = (*fp3++ + *fp2++);
+
+ /* UPDATE LONG-TERM PREDICTOR MEMORY */
+ ltsym[MAXPP1 + n] = qv[n];
+
+ /* COMPUTE ERROR BETWEEN v[n] AND qv[n] */
+ a0 -= qv[n]; /* a0 now contains u[n] - qv[n] = qs[n] */
+
+ /* UPDATE SHORT-TERM NOISE FEEDBACK FILTER MEMORY */
+ *fp1 = a0;
+ }
+ }
+
+ /* UPDATE NOISE FEEDBACK FILTER MEMORY AFTER FILTERING CURRENT SUBFRAME */
+ for (i = 0; i < LPCO; i++)
+ stnfm[i] = *fp1--;
+
+ /* UPDATE LONG-TERM PREDICTOR MEMORY AFTER PROCESSING CURRENT SUBFRAME */
+ fp2 = &ltnfm[SFRSZ];
+ fp3 = &ltsym[SFRSZ];
+ for (i = 0; i < MAXPP1; i++)
+ {
+ ltnfm[i] = fp2[i];
+ ltsym[i] = fp3[i];
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32externsh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32externs.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32externs.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32externs.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,144 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32externs.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32externs.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bvcommon.h"
+
+/* Pointers */
+extern const Float bv32_winl[];
+extern const Float bv32_sstwin[];
+extern const int bv32_idxord[];
+extern const Float bv32_hpfa[];
+extern const Float bv32_hpfb[];
+extern const Float bv32_adf[];
+extern const Float bv32_bdf[];
+extern const Float bv32_x[];
+extern const Float bv32_x2[];
+extern Float bv32_invk[];
+extern const Float bv32_MPTH[];
+
+
+/* LSP Quantization */
+extern const Float bv32_lspecb1[LSPECBSZ1*LPCO];
+extern const Float bv32_lspecb21[LSPECBSZ21*SVD1];
+extern const Float bv32_lspecb22[LSPECBSZ22*SVD2];
+extern const Float bv32_lspmean[LPCO];
+extern const Float bv32_lspp[LSPPORDER*LPCO];
+
+/* Pitch Predictor Codebook */
+extern const Float bv32_pp9cb[];
+
+/* Log-Gain Quantization */
+extern const Float bv32_lgpecb[LGPECBSZ];
+extern const Float bv32_lgp[LGPORDER];
+extern const Float bv32_lgmean;
+
+/* Log-Gain Limitation */
+extern const Float bv32_lgclimit[];
+
+/* Excitation Codebook */
+extern const Float bv32_cccb[CBSZ*VDIM];
+
+extern const Float bv32_lgpecb_nh[];
+extern const Float bv32_a_pre[];
+extern const Float bv32_b_pre[];
+
+/* Function Prototypes */
+
+extern Float bv32_estlevel(Float lg,
+ Float *level,
+ Float *lmax,
+ Float *lmin,
+ Float *lmean,
+ Float *x1);
+
+extern void bv32_excdec_w_LT_synth(Float *ltsymd, /* long-term synthesis filter memory at decoder*/
+ int16_t *idx, /* excitation codebook index array for current subframe */
+ Float *gainq, /* quantized linear gains for sub-subframes */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ int16_t pp, /* pitch period (# of 8 kHz samples) */
+ Float *EE);
+
+extern Float bv32_gaindec(Float *lgq,
+ int16_t gidx,
+ Float *lgpm,
+ Float *prevlg,
+ Float level,
+ int16_t *nclglim,
+ int16_t lctimer);
+
+extern void bv32_gainplc(Float E,
+ Float *lgeqm,
+ Float *lgqm);
+
+extern void bv32_lspdec(Float *lspq,
+ int16_t *lspidx,
+ Float *lsppm,
+ Float *lspq_last);
+
+extern void bv32_lspplc(Float *lspq,
+ Float *lsppm);
+
+extern int bv32_coarsepitch(Float *xw,
+ Float *xwd,
+ Float *dfm,
+ int cpplast);
+
+
+extern int bv32_refinepitch(Float *x,
+ int cpp,
+ Float *ppt);
+
+extern int bv32_pitchtapquan(Float *x,
+ int pp,
+ Float *b);
+
+extern void bv32_excquan(
+ Float *qv, /* output quantized excitation signal vector */
+ int16_t *idx, /* quantizer codebook index for uq[] vector */
+ Float *d, /* input prediction residual signal vector */
+ Float *h, /* noise feedback filter coefficient array */
+ Float *b, /* coefficient of 3-tap pitch predictor */
+ Float beta, /* coefficient of weighted 3-tap pitch predictor */
+ Float *ltsym, /* long-term synthesis filter memory */
+ Float *ltnfm, /* long-term noise feedback filter memory */
+ Float *stnfm, /* short-term noise feedback filter memory */
+ Float *cb, /* scalar quantizer codebook */
+ int pp); /* pitch period (# of 8 kHz samples) */
+
+extern int bv32_gainquan(Float *gainq,
+ Float lg,
+ Float *lgpm,
+ Float *prevlg,
+ Float level);
+
+extern void bv32_lspquan(Float *lspq,
+ int16_t *lspidx,
+ Float *lsp,
+ Float *lsppm);
+
+extern void bv32_pp3dec(int16_t idx, Float *b);
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32fine_pitchc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32fine_pitch.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32fine_pitch.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32fine_pitch.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,112 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * fineptch.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32fine_pitch.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bv32externs.h"
+
+#define FS (XOFF + 1) /* Frame Starting index */
+#define FE (XOFF + FRSZ) /* Frame Ending index */
+#define DEV        6
+
+int bv32_refinepitch(Float *x, int cpp, Float *ppt)
+{
+ Float cor;
+ Float cor2;
+ Float energy;
+ Float cormax;
+ Float cor2max;
+ Float energymax;
+ Float *fp0;
+ Float *fp1;
+ Float *fp2;
+ Float *fp3;
+ int        lb;
+ int ub;
+ int pp;
+ int i;
+ int j;
+
+ if (cpp >= MAXPP)
+ cpp = MAXPP - 1;
+ if (cpp < MINPP)
+ cpp = MINPP;
+ lb = cpp - DEV;
+ if (lb < MINPP)
+ lb = MINPP; /* lower bound of pitch period search range */
+ ub = cpp + DEV;
+ /* to avoid selecting MAXPP as the refined pitch period */
+ if (ub >= MAXPP)
+ ub = MAXPP - 1; /* lower bound of pitch period search range */
+
+ i = lb;                                /* start the search from lower bound         */
+
+ fp0 = x + FS - 1;
+ fp1 = x + FS - 1 - i;
+ cor = energy = 0.0;
+ for (j = 0; j < (FE - FS + 1); j++)
+ {
+ energy += (*fp1) * (*fp1);
+ cor += (*fp0++) * (*fp1++);
+ }
+
+ pp = i;
+ cormax = cor;
+ cor2max = cor*cor;
+ energymax = energy;
+
+ fp0 = x + FE - lb - 1;
+ fp1 = x + FS - lb - 2;
+ for (i = lb + 1; i <= ub; i++)
+ {
+ fp2 = x + FS - 1;
+ fp3 = x + FS - i - 1;
+ cor = 0.;
+ for (j = 0; j < (FE - FS + 1); j++)
+ cor += (*fp2++)*(*fp3++);
+ cor2 = cor*cor;
+ energy += ((*fp1)*(*fp1) - (*fp0)*(*fp0));
+ fp0--;
+ fp1--;
+ if ((cor2*energymax) > (cor2max*energy))
+ {
+ pp = i;
+ cormax = cor;
+ cor2max = cor2;
+ energymax = energy;
+ }
+ }
+
+ *ppt = (energymax != 0) ? (cormax/energymax) : 0.0;
+
+ return pp;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32gaindecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gaindec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gaindec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gaindec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,145 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * lspquan.c - Quantize LSPs.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32gaindec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+
+#include "typedef.h"
+#include "bv32externs.h"
+
+Float bv32_gaindec(Float *lgq,
+ int16_t gidx,
+ Float *lgpm,
+ Float *prevlg, /* previous log gains (last two frames) */
+ Float level, /* input level estimate */
+ int16_t *nclglim,
+ int16_t lctimer)
+{
+ Float gainq;
+ Float elg;
+ Float lgc;
+ Float lgq_nh;
+ int i;
+ int n;
+ int k;
+
+ /* CALCULATE ESTIMATED LOG-GAIN (WITH MEAN VALUE OF LOG GAIN RESTORED) */
+ elg = bv32_lgmean;
+ for (i = 0; i < LGPORDER; i++)
+ elg += bv32_lgp[i]*lgpm[i];
+
+ /* CALCULATE DECODED LOG-GAIN */
+ *lgq = bv32_lgpecb[gidx] + elg;
+
+ /* next higher gain */
+ if (gidx < LGPECBSZ - 1)
+ {
+ lgq_nh = bv32_lgpecb_nh[gidx] + elg;
+ if (*lgq < MinE && fabs(lgq_nh-MinE) < fabs(*lgq-MinE))
+ {
+ /* To avoid thresholding when the enc Q makes it below the threshold */
+ *lgq = MinE;
+ }
+ }
+
+ /* LOOK UP FROM lgclimit() TABLE THE MAXIMUM LOG GAIN CHANGE ALLOWED */
+ i = (int) ((prevlg[0] - level - LGLB) * 0.5F); /* get column index */
+ if (i >= NGB)
+ i = NGB - 1;
+ else if (i < 0)
+ i = 0;
+ n = (int) ((prevlg[0] - prevlg[1] - GCLB) * 0.5F); /* get row index */
+ if (n >= NGCB)
+ n = NGCB - 1;
+ else if (n < 0)
+ n = 0;
+ i = i * NGCB + n;
+
+ /* UPDATE LOG-GAIN PREDICTOR MEMORY, CHECK WHETHER DECODED LOG-GAIN EXCEEDS LGCLIMIT */
+ for (k = LGPORDER - 1; k > 0; k--)
+ lgpm[k] = lgpm[k-1];
+ lgc = *lgq - prevlg[0];
+ if (lgc > bv32_lgclimit[i] && gidx > 0 && lctimer == 0) /* if decoded log-gain exceeds limit */
+ {
+ *lgq = prevlg[0]; /* use the log-gain of previous frame */
+ lgpm[0] = *lgq - elg;
+ *nclglim = *nclglim + 1;
+ if (*nclglim > NCLGLIM_TRAPPED)
+ *nclglim = NCLGLIM_TRAPPED;
+ }
+ else
+ {
+ lgpm[0] = bv32_lgpecb[gidx];
+ *nclglim = 0;
+ }
+
+ /* UPDATE PREVIOUS LOG-GAINS */
+ prevlg[1] = prevlg[0];
+ prevlg[0] = *lgq;
+
+ /* CONVERT QUANTIZED LOG-GAIN TO LINEAR DOMAIN */
+ gainq = pow(2.0F, 0.5F * *lgq);
+
+ return gainq;
+}
+
+void bv32_gainplc(Float E,
+ Float *lgeqm,
+ Float *lgqm)
+{
+ int k;
+ Float pe, lg, mrlg, elg, lge;
+
+ pe = INVSFRSZ * E;
+
+ if (pe - TMinlg > 0.0)
+ lg = log(pe)/log(2.0);
+ else
+ lg = Minlg;
+
+ mrlg = lg - bv32_lgmean;
+
+ elg = 0.0;
+ for (k = 0; k < GPO; k++)
+ elg += bv32_lgp[k]*lgeqm[k];
+
+ /* predicted log-gain error */
+ lge = mrlg - elg;
+
+ /* update quantizer memory */
+ for (k = GPO - 1; k > 0; k--)
+ lgeqm[k] = lgeqm[k-1];
+ lgeqm[0] = lge;
+
+ /* update quantized log-gain memory */
+ lgqm[1] = lgqm[0];
+ lgqm[0] = lg;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32gainquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gainquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gainquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32gainquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,116 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * gainquan.c - Quantize gains.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32gainquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+#include "typedef.h"
+#include "bv32externs.h"
+
+int bv32_gainquan(Float *gainq,
+ Float lg,
+ Float *lgpm,
+ Float *prevlg, /* previous log gains (last two frames) */
+ Float level) /* input level estimate */
+{
+ Float elg;
+ Float lgpe;
+ Float limit;
+ Float dmin;
+ Float d;
+ int i;
+ int n;
+ int gidx = 0;
+ const int *p_gidx;
+
+ /* CALCULATE ESTIMATED LOG-GAIN */
+ elg = bv32_lgmean;
+ for (i = 0; i < LGPORDER; i++)
+ elg += bv32_lgp[i]*lgpm[i];
+
+ /* SUBTRACT LOG-GAIN MEAN & ESTIMATED LOG-GAIN TO GET PREDICTION ERROR */
+ lgpe = lg - elg;
+
+ /* SCALAR QUANTIZATION OF LOG-GAIN PREDICTION ERROR */
+ dmin = 1e30;
+ p_gidx = bv32_idxord;
+ for (i = 0; i < LGPECBSZ; i++)
+ {
+ d = lgpe - bv32_lgpecb[*p_gidx++];
+ if (d < 0.0F)
+ {
+ d = -d;
+ }
+ if (d < dmin)
+ {
+ dmin = d;
+ /* index into ordered codebook */
+ gidx=i;
+ }
+ }
+
+ /* CALCULATE QUANTIZED LOG-GAIN */
+ *gainq = bv32_lgpecb[bv32_idxord[gidx]] + elg;
+
+ /* LOOK UP FROM lgclimit() TABLE THE MAXIMUM LOG GAIN CHANGE ALLOWED */
+ i = (int) ((prevlg[0] - level - LGLB) * 0.5F); /* get column index */
+ if (i >= NGB)
+ i = NGB - 1;
+ else if (i < 0)
+ i = 0;
+ n = (int) ((prevlg[0] - prevlg[1] - GCLB) * 0.5F); /* get row index */
+ if (n >= NGCB)
+ n = NGCB - 1;
+ else if (n < 0)
+ n = 0;
+ i = i*NGCB + n;
+
+ /* CHECK WHETHER QUANTIZED LOG-GAIN CAUSE A GAIN CHANGE > LGCLIMIT */
+ limit = prevlg[0] + bv32_lgclimit[i];/* limit that log-gain shouldn't exceed */
+ while (*gainq > limit && gidx > 0) /* if quantized gain exceeds limit */
+ {
+ gidx -= 1; /* decrement gain quantizer index by 1 */
+ *gainq = bv32_lgpecb[bv32_idxord[gidx]] + elg; /* use next quantizer output*/
+ }
+ /* get true codebook index */
+ gidx = bv32_idxord[gidx];
+
+ /* UPDATE LOG-GAIN PREDICTOR MEMORY */
+ prevlg[1] = prevlg[0];
+ prevlg[0] = *gainq;
+ for (i = LGPORDER - 1; i > 0; i--)
+ lgpm[i] = lgpm[i - 1];
+ lgpm[0] = bv32_lgpecb[gidx];
+
+ /* CONVERT QUANTIZED LOG-GAIN TO LINEAR DOMAIN */
+ *gainq = pow(2.0F, 0.5F * *gainq);
+
+ return gidx;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32levelestc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32levelest.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32levelest.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32levelest.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * levelest.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32levelest.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bv32externs.h"
+
+Float bv32_estlevel(Float lg,
+ Float *level,
+ Float *lmax,
+ Float *lmin,
+ Float *lmean,
+ Float *x1)
+{
+ Float lth;
+
+ /* UPDATE THE NEW MAXIMUM, MINIMUM, & MEAN OF LOG-GAIN */
+ if (lg > *lmax)
+ *lmax = lg;        /* use new log-gain as max if it is > max */
+ else
+ *lmax = *lmean + estl_alpha*(*lmax - *lmean); /* o.w. attenuate toward lmean */
+ if (lg < *lmin)
+ *lmin=lg;        /* use new log-gain as min if it is < min */
+ else
+ *lmin = *lmean + estl_alpha*(*lmin - *lmean); /* o.w. attenuate toward lmean */
+ *lmean = estl_beta*(*lmean) + estl_beta1*(0.5*(*lmax + *lmin));
+
+ /* UPDATE ESTIMATED INPUT LEVEL, BY CALCULATING A RUNNING AVERAGE
+ (USING AN EXPONENTIAL WINDOW) OF LOG-GAINS EXCEEDING lmean */
+ lth = *lmean + estl_TH*(*lmax - *lmean);
+ if (lg > lth)
+ {
+ *x1 = estl_a*(*x1) + estl_a1*lg;
+ *level = estl_a*(*level) + estl_a1*(*x1);
+ }
+
+ return lth;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32lspdecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspdec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspdec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspdec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,166 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32lspdec.c - Decode LSPs.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32lspdec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include "typedef.h"
+#include "bv32externs.h"
+#include "bvcommon.h"
+
+static void vqdec(Float *, int16_t, const Float *, int);
+
+void bv32_lspdec(Float *lspq,
+ int16_t *lspidx,
+ Float *lsppm,
+ Float *lspq_last)
+{
+ Float elsp[LPCO];
+ Float lspe[LPCO];
+ Float lspeq1[LPCO];
+ Float lspeq2[LPCO];
+ Float a0;
+ const Float *fp1;
+ Float *fp2;
+ Float *fp3;
+ int i;
+ int k;
+ int lsfdordr;
+
+ /* CALCULATE ESTIMATED (MA-PREDICTED) LSP VECTOR */
+ fp1 = bv32_lspp;
+ fp2 = lsppm;
+ for (i = 0; i < LPCO; i++)
+ {
+ a0 = 0.0F;
+ for (k = 0; k < LSPPORDER; k++)
+ a0 += *fp1++ * *fp2++;
+ elsp[i] = a0;
+ }
+
+ /* PERFORM FIRST-STAGE VQ CODEBOOK DECODE */
+ vqdec(lspeq1, lspidx[0], bv32_lspecb1, LPCO);
+
+ /* PERFORM SECOND-STAGE VQ CODEBOOK DECODE */
+ vqdec(lspeq2, lspidx[1], bv32_lspecb21, SVD1);
+ vqdec(lspeq2 + SVD1, lspidx[2], bv32_lspecb22, SVD2);
+
+ /* GET OVERALL QUANTIZER OUTPUT VECTOR OF THE TWO-STAGE VQ */
+ /* AND CALCULATE QUANTIZED LSP */
+ for (i = 0; i < LPCO; i++)
+ {
+ lspe[i] = lspeq1[i] + lspeq2[i];
+ lspq[i] = lspe[i] + elsp[i] + bv32_lspmean[i];
+ }
+
+ /* detect bit-errors based on ordering property */
+ if (lspq[0] < 0.0)
+ lsfdordr = 1;
+ else
+ lsfdordr = 0;
+ for (i = 1; i < SVD1; i++)
+ {
+ if (lspq[i] - lspq[i-1] < 0.0)
+ lsfdordr = 1;
+ }
+
+ /* substitute LSP and MA predictor update if bit-error detected */
+ if (lsfdordr)
+ {
+ for (i = 0; i < LPCO; i++)
+ {
+ lspq[i] = lspq_last[i];
+ lspe[i] = lspq[i] - elsp[i] - bv32_lspmean[i];
+ }
+ }
+
+ /* UPDATE LSP MA PREDICTOR MEMORY */
+ i = LPCO * LSPPORDER - 1;
+ fp3 = &lsppm[i];
+ fp2 = &lsppm[i - 1];
+ for (i = LPCO - 1; i >= 0; i--)
+ {
+ for (k = LSPPORDER; k > 1; k--)
+ *fp3-- = *fp2--;
+ *fp3-- = lspe[i];
+ fp2--;
+ }
+
+ /* ENSURE CORRECT ORDERING & MINIMUM SPACING TO GUARANTEE STABILITY */
+ stblz_lsp(lspq, LPCO);
+}
+
+static void vqdec(Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t idx, /* VQ codebook index for the nearest neighbor */
+ const Float *cb, /* VQ codebook */
+ int vdim) /* vector dimension */
+{
+ int j;
+ int k;
+
+ j = idx * vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = cb[j + k];
+}
+
+
+void bv32_lspplc(Float *lspq,
+ Float *lsppm)
+{
+ Float elsp[LPCO];
+ Float a0;
+ const Float *fp1;
+ Float *fp2;
+ Float *fp3;
+ int i, k;
+
+ /* CALCULATE ESTIMATED (MA-PREDICTED) LSP VECTOR */
+ fp1 = bv32_lspp;
+ fp2 = lsppm;
+ for (i = 0; i < LPCO; i++)
+ {
+ a0 = 0.0F;
+ for (k = 0; k < LSPPORDER; k++)
+ a0 += *fp1++ * *fp2++;
+ elsp[i] = a0;
+ }
+
+ /* UPDATE LSP MA PREDICTOR MEMORY */
+ i = LPCO * LSPPORDER - 1;
+ fp3 = &lsppm[i];
+ fp2 = &lsppm[i - 1];
+ for (i = LPCO - 1; i >= 0; i--)
+ {
+ for (k = LSPPORDER; k > 1; k--)
+ *fp3-- = *fp2--;
+ *fp3-- = lspq[i] - bv32_lspmean[i] - elsp[i];
+ fp2--;
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32lspquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32lspquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,266 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * lspquan.c - Quantize LSPs.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32lspquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include "typedef.h"
+#include "bv32externs.h"
+#include "bvcommon.h"
+
+static void vqmse(Float *xq, int16_t *idx, Float *x, const Float *cb, int vdim, int cbsz);
+static void vqwmse_stbl(Float *xq, int16_t *idx, Float *x, Float *w, Float *xa,
+ const Float *cb, int vdim, int cbsz);
+static void vqwmse(Float *xq, int16_t *idx, Float *x, Float *w, const Float *cb, int vdim,
+ int cbsz);
+
+void bv32_lspquan(Float *lspq,
+ int16_t *lspidx,
+ Float *lsp,
+ Float *lsppm)
+{
+ Float d[LPCO];
+ Float w[LPCO];
+ Float elsp[LPCO];
+ Float lspe[LPCO];
+ Float lspeq1[LPCO];
+ Float lspeq2[LPCO];
+ Float lspa[LPCO];
+ Float a0;
+ const Float *fp1;
+ Float *fp2;
+ Float *fp3;
+ int i;
+ int k;
+
+ /* CALCULATE THE WEIGHTS FOR WEIGHTED MEAN-SQUARE ERROR DISTORTION */
+ for (i = 0; i < LPCO - 1; i++)
+ d[i] = lsp[i + 1] - lsp[i]; /* LSP difference vector */
+ w[0] = 1.0F / d[0];
+ for (i = 1; i < LPCO - 1; i++)
+ {
+ if (d[i] < d[i - 1])
+ w[i] = 1.0F/d[i];
+ else
+ w[i] = 1.0F/d[i - 1];
+ }
+ w[LPCO - 1] = 1.0F/d[LPCO - 2];
+
+ /* CALCULATE ESTIMATED (MA-PREDICTED) LSP VECTOR */
+ fp1 = bv32_lspp;
+ fp2 = lsppm;
+ for (i = 0; i < LPCO; i++)
+ {
+ a0 = 0.0F;
+ for (k = 0; k < LSPPORDER; k++)
+ a0 += *fp1++ * *fp2++;
+ elsp[i] = a0;
+ }
+
+ /* SUBTRACT LSP MEAN VALUE & ESTIMATED LSP TO GET PREDICTION ERROR */
+ for (i = 0; i < LPCO; i++)
+ lspe[i] = lsp[i] - bv32_lspmean[i] - elsp[i];
+
+ /* PERFORM FIRST-STAGE VQ CODEBOOK SEARCH, MSE VQ */
+ vqmse(lspeq1, &lspidx[0], lspe, bv32_lspecb1, LPCO, LSPECBSZ1);
+
+ /* CALCULATE QUANTIZATION ERROR VECTOR OF FIRST-STAGE VQ */
+ for (i = 0; i < LPCO; i++)
+ d[i] = lspe[i] - lspeq1[i];
+
+ /* PERFORM SECOND-STAGE VQ CODEBOOK SEARCH */
+ for (i = 0; i < SVD1; i++)
+ lspa[i] = bv32_lspmean[i] + elsp[i] + lspeq1[i];
+ vqwmse_stbl(lspeq2, &lspidx[1], d, w, lspa, bv32_lspecb21, SVD1, LSPECBSZ21);
+ vqwmse(&lspeq2[SVD1], &lspidx[2], &d[SVD1], &w[SVD1], bv32_lspecb22, SVD2, LSPECBSZ22);
+
+ /* GET OVERALL QUANTIZER OUTPUT VECTOR OF THE TWO-STAGE VQ */
+ for (i = 0; i < LPCO; i++)
+ lspe[i] = lspeq1[i] + lspeq2[i];
+
+ /* UPDATE LSP MA PREDICTOR MEMORY */
+ i = LPCO * LSPPORDER - 1;
+ fp3 = &lsppm[i];
+ fp2 = &lsppm[i - 1];
+ for (i = LPCO - 1; i >= 0; i--)
+ {
+ for (k = LSPPORDER; k > 1; k--)
+ *fp3-- = *fp2--;
+ *fp3-- = lspe[i];
+ fp2--;
+ }
+
+ /* CALCULATE QUANTIZED LSP */
+ for (i = 0; i < LPCO; i++)
+ lspq[i] = lspe[i] + elsp[i] + bv32_lspmean[i];
+
+ /* ENSURE CORRECT ORDERING & MINIMUM SPACING TO GUARANTEE STABILITY */
+ stblz_lsp(lspq, LPCO);
+}
+
+/* MSE VQ */
+static void vqmse(Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t *idx, /* VQ codebook index for the nearest neighbor */
+ Float *x, /* input vector */
+ const Float *cb, /* VQ codebook */
+ int vdim, /* vector dimension */
+ int cbsz) /* codebook size (number of codevectors) */
+{
+ const Float *fp1;
+ Float dmin;
+ Float d;
+ int j;
+ int k;
+ Float e;
+
+ fp1 = cb;
+ dmin = 1.0e30;
+ for (j = 0; j < cbsz; j++)
+ {
+ d = 0.0F;
+ for (k = 0; k < vdim; k++)
+ {
+ e = x[k] - (*fp1++);
+ d += e * e;
+ }
+ if (d < dmin)
+ {
+ dmin = d;
+ *idx = j;
+ }
+ }
+
+ j = *idx * vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = cb[j + k];
+}
+
+/* WMSE VQ with enforcement of ordering property */
+static void vqwmse_stbl(Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t *idx, /* VQ codebook index for the nearest neighbor */
+ Float *x, /* input vector */
+ Float *w, /* weights for weighted Mean-Square Error */
+ Float *xa, /* lsp approximation */
+ const Float *cb, /* VQ codebook */
+ int vdim, /* vector dimension */
+ int cbsz) /* codebook size (number of codevectors) */
+{
+ Float a0;
+ const Float *fp1;
+ const Float *fp2;
+ Float dmin;
+ Float d;
+ Float xqc[LPCO];
+ int j;
+ int k;
+ int stbl;
+
+ fp1 = cb;
+ dmin = 1.0e30;
+ *idx = -1;
+ for (j = 0; j < cbsz; j++)
+ {
+ /* Check stability */
+ fp2 = fp1;
+ xqc[0] = xa[0] + *fp2++;
+ stbl = (xqc[0] < 0.0) ? 0 : 1;
+ for (k = 1; k < vdim; k++)
+ {
+ xqc[k] = xa[k] + *fp2++;
+ if (xqc[k] - xqc[k-1] < 0.0)
+ stbl = 0;
+ }
+
+ /* Calculate distortion */
+ d = 0.0F;
+ for (k = 0; k < vdim; k++)
+ {
+ a0 = x[k] - *fp1++;
+ d += w[k] * a0 * a0;
+ }
+
+ if (stbl > 0)
+ {
+ if (d < dmin)
+ {
+ dmin = d;
+ *idx = j;
+ }
+ }
+ }
+
+ if (*idx == -1)
+ {
+ //printf("\nWARNING: Encoder-decoder synchronization lost for clean channel!!!\n");
+ *idx = 1;
+ }
+
+ fp1 = cb + (*idx)*vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = *fp1++;
+}
+
+/* MSE VQ */
+static void vqwmse(Float *xq, /* VQ output vector (quantized version of input vector) */
+ int16_t *idx, /* VQ codebook index for the nearest neighbor */
+ Float *x, /* input vector */
+ Float *w, /* weights for weighted Mean-Square Error */
+ const Float *cb, /* VQ codebook */
+ int vdim, /* vector dimension */
+ int cbsz) /* codebook size (number of codevectors) */
+{
+ Float a0;
+ const Float *fp1;
+ Float dmin;
+ Float d;
+ int j;
+ int k;
+
+ fp1 = cb;
+ dmin = 1.0e30;
+ for (j = 0; j < cbsz; j++)
+ {
+ d = 0.0F;
+ for (k = 0; k < vdim; k++)
+ {
+ a0 = x[k] - *fp1++;
+ d += w[k]*a0*a0;
+ }
+ if (d < dmin)
+ {
+ dmin = d;
+ *idx = j;
+ }
+ }
+
+ j = *idx * vdim;
+ for (k = 0; k < vdim; k++)
+ xq[k] = cb[j + k];
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32plcc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32plc.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32plc.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32plc.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,150 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * plc.c - Packet loss concealment.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32plc.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <math.h>
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "utility.h"
+#include "bvcommon.h"
+#include "bv32externs.h"
+#include "bv32strct.h"
+#include "broadvoice/broadvoice.h"
+
+BV_DECLARE(int) bv32_fillin(bv32_decode_state_t *ds, int16_t amp[], int len)
+{
+ int n;
+ int i_sf;
+ Float r[SFRSZ]; /* random excitation */
+ Float E;
+ Float gain;
+ Float tmp;
+ Float xq[SFRSZ];
+ Float d[LTMOFF + FRSZ];        /* long-term synthesis filter memory */
+
+ /************************************************************/
+ /* Copy decoder state memory */
+ /************************************************************/
+ Fcopy(d, ds->ltsym, LTMOFF); /* excitation */
+
+ /************************************************************/
+ /* Update counter of consecutive list frames */
+ /************************************************************/
+ if (ds->cfecount < HoldPLCG + AttnPLCG - 1)
+ ds->cfecount++;
+
+ /* loop over subframes */
+ for (i_sf = 0; i_sf < FECNSF; i_sf++)
+ {
+ /* Generate Unscaled Excitation */
+ E = 0.0;
+ for (n = 0; n < SFRSZ; n++)
+ {
+ ds->idum = 1664525L*ds->idum + 1013904223L;
+ r[n] = (Float)(ds->idum >> 16) - 32767.0;
+ E += r[n] * r[n];
+ }
+
+ /* Calculate Scaling */
+ ds->scplcg = ScPLCG_a + ScPLCG_b * ds->per;
+ if (ds->scplcg > ScPLCGmax)
+ ds->scplcg = ScPLCGmax;
+ else if (ds->scplcg < ScPLCGmin)
+ ds->scplcg = ScPLCGmin;
+ gain = ds->scplcg * sqrt(ds->E/E);
+
+ /* Long-term synthesis filter */
+ for (n = 0; n < SFRSZ; n++)
+ {
+ d[LTMOFF+i_sf*SFRSZ+n] = gain * r[n];
+ d[LTMOFF+i_sf*SFRSZ+n] += ds->bq_last[0] * d[LTMOFF+i_sf*SFRSZ+n-ds->pp_last+1];
+ d[LTMOFF+i_sf*SFRSZ+n] += ds->bq_last[1] * d[LTMOFF+i_sf*SFRSZ+n-ds->pp_last];
+ d[LTMOFF+i_sf*SFRSZ+n] += ds->bq_last[2] * d[LTMOFF+i_sf*SFRSZ+n-ds->pp_last-1];
+ }
+
+ /************************************************************/
+ /* Short-term synthesis filter */
+ /************************************************************/
+ apfilter(ds->atplc, LPCO, d+i_sf*SFRSZ+LTMOFF, xq, SFRSZ, ds->stsym, 1);
+
+ /**********************************************************/
+ /* De-emphasis filter */
+ /**********************************************************/
+ for (n = 0; n < SFRSZ; n++)
+ {
+ tmp = xq[n] + PEAPFC*ds->dezfm[0] - PEAZFC*ds->depfm[0];
+ ds->dezfm[0] = xq[n];
+ ds->depfm[0] = tmp;
+ if (tmp >= 0)
+ tmp += 0.5;
+ else tmp -= 0.5;
+
+ if (tmp > 32767.0)
+ tmp = 32767.0;
+ else if (tmp < -32768.0)
+ tmp = -32768.0;
+ amp[i_sf*SFRSZ + n] = (int16_t) tmp;
+ }
+
+ /************************************************************/
+ /* Update memory of predictive gain quantizer */
+ /************************************************************/
+ bv32_gainplc(ds->E, ds->lgpm, ds->prevlg);
+
+ /* Estimate the signal level */
+ bv32_estlevel(ds->prevlg[0], &ds->level, &ds->lmax, &ds->lmin, &ds->lmean, &ds->x1);
+ }
+
+ /************************************************************/
+ /* Save decoder state memory */
+ /************************************************************/
+ Fcopy(ds->ltsym, d + FRSZ, LTMOFF);
+
+ /************************************************************/
+ /* Update memory of predictive LSP quantizer */
+ /************************************************************/
+ bv32_lspplc(ds->lsplast,ds->lsppm);
+
+ /************************************************************/
+ /* Attenuation during long packet losses */
+ /************************************************************/
+ if (ds->cfecount >= HoldPLCG)
+ {
+ gain = 1.0 - AttnFacPLCG*(Float) (ds->cfecount - (HoldPLCG - 1));
+ ds->bq_last[0] = gain*ds->bq_last[0];
+ ds->bq_last[1] = gain*ds->bq_last[1];
+ ds->bq_last[2] = gain*ds->bq_last[2];
+ ds->E = gain*gain*ds->E;
+ }
+ return FRSZ;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32ptdecc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptdec.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptdec.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptdec.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32ptdec.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32ptdec.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv32externs.h"
+
+void bv32_pp3dec(int16_t idx, Float *b)
+{
+ const Float *fp;
+ int        i;
+
+ fp = bv32_pp9cb + idx*9;
+ for (i = 0; i < 3; i++)
+ b[i] = fp[i]*0.5;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32ptquanc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptquan.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptquan.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32ptquan.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,124 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * ptquan.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32ptquan.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bvcommon.h"
+#include "bv32externs.h"
+
+int bv32_pitchtapquan(Float *x,
+ int pp,
+ Float *b)
+{
+ Float p[9];
+ Float t;
+ Float s0;
+ Float s1;
+ Float s2;
+ Float cormax;
+ Float cor;
+ Float t0;
+ Float t1;
+ Float t2;
+ Float *xt;
+ const Float *fp0;
+ Float *fp1;
+ const Float *fp2;
+ int        ppm2;
+ int qidx = 0;
+ int i;
+ int j;
+
+ ppm2 = pp - 2;
+ xt = x + XOFF;
+
+ for (i = 0; i < 3; i++)
+ {
+ fp0 = xt;
+ fp1 = x + XOFF - ppm2 - i - 1;
+ t = 0;
+ for (j = 0; j < FRSZ; j++)
+ t += (*fp0++) * (*fp1++);
+ p[i] = t;
+ }
+
+ fp0 = x + XOFF - ppm2 - 3;
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ t0 = p[8] = s0*s0;
+ t1 = p[4] = s0*s1;
+ p[5] = s0*s2;
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ t2 = s0*s0;
+ p[8] += t2;
+ p[4] += s0*s1;
+ p[5] += s0*s2;
+ for (i = 0; i < (FRSZ - 2); i++)
+ {
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ p[8] += s0*s0;
+ p[4] += s0*s1;
+ p[5] += s0*s2;
+ }
+ s0 = *fp0++;
+ s1 = *fp0++;
+ s2 = *fp0--;
+ p[7] = p[8] + (s0*s0) - t0;
+ p[3] = p[4] + (s0*s1) - t1;
+ p[6] = p[7] + (s1*s1) - t2;
+
+ cormax = -1.0e30;
+ fp0 = bv32_pp9cb;
+ for (i = 0; i < PPCBSZ; i++)
+ {
+ cor = 0.0;
+ fp1 = p;
+ for (j = 0; j < 9; j++)
+ cor += (*fp0++)*(*fp1++);
+ if (cor > cormax)
+ {
+ cormax = cor;
+ qidx = i;
+ }
+ }
+
+ fp2 = bv32_pp9cb + qidx*9;
+ for (i = 0; i < 3; i++)
+ b[i] = fp2[i]*0.5;
+
+ return qidx;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32strcth"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32strct.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32strct.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32strct.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,98 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32strct.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32strct.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bvcommon.h"
+
+#if !defined(_BV32STRCT_H_)
+#define _BV32STRCT_H_
+
+struct bv32_decode_state_s
+{
+ Float stsym[LPCO];
+ Float ltsym[LTMOFF];
+ Float lsppm[LPCO*LSPPORDER];
+ Float lgpm[LGPORDER];
+ Float lsplast[LPCO];
+ Float dezfm[PFO];
+ Float depfm[PFO];
+ int16_t cfecount;
+ uint32_t idum;
+ Float E;
+ Float scplcg;
+ Float per;
+ Float atplc[LPCO + 1];
+ int16_t pp_last;
+ Float prevlg[2];
+ Float lgq_last;
+ Float bq_last[3];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int16_t nclglim;
+ int16_t lctimer;
+};
+
+struct bv32_encode_state_s
+{
+ Float x[XOFF];
+ Float xwd[XDOFF]; /* memory of DECF:1 decimated version of xw() */
+ Float dq[XOFF]; /* quantized short-term pred error */
+ Float dfm[DFO]; /* decimated xwd() filter memory */
+ Float stpem[LPCO]; /* ST Pred. Error filter memory, low-band */
+ Float stwpm[LPCO]; /* ST Weighting all-Pole Memory, low-band */
+ Float stnfm[LPCO]; /* ST Noise Feedback filter Memory, Lowband */
+ Float stsym[LPCO]; /* ST Synthesis filter Memory, Lowband */
+ Float ltsym[MAXPP1 + FRSZ]; /* long-term synthesis filter memory */
+ Float ltnfm[MAXPP1 + FRSZ]; /* long-term noise feedback filter memory */
+ Float lsplast[LPCO];
+ Float lsppm[LPCO*LSPPORDER]; /* LSP Predictor Memory */
+ Float lgpm[LGPORDER];
+ Float hpfzm[HPO];
+ Float hpfpm[HPO];
+ Float prevlg[2];
+ Float lmax; /* level-adaptation */
+ Float lmin;
+ Float lmean;
+ Float x1;
+ Float level;
+ int cpplast; /* pitch period pf the previous frame */
+ Float allast[LPCO + 1];
+};
+
+struct BV32_Bit_Stream
+{
+ int16_t lspidx[3];
+ int16_t ppidx;
+ int16_t bqidx;
+ int16_t gidx[2];
+ int16_t qvidx[NVPSF];
+};
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingbv32bv32tablesc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32tables.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32tables.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/bv32/bv32tables.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,744 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * tables.c - Constant data tables for the BroadVoice32 codec.
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32tables.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bv32cnst.h"
+#include "bv32externs.h"
+
+/* spec */
+/* log-gain change limitation */
+const Float bv32_lgclimit[] =
+{
+ 0.00000, 0.13477, 2.26563, 2.94336, 4.71875, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ 0.00000, 0.64453, 4.90039, 3.38281, 4.58203, 5.69336, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ 0.00000, 0.33594, 7.27734, 5.82422, 11.66211, 11.66211, 0.00000, 0.00000, 0.00000, 0.00000, 0.00000,
+ 6.31250, 5.50977, 4.83984, 6.99023, 8.22852, 11.49805, 1.89844, 0.00000, 0.00000, 0.00000, 0.00000,
+ 0.00000, 5.04883, 5.09180, 5.91406, 6.92188, 7.38086, 4.13867, 0.00000, 0.00000, 0.00000, 0.00000,
+ -0.36523, 6.15625, 8.26953, 5.40430, 5.88477, 11.53906, 5.31836, -4.97070, 0.00000, 0.00000, 0.00000,
+ 5.51172, 6.31641, 9.66602, 7.58594, 10.63281, 12.03906, 8.79297, 3.06836, 0.00000, 0.00000, 0.00000,
+ 3.95703, 10.51172, 8.42969, 7.62891, 11.45703, 11.95898, 10.85352, 2.83008, 1.50000, 0.00000, 0.00000,
+ 7.37305, 8.93945, 8.57422, 6.85742, 9.67773, 11.54492, 10.98242, 10.43359, 2.53320, 5.05859, 0.00000,
+ 7.37305, 8.12109, 6.66406, 5.87891, 7.59766, 10.67969, 10.42578, 9.46875, 6.85938, 3.06445, 0.00000,
+ 4.39844, 5.94336, 5.73047, 5.10742, 5.69531, 8.31641, 10.05273, 8.23047, 7.11328, 3.04102, -1.27930,
+ 0.58789, 5.10938, 5.41602, 4.55273, 4.32813, 5.75586, 7.42383, 6.63867, 6.81055, 4.14258, 3.31641,
+ 0.14453, 5.64844, 5.05859, 4.06836, 3.51758, 4.07617, 4.56055, 4.99219, 5.51953, 4.82227, 5.19141,
+ 0.00000, 5.54688, 5.15625, 3.37891, 2.90430, 2.74805, 2.82422, 3.37500, 4.02930, 4.49805, 3.42188,
+ 0.00000, 0.39258, 3.92188, 2.67383, 2.66602, 2.40039, 4.65039, 3.29883, 2.16016, 2.95703, 0.40820,
+ 0.00000, 0.00000, 1.15039, 2.56641, 3.98438, 3.61133, 4.66797, 0.58398, -0.26563, 0.09570, 0.00000,
+ 0.00000, 0.00000, 0.37695, 4.30664, 7.07031, 0.81641, 2.86914, 1.19336, 0.69922, -1.23242, 0.00000,
+ 0.00000, 0.00000, 0.07617, 1.46875, 3.49219, 3.16992, -0.84180, 3.81250, -0.50781, 0.00000, 0.00000
+};
+
+/* spec */
+const Float bv32_lspecb1[] =
+{
+ -0.00384521, -0.00849915, -0.01591492, -0.00360107, -0.00013733, 0.00610352, 0.01640320, -0.00166321,
+ -0.00511169, -0.01313782, -0.01698303, -0.00103760, -0.01216125, -0.00427246, -0.00271606, 0.00846863,
+ -0.00367737, -0.00166321, 0.00045776, -0.00309753, 0.01814270, -0.00053406, 0.00256348, -0.00833130,
+ -0.00312805, -0.00488281, 0.00282288, -0.00173950, 0.00004578, -0.00094604, -0.01976013, 0.00306702,
+ -0.00250244, -0.00323486, 0.00154114, 0.00422668, -0.00964355, -0.01895142, 0.01704407, 0.00219727,
+ -0.00090027, -0.00347900, -0.00909424, -0.00746155, -0.00656128, -0.02726746, -0.00769043, -0.00224304,
+ 0.00399780, 0.01086426, 0.00677490, 0.00090027, 0.00244141, -0.00988770, 0.00549316, -0.00628662,
+ -0.00151062, -0.00581360, -0.00186157, -0.00430298, -0.01788330, -0.01603699, -0.03099060, -0.00659180,
+ -0.00547791, -0.00958252, 0.00094604, 0.01203918, 0.00695801, 0.02105713, 0.00720215, 0.00140381,
+ -0.00393677, -0.00848389, -0.01943970, -0.01473999, 0.01364136, -0.00468445, -0.00344849, 0.00566101,
+ -0.00331116, -0.00723267, 0.00175476, 0.03128052, 0.00772095, -0.00163269, 0.00566101, -0.00460815,
+ -0.00222778, -0.00709534, -0.00581360, 0.01132202, -0.00482178, -0.00050354, -0.01037598, -0.01887512,
+ -0.00325012, -0.00445557, 0.00651550, 0.00497437, -0.01744080, 0.01000977, 0.01194763, -0.00160217,
+ -0.00054932, -0.00219727, -0.00631714, -0.01139832, -0.01916504, -0.00711060, 0.00106812, -0.01481628,
+ -0.00546265, 0.00070190, 0.02934265, 0.01412964, 0.00656128, 0.00003052, 0.01229858, 0.00367737,
+ -0.00254822, 0.00099182, 0.02000427, -0.00164795, -0.01643372, -0.00813293, -0.00671387, -0.01013184,
+ -0.00204468, 0.00265503, -0.00135803, -0.02322388, 0.00332642, 0.01715088, 0.01350403, 0.00199890,
+ -0.00289917, -0.00740051, -0.01710510, -0.02655029, -0.01350403, 0.00151062, -0.00038147, 0.00778198,
+ -0.00028992, 0.00064087, 0.00022888, -0.00819397, 0.00061035, 0.02536011, -0.00822449, -0.02096558,
+ -0.00028992, 0.00001526, -0.00805664, -0.02310181, -0.00082397, -0.00106812, -0.02081299, -0.01762390,
+ -0.00030518, 0.00170898, -0.00651550, -0.01683044, 0.00083923, -0.00955200, 0.02677917, 0.00958252,
+ 0.00292969, 0.00251770, -0.00447083, -0.01782227, -0.02940369, -0.02981567, 0.00372314, -0.00421143,
+ 0.01701355, 0.02578735, -0.00593567, 0.00595093, 0.01370239, 0.01223755, 0.00622559, -0.00111389,
+ 0.00061035, -0.00015259, 0.00686646, 0.00129700, -0.00637817, -0.02079773, -0.05078125, -0.01544189,
+ -0.00398254, 0.00350952, 0.01591492, -0.00076294, 0.02429199, 0.02890015, 0.01559448, 0.00701904,
+ -0.00177002, -0.00981140, -0.03118896, -0.01042175, -0.00013733, 0.00044250, -0.00659180, -0.01545715,
+ 0.00256348, 0.01017761, 0.01966858, 0.01533508, 0.01405334, 0.01646423, -0.00257874, -0.01338196,
+ 0.00088501, -0.00016785, -0.00163269, -0.00199890, -0.00700378, -0.00726318, -0.02569580, -0.03907776,
+ 0.00035095, 0.00717163, 0.00427246, 0.00279236, 0.02046204, 0.00689697, 0.02848816, 0.01043701,
+ 0.00041199, 0.00004578, -0.01815796, -0.03132629, -0.00378418, -0.02220154, 0.00140381, -0.00294495,
+ 0.01571655, 0.02601624, 0.01066589, 0.03164673, 0.03356934, 0.02770996, 0.01812744, 0.00709534,
+ 0.00881958, 0.02149963, 0.01010132, 0.00360107, 0.00122070, -0.00657654, -0.01893616, -0.02380371,
+ -0.00672913, -0.01612854, -0.02481079, -0.00184631, 0.00761414, 0.01754761, 0.00720215, 0.01480103,
+ -0.00515747, -0.01365662, -0.01542664, -0.01049805, -0.01742554, 0.02040100, -0.00880432, -0.00152588,
+ -0.00303650, -0.00975037, -0.02221680, 0.01498413, 0.02423096, 0.00935364, -0.00544739, -0.00675964,
+ -0.00221252, -0.00933838, -0.02006531, 0.00033569, 0.00292969, -0.01268005, -0.02940369, -0.00543213,
+ -0.00231934, -0.00257874, 0.00263977, -0.00134277, -0.00151062, -0.00566101, 0.00665283, 0.03112793,
+ -0.00123596, -0.00584412, -0.01034546, -0.01982117, -0.02880859, -0.02052307, -0.01663208, 0.00572205,
+ 0.00738525, 0.02700806, 0.01812744, 0.02203369, 0.00323486, -0.00514221, 0.01075745, 0.00660706,
+ 0.00349426, 0.00294495, -0.00387573, -0.01075745, -0.02171326, -0.03224182, -0.02403259, -0.02343750,
+ -0.00619507, -0.01358032, -0.01676941, 0.01498413, 0.02687073, 0.02645874, 0.01818848, 0.01010132,
+ -0.00459290, -0.00839233, -0.02026367, -0.02606201, 0.02151489, 0.02061462, -0.00651550, -0.00538635,
+ -0.00405884, -0.00538635, 0.00645447, 0.03422546, 0.03749084, 0.02166748, 0.00497437, -0.00592041,
+ -0.00209045, -0.00204468, -0.00219727, 0.00228882, 0.02597046, 0.00415039, -0.02684021, -0.01873779,
+ -0.00489807, -0.00955200, -0.00572205, 0.00482178, -0.00778198, 0.01531982, 0.03317261, 0.01727295,
+ -0.00341797, -0.00909424, -0.00500488, -0.00860596, -0.04263306, -0.00547791, 0.00357056, 0.00357056,
+ -0.00016785, 0.01191711, 0.03486633, 0.03454590, 0.02195740, 0.01472473, 0.03034973, 0.02073669,
+ -0.00109863, 0.00473022, 0.01737976, 0.00859070, -0.00253296, -0.03044128, -0.00776672, -0.01104736,
+ -0.00527954, -0.00999451, -0.00939941, -0.00805664, -0.00268555, 0.04862976, 0.01870728, 0.00442505,
+ -0.00317383, -0.00744629, -0.00877380, -0.02050781, -0.03236389, 0.01905823, 0.01884460, 0.00524902,
+ 0.00453186, 0.01782227, 0.00762939, -0.00749207, 0.03543091, 0.01852417, -0.00367737, -0.01086426,
+ 0.00018311, -0.00355530, -0.01539612, -0.02656555, -0.00277710, -0.01931763, -0.03083801, 0.00360107,
+ -0.00143433, 0.00292969, 0.01277161, 0.00936890, 0.00128174, -0.00985718, 0.04154968, 0.02775574,
+ 0.00213623, 0.00561523, 0.00642395, -0.00889587, -0.03330994, -0.05546570, 0.00897217, 0.00265503,
+ 0.01060486, 0.05717468, 0.03829956, 0.03216553, 0.02561951, 0.02203369, 0.01969910, 0.00923157,
+ 0.00221252, 0.00817871, 0.01704407, -0.00007629, -0.00616455, -0.04737854, -0.03558350, 0.00561523,
+ -0.00749207, -0.00627136, 0.02369690, 0.02711487, 0.03462219, 0.04241943, 0.02859497, 0.01635742,
+ -0.02087402, -0.04931641, 0.00619507, 0.00404358, 0.01080322, 0.00926208, 0.00779724, 0.00225830,
+ -0.00173950, 0.01293945, 0.04112244, 0.03024292, 0.03976440, 0.03063965, 0.00881958, -0.00358582,
+ -0.00424194, -0.00158691, 0.02459717, 0.01078796, 0.00611877, 0.00105286, -0.02471924, -0.02410889,
+ -0.00451660, -0.00415039, 0.00253296, 0.01228333, 0.02276611, 0.02371216, 0.05001831, 0.02963257,
+ -0.00369263, -0.01776123, -0.03298950, -0.01219177, -0.03230286, -0.02035522, -0.01049805, -0.00700378,
+ 0.01309204, 0.03527832, 0.04226685, 0.04809570, 0.04991150, 0.04533386, 0.03337097, 0.01974487,
+ 0.00236511, 0.01925659, 0.04072571, 0.02778625, 0.01647949, -0.01173401, -0.02360535, -0.01696777,
+ -0.00433350, -0.01188660, -0.02235413, 0.01066589, 0.01145935, -0.00656128, 0.02409363, 0.01565552,
+ -0.00448608, -0.01176453, -0.02374268, -0.01464844, -0.01629639, -0.01852417, 0.01446533, 0.01126099,
+ -0.00320435, 0.00030518, 0.00944519, 0.01014709, 0.03031921, 0.00007629, -0.00328064, 0.01599121,
+ -0.00141907, -0.00477600, -0.00032043, -0.00436401, -0.00563049, -0.02128601, -0.03314209, 0.02626038,
+ -0.00105286, -0.00151062, -0.00180054, -0.00811768, -0.02941895, -0.01837158, 0.03617859, 0.01126099,
+ -0.00238037, -0.00828552, -0.00988770, 0.00376892, -0.02708435, -0.03489685, -0.00431824, 0.00047302,
+ 0.01274109, 0.02935791, 0.00981140, -0.00921631, -0.01629639, -0.00587463, 0.00247192, 0.00064087,
+ 0.00193787, -0.00151062, -0.00468445, -0.01261902, -0.02470398, -0.03384399, -0.04949951, -0.00338745,
+ -0.00361633, -0.00816345, 0.00148010, 0.03401184, 0.01333618, 0.01911926, 0.02272034, 0.01939392,
+ -0.00132751, -0.00799561, -0.02526855, -0.03221130, 0.00328064, 0.00810242, 0.00950623, 0.01345825,
+ -0.00360107, -0.00260925, 0.03428650, 0.04959106, 0.01815796, 0.00881958, -0.00042725, -0.00680542,
+ -0.00175476, -0.00695801, 0.00030518, 0.02726746, -0.00277710, -0.01660156, -0.02694702, -0.01084900,
+ -0.00105286, 0.00723267, 0.02352905, 0.00462341, -0.01211548, 0.02276611, 0.02523804, 0.01177979,
+ 0.00044250, -0.00314331, -0.00833130, -0.02253723, -0.03590393, 0.00534058, -0.01576233, -0.01797485,
+ 0.00265503, 0.02203369, 0.05549622, 0.02410889, 0.00866699, 0.00965881, 0.00958252, -0.00190735,
+ 0.00163269, 0.00399780, 0.01559448, -0.00083923, -0.03933716, -0.01277161, -0.02479553, -0.01690674,
+ -0.00450134, -0.00598145, -0.01719666, -0.02134705, 0.02500916, 0.02310181, 0.02972412, 0.01644897,
+ -0.00181580, -0.00743103, -0.02114868, -0.03652954, -0.03193665, -0.00167847, 0.00451660, 0.00935364,
+ -0.00350952, -0.00422668, -0.00115967, 0.00111389, 0.03088379, 0.04490662, -0.00390625, -0.01063538,
+ 0.00189209, -0.00177002, -0.01432800, -0.02612305, -0.01161194, -0.01190186, -0.04681396, -0.02130127,
+ -0.00234985, -0.00527954, -0.01350403, -0.01855469, -0.00726318, -0.00196838, 0.04997253, 0.02980042,
+ 0.00024414, -0.00541687, -0.01794434, -0.02980042, -0.03829956, -0.04582214, 0.01480103, 0.01237488,
+ 0.05004883, 0.03166199, 0.02220154, 0.01562500, 0.00930786, 0.00764465, 0.00833130, 0.00251770,
+ 0.00430298, 0.00444031, 0.00691223, -0.00653076, -0.01719666, -0.04112244, -0.09020996, -0.00898743,
+ 0.00041199, 0.00929260, 0.00347900, 0.00259399, 0.05375671, 0.03878784, 0.02937317, 0.01449585,
+ -0.00491333, -0.02757263, -0.06730652, -0.02465820, -0.00869751, -0.00566101, -0.00590515, 0.00354004,
+ 0.01916504, 0.03500366, 0.02929688, 0.03329468, 0.02725220, 0.01902771, -0.00694275, -0.01644897,
+ 0.00370789, 0.00387573, 0.00061035, -0.00419617, -0.01568604, -0.02262878, -0.05206299, -0.04679871,
+ 0.01432800, 0.03143311, 0.01612854, 0.00932312, 0.01620483, 0.02969360, 0.03417969, 0.02700806,
+ 0.00350952, 0.00082397, -0.03111267, -0.06707764, -0.02024841, -0.01860046, -0.00958252, -0.00173950,
+ 0.05522156, 0.04231262, 0.04219055, 0.03793335, 0.03443909, 0.03150940, 0.02209473, 0.01277161,
+ 0.03974915, 0.03291321, 0.01431274, 0.00024414, 0.00086975, -0.01142883, -0.03588867, -0.01281738,
+ -0.00840759, -0.02593994, -0.04820251, 0.00361633, 0.01782227, 0.03044128, 0.02810669, 0.02386475,
+ -0.00660706, -0.02162170, -0.03446960, -0.01261902, -0.02426147, 0.01382446, 0.01550293, 0.01689148,
+ -0.00529480, -0.00663757, -0.01538086, -0.00068665, 0.05569458, 0.01844788, 0.00303650, 0.00178528,
+ -0.00257874, -0.00895691, -0.00971985, -0.00666809, 0.00314331, -0.00125122, -0.05572510, 0.00030518,
+ -0.00048828, 0.00041199, -0.00028992, -0.00938416, -0.00831604, -0.03677368, 0.01962280, 0.03395081,
+ 0.00151062, -0.00248718, -0.01004028, -0.02021790, -0.03338623, -0.05041504, -0.02108765, 0.00358582,
+ 0.01791382, 0.06657410, 0.02952576, 0.01698303, 0.00154114, -0.00361633, 0.00166321, -0.00538635,
+ 0.00483704, 0.01110840, 0.01173401, -0.00868225, -0.03361511, -0.06233215, -0.03771973, -0.02009583,
+ -0.00576782, -0.01533508, -0.01855469, 0.03782654, 0.04870605, 0.04002380, 0.02944946, 0.01617432,
+ -0.00526428, -0.01495361, -0.03617859, -0.05659485, 0.00096130, 0.01994324, 0.01362610, 0.00981140,
+ -0.00202942, -0.00065613, 0.02978516, 0.07008362, 0.05216980, 0.03585815, 0.01889038, 0.00332642,
+ -0.00016785, 0.00070190, 0.00903320, 0.03486633, 0.03285217, 0.00875854, -0.03100586, -0.03533936,
+ -0.00460815, -0.00889587, -0.00535583, -0.00605774, -0.01533508, 0.03904724, 0.05235291, 0.02601624,
+ 0.00132751, -0.00230408, -0.00685120, -0.03175354, -0.06939697, -0.02249146, -0.01206970, -0.00375366,
+ -0.00267029, 0.01330566, 0.07746887, 0.05206299, 0.03462219, 0.02912903, 0.02680969, 0.01100159,
+ 0.00160217, 0.01959229, 0.05360413, 0.01110840, -0.02023315, -0.03753662, -0.01402283, -0.01716614,
+ -0.00639343, -0.01054382, -0.00729370, 0.00303650, 0.02307129, 0.07855225, 0.04028320, 0.01892090,
+ -0.00352478, -0.01866150, -0.02894592, -0.03585815, -0.06474304, -0.00245667, 0.02102661, 0.01512146,
+ -0.00077820, 0.01048279, 0.01577759, 0.02217102, 0.07875061, 0.04440308, 0.00306702, -0.00975037,
+ 0.00099182, -0.01753235, -0.02914429, -0.03764343, -0.03930664, -0.04081726, -0.06845093, -0.01873779,
+ -0.00256348, -0.00033569, 0.00053406, 0.00070190, -0.00105286, 0.00088501, 0.08264160, 0.03260803,
+ 0.00869751, 0.00711060, -0.00775146, -0.03376770, -0.06314087, -0.08934021, -0.01795959, 0.00088501,
+ 0.02838135, 0.09507751, 0.06649780, 0.05419922, 0.04470825, 0.03926086, 0.02592468, 0.01179504,
+ 0.04316711, 0.05152893, 0.01130676, -0.02204895, -0.04406738, -0.06632996, -0.08439636, -0.05546570,
+ -0.00311279, 0.00325012, 0.02406311, 0.04458618, 0.07960510, 0.07987976, 0.04357910, 0.01593018,
+ -0.02593994, -0.07890320, -0.02648926, -0.02957153, -0.01586914, -0.01681519, -0.00686646, -0.00469971,
+ 0.00602722, 0.03062439, 0.07060242, 0.06431580, 0.04623413, 0.02545166, -0.00128174, -0.01522827,
+ 0.00640869, 0.01506042, 0.02645874, 0.01609802, 0.00148010, -0.01939392, -0.05572510, -0.06500244,
+ -0.00239563, 0.00444031, 0.01907349, 0.03089905, 0.03352356, 0.05075073, 0.07539368, 0.03486633,
+ -0.00079346, -0.03021240, -0.05854797, -0.07080078, -0.06494141, -0.05015564, -0.02285767, -0.00508118,
+ 0.00588989, 0.03402710, 0.08795166, 0.09323120, 0.07124329, 0.05776978, 0.03340149, 0.01075745,
+ 0.02717590, 0.07472229, 0.08680725, 0.03575134, 0.00018311, -0.03523254, -0.05368042, -0.04931641
+};
+
+/* spec */
+const Float bv32_lspecb21[] =
+{
+ 0.00281525, 0.00292778, 0.00433731,
+ -0.00021553, -0.00037766, -0.00252151,
+ 0.00709152, -0.00558853, -0.00040245,
+ -0.00341034, -0.00456047, 0.00535393,
+ -0.00196075, 0.00144005, 0.01340103,
+ -0.00179482, -0.00482559, -0.00926208,
+ -0.00576019, 0.00680923, 0.00318718,
+ -0.00498390, -0.01045990, -0.00181580,
+ 0.00724030, 0.00892258, -0.00010681,
+ -0.00100517, 0.00750542, -0.01124763,
+ 0.01622772, 0.00503349, -0.00928497,
+ -0.01317978, -0.00148201, -0.00485039,
+ 0.00139236, 0.01294518, 0.01284790,
+ 0.00160599, -0.00276566, -0.02051735,
+ 0.00048065, 0.02153206, -0.00239372,
+ 0.00121498, -0.01841927, 0.00706482,
+ 0.01221657, 0.00114632, 0.01258469,
+ 0.00564766, 0.00059319, -0.00907707,
+ 0.02144051, -0.01291847, -0.00042725,
+ -0.01160431, -0.01168442, 0.01208878,
+ -0.00497437, -0.00429916, 0.02562332,
+ -0.00357437, -0.01308441, -0.01529694,
+ -0.01611328, 0.01459503, 0.00725365,
+ -0.01193810, -0.02121544, -0.00399017,
+ 0.01710129, 0.01618958, 0.00624657,
+ 0.00753784, 0.01832008, -0.02398491,
+ 0.03960609, 0.01548195, -0.00556374,
+ -0.03484535, 0.00230217, 0.00053406,
+ -0.00045013, 0.01565170, 0.03667641,
+ -0.00150681, -0.01651573, -0.03601646,
+ 0.00778198, 0.04269028, 0.00644302,
+ -0.01263237, -0.04002953, 0.00638008
+};
+
+/* spec */
+const Float bv32_lspecb22[] =
+{
+ 0.00223160, -0.00800133, -0.00899124, 0.00006485, 0.00058365,
+ 0.00498199, 0.00384903, -0.00713539, -0.00961494, -0.00307274,
+ -0.00000954, 0.00230217, 0.00827026, 0.00367355, 0.00186920,
+ 0.00362587, 0.01415634, 0.00111580, 0.00265884, -0.00458145,
+ -0.01116562, 0.00059700, -0.01137161, 0.00316811, -0.00823975,
+ 0.00366402, 0.00034904, -0.00654984, 0.00271797, -0.01940155,
+ -0.00282288, -0.00809288, 0.00408554, -0.00595474, -0.00964355,
+ 0.01284599, 0.00154495, 0.00731087, 0.00330925, -0.00998116,
+ -0.00849152, -0.00714302, 0.00018120, 0.00532913, 0.00732613,
+ -0.00639915, 0.00654030, -0.00492859, -0.00344276, 0.01243401,
+ -0.00438499, 0.00685120, -0.00248146, 0.01663589, 0.00031281,
+ 0.01028252, 0.00627327, -0.00315285, 0.00683403, 0.00990868,
+ -0.01620674, 0.00895309, 0.00953102, 0.00367737, -0.00362778,
+ -0.00172234, 0.00682259, 0.00998497, -0.01184273, 0.00318718,
+ -0.00300217, -0.00821686, 0.00954819, 0.01287270, -0.00807762,
+ 0.01217651, -0.00773621, 0.00847435, -0.00031281, 0.00645638,
+ -0.00471497, -0.01052666, -0.02195930, -0.01058769, 0.00412560,
+ 0.00894547, -0.00356674, -0.00493240, -0.02550888, -0.00962448,
+ -0.00122452, 0.00730324, 0.01606369, 0.01205063, 0.01569366,
+ -0.00556946, 0.02675247, -0.00582695, -0.00326729, 0.00189209,
+ -0.01784134, 0.00078583, -0.00429535, -0.01312637, -0.00244522,
+ -0.00508881, 0.00965881, 0.00708389, -0.01148987, -0.02126884,
+ -0.00472450, -0.01339912, 0.00592613, -0.01262474, 0.00816154,
+ 0.02260780, 0.01769447, 0.00827408, -0.00707054, -0.00349998,
+ -0.00877571, -0.00870895, -0.01420212, 0.01482201, 0.01783562,
+ 0.00730515, 0.00027847, -0.00198555, -0.01367950, 0.02097321,
+ 0.00929070, -0.00706673, -0.00564384, 0.01904678, 0.00018692,
+ 0.01049805, 0.01000977, -0.02177620, 0.00494194, 0.00013351,
+ -0.02701187, -0.01168251, 0.01052856, 0.00321388, 0.00094223,
+ 0.00286293, -0.00534248, 0.02644157, -0.00658035, -0.00415039,
+ 0.00362587, -0.02618980, 0.00177765, 0.00383186, -0.00398064,
+ 0.02854538, -0.00962830, -0.00597000, -0.00085640, -0.00148964
+};
+
+/* spec */
+const Float bv32_lspmean[] =         /* mean value of LSP components */
+{
+ 0.0551453,
+ 0.1181030,
+ 0.2249756,
+ 0.3316040,
+ 0.4575806,
+ 0.5720825,
+ 0.7193298,
+ 0.8278198
+};
+
+/* spec */
+const Float bv32_lspp[] =         /* LSP Predictor Coefficients */
+{
+ 0.7401123, 0.6939697, 0.6031494, 0.5333862, 0.4295044, 0.3234253, 0.2177124, 0.1162720,
+ 0.7939453, 0.7693481, 0.6712036, 0.5919189, 0.4750366, 0.3556519, 0.2369385, 0.1181030,
+ 0.7534180, 0.7318115, 0.6326294, 0.5588379, 0.4530029, 0.3394775, 0.2307739, 0.1201172,
+ 0.7188110, 0.6765747, 0.5792847, 0.5169067, 0.4223022, 0.3202515, 0.2235718, 0.1181030,
+ 0.6431885, 0.6023560, 0.5112305, 0.4573364, 0.3764038, 0.2803345, 0.2060547, 0.1090698,
+ 0.5687866, 0.5837402, 0.4616089, 0.4351196, 0.3502808, 0.2602539, 0.1951294, 0.0994263,
+ 0.5292969, 0.4835205, 0.3890381, 0.3581543, 0.2882080, 0.2261353, 0.1708984, 0.0941162,
+ 0.5134277, 0.4365845, 0.3521729, 0.3118896, 0.2514038, 0.1951294, 0.1443481, 0.0841064
+};
+
+/* spec */
+const Float bv32_lgpecb[] =         /* Log-Gain Prediction Error CodeBook */
+{
+ -4.91895,
+ -3.75049,
+ -3.09082,
+ -2.59961,
+ -2.22656,
+ -1.46240,
+ -0.88037,
+ -0.34717,
+ -1.93408,
+ -1.25635,
+ -0.70117,
+ -0.16650,
+ 0.20361,
+ 0.82568,
+ 1.59863,
+ 2.75684,
+ -1.68457,
+ -1.06299,
+ -0.52588,
+ 0.01563,
+ 0.39941,
+ 1.05664,
+ 1.91602,
+ 3.34326,
+ 0.60693,
+ 1.31201,
+ 2.29736,
+ 4.11426,
+ 5.20996,
+ 6.70410,
+ 8.74316,
+ 10.92188
+};
+
+/* spec */
+const Float bv32_lgp[] =                 /* Log-Gain Predictor */
+{
+ 0.5913086,
+ 0.5251160,
+ 0.5724792,
+ 0.5977783,
+ 0.4800720,
+ 0.4939270,
+ 0.4729614,
+ 0.4158936,
+ 0.3805847,
+ 0.3395081,
+ 0.2780151,
+ 0.2455139,
+ 0.1916199,
+ 0.1470032,
+ 0.1138611,
+ 0.0664673
+};
+
+/* spec */
+const Float bv32_lgmean = 11.82031;
+
+/* spec */
+const Float bv32_cccb[] =
+{
+ -0.537476, 0.974976, -0.631104, -0.617920,
+ 1.145142, 1.222534, -1.252441, 0.616211,
+ 1.174194, 1.399414, 0.330933, 0.823120,
+ 2.946899, 0.798096, -0.274658, -0.027344,
+ -1.704102, 0.098755, -0.526001, -0.395508,
+ -0.889038, -0.337402, 0.784546, 0.298462,
+ -0.756958, -0.061890, 0.558960, -0.907227,
+ 1.373169, -0.413330, 0.690552, -0.794067,
+ -0.573364, -0.463745, -0.606934, -0.623535,
+ 1.058716, -0.566040, -1.677246, 0.752563,
+ 0.432617, 0.441895, -0.630493, -1.445801,
+ 2.542358, 0.207031, -1.611450, 0.313354,
+ -2.572266, -2.758423, -0.499390, -0.020142,
+ 0.432251, -2.303711, -2.016479, 0.228638,
+ 0.701538, -1.355591, -0.861572, -0.243042,
+ 0.857056, -1.842285, -0.006348, 1.216919,
+ -1.474365, 1.636108, -0.683838, 0.362915,
+ -0.361694, 0.711914, -0.136353, 1.619873,
+ 0.407104, 1.661255, 0.566406, -0.559937,
+ 1.670288, 1.159668, 1.760254, 0.524780,
+ -1.860596, 0.592285, 1.213379, 0.719482,
+ -0.845703, 0.081421, 2.197754, 1.654785,
+ 0.425415, 0.641357, 1.210205, -1.444580,
+ 0.208374, 0.481567, 1.808472, 0.685913,
+ -1.022583, 0.425781, -0.168945, -1.642700,
+ 0.502075, -0.491455, -0.296631, -0.068359,
+ 0.270630, 0.005981, 0.257813, -0.466309,
+ 2.266357, -1.128540, -0.399414, 0.438477,
+ -1.876343, -0.895142, -0.012207, 0.886841,
+ -0.389771, -1.818604, 1.185791, 0.913452,
+ -0.040771, -1.141968, 0.364258, -0.283691,
+ 0.448242, -0.755127, 1.767578, -0.691406
+};
+
+const Float bv32_pp9cb[] =
+{
+ -2.9005200e-001, 5.9857400e-001, 2.8242800e-001, 8.6808793e-002,
+ -8.4527029e-002, 4.0959403e-002, -2.1032541e-002, -8.9572708e-002,
+ -1.9941394e-002,
+ -2.5773600e-001, 1.3779820e+000, 8.1913200e-001, 1.7757778e-001,
+ -5.6437458e-001, 1.0555990e-001, -1.6606961e-002, -4.7470860e-001,
+ -1.6774431e-001,
+ -6.8988000e-002, 4.0204400e-001, 2.3288400e-001, 1.3868106e-002,
+ -4.6814807e-002, 8.0331007e-003, -1.1898360e-003, -4.0409844e-002,
+ -1.3558739e-002,
+ -1.0210000e-002, 1.0048600e+000, 7.7118200e-001, 5.1298103e-003,
+ -3.8746497e-001, 3.9368841e-003, -2.6061025e-005, -2.5243590e-001,
+ -1.4868042e-001,
+ -1.1636000e-002, 5.6408400e-001, 1.0782800e-001, 3.2818407e-003,
+ -3.0412025e-002, 6.2734330e-004, -3.3849124e-005, -7.9547690e-002,
+ -2.9067194e-003,
+ 4.8679200e-001, 8.9901600e-001, 5.7433200e-001, -2.1881690e-001,
+ -2.5816683e-001, -1.3979011e-001, -5.9241613e-002, -2.0205744e-001,
+ -8.2464312e-002,
+ -1.3678200e-001, -4.6110800e-001, 1.5254600e-001, -3.1535637e-002,
+ 3.5170090e-002, 1.0432773e-002, -4.6773289e-003, -5.3155147e-002,
+ -5.8175705e-003,
+ 4.1686000e-002, 6.4152800e-001, 4.3733400e-001, -1.3371368e-002,
+ -1.4028100e-001, -9.1153526e-003, -4.3443065e-004, -1.0288954e-001,
+ -4.7815257e-002,
+ 1.6641000e-001, 6.6628800e-001, 4.2048000e-002, -5.5438493e-002,
+ -1.4008039e-002, -3.4986038e-003, -6.9230720e-003, -1.1098492e-001,
+ -4.4200858e-004,
+ 2.3891400e-001, 1.2416060e+000, 4.7916200e-001, -1.4831853e-001,
+ -2.9746521e-001, -5.7239255e-002, -1.4269975e-002, -3.8539636e-001,
+ -5.7399056e-002,
+ 1.5663800e-001, 3.7065800e-001, 1.8346800e-001, -2.9029564e-002,
+ -3.4001941e-002, -1.4369030e-002, -6.1338658e-003, -3.4346838e-002,
+ -8.4151268e-003,
+ 3.2286400e-001, 8.4265000e-001, 6.6942000e-001, -1.3603067e-001,
+ -2.8204338e-001, -1.0806581e-001, -2.6060291e-002, -1.7751476e-001,
+ -1.1203078e-001,
+ 3.4039200e-001, 4.8907800e-001, 9.7528000e-002, -8.3239119e-002,
+ -2.3849400e-002, -1.6598875e-002, -2.8966678e-002, -5.9799323e-002,
+ -2.3779277e-003,
+ 6.8932600e-001, 9.7475400e-001, 2.9750200e-001, -3.3596164e-001,
+ -1.4499563e-001, -1.0253793e-001, -1.1879258e-001, -2.3753634e-001,
+ -2.2126860e-002,
+ 2.3204200e-001, -4.9914600e-001, 1.4655400e-001, 5.7911418e-002,
+ 3.6575921e-002, -1.7003342e-002, -1.3460872e-002, -6.2286682e-002,
+ -5.3695187e-003,
+ 5.7895600e-001, 6.7697000e-001, 4.8903800e-001, -1.9596792e-001,
+ -1.6553203e-001, -1.4156574e-001, -8.3797512e-002, -1.1457210e-001,
+ -5.9789541e-002,
+ -2.6667800e-001, 6.9637800e-001, -1.3954600e-001, 9.2854346e-002,
+ 4.8588382e-002, -1.8606924e-002, -1.7779289e-002, -1.2123558e-001,
+ -4.8682715e-003,
+ -1.7600000e-002, 1.6969620e+000, 2.8014800e-001, 1.4933266e-002,
+ -2.3770026e-001, 2.4653024e-003, -7.7440000e-005, -7.1992001e-001,
+ -1.9620725e-002,
+ -1.6124400e-001, 4.1076200e-001, -3.2358000e-002, 3.3116454e-002,
+ 6.6457184e-003, -2.6087667e-003, -6.4999069e-003, -4.2181355e-002,
+ -2.6176004e-004,
+ -6.6390000e-002, 9.5376600e-001, 2.3754200e-001, 3.1660262e-002,
+ -1.1327974e-001, 7.8852067e-003, -1.1019080e-003, -2.2741740e-001,
+ -1.4106550e-002,
+ 3.8460000e-003, 5.3013600e-001, -2.6145400e-001, -1.0194515e-003,
+ 6.9303089e-002, 5.0277604e-004, -3.6979290e-006, -7.0261045e-002,
+ -1.7089549e-002,
+ 4.3861400e-001, 1.4447380e+000, 6.2326000e-002, -3.1684116e-001,
+ -4.5022370e-002, -1.3668528e-002, -4.8095560e-002, -5.2181697e-001,
+ -9.7113257e-004,
+ 1.5442000e-002, 1.4250800e-001, 2.5232000e-002, -1.1003043e-003,
+ -1.7978809e-003, -1.9481627e-004, -5.9613841e-005, -5.0771325e-003,
+ -1.5916346e-004,
+ 2.9463000e-001, 5.2297600e-001, 3.5731600e-001, -7.7042209e-002,
+ -9.3433846e-002, -5.2638007e-002, -2.1701709e-002, -6.8375974e-002,
+ -3.1918681e-002,
+ 2.6816800e-001, 9.2876800e-001, -2.0899000e-001, -1.2453293e-001,
+ 9.7051612e-002, 2.8022215e-002, -1.7978519e-002, -2.1565250e-001,
+ -1.0919205e-002,
+ 8.3488800e-001, 1.3611020e+000, -2.3238000e-001, -5.6818386e-001,
+ 1.5814644e-001, 9.7005637e-002, -1.7425949e-001, -4.6314966e-001,
+ -1.3500116e-002,
+ 1.2479600e-001, 3.8813600e-001, -5.9852000e-002, -2.4218910e-002,
+ 1.1615358e-002, 3.7346451e-003, -3.8935104e-003, -3.7662389e-002,
+ -8.9556548e-004,
+ 3.3026200e-001, 8.9619600e-001, 2.9964600e-001, -1.4798974e-001,
+ -1.3427077e-001, -4.9480844e-002, -2.7268247e-002, -2.0079182e-001,
+ -2.2446931e-002,
+ 3.2806200e-001, 5.4098200e-001, -2.0613400e-001, -8.8737818e-002,
+ 5.5757392e-002, 3.3812366e-002, -2.6906169e-002, -7.3165381e-002,
+ -1.0622806e-002,
+ 7.7764400e-001, 1.0285520e+000, -4.9966000e-002, -3.9992365e-001,
+ 2.5696315e-002, 1.9427880e-002, -1.5118255e-001, -2.6447980e-001,
+ -6.2415029e-004,
+ 8.2660000e-003, -4.3842200e-001, -1.6479000e-001, 1.8119981e-003,
+ -3.6123781e-002, 6.8107707e-004, -1.7081689e-005, -4.8053463e-002,
+ -6.7889360e-003,
+ 5.4489000e-001, 7.3032400e-001, 1.0464600e-001, -1.9897312e-001,
+ -3.8212743e-002, -2.8510279e-002, -7.4226278e-002, -1.3334329e-001,
+ -2.7376963e-003
+};
+
+/* Pre-Emphasis or De-Emphasis Filter */
+const Float bv32_a_pre[] = { 1.0, PEAPFC };
+const Float bv32_b_pre[] = { 1.0, PEAZFC };
+
+/* Combined High-Pass & Pre-Emphasis Filter */
+const Float bv32_hpfa[] = {1.00000000000000, PEAPFC-(127./128), PEAPFC*(-127./128)};
+const Float bv32_hpfb[] = {255./256, 255./256*(PEAZFC-1.), -255./256*PEAZFC};
+
+/* spec */
+/* coarse pitch search */
+const Float bv32_adf[] =
+{
+ 1.00000000000000,
+ -3.56023061648011,
+ 4.85584780946374,
+ -2.99882978945971,
+ 0.70692772790790
+};
+
+/* spec */
+const Float bv32_bdf[] =
+{
+ 0.0322952,
+ -0.1028824,
+ 0.1446838,
+ -0.1028824,
+ 0.0322952
+};
+
+const Float bv32_x[] = {0.125, 0.25, 0.375, 0.5};
+const Float bv32_x2[] = {0.015625, 0.0625, 0.140625, 0.25}; /* square of x[] */
+const Float bv32_MPTH[] = {0.7, 0.55, 0.48, 0.37};
+
+/* spec */
+const Float bv32_winl[] =
+{
+ 0.0001831,
+ 0.0006714,
+ 0.0015259,
+ 0.0026855,
+ 0.0042114,
+ 0.0060425,
+ 0.0082397,
+ 0.0107422,
+ 0.0135803,
+ 0.0167542,
+ 0.0202637,
+ 0.0240784,
+ 0.0281982,
+ 0.0326843,
+ 0.0374451,
+ 0.0425110,
+ 0.0479126,
+ 0.0536194,
+ 0.0596008,
+ 0.0659180,
+ 0.0725098,
+ 0.0793762,
+ 0.0865479,
+ 0.0939636,
+ 0.1016846,
+ 0.1096497,
+ 0.1179199,
+ 0.1264038,
+ 0.1351624,
+ 0.1441650,
+ 0.1534119,
+ 0.1628723,
+ 0.1725769,
+ 0.1824951,
+ 0.1926270,
+ 0.2029724,
+ 0.2135010,
+ 0.2242432,
+ 0.2351685,
+ 0.2462769,
+ 0.2575378,
+ 0.2689514,
+ 0.2805481,
+ 0.2922974,
+ 0.3041687,
+ 0.3161926,
+ 0.3283081,
+ 0.3405762,
+ 0.3529053,
+ 0.3653870,
+ 0.3779297,
+ 0.3905334,
+ 0.4032593,
+ 0.4160156,
+ 0.4288330,
+ 0.4417114,
+ 0.4546204,
+ 0.4675598,
+ 0.4805298,
+ 0.4934998,
+ 0.5065002,
+ 0.5194702,
+ 0.5324402,
+ 0.5453796,
+ 0.5582886,
+ 0.5711670,
+ 0.5839844,
+ 0.5967407,
+ 0.6094666,
+ 0.6220703,
+ 0.6346130,
+ 0.6470947,
+ 0.6594238,
+ 0.6716919,
+ 0.6838074,
+ 0.6958313,
+ 0.7077026,
+ 0.7194519,
+ 0.7310486,
+ 0.7424622,
+ 0.7537231,
+ 0.7648315,
+ 0.7757568,
+ 0.7864990,
+ 0.7970276,
+ 0.8073730,
+ 0.8175049,
+ 0.8274231,
+ 0.8371277,
+ 0.8465881,
+ 0.8558350,
+ 0.8648376,
+ 0.8735962,
+ 0.8820801,
+ 0.8903503,
+ 0.8983154,
+ 0.9060364,
+ 0.9134521,
+ 0.9206238,
+ 0.9274902,
+ 0.9340820,
+ 0.9403992,
+ 0.9463806,
+ 0.9520874,
+ 0.9574890,
+ 0.9625549,
+ 0.9673157,
+ 0.9718018,
+ 0.9759216,
+ 0.9797363,
+ 0.9832458,
+ 0.9864197,
+ 0.9892578,
+ 0.9917603,
+ 0.9939575,
+ 0.9957886,
+ 0.9973145,
+ 0.9984741,
+ 0.9993286,
+ 0.9998169,
+ 1.0000000,
+ 0.9992371,
+ 0.9969177,
+ 0.9930725,
+ 0.9877014,
+ 0.9807739,
+ 0.9723816,
+ 0.9624634,
+ 0.9510498,
+ 0.9382019,
+ 0.9238892,
+ 0.9081421,
+ 0.8910217,
+ 0.8724976,
+ 0.8526306,
+ 0.8314819,
+ 0.8090210,
+ 0.7853088,
+ 0.7604065,
+ 0.7343140,
+ 0.7070923,
+ 0.6788025,
+ 0.6494446,
+ 0.6190796,
+ 0.5877991,
+ 0.5555725,
+ 0.5224915,
+ 0.4886169,
+ 0.4539795,
+ 0.4186707,
+ 0.3826904,
+ 0.3461304,
+ 0.3090210,
+ 0.2714539,
+ 0.2334595,
+ 0.1950989,
+ 0.1564331,
+ 0.1175232,
+ 0.0784607,
+ 0.0392456
+};
+
+/* spec */
+const Float bv32_sstwin[] =
+{
+ 1.00003162253432,
+ 0.99950664035278,
+ 0.99802802494523,
+ 0.99556852541705,
+ 0.99213540445135,
+ 0.98773878305059,
+ 0.98239158372414,
+ 0.97610947553847,
+ 0.96891079029551
+};
+
+const int bv32_idxord[] =
+{
+ 0, 1, 2, 3, 4, 8, 16, 5, 9, 17, 6, 10, 18, 7, 11, 19,
+ 12, 20, 24, 13, 21, 25, 14, 22, 26, 15, 23, 27, 28, 29, 30, 31
+};
+
+/* spec */
+const Float bv32_lgpecb_nh[] =         /* Log-Gain Prediction Error Next-Higher CodeBook */
+{
+ -3.75049,
+ -3.09082,
+ -2.59961,
+ -2.22656,
+ -1.93408,
+ -1.25635,
+ -0.70117,
+ -0.16650,
+ -1.68457,
+ -1.06299,
+ -0.52588,
+ 0.01563,
+ 0.39941,
+ 1.05664,
+ 1.91602,
+ 3.34326,
+ -1.46240,
+ -0.88037,
+ -0.34717,
+ 0.20361,
+ 0.60693,
+ 1.31201,
+ 2.29736,
+ 4.11426,
+ 0.82568,
+ 1.59863,
+ 2.75684,
+ 5.20996,
+ 6.70410,
+ 8.74316,
+ 10.92188
+};
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommona2lspc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/a2lsp.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/a2lsp.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/a2lsp.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,261 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * a2lsp.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: a2lsp.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <math.h>
+#include "typedef.h"
+#include "bvcommon.h"
+
+#define        PI        3.14159265358979
+
+#define NAB        ((LPCO >> 1) + 1)
+
+static Float FNevChebP(Float x, Float *c, int nd2);
+
+#define NBIS 4 /* number of bisections */
+
+/*----------------------------------------------------------------------------
+* a2lsp - Convert predictor coefficients to line spectral pairs
+*
+* Description:
+* The transfer function of the prediction error filter is formed from the
+* predictor coefficients. This polynomial is transformed into two reciprocal
+* polynomials having roots on the unit circle. The roots of these polynomials
+* interlace. It is these roots that determine the line spectral pairs.
+* The two reciprocal polynomials are expressed as series expansions in
+* Chebyshev polynomials with roots in the range -1 to +1. The inverse cosine
+* of the roots of the Chebyshev polynomial expansion gives the line spectral
+* pairs. If np line spectral pairs are not found, this routine
+* stops with an error message. This error occurs if the input coefficients
+* do not give a prediction error filter with minimum phase.
+*
+* Line spectral pairs and predictor coefficients are usually expressed
+* algebraically as vectors.
+* lsp[0] first (lowest frequency) line spectral pair
+* lsp[i] 1 <= i < np
+* pc[0]=1.0 predictor coefficient corresponding to lag 0
+* pc[i] 1 <= 1 <= np
+*
+* Parameters:
+* -> Float pc[]
+* Vector of predictor coefficients (Np+1 values). These are the
+* coefficients of the predictor filter, with pc[0] being the predictor
+* coefficient corresponding to lag 0, and pc[Np] corresponding to lag Np.
+* The predictor coeffs. must correspond to a minimum phase prediction
+* error filter.
+* <- Float lsp[]
+* Array of Np line spectral pairss (in ascending order). Each line
+* spectral pair lies in the range 0 to pi.
+* -> int Np
+* Number of coefficients (at most LPCO = 50)
+*----------------------------------------------------------------------------
+*/
+
+void a2lsp(Float pc[], /* (i) input the np+1 predictor coeff. */
+ Float lsp[], /* (o) line spectral pairs */
+ Float old_lsp[]) /* (i/o) old lsp[] (in case not found 10 roots) */
+{
+ Float fa[NAB], fb[NAB];
+ Float ta[NAB], tb[NAB];
+ Float *t;
+ Float xlow, xmid, xhigh;
+ Float ylow, ymid, yhigh;
+ Float xroot;
+ Float dx;
+ int i, j, nf, nd2, nab = ((LPCO>>1) + 1), ngrd;
+
+ fb[0] = fa[0] = 1.0;
+ for (i = 1, j = LPCO; i <= (LPCO/2); i++, j--)
+ {
+ fa[i] = pc[i] + pc[j] - fa[i-1];
+ fb[i] = pc[i] - pc[j] + fb[i-1];
+ }
+
+ nd2 = LPCO/2;
+
+ /*
+ * To look for roots on the unit circle, Ga(D) and Gb(D) are evaluated for
+ * D=exp(jw). Since Gz(D) and Gb(D) are symmetric, they can be expressed in
+ * terms of a series in cos(nw) for D on the unit circle. Since M is odd and
+ * D=exp(jw)
+ *
+ * M-1 n
+ * Ga(D) = SUM fa(n) D (symmetric, fa(n) = fa(M-1-n))
+ * n=0
+ * Mh-1
+ * = exp(j Mh w) [ f1(Mh) + 2 SUM fa(n) cos((Mh-n)w) ]
+ * n=0
+ * Mh
+ * = exp(j Mh w) SUM ta(n) cos(nw),
+ * n=0
+ *
+ * where Mh=(M-1)/2=Nc-1. The Nc=Mh+1 coefficients ta(n) are defined as
+ *
+ * ta(n) = fa(Nc-1), n=0,
+ * = 2 fa(Nc-1-n), n=1,...,Nc-1.
+ * The next step is to identify cos(nw) with the Chebyshev polynomial T(n,x).
+ * The Chebyshev polynomials satisfy the relationship T(n,cos(w)) = cos(nw).
+ * Omitting the exponential delay term, the series expansion in terms of
+ * Chebyshev polynomials is
+ *
+ * Nc-1
+ * Ta(x) = SUM ta(n) T(n,x)
+ * n=0
+ *
+ * The domain of Ta(x) is -1 < x < +1. For a given root of Ta(x), say x0,
+ * the corresponding position of the root of Fa(D) on the unit circle is
+ * exp(j arccos(x0)).
+ */
+ ta[0] = fa[nab-1];
+ tb[0] = fb[nab-1];
+ for (i = 1, j = nab - 2; i < nab; ++i, --j)
+ {
+ ta[i] = 2.0 * fa[j];
+ tb[i] = 2.0 * fb[j];
+ }
+
+ /*
+ * To find the roots, we sample the polynomials Ta(x) and Tb(x) looking for
+ * sign changes. An interval containing a root is successively bisected to
+ * narrow the interval and then linear interpolation is used to estimate the
+ * root. For a given root at x0, the line spectral pair is w0=acos(x0).
+ *
+ * Since the roots of the two polynomials interlace, the search for roots
+ * alternates between the polynomials Ta(x) and Tb(x). The sampling interval
+ * must be small enough to avoid having two cancelling sign changes in the
+ * same interval. The sampling (grid) points were trained from a large amount
+ * of LSP vectors derived with high accuracy and stored in a table.
+ */
+
+ nf = 0;
+ t = ta;
+ xroot = 2.0;
+ ngrd = 0;
+ xlow = grid[0];
+ ylow = FNevChebP(xlow, t, nd2);
+
+
+ /* Root search loop */
+ while (ngrd<(Ngrd-1) && nf < LPCO)
+ {
+
+ /* New trial point */
+ ngrd++;
+ xhigh = xlow;
+ yhigh = ylow;
+ xlow = grid[ngrd];
+ ylow = FNevChebP(xlow, t, nd2);
+
+ if (ylow * yhigh <= 0.0)
+ {
+
+ /* Bisections of the interval containing a sign change */
+ dx = xhigh - xlow;
+ for (i = 1; i <= NBIS; ++i)
+ {
+ dx = 0.5 * dx;
+ xmid = xlow + dx;
+ ymid = FNevChebP(xmid, t, nd2);
+ if (ylow * ymid <= 0.0)
+ {
+ yhigh = ymid;
+ xhigh = xmid;
+ }
+ else
+ {
+ ylow = ymid;
+ xlow = xmid;
+ }
+ }
+
+ /*
+ * Linear interpolation in the subinterval with a sign change
+ * (take care if yhigh=ylow=0)
+ */
+ if (yhigh != ylow)
+ xmid = xlow + dx * ylow / (ylow - yhigh);
+ else
+ xmid = xlow + dx;
+
+ /* New root position */
+ lsp[nf] = acos(xmid)/PI;
+ ++nf;
+
+ /* Start the search for the roots of the next polynomial at the estimated
+ * location of the root just found. We have to catch the case that the
+ * two polynomials have roots at the same place to avoid getting stuck at
+ * that root.
+ */
+ if (xmid >= xroot)
+ {
+ xmid = xlow - dx;
+ }
+ xroot = xmid;
+ if (t == ta)
+ t = tb;
+ else
+ t = ta;
+ xlow = xmid;
+ ylow = FNevChebP(xlow, t, nd2);
+ }
+ }
+
+ if (nf != LPCO)
+ {
+ /* LPCO roots have not been found */
+ printf("\nWARNING: a2lsp failed to find all lsp nf=%d LPCO=%d\n", nf, LPCO);
+ for (i = 0; i < LPCO; i++)
+ lsp[i] = old_lsp[i];
+ }
+ else
+ {
+ /* Update LSP of previous frame with the new LSP */
+ for (i = 0; i < LPCO; i++)
+ old_lsp[i] = lsp[i];
+ }
+}
+
+static Float FNevChebP(Float x, /* (i) value         */
+ Float *c, /* (i) coefficient array */
+ int nd2)
+{
+ Float t;
+ Float b[NAB];
+ int        i;
+
+ t = x*2;
+ b[0] = c[nd2];
+ b[1] = c[nd2 - 1] + t*b[0];
+ for (i = 2; i < nd2; i++)
+ b[i] = c[nd2 - i] - b[i - 2] + t * b[i - 1];
+ return (c[0] - b[nd2 - 2] + x * b[nd2 - 1]);
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonallpolec"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/allpole.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/allpole.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/allpole.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * allpole.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: allpole.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bvcommon.h"
+
+#define MAXDIM        160 /* maximum vector dimension */
+#define MAXORDER LPCO /* maximum filter order */
+
+void apfilter(const Float *a, /* (i) a[m+1] prediction coefficients (m=10) */
+ int m, /* (i) LPC order */
+ Float *x, /* (i) input signal */
+ Float *y, /* (o) output signal */
+ int lg, /* (i) size of filtering */
+ Float *mem, /* (i/o) input memory */
+ int16_t update) /* (i) flag for memory update */
+{
+ Float buf[MAXORDER + MAXDIM]; /* buffer for filter memory & signal */
+ Float a0;
+ Float *fp1;
+ int i;
+ int n;
+
+ /* copy filter memory to beginning part of temporary buffer */
+ fp1 = &mem[m - 1];
+ for (i = 0; i < m; i++)
+ buf[i] = *fp1--; /* this buffer is used to avoid memory shifts */
+
+ /* loop through every element of the current vector */
+ for (n = 0; n < lg; n++)
+ {
+ /* perform multiply-adds along the delay line of filter */
+ fp1 = &buf[n];
+ a0 = x[n];
+ for (i = m; i > 0; i--)
+ a0 -= *fp1++ * a[i];
+
+ /* update the output & temporary buffer for filter memory */
+ y[n] = a0;
+ *fp1 = a0;
+ }
+
+ /* get the filter memory after filtering the current vector */
+ if (update)
+ {
+ for (i = 0; i < m; i++)
+ mem[i] = *fp1--;
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonallzeroc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/allzero.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/allzero.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/allzero.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * allzero.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: allzero.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bvcommon.h"
+
+#define MAXDIM        160 /* maximum vector dimension */
+#define MAXORDER LPCO /* maximum filter order */
+
+void azfilter(
+ const Float *a, /* (i) prediction coefficients */
+ int m, /* (i) LPC order */
+ Float *x, /* (i) input signal vector */
+ Float *y, /* (o) output signal vector */
+ int lg, /* (i) size of filtering */
+ Float *mem, /* (i/o) filter memory before filtering */
+ int16_t update) /* (i) flag for memory update */
+{
+ Float buf[MAXORDER + MAXDIM]; /* buffer for filter memory & signal */
+ Float a0;
+ Float *fp1;
+ int i;
+ int n;
+
+ /* copy filter memory to beginning part of temporary buffer */
+ fp1 = &mem[m - 1];
+ for (i = 0; i < m; i++)
+ buf[i] = *fp1--; /* this buffer is used to avoid memory shifts */
+
+ /* loop through every element of the current vector */
+ for (n = 0; n < lg; n++)
+ {
+ /* perform multiply-adds along the delay line of filter */
+ fp1 = &buf[n];
+ a0 = 0.0F;
+ for (i = m; i > 0; i--)
+ a0 += *fp1++ * a[i];
+
+ /* update the temporary buffer for filter memory */
+ *fp1 = x[n];
+
+ /* do the last multiply-add separately and get the output */
+ y[n] = a0 + x[n] * a[0];
+ }
+
+ /* get the filter memory after filtering the current vector */
+ if (update)
+ {
+ for (i = 0; i < m; i++)
+ mem[i] = *fp1--;
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonautocorc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/autocor.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/autocor.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/autocor.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * autocor.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: autocor.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdlib.h>
+
+#include "typedef.h"
+#include "bvcommon.h"
+
+#define WINSZ 320 /* maximum analysis window size */
+
+void Autocor(Float *r, /* (o) : Autocorrelations */
+ Float *x, /* (i) : Input signal */
+ const Float *window, /* (i) : LPC Analysis window */
+ int l_window, /* (i) : window length */
+ int m) /* (i) : LPC order */
+{
+ Float buf[WINSZ];
+ Float a0;
+ int i;
+ int n;
+
+ /* Apply analysis window */
+ for (n = 0; n < l_window; n++)
+ buf[n] = x[n]*window[n];
+
+ /* Compute autocorrealtion coefficients up to lag order */
+ for (i = 0; i <= m; i++)
+ {
+ a0 = 0.0F;
+ for (n = i; n < l_window; n++)
+ a0 += buf[n]*buf[n - i];
+ r[i] = a0;
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonbvcommonh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/bvcommon.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/bvcommon.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/bvcommon.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bvcommon.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bvcommon.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#include "typedef.h"
+
+#ifndef BVCOMMON_H
+#define BVCOMMON_H
+
+/* Function Prototypes */
+
+void apfilter(const Float *a, /* (i) a[m+1] prediction coefficients (m=10) */
+ int m, /* (i) LPC order */
+ Float *x, /* (i) input signal */
+ Float *y, /* (o) output signal */
+ int lg, /* (i) size of filtering */
+ Float *mem, /* (i/o) input memory */
+ int16_t update); /* (i) flag for memory update */
+
+void azfilter(const Float *a, /* (i) prediction coefficients */
+ int m, /* (i) LPC order */
+ Float *x, /* (i) input signal vector */
+ Float *y, /* (o) output signal vector */
+ int lg, /* (i) size of filtering */
+ Float *mem, /* (i/o) filter memory before filtering */
+ int16_t update); /* (i) flag for memory update */
+
+void Autocor(Float *r, /* (o) : Autocorrelations */
+ Float *x, /* (i) : Input signal */
+ const Float *window, /* (i) : LPC Analysis window */
+ int l_window, /* (i) : window length */
+ int m); /* (i) : LPC order */
+
+void Levinson(Float *r,         /* (i): autocorrelation coefficients */
+ Float *a,         /* (o): LPC coefficients */
+ Float *old_a,         /* (i/o): LPC coefficients of previous frame */
+ int m); /* (i): LPC order */
+
+void a2lsp(Float pc[], /* (i) input the np+1 predictor coeff. */
+ Float lsp[], /* (o) line spectral pairs */
+ Float old_lsp[]); /* (i/o) old lsp[] (in case not found 10 roots) */
+
+void lsp2a(Float *lsp, /* (i) LSP vector */
+ Float *a); /* (o) LPC coefficients */
+
+void stblz_lsp(Float *lsp, int order);
+
+int stblchck(Float *x, int vdim);
+
+/* LPC to LSP Conversion */
+extern Float grid[];
+
+/* LPC bandwidth expansion */
+extern Float bwel[];
+
+/* LPC WEIGHTING FILTER */
+extern Float STWAL[];
+
+/* ----- Basic Codec Parameters ----- */
+#define LPCO 8 /* LPC Order */
+#define Ngrd 60 /* LPC to LSP Conversion */
+
+#define LSPMIN 0.00150 /* minimum LSP frequency, 6/12 Hz for BV16/BV32 */
+#define LSPMAX 0.99775 /* maximum LSP frequency, 3991/7982 Hz for BV16/BV32 */
+#define DLSPMIN 0.01250 /* minimum LSP spacing, 50/100 Hz for BV16/BV32 */
+#define STBLDIM 3 /* dimension of stability enforcement */
+
+#endif /* BVCOMMON_H */
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommoncmtablesc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/cmtables.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/cmtables.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/cmtables.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * cmtables.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: cmtables.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+
+Float        bwel[] =
+{
+ 1.000000, 0.968526251091, 0.938025365420, 0.908506308303, 0.879914932377,
+ 0.852235186110, 0.825387345342, 0.799409908158, 0.774255089985
+};
+
+Float STWAL[]=
+{
+ 1.000000, 0.750000, 0.562500, 0.421875, 0.316406, 0.237305, 0.177979, 0.133484, 0.100098
+};
+
+Float grid[]=
+{
+ 0.9999390, 0.9935608, 0.9848633, 0.9725342, 0.9577942, 0.9409180, 0.9215393, 0.8995972,
+ 0.8753662, 0.8487854, 0.8198242, 0.7887573, 0.7558899, 0.7213440, 0.6853943, 0.6481323,
+ 0.6101379, 0.5709839, 0.5300903, 0.4882507, 0.4447632, 0.3993530, 0.3531189, 0.3058167,
+ 0.2585754, 0.2109680, 0.1630859, 0.1148682, 0.0657349, 0.0161438, -0.0335693, -0.0830994,
+ -0.1319580, -0.1804199, -0.2279663, -0.2751465, -0.3224487, -0.3693237, -0.4155884, -0.4604187,
+ -0.5034180, -0.5446472, -0.5848999, -0.6235962, -0.6612244, -0.6979980, -0.7336731, -0.7675781,
+ -0.7998962, -0.8302002, -0.8584290, -0.8842468, -0.9077148, -0.9288635, -0.9472046, -0.9635010,
+ -0.9772034, -0.9883118, -0.9955139, -0.9999390
+};
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonlevdurc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/levdur.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/levdur.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/levdur.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * levdur.c - Levinson Durbin
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: levdur.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bvcommon.h"
+
+/* Levinson-Durbin recursion */
+void Levinson(Float *r, /* (i): autocorrelation coefficients */
+ Float *a,         /* (o): LPC coefficients */
+ Float *old_a,         /* (i/o): LPC coefficients of previous frame */
+ int m)         /* (i): LPC order */
+{
+ Float alpha;
+ Float a0, a1;
+ Float rc, *aip, *aib, *alp;
+ int mh, minc, ip;
+
+ *a = 1.;
+ if (*r <= 0.0)
+ goto illcond;
+
+ /* start durbin's recursion */
+ rc = - *(r + 1) / *r;
+ *(a + 1) = rc;
+ alpha = *r + *(r+1) * rc;
+ if (alpha <= 0.0)
+ goto illcond;
+ for (minc = 2; minc <= m; minc++)
+ {
+ a0 = 0.0;
+ aip = a;
+ aib = r + minc;
+ for (ip = 0; ip <= minc - 1; ip++)
+ a0 = a0 + *aib-- * *aip++;
+ rc = -a0 / alpha;
+ mh = minc / 2;
+ aip = a + 1;
+ aib = a + minc - 1;
+ for (ip = 1; ip <= mh; ip++)
+ {
+ a1 = *aip + rc * *aib;
+ *aib = *aib + rc * *aip;
+ aib--;
+ *aip++ = a1;
+ }
+ *(a+minc) = rc;
+ alpha = alpha + rc * a0;
+ if (alpha <= 0.0)
+ goto illcond;
+ }
+
+ aip = a;
+ alp = old_a;
+ for (ip = 0; ip <= m; ip++)
+ *alp++ = *aip++;
+
+ return;
+illcond:
+ aip = a;
+ alp = old_a;
+ for (ip = 0; ip <= m; ip++)
+ *aip++ = *alp++;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonlsp2ac"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/lsp2a.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/lsp2a.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/lsp2a.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * lsp2a.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: lsp2a.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <math.h>
+#include "typedef.h"
+#include "bvcommon.h"
+
+#define OR (LPCO+1)        /* Maximum LPC order */
+#define PI 3.14159265358979
+
+void lsp2a(
+ Float *lsp,        /* (i) LSP vector */
+ Float *a)         /* (o) LPC coefficients */
+{
+ Float c1, c2, p[OR], q[OR];
+ int orderd2, n, i, nor;
+
+ orderd2=LPCO/2;
+ for (i = 1; i <= LPCO ; i++)
+ p[i] = q[i]= 0.;
+ /* Get Q & P polyn. less the (1 +- z-1) ( or (1 +- z-2) ) factor */
+ p[0] = q[0] = 1.;
+ for (n = 1; n <= orderd2; n++)
+ {
+ nor= 2 * n;
+ c1 = 2. * cos((double)PI*lsp[nor-1]);
+ c2 = 2. * cos((double)PI*lsp[nor-2]);
+ for (i = nor; i >= 2; i--)
+ {
+ q[i] += q[i-2] - c1*q[i-1];
+ p[i] += p[i-2] - c2*p[i-1];
+ }
+ q[1] -= c1;
+ p[1] -= c2;
+ }
+ /* Get the the predictor coeff. */
+ a[0] = 1.;
+ a[1] = 0.5 * (p[1] + q[1]);
+ for (i=1, n=2; i < LPCO ; i++, n++)
+ a[n] = 0.5 * (p[i] + p[n] + q[n] - q[i]);
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonstblchckc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/stblchck.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/stblchck.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/stblchck.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * stblchck.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: stblchck.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "bvcommon.h"
+
+int stblchck(Float *x, int vdim)
+{
+ int k;
+ int stbl;
+
+ if (x[0] < 0.0)
+ {
+ stbl = 0;
+ }
+ else
+ {
+ stbl = 1;
+ for (k = 1; k < vdim; k++)
+ {
+ if (x[k] - x[k-1] < 0.0)
+ stbl = 0;
+ }
+ }
+ return stbl;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonstblzlspc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/stblzlsp.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/stblzlsp.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/stblzlsp.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,94 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * stblzlsp.c - Find stability flag (LSPs)
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: stblzlsp.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+//#include "bv16cnst.h"
+#include "bvcommon.h"
+
+void stblz_lsp(Float *lsp, int order)
+{
+
+ /* This function orders the lsp to prevent */
+ /* unstable synthesis filters and imposes basic */
+ /* lsp properties in order to avoid marginal */
+ /* stability of the synthesis filter. */
+
+ int k, i;
+ Float mintmp, maxtmp, a0;
+
+
+ /* order lsps as minimum stability requirement */
+ do
+ {
+ k = 0; /* use k as a flag for order reversal */
+ for (i = 0; i < order - 1; i++)
+ {
+ if (lsp[i] > lsp[i+1]) /* if there is an order reversal */
+ {
+ a0 = lsp[i+1];
+ lsp[i+1] = lsp[i]; /* swap the two LSP elements */
+ lsp[i] = a0;
+ k = 1; /* set the flag for order reversal */
+ }
+ }
+ }
+ while (k > 0); /* repeat order checking if there was order reversal */
+
+
+ /* impose basic lsp properties */
+ maxtmp=LSPMAX-(order-1)*DLSPMIN;
+
+ if (lsp[0] < LSPMIN)
+ lsp[0] = LSPMIN;
+ else if (lsp[0] > maxtmp)
+ lsp[0] = maxtmp;
+
+ for (i=0; i<order-1; i++)
+ {
+ /* space lsp(i+1) */
+
+ /* calculate lower and upper bound for lsp(i+1) */
+ mintmp=lsp[i]+DLSPMIN;
+ maxtmp += DLSPMIN;
+
+ /* guarantee minimum spacing to lsp(i) */
+ if (lsp[i+1] < mintmp)
+ lsp[i+1] = mintmp;
+
+ /* make sure the remaining lsps fit within the remaining space */
+ else if (lsp[i+1] > maxtmp)
+ lsp[i+1] = maxtmp;
+
+ }
+
+ return;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommontypedefh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/typedef.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/typedef.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/typedef.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * typedef.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: typedef.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_TYPEDEF_H_)
+#define        _TYPEDEF_H_
+
+#include <inttypes.h>
+
+typedef        double Float;
+
+#endif
+
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonutilityc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/utility.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/utility.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/utility.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * utility.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: utility.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "typedef.h"
+#include "utility.h"
+
+void Fcopy(Float *y, Float *x, int size)
+{
+ while ((size--) > 0)
+ *y++ = *x++;
+}
+
+void Fzero(Float *x, int size)
+{
+ while ((size--) > 0)
+ *x++ = 0.0;
+}
+
+void F2s(int16_t *s, Float *f, int size)
+{
+ Float t;
+ int16_t v;
+ int i;
+
+ for (i = 0; i < size; i++)
+ {
+ t = *f++;
+
+ /* Rounding */
+ if (t >= 0)
+ t += 0.5;
+ else
+ t -= 0.5;
+
+ if (t > 32767.0)
+ v = 32767;
+ else if (t < -32768.0)
+ v = -32768;
+ else
+ v = (int16_t) t;
+ *s++ = v;
+ }
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcfloatingcommonutilityh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/floating/common/utility.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/floating/common/utility.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/floating/common/utility.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * utility.h -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: utility.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#include "typedef.h"
+
+extern void Fcopy(Float *y, Float *x, int size);
+extern void Fzero(Float *x, int size);
+extern void F2s(int16_t *s, Float *f, int size);
+
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcbroadvoicedef"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/broadvoice.def (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/broadvoice.def         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/broadvoice.def        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+EXPORTS
+
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcgettimeofdayc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/gettimeofday.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/gettimeofday.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/gettimeofday.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+#ifdef _MSC_VER
+#pragma warning(disable:4100)
+#endif
+
+#include "windows.h"
+
+void gettimeofday(struct timeval *tv, void *tz)
+{
+ long int l = GetTickCount();
+
+ tv->tv_sec = l / 1000;
+ tv->tv_usec = (l % 1000) * 1000;
+ return;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcinttypesh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/inttypes.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/inttypes.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/inttypes.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * inttypes.h - a fudge for MSVC, which lacks this header
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2006 Michael Jerris
+ *
+ *
+ * This file is released in the public domain.
+ *
+ */
+
+#if !defined(_INTTYPES_H_)
+#define _INTTYPES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef _MSC_VER
+#if (_MSC_VER >= 1400) // VC8+
+#ifndef _CRT_SECURE_NO_DEPRECATE
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+#ifndef _CRT_NONSTDC_NO_DEPRECATE
+#define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+#endif // VC8+
+#include <windows.h>
+typedef unsigned __int8                uint8_t;
+typedef unsigned __int16        uint16_t;
+typedef unsigned __int32        uint32_t;
+typedef unsigned __int64 uint64_t;
+typedef __int8                int8_t;
+typedef __int16                int16_t;
+typedef __int32                int32_t;
+typedef __int64                int64_t;
+#define inline __inline
+#define __inline__ __inline
+#define INT16_MAX 0x7fff
+#define INT16_MIN (-INT16_MAX - 1)
+#define _MMX_H_
+
+/* disable the following warnings
+ * C4100: The formal parameter is not referenced in the body of the function. The unreferenced parameter is ignored.
+ * C4200: Non standard extension C zero sized array
+ * C4706: assignment within conditional expression
+ * C4244: conversion from 'type1' to 'type2', possible loss of data
+ * C4295: array is too small to include a terminating null character
+ * C4125: decimal digit terminates octal escape sequence
+ */
+#pragma warning(disable:4100 4200 4706 4295 4125)
+
+#pragma comment(lib, "ws2_32.lib")
+
+#define strncasecmp _strnicmp
+#define strcasecmp _stricmp
+#define snprintf _snprintf
+
+#if !defined(INFINITY)
+#define INFINITY 0x7fffffff
+#endif
+#endif
+
+#define PACKAGE "ilbc"
+#define VERSION "0.0.1andabit"
+
+#define INT32_MAX        (2147483647)
+#define INT32_MIN        (-2147483647 - 1)
+
+#define PRId8 "d"
+#define PRId16 "d"
+#define PRId32 "ld"
+#define PRId64 "lld"
+
+#define PRIu8 "u"
+#define PRIu16 "u"
+#define PRIu32 "lu"
+#define PRIu64 "llu"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcmsvcprojfoot"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.foot (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.foot         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.foot        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcmsvcprojhead"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.head (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.head         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/msvcproj.head        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+# Microsoft Developer Studio Project File - Name="g722_1" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=g722_1 - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "g722_1.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "g722_1.mak" CFG="g722_1 - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "g722_1 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "g722_1 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "g722_1 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /Zi /O2 /I "." /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /D "_WINDLL" /FR /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /map /debug /machine:I386 /out:"Release/libg722_1.dll"
+
+!ELSEIF "$(CFG)" == "g722_1 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "." /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D HAVE_TGMATH_H /FR /FD /GZ /c
+# SUBTRACT CPP /WX /YX
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib ws2_32.lib winmm.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"Debug/libg722_1.dll" /pdbtype:sept
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF
+
+# Begin Target
+
+# Name "g722_1 - Win32 Release"
+# Name "g722_1 - Win32 Debug"
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcsystimeh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/sys/time.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/sys/time.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/sys/time.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+extern void gettimeofday(struct timeval *tv, void *tz);
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvctgmathh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/tgmath.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/tgmath.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/tgmath.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * tgmath.h - a fudge for MSVC, which lacks this header
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2006 Michael Jerris
+ *
+ *
+ * This file is released in the public domain.
+ *
+ */
+
+#if !defined(_TGMATH_H_)
+#define _TGMATH_H_
+
+#include <math.h>
+
+#if !defined(M_PI)
+/* C99 systems may not define M_PI */
+#define M_PI 3.14159265358979323846264338327
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* A kindofa rint() for VC++ (only kindofa, because rint should be type generic,
+ and this one is purely float to int */
+static inline long int lrintf(float a)
+{
+ long int i;
+
+ __asm
+ {
+ fld a
+ fistp i
+ }
+ return i;
+}
+
+static inline long int lrint(double a)
+{
+ long int i;
+
+ __asm
+ {
+ fld a
+ fistp i
+ }
+ return i;
+}
+
+static inline int rintf(float a)
+{
+ int i;
+
+ __asm
+ {
+ fld a
+ fistp i
+ }
+ return i;
+}
+
+static inline int rint(double a)
+{
+ int i;
+
+ __asm
+ {
+ fld a
+ fistp i
+ }
+ return i;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcunistdh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/unistd.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/unistd.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/unistd.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * inttypes.h - a fudge for MSVC, which lacks this header
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2006 Michael Jerris
+ *
+ *
+ * This file is released in the public domain.
+ *
+ */
+
+#if !defined(_INTTYPES_H_)
+#define _INTTYPES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define open _open
+#define write _write
+
+extern int gethostname (char *name, size_t len);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcvc8projfoot"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.foot (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.foot         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.foot        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+                </Filter>
+                <Filter
+                        Name="Resource Files"
+                        Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+                        UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+                        >
+                </Filter>
+        </Files>
+        <Globals>
+        </Globals>
+</VisualStudioProject>
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicesrcmsvcvc8projhead"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.head (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.head         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/src/msvc/vc8proj.head        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,180 @@
</span><ins>+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+        ProjectType="Visual C"
+        Version="9.00"
+        Name="libg722_1"
+        ProjectGUID="{CF70F278-3364-4395-A2E1-23501C9B8AD2}"
+        RootNamespace="libg722_1"
+        Keyword="Win32Proj"
+        TargetFrameworkVersion="131072"
+        >
+        <Platforms>
+                <Platform
+                        Name="Win32"
+                />
+        </Platforms>
+        <ToolFiles>
+        </ToolFiles>
+        <Configurations>
+                <Configuration
+                        Name="Debug|Win32"
+                        OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+                        IntermediateDirectory="$(ConfigurationName)"
+                        ConfigurationType="2"
+                        CharacterSet="1"
+                        >
+                        <Tool
+                                Name="VCPreBuildEventTool"
+                        />
+                        <Tool
+                                Name="VCCustomBuildTool"
+                        />
+                        <Tool
+                                Name="VCXMLDataGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCWebServiceProxyGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCMIDLTool"
+                        />
+                        <Tool
+                                Name="VCCLCompilerTool"
+                                Optimization="0"
+                                AdditionalIncludeDirectories="src; src\g722_1; src\msvc"
+                                PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H"
+                                MinimalRebuild="true"
+                                BasicRuntimeChecks="3"
+                                RuntimeLibrary="3"
+                                UsePrecompiledHeader="0"
+                                WarningLevel="4"
+                                Detect64BitPortabilityProblems="true"
+                                DebugInformationFormat="4"
+                                CompileAs="1"
+                        />
+                        <Tool
+                                Name="VCManagedResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCPreLinkEventTool"
+                        />
+                        <Tool
+                                Name="VCLinkerTool"
+                                LinkIncremental="2"
+                                ModuleDefinitionFile="src/msvc/g722_1.def"
+                                GenerateDebugInformation="true"
+                                SubSystem="2"
+                                RandomizedBaseAddress="1"
+                                DataExecutionPrevention="0"
+                                TargetMachine="1"
+                        />
+                        <Tool
+                                Name="VCALinkTool"
+                        />
+                        <Tool
+                                Name="VCManifestTool"
+                        />
+                        <Tool
+                                Name="VCXDCMakeTool"
+                        />
+                        <Tool
+                                Name="VCBscMakeTool"
+                        />
+                        <Tool
+                                Name="VCFxCopTool"
+                        />
+                        <Tool
+                                Name="VCAppVerifierTool"
+                        />
+                        <Tool
+                                Name="VCPostBuildEventTool"
+                        />
+                </Configuration>
+                <Configuration
+                        Name="Release|Win32"
+                        OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+                        IntermediateDirectory="$(ConfigurationName)"
+                        ConfigurationType="2"
+                        CharacterSet="1"
+                        WholeProgramOptimization="1"
+                        >
+                        <Tool
+                                Name="VCPreBuildEventTool"
+                        />
+                        <Tool
+                                Name="VCCustomBuildTool"
+                        />
+                        <Tool
+                                Name="VCXMLDataGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCWebServiceProxyGeneratorTool"
+                        />
+                        <Tool
+                                Name="VCMIDLTool"
+                        />
+                        <Tool
+                                Name="VCCLCompilerTool"
+                                AdditionalIncludeDirectories="src; src\g722_1; src\msvc"
+                                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBG722_1_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;HAVE_TGMATH_H"
+                                RuntimeLibrary="2"
+                                UsePrecompiledHeader="0"
+                                WarningLevel="4"
+                                Detect64BitPortabilityProblems="true"
+                                DebugInformationFormat="3"
+                        />
+                        <Tool
+                                Name="VCManagedResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCResourceCompilerTool"
+                        />
+                        <Tool
+                                Name="VCPreLinkEventTool"
+                        />
+                        <Tool
+                                Name="VCLinkerTool"
+                                LinkIncremental="1"
+                                ModuleDefinitionFile="src/msvc/g722_1.def"
+                                GenerateDebugInformation="true"
+                                SubSystem="2"
+                                OptimizeReferences="2"
+                                EnableCOMDATFolding="2"
+                                RandomizedBaseAddress="1"
+                                DataExecutionPrevention="0"
+                                TargetMachine="1"
+                        />
+                        <Tool
+                                Name="VCALinkTool"
+                        />
+                        <Tool
+                                Name="VCManifestTool"
+                        />
+                        <Tool
+                                Name="VCXDCMakeTool"
+                        />
+                        <Tool
+                                Name="VCBscMakeTool"
+                        />
+                        <Tool
+                                Name="VCFxCopTool"
+                        />
+                        <Tool
+                                Name="VCAppVerifierTool"
+                        />
+                        <Tool
+                                Name="VCPostBuildEventTool"
+                        />
+                </Configuration>
+        </Configurations>
+        <References>
+        </References>
+        <Files>
+                <Filter
+                        Name="Source Files"
+                        Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+                        UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+                        >
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdataMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS = broadcom local
+
+DIST_SUBDIRS = broadcom local
+
+EXTRA_DIST =
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS = fixed \
+ floating
+
+DIST_SUBDIRS = fixed \
+ floating
+
+EXTRA_DIST =
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS = bv16 \
+ bv32
+
+DIST_SUBDIRS = bv16 \
+ bv32
+
+EXTRA_DIST =
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16Makefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS =
+
+DIST_SUBDIRS =
+
+EXTRA_DIST = tv.bfe10.bv16 \
+ tv.bv16.bfe10.ref.raw \
+ tv.bv16.ref \
+ tv.bv16.ref.raw \
+ tv.raw
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbfe10bv16"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bfe10.bv16</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bfe10.bv16
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbv16bfe10refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.bfe10.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.bfe10.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbv16ref"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.ref</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.ref
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvbv16refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.bv16.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv16tvraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv16/tv.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32Makefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS =
+
+DIST_SUBDIRS =
+
+EXTRA_DIST = tv.bfe10.bv32 \
+ tv.bv32.bfe10.ref.raw \
+ tv.bv32.ref \
+ tv.bv32.ref.raw \
+ tv.raw
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbfe10bv32"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bfe10.bv32</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bfe10.bv32
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbv32bfe10refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.bfe10.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.bfe10.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbv32ref"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.ref</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.ref
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvbv32refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.bv32.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfixedbv32tvraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/fixed/bv32/tv.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS = bv16 \
+ bv32
+
+DIST_SUBDIRS = bv16 \
+ bv32
+
+EXTRA_DIST =
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16Makefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS =
+
+DIST_SUBDIRS =
+
+EXTRA_DIST = tv.bfe10.bv16 \
+ tv.bv16.bfe10.ref.raw \
+ tv.bv16.ref \
+ tv.bv16.ref.raw \
+ tv.raw
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbfe10bv16"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bfe10.bv16</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bfe10.bv16
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbv16bfe10refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.bfe10.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.bfe10.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbv16ref"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.ref</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.ref
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvbv16refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.bv16.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv16tvraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv16/tv.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32Makefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS =
+
+DIST_SUBDIRS =
+
+EXTRA_DIST = tv.bfe10.bv32 \
+ tv.bv32.bfe10.ref.raw \
+ tv.bv32.ref \
+ tv.bv32.ref.raw \
+ tv.raw
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbfe10bv32"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bfe10.bv32</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bfe10.bv32
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbv32bfe10refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.bfe10.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.bfe10.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbv32ref"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.ref</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.ref
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvbv32refraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.ref.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.bv32.ref.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatabroadcomfloatingbv32tvraw"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.raw</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/broadcom/floating/bv32/tv.raw
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatalocalMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/local/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/test-data/local/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/test-data/local/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+SUBDIRS =
+
+DIST_SUBDIRS =
+
+EXTRA_DIST = short_nb_voice.wav \
+ short_wb_voice.wav
+
+all:
+
+clean:
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestdatalocalshort_nb_voicewav"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/local/short_nb_voice.wav</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/local/short_nb_voice.wav
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestdatalocalshort_wb_voicewav"></a>
<div class="binary"><h4>Added: freeswitch/trunk/libs/broadvoice/test-data/local/short_wb_voice.wav</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/test-data/local/short_wb_voice.wav
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:mime-type
</span><span class="cx"> + application/octet-stream
</span><a id="freeswitchtrunklibsbroadvoicetestsMakefileam"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/Makefile.am (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/Makefile.am         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/Makefile.am        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+##
+## broadvoice - a library for the BroadVoice 16 and 32 codecs
+##
+## Makefile.am -- Process this file with automake to produce Makefile.in
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License version 2, as
+## published by the Free Software Foundation.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+## $Id: Makefile.am,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+
+AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
+AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
+
+LIBS += $(TESTLIBS)
+
+EXTRA_DIST = regression_tests.sh \
+ bv16_fixed_tests.sh \
+ bv32_fixed_tests.sh \
+ bv16_floating_tests.sh \
+ bv32_floating_tests.sh
+
+MAINTAINERCLEANFILES = Makefile.in
+
+INCLUDES = -I$(top_builddir)/src -DDATADIR="\"$(pkgdatadir)\""
+
+LIBDIR = -L$(top_builddir)/src
+
+noinst_PROGRAMS = bv16_tests \
+ bv32_tests
+
+noinst_HEADERS = g192_bit_stream.h \
+ timing.h
+
+bv16_tests_SOURCES = bv16_tests.c g192_bit_stream.c
+bv16_tests_LDADD = $(LIBDIR) -lbroadvoice
+
+bv32_tests_SOURCES = bv32_tests.c g192_bit_stream.c
+bv32_tests_LDADD = $(LIBDIR) -lbroadvoice
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsbv16_fixed_testssh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/bv16_fixed_tests.sh (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/bv16_fixed_tests.sh         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/bv16_fixed_tests.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+#!/bin/bash
+
+TESTDATADIR=../test-data/broadcom/fixed/bv16
+
+# Clean
+if test -f tv.bv16
+then
+\rm tv.bv16
+fi
+if test -f tv.bv16.raw
+then
+\rm tv.bv16.raw
+fi
+if test -f bit.enc.tmp
+then
+\rm bit.enc.tmp
+fi
+if test -f bit.dec.tmp
+then
+\rm bit.dec.tmp
+fi
+if test -f tv.bv16.bfe10.raw
+then
+\rm tv.bv16.bfe10.raw
+fi
+
+# Set error pattern files
+./bv16_tests enc ${TESTDATADIR}/tv.raw tv.bv16
+./bv16_tests dec ${TESTDATADIR}/tv.bv16.ref tv.bv16.raw
+./bv16_tests dec ${TESTDATADIR}/tv.bfe10.bv16 tv.bv16.bfe10.raw
+
+checksum=0;
+if test -n "`cmp tv.bv16 ${TESTDATADIR}/tv.bv16.ref`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv16.raw ${TESTDATADIR}/tv.bv16.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv16.bfe10.raw ${TESTDATADIR}/tv.bv16.bfe10.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+
+if test $checksum -eq 0
+then
+echo " **************************************************************************"
+echo " * CONGRATULATIONS: Your compilation passed the simple functionality test *"
+echo " **************************************************************************"
+echo ""
+\rm tv.bv16 tv.bv16.raw tv.bv16.bfe10.raw
+else
+echo " ************************************************************************"
+echo " * WARNING: Your compilation DID NOT pass the simple functionality test *"
+echo " ************************************************************************"
+echo ""
+fi
</ins><span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/tests/bv16_fixed_tests.sh
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:executable
</span><span class="cx"> + *
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsbv16_floating_testssh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/bv16_floating_tests.sh (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/bv16_floating_tests.sh         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/bv16_floating_tests.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+#!/bin/bash
+
+TESTDATADIR=../test-data/broadcom/floating/bv16
+
+# Clean
+if test -f tv.bv16
+then
+\rm tv.bv16
+fi
+if test -f tv.bv16.raw
+then
+\rm tv.bv16.raw
+fi
+if test -f bit.enc.tmp
+then
+\rm bit.enc.tmp
+fi
+if test -f bit.dec.tmp
+then
+\rm bit.dec.tmp
+fi
+if test -f tv.bv16.bfe10.raw
+then
+\rm tv.bv16.bfe10.raw
+fi
+
+# Set error pattern files
+./bv16_tests enc ${TESTDATADIR}/tv.raw tv.bv16
+./bv16_tests dec ${TESTDATADIR}/tv.bv16.ref tv.bv16.raw
+./bv16_tests dec ${TESTDATADIR}/tv.bfe10.bv16 tv.bv16.bfe10.raw
+
+checksum=0;
+if test -n "`cmp tv.bv16 ${TESTDATADIR}/tv.bv16.ref`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv16.raw ${TESTDATADIR}/tv.bv16.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv16.bfe10.raw ${TESTDATADIR}/tv.bv16.bfe10.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+
+if test $checksum -eq 0
+then
+echo " **************************************************************************"
+echo " * CONGRATULATIONS: Your compilation passed the simple functionality test *"
+echo " **************************************************************************"
+echo ""
+\rm tv.bv16 tv.bv16.raw tv.bv16.bfe10.raw
+else
+echo " ************************************************************************"
+echo " * WARNING: Your compilation DID NOT pass the simple functionality test *"
+echo " ************************************************************************"
+echo ""
+fi
</ins><span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/tests/bv16_floating_tests.sh
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:executable
</span><span class="cx"> + *
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsbv16_testsc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/bv16_tests.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/bv16_tests.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/bv16_tests.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,187 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv16_tests.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv16_tests.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define BROADVOICE_EXPOSE_INTERNAL_STRUCTURES
+#include "broadvoice.h"
+#include "g192_bit_stream.h"
+
+#define G192BITSTREAM
+
+int frame;
+int16_t bfi = 0;
+
+static void usage(const char *name)
+{
+ fprintf(stderr, "usage: %s enc|dec input output\n", name);
+ fprintf(stderr, "\nFormat for speech_file:\n Binary file of 8 kHz sampled 16-bit PCM data.\n");
+#if defined(G192BITSTREAM)
+ fprintf(stderr, "\nFormat for bitstream_file per frame: ITU-T G.192 format\n\
+ One (2-byte) synchronization word [0x6B21],\n\
+ One (2-byte) size word,\n\
+ 160 words (2-byte) containing 160 bits.\n\n");
+#else
+ fprintf(stderr, "\nFormat for bitstream_file per frame: Packed Bits\n");
+#endif
+ exit(1);
+}
+
+int main(int argc, char **argv)
+{
+ FILE *fi;
+ FILE *fo;
+ FILE *fbdi = NULL;
+ int enc = 1;
+ int nread;
+ int i;
+ int len;
+ int16_t x[BV16_FRAME_LEN];
+ bv16_encode_state_t *cs;
+ bv16_decode_state_t *ds;
+ uint8_t PackedStream[10];
+ int next_bad_frame = -1;
+ int packing;
+
+ if ((argc != 4) && (argc != 5))
+ usage(argv[0]);
+ if (!strcmp(argv[1], "enc"))
+ enc = 1;
+ else if (!strcmp(argv[1], "dec"))
+ enc = 0;
+ else
+ usage(argv[0]);
+
+ if (!(fi = fopen(argv[2], "rb")))
+ {
+ fprintf(stderr, "error: can't read %s\n", argv[2]);
+ exit(2);
+ }
+ if (!(fo = fopen(argv[3], "wb")))
+ {
+ fprintf(stderr, "error: can't write to %s\n", argv[3]);
+ exit(3);
+ }
+ if (argc == 5)
+ {
+ if (!(fbdi = fopen(argv[4], "rb")))
+ {
+ fprintf(stderr, "error: can't read %s\n", argv[4]);
+ exit(3);
+ }
+ }
+
+ if (enc)
+ {
+ fprintf(stderr, " BroadVoice16 Encoder V1.0 with ITU-T G.192\n");
+ fprintf(stderr, " Input speech file : %s\n", argv[2]);
+ fprintf(stderr, " Output bit-stream file: %s\n", argv[3]);
+ }
+ else
+ {
+ fprintf(stderr, " BroadVoice16 Decoder V1.0 with ITU-T G.192\n");
+ fprintf(stderr, " Input bit-stream file : %s\n", argv[2]);
+ fprintf(stderr, " Output speech file : %s\n", argv[3]);
+ }
+
+#if defined(G192BITSTREAM)
+ packing = ITU_CODEC_BITSTREAM_G192;
+#else
+ packing = ITU_CODEC_BITSTREAM_PACKED;
+#endif
+
+ cs = NULL;
+ ds = NULL;
+ if (enc)
+ cs = bv16_encode_init(NULL);
+ else
+ ds = bv16_decode_init(NULL);
+
+ frame = 0;
+ /* Read for the 1st bad frame */
+ if (fbdi != NULL)
+ fscanf(fbdi, "%d", &next_bad_frame);
+
+ for (;;)
+ {
+ frame++;
+
+ /* Read one speech frame */
+ if (enc == 1)
+ {
+ nread = fread(x, sizeof(int16_t), BV16_FRAME_LEN, fi);
+ if (nread <= 0)
+ break;
+ for (i = nread; i < BV16_FRAME_LEN; i++)
+ x[i] = 0;
+
+ len = bv16_encode(cs, PackedStream, x, BV16_FRAME_LEN);
+ itu_codec_bitstream_write(PackedStream, 8*len, packing, fo);
+ }
+ else
+ {
+ nread = itu_codec_bitstream_read(PackedStream, &bfi, 80, packing, fi);
+ if (nread <= 0)
+ break;
+ if (frame == next_bad_frame)
+ {
+ fscanf(fbdi, "%d", &next_bad_frame);
+ bfi = 1;
+ }
+
+ if (bfi)
+ len = bv16_fillin(ds, x, BV16_FRAME_LEN);
+ else
+ len = bv16_decode(ds, x, PackedStream, 10);
+ fwrite(x, sizeof(int16_t), len, fo);
+ }
+ }
+
+ if (enc)
+ bv16_encode_free(cs);
+ else
+ bv16_decode_free(ds);
+
+ fprintf(stderr, "\r %d %d-sample frames processed.\n", --frame, BV16_FRAME_LEN);
+
+ fclose(fi);
+ fclose(fo);
+
+ if (fbdi != NULL)
+ fclose(fbdi);
+
+ fprintf(stderr, "\n\n");
+
+ return 0;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsbv32_fixed_testssh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/bv32_fixed_tests.sh (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/bv32_fixed_tests.sh         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/bv32_fixed_tests.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+#!/bin/bash
+
+TESTDATADIR=../test-data/broadcom/fixed/bv32
+
+# Clean
+if test -f tv.bv32
+then
+\rm tv.bv32
+fi
+if test -f tv.bv32.raw
+then
+\rm tv.bv32.raw
+fi
+if test -f tv.bv32.bfe10.raw
+then
+\rm tv.bv32.bfe10.raw
+fi
+
+# Set error pattern files
+./bv32_tests enc ${TESTDATADIR}/tv.raw tv.bv32
+./bv32_tests dec ${TESTDATADIR}/tv.bv32.ref tv.bv32.raw
+./bv32_tests dec ${TESTDATADIR}/tv.bfe10.bv32 tv.bv32.bfe10.raw
+
+checksum=0;
+if test -n "`cmp tv.bv32 ${TESTDATADIR}/tv.bv32.ref`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv32.raw ${TESTDATADIR}/tv.bv32.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv32.bfe10.raw ${TESTDATADIR}/tv.bv32.bfe10.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+
+if test $checksum -eq 0
+then
+echo " **************************************************************************"
+echo " * CONGRATULATIONS: Your compilation passed the simple functionality test *"
+echo " **************************************************************************"
+echo ""
+\rm tv.bv32 tv.bv32.raw tv.bv32.bfe10.raw
+else
+echo " ************************************************************************"
+echo " * WARNING: Your compilation DID NOT pass the simple functionality test *"
+echo " ************************************************************************"
+echo ""
+fi
</ins><span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/tests/bv32_fixed_tests.sh
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:executable
</span><span class="cx"> + *
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsbv32_floating_testssh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/bv32_floating_tests.sh (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/bv32_floating_tests.sh         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/bv32_floating_tests.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+#!/bin/bash
+
+TESTDATADIR=../test-data/broadcom/floating/bv32
+
+# Clean
+if test -f tv.bv32
+then
+\rm tv.bv32
+fi
+if test -f tv.bv32.raw
+then
+\rm tv.bv32.raw
+fi
+if test -f tv.bv32.bfe10.raw
+then
+\rm tv.bv32.bfe10.raw
+fi
+
+# Set error pattern files
+./bv32_tests enc ${TESTDATADIR}/tv.raw tv.bv32
+./bv32_tests dec ${TESTDATADIR}/tv.bv32.ref tv.bv32.raw
+./bv32_tests dec ${TESTDATADIR}/tv.bfe10.bv32 tv.bv32.bfe10.raw
+
+checksum=0;
+if test -n "`cmp tv.bv32 ${TESTDATADIR}/tv.bv32.ref`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv32.raw ${TESTDATADIR}/tv.bv32.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+if test -n "`cmp tv.bv32.bfe10.raw ${TESTDATADIR}/tv.bv32.bfe10.ref.raw`"
+then
+checksum=`expr $checksum + 1`
+fi
+
+if test $checksum -eq 0
+then
+echo " **************************************************************************"
+echo " * CONGRATULATIONS: Your compilation passed the simple functionality test *"
+echo " **************************************************************************"
+echo ""
+\rm tv.bv32 tv.bv32.raw tv.bv32.bfe10.raw
+else
+echo " ************************************************************************"
+echo " * WARNING: Your compilation DID NOT pass the simple functionality test *"
+echo " ************************************************************************"
+echo ""
+fi
</ins><span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/tests/bv32_floating_tests.sh
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:executable
</span><span class="cx"> + *
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsbv32_testsc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/bv32_tests.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/bv32_tests.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/bv32_tests.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,191 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * bv32_tests.c -
+ *
+ * Adapted by Steve Underwood <steveu@coppice.org> from code which is
+ * Copyright 2000-2009 Broadcom Corporation
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: bv32_tests.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define BROADVOICE_EXPOSE_INTERNAL_STRUCTURES
+#include "broadvoice.h"
+#include "g192_bit_stream.h"
+
+#define G192BITSTREAM
+
+int frame;
+int16_t bfi = 0;
+
+static void usage(const char *name)
+{
+ fprintf(stderr, "usage: %s enc|dec input output\n", name);
+ fprintf(stderr, "\nFormat for speech_file:\n Binary file of 16 kHz sampled 16-bit PCM data.\n");
+#if defined(G192BITSTREAM)
+ fprintf(stderr, "\nFormat for bitstream_file per frame: ITU-T G.192 format\n\
+ One (2-byte) synchronization word [0x6B21],\n\
+ One (2-byte) size word,\n\
+ 160 words (2-byte) containing 160 bits.\n\n");
+#else
+ fprintf(stderr, "\nFormat for bitstream_file per frame: Packed Bits\n");
+#endif
+ exit(1);
+}
+
+int main(int argc, char **argv)
+{
+ FILE *fi;
+ FILE *fo;
+ FILE *fbdi = NULL;
+ int enc = 1;
+ int nread;
+ int i;
+ int len;
+ int16_t x[BV32_FRAME_LEN];
+ bv32_encode_state_t *cs;
+ bv32_decode_state_t *ds;
+ uint8_t PackedStream[20];
+ int next_bad_frame = -1;
+ int packing;
+
+ if ((argc != 4) && (argc != 5))
+ usage(argv[0]);
+ if (!strcmp(argv[1], "enc"))
+ enc = 1;
+ else if (!strcmp(argv[1], "dec"))
+ enc = 0;
+ else
+ usage(argv[0]);
+
+ if (!(fi = fopen(argv[2], "rb")))
+ {
+ fprintf(stderr, "error: can't read %s\n", argv[2]);
+ exit(2);
+ }
+ if (!(fo = fopen(argv[3], "wb")))
+ {
+ fprintf(stderr, "error: can't write to %s\n", argv[3]);
+ exit(3);
+ }
+ if (argc == 5)
+ {
+ if (!(fbdi = fopen(argv[4], "rb")))
+ {
+ fprintf(stderr, "error: can't read %s\n", argv[4]);
+ exit(3);
+ }
+ }
+
+ if (enc)
+ {
+ fprintf(stderr, " BroadVoice32 Encoder V1.0 with ITU-T G.192\n");
+ fprintf(stderr, " Input speech file : %s\n", argv[2]);
+ fprintf(stderr, " Output bit-stream file: %s\n", argv[3]);
+ }
+ else
+ {
+ fprintf(stderr, " BroadVoice32 Decoder V1.0 with ITU-T G.192\n");
+ fprintf(stderr, " Input bit-stream file : %s\n", argv[2]);
+ fprintf(stderr, " Output speech file : %s\n", argv[3]);
+ }
+
+#if defined(G192BITSTREAM)
+ packing = ITU_CODEC_BITSTREAM_G192;
+#else
+ packing = ITU_CODEC_BITSTREAM_PACKED;
+#endif
+
+ cs = NULL;
+ ds = NULL;
+ if (enc)
+ cs = bv32_encode_init(NULL);
+ else
+ ds = bv32_decode_init(NULL);
+
+ frame = 0;
+ /* Read for the 1st bad frame */
+ if (fbdi != NULL)
+ fscanf(fbdi, "%d", &next_bad_frame);
+
+ for (;;)
+ {
+ frame++;
+#if 0
+ /* Floating only */
+ if (frame == 1737)
+ frame++;
+#endif
+ /* Read one speech frame */
+ if (enc == 1)
+ {
+ nread = fread(x, sizeof(int16_t), BV32_FRAME_LEN, fi);
+ if (nread <= 0)
+ break;
+ for (i = nread; i < BV32_FRAME_LEN; i++)
+ x[i] = 0;
+
+ len = bv32_encode(cs, PackedStream, x, BV32_FRAME_LEN);
+ itu_codec_bitstream_write(PackedStream, 8*len, packing, fo);
+ }
+ else
+ {
+ nread = itu_codec_bitstream_read(PackedStream, &bfi, 160, packing, fi);
+ if (nread <= 0)
+ break;
+ if (frame == next_bad_frame)
+ {
+ fscanf(fbdi, "%d", &next_bad_frame);
+ bfi = 1;
+ }
+
+ if (bfi)
+ len = bv32_fillin(ds, x, BV32_FRAME_LEN);
+ else
+ len = bv32_decode(ds, x, PackedStream, 20);
+ fwrite(x, sizeof(int16_t), len, fo);
+ }
+ }
+
+ if (enc)
+ bv32_encode_free(cs);
+ else
+ bv32_decode_free(ds);
+
+ fprintf(stderr, "\r %d %d-sample frames processed.\n", --frame, BV32_FRAME_LEN);
+
+ fclose(fi);
+ fclose(fo);
+
+ if (fbdi != NULL)
+ fclose(fbdi);
+
+ fprintf(stderr, "\n\n");
+
+ return 0;
+}
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsg192_bit_streamc"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.c (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.c         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.c        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,166 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * g192_bit_stream.c
+ *
+ * Copyright 2008-2009 Steve Underwood <steveu@coppice.org>
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: g192_bit_stream.c,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <string.h>
+#include <audiofile.h>
+
+#include "g192_bit_stream.h"
+
+enum
+{
+ G192_FRAME_ERASURE = 0x6B20,
+ G192_FRAME_SYNC_1 = 0x6B21,
+ G192_FRAME_SYNC_2 = 0x6B22,
+ G192_FRAME_SYNC_3 = 0x6B23,
+ G192_FRAME_SYNC_4 = 0x6B24,
+ G192_FRAME_SYNC_5 = 0x6B25,
+ G192_FRAME_SYNC_6 = 0x6B26,
+ G192_FRAME_SYNC_7 = 0x6B27,
+ G192_FRAME_SYNC_8 = 0x6B28,
+ G192_FRAME_SYNC_9 = 0x6B29,
+ G192_FRAME_SYNC_10 = 0x6B2A,
+ G192_FRAME_SYNC_11 = 0x6B2B,
+ G192_FRAME_SYNC_12 = 0x6B2C,
+ G192_FRAME_SYNC_13 = 0x6B2D,
+ G192_FRAME_SYNC_14 = 0x6B2E,
+ G192_FRAME_SYNC_15 = 0x6B2F,
+ G192_HARD_ZERO = 0x7F,
+ G192_INDETERMINATE = 0x00,
+ G192_HARD_ONE = 0x81,
+};
+
+void itu_codec_bitstream_write(const uint8_t out_data[],
+ int number_of_bits,
+ int mode,
+ FILE *fp_bitstream)
+{
+ int i;
+ int j;
+ int bit_count;
+ int number_of_bytes;
+ uint8_t packed_word;
+ int16_t out_array[2 + number_of_bits + 7];
+
+ number_of_bytes = (number_of_bits + 7)/8;
+ if (mode == ITU_CODEC_BITSTREAM_PACKED)
+ {
+ fwrite(out_data, 1, number_of_bytes, fp_bitstream);
+ return;
+ }
+ j = 0;
+ out_array[j++] = G192_FRAME_SYNC_1;
+ out_array[j++] = number_of_bits;
+ for (i = 0; i < number_of_bytes; i++)
+ {
+ packed_word = out_data[i];
+ for (bit_count = 7; bit_count >= 0; bit_count--)
+ out_array[j++] = ((packed_word >> bit_count) & 1) ? G192_HARD_ONE : G192_HARD_ZERO;
+ }
+
+ fwrite(out_array, sizeof(int16_t), number_of_bits + 2, fp_bitstream);
+}
+/*- End of function --------------------------------------------------------*/
+
+int itu_codec_bitstream_read(uint8_t in_data[],
+ int16_t *p_frame_error_flag,
+ int number_of_bits,
+ int mode,
+ FILE *fp_bitstream)
+{
+ int i;
+ int j;
+ int bit_pos;
+ int nsamp;
+ int len;
+ int erased_frame;
+ int16_t packed_word;
+ int16_t bit;
+ int16_t in_array[2 + number_of_bits];
+
+ if (mode == ITU_CODEC_BITSTREAM_PACKED)
+ return fread(in_data, 1, number_of_bits/8, fp_bitstream)*8;
+
+ nsamp = fread(in_array, sizeof(int16_t), 2, fp_bitstream);
+ if (nsamp < 2)
+ return -1;
+ if (in_array[0] < G192_FRAME_ERASURE || in_array[0] > G192_FRAME_SYNC_15)
+ {
+ *p_frame_error_flag = 1;
+ return 0;
+ }
+ erased_frame = (in_array[0] == G192_FRAME_ERASURE);
+ len = in_array[1];
+ if (len > number_of_bits)
+ {
+ *p_frame_error_flag = 1;
+ return 0;
+ }
+ nsamp = fread(in_array, sizeof(int16_t), len, fp_bitstream);
+ if (nsamp != len)
+ {
+ *p_frame_error_flag = 1;
+ return nsamp;
+ }
+ *p_frame_error_flag = 0;
+
+ for (i = 0, j = 0; i < nsamp/8; i++)
+ {
+ packed_word = 0;
+ bit_pos = 7;
+ while (bit_pos >= 0)
+ {
+ bit = in_array[j++];
+ if (bit >= 0x0000 && bit <= 0x007F)
+ {
+ /* Its a zero */
+ }
+ else if (bit >= 0x0081 && bit <= 0x00FF)
+ {
+ /* Its a one */
+ packed_word |= (1 << bit_pos);
+ }
+ else
+ {
+ /* Bad bit */
+ *p_frame_error_flag = 1;
+ }
+ bit_pos--;
+ }
+ in_data[i] = packed_word;
+ }
+ if (erased_frame)
+ *p_frame_error_flag = 1;
+ return nsamp;
+}
+/*- End of function --------------------------------------------------------*/
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsg192_bit_streamh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/g192_bit_stream.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+/*
+ * broadvoice - a library for the BroadVoice 16 and 32 codecs
+ *
+ * g192_bit_stream.h
+ *
+ * Copyright 2008-2009 Steve Underwood <steveu@coppice.org>
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: g192_bit_stream.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+/*! \file */
+
+#if !defined(_G192_BIT_STREAM_H_)
+#define _G192_BIT_STREAM_H_
+
+/*! \page g192_bit_stream_page ITU G.192 codec bit stream handling
+\section g192_bit_stream_page_sec_1 What does it do?
+
+\section g192_bit_stream_page_sec_2 How does it work?
+*/
+
+enum
+{
+ ITU_CODEC_BITSTREAM_PACKED = 0,
+ ITU_CODEC_BITSTREAM_G192 = 1
+};
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/*! \brief Write a frame of data to an output file.
+ \param out_data The buffer for the data to be written.
+ \param number_of_bits The number of bits to be written.
+ \param mode 0 = continuous, 1 = ITU G.192 codec bitstream format.
+ \param fp_bitstream The file context to be written to.*/
+void itu_codec_bitstream_write(const uint8_t out_data[],
+ int number_of_bits,
+ int mode,
+ FILE *fp_bitstream);
+
+/*! \brief Read a frame of data from an input file.
+ \param in_data The buffer for the data to be read.
+ \param p_frame_error_flags ???.
+ \param number_of_bits The number of bits to be read.
+ \param mode 0 = continuous, 1 = ITU G.192 codec bitstream format.
+ \param fp_bitstream The file context to be read from.
+ \return The number of words read. */
+int itu_codec_bitstream_read(uint8_t in_data[],
+ int16_t *p_frame_error_flag,
+ int number_of_bits,
+ int mode,
+ FILE *fp_bitstream);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsregression_testssh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+#!/bin/sh
+#
+# broadvoice - a library for the BroadVoice 16 and 32 codecs
+#
+# regression_tests.sh
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Id: regression_tests.sh.in,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+#
+
+STDOUT_DEST=xyzzy
+STDERR_DEST=xyzzy2
+VECTOR_CLASS=@G722_1_VECTORS_FOR_TESTS@
+TMP_FILE=tmp
+
+echo Performing basic G.722_1 regression tests
+echo
+
+./broadvoice_tests E I 32000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_in.pcm $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_32000.itu
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests E failed!
+ exit $RETVAL
+fi
+./broadvoice_tests E I 24000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_in.pcm $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_24000.itu
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests E failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests E completed OK
+
+./broadvoice_tests D I 24000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_24000.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_24000.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+./broadvoice_tests D I 32000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_32000.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_32000.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+
+./broadvoice_tests D I 24000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_in_24000_fe.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_24000_fe.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+./broadvoice_tests D I 32000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_in_32000_fe.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_32000_fe.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests D completed OK
+
+./broadvoice_tests E I 32000 16000 ../test-data/local/short_wb_voice.wav $TMP_FILE
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests E failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests E completed OK
+
+./broadvoice_tests D I 32000 16000 $TMP_FILE test.au
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests D completed OK
+
+echo
+echo All regression tests successfully completed
</ins><span class="cx">Property changes on: freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh
</span><span class="cx">___________________________________________________________________
</span><span class="cx">Name: svn:executable
</span><span class="cx"> + *
</span></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicetestsregression_testsshin"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh.in (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh.in         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/regression_tests.sh.in        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+#!/bin/sh
+#
+# broadvoice - a library for the BroadVoice 16 and 32 codecs
+#
+# regression_tests.sh
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2, as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# $Id: regression_tests.sh.in,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+#
+
+STDOUT_DEST=xyzzy
+STDERR_DEST=xyzzy2
+VECTOR_CLASS=@G722_1_VECTORS_FOR_TESTS@
+TMP_FILE=tmp
+
+echo Performing basic G.722_1 regression tests
+echo
+
+./broadvoice_tests E I 32000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_in.pcm $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_32000.itu
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests E failed!
+ exit $RETVAL
+fi
+./broadvoice_tests E I 24000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_in.pcm $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_24000.itu
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests E failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests E completed OK
+
+./broadvoice_tests D I 24000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_24000.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_24000.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+./broadvoice_tests D I 32000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_enc_out_32000.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_32000.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+
+./broadvoice_tests D I 24000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_in_24000_fe.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_24000_fe.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+./broadvoice_tests D I 32000 16000 ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_in_32000_fe.itu $TMP_FILE
+diff $TMP_FILE ../test-data/itu/g722_1/$VECTOR_CLASS/g722_1_dec_out_32000_fe.pcm
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests D completed OK
+
+./broadvoice_tests E I 32000 16000 ../test-data/local/short_wb_voice.wav $TMP_FILE
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests E failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests E completed OK
+
+./broadvoice_tests D I 32000 16000 $TMP_FILE test.au
+RETVAL=$?
+if [ $RETVAL != 0 ]
+then
+ echo broadvoice_tests D failed!
+ exit $RETVAL
+fi
+echo broadvoice_tests D completed OK
+
+echo
+echo All regression tests successfully completed
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoiceteststimingh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/tests/timing.h (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/tests/timing.h         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/tests/timing.h        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * timing.h - Provide access to the Pentium/Athlon TSC timer register
+ *
+ * Written by Steve Underwood <steveu@coppice.org>
+ *
+ * Copyright (C) 2001 Steve Underwood
+ *
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 2.1,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id: timing.h,v 1.1.1.1 2009/11/19 12:10:48 steveu Exp $
+ */
+
+#if !defined(_TIMING_H_)
+#define _TIMING_H_
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+#if defined(__MSVC__)
+__declspec(naked) unsigned __int64 __cdecl rdtscll(void)
+{
+ __asm
+ {
+ rdtsc
+ ret ; return value at EDX:EAX
+ }
+}
+/*- End of function --------------------------------------------------------*/
+#elif defined(__GNUC__)
+#if defined(__i386__)
+static __inline__ uint64_t rdtscll(void)
+{
+ uint64_t now;
+
+ __asm__ __volatile__(" rdtsc\n" : "=A" (now));
+ return now;
+}
+/*- End of function --------------------------------------------------------*/
+#elif defined(__x86_64__)
+static __inline__ uint64_t rdtscll(void)
+{
+ unsigned int a;
+ unsigned int d;
+
+ /* For x86_64 we need to merge the result in 2 32 bit registers
+ into one clean 64 bit result. */
+ __asm__ __volatile__(" rdtsc\n" : "=a" (a), "=d" (d));
+ return ((uint64_t) a) | (((uint64_t) d) << 32);
+}
+/*- End of function --------------------------------------------------------*/
+#else
+static __inline__ uint64_t rdtscll(void)
+{
+ /* This architecture doesn't have a suitable timer */
+ return 0llu;
+}
+/*- End of function --------------------------------------------------------*/
+#endif
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
+/*- End of file ------------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsbroadvoicewrapperxsl"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/broadvoice/wrapper.xsl (0 => 15543)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/broadvoice/wrapper.xsl         (rev 0)
+++ freeswitch/trunk/libs/broadvoice/wrapper.xsl        2009-11-19 14:42:11 UTC (rev 15543)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
+ <xsl:param name="html.stylesheet">css.css</xsl:param>
+</xsl:stylesheet>
+
</ins></span></pre>
</div>
</div>
<div id="footer">See you at ClueCon</div>
</body>
</html>