<!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][14316] </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=14316">14316</a></dd>
<dt>Author</dt> <dd>mikej</dd>
<dt>Date</dt> <dd>2009-07-22 10:18:32 -0500 (Wed, 22 Jul 2009)</dd>
</dl>
<h3>Log Message</h3>
<pre>update to spandsp snapshot 20090714</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#freeswitchtrunklibsspandspconfigureac">freeswitch/trunk/libs/spandsp/configure.ac</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcMakefileam">freeswitch/trunk/libs/spandsp/src/Makefile.am</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcat_interpreterc">freeswitch/trunk/libs/spandsp/src/at_interpreter.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrccomplex_vector_floatc">freeswitch/trunk/libs/spandsp/src/complex_vector_float.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrccomplex_vector_intc">freeswitch/trunk/libs/spandsp/src/complex_vector_int.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcmake_modem_filterc">freeswitch/trunk/libs/spandsp/src/make_modem_filter.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspbit_operationsh">freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspfast_converth">freeswitch/trunk/libs/spandsp/src/spandsp/fast_convert.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatet38_coreh">freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev17rxh">freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev17txh">freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev22bish">freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev27ter_rxh">freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev27ter_txh">freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev29rxh">freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspprivatev29txh">freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspt38_coreh">freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv17rxh">freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv17txh">freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv22bish">freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv27ter_rxh">freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv27ter_txh">freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv29rxh">freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspv29txh">freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcspandspversionh">freeswitch/trunk/libs/spandsp/src/spandsp/version.h</a></li>
<li><a href="#freeswitchtrunklibsspandspsrct31c">freeswitch/trunk/libs/spandsp/src/t31.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrct38_corec">freeswitch/trunk/libs/spandsp/src/t38_core.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrct38_gatewayc">freeswitch/trunk/libs/spandsp/src/t38_gateway.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrct38_terminalc">freeswitch/trunk/libs/spandsp/src/t38_terminal.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcv17rxc">freeswitch/trunk/libs/spandsp/src/v17rx.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcv27ter_rxc">freeswitch/trunk/libs/spandsp/src/v27ter_rx.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcv29rxc">freeswitch/trunk/libs/spandsp/src/v29rx.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcv8c">freeswitch/trunk/libs/spandsp/src/v8.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcvector_floatc">freeswitch/trunk/libs/spandsp/src/vector_float.c</a></li>
<li><a href="#freeswitchtrunklibsspandspsrcvector_intc">freeswitch/trunk/libs/spandsp/src/vector_int.c</a></li>
<li><a href="#freeswitchtrunklibsspandsptestsfsk_testsc">freeswitch/trunk/libs/spandsp/tests/fsk_tests.c</a></li>
<li><a href="#freeswitchtrunklibsspandsptestst38_core_testsc">freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c</a></li>
<li><a href="#freeswitchtrunklibsspandsptestsv17_testsc">freeswitch/trunk/libs/spandsp/tests/v17_tests.c</a></li>
<li><a href="#freeswitchtrunklibsspandsptestsv22bis_testsc">freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c</a></li>
<li><a href="#freeswitchtrunklibsspandsptestsv27ter_testsc">freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c</a></li>
<li><a href="#freeswitchtrunklibsspandsptestsv29_testsc">freeswitch/trunk/libs/spandsp/tests/v29_tests.c</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#freeswitchtrunklibsspandspsrcmmx_sse_decsh">freeswitch/trunk/libs/spandsp/src/mmx_sse_decs.h</a></li>
</ul>
<h3>Property Changed</h3>
<ul>
<li><a href="#freeswitchtrunklibsspandspsrc">freeswitch/trunk/libs/spandsp/src/</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="freeswitchtrunklibsspandspconfigureac"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/configure.ac (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/configure.ac        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/configure.ac        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx"> # License along with this program; if not, write to the Free Software
</span><span class="cx"> # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> #
</span><del>-# $Id: configure.ac,v 1.70 2009/06/02 11:51:57 steveu Exp $
</del><ins>+# $Id: configure.ac,v 1.71 2009/07/12 09:29:18 steveu Exp $
</ins><span class="cx">
</span><span class="cx"> # @start 1
</span><span class="cx">
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx"> AC_ARG_ENABLE(sse, [ --enable-sse Enable SSE support])
</span><span class="cx"> AC_ARG_ENABLE(sse2, [ --enable-sse2 Enable SSE2 support])
</span><span class="cx"> AC_ARG_ENABLE(sse3, [ --enable-sse3 Enable SSE3 support])
</span><del>-AC_ARG_ENABLE(sse3, [ --enable-sse3 Enable SSE3 support])
</del><ins>+AC_ARG_ENABLE(ssse3, [ --enable-ssse3 Enable SSSE3 support])
</ins><span class="cx"> AC_ARG_ENABLE(sse4_1, [ --enable-sse4-1 Enable SSE4.1 support])
</span><span class="cx"> AC_ARG_ENABLE(sse4_2, [ --enable-sse4-2 Enable SSE4.2 support])
</span><span class="cx"> AC_ARG_ENABLE(sse4a, [ --enable-sse4a Enable SSE4A support])
</span><span class="lines">@@ -305,6 +305,9 @@
</span><span class="cx"> if test "$enable_sse4_1" = "yes" ; then
</span><span class="cx"> COMP_VENDOR_CFLAGS="-msse41 $COMP_VENDOR_CFLAGS"
</span><span class="cx"> fi
</span><ins>+ if test "$enable_ssse3" = "yes" ; then
+ COMP_VENDOR_CFLAGS="-mssse3 $COMP_VENDOR_CFLAGS"
+ fi
</ins><span class="cx"> if test "$enable_sse3" = "yes" ; then
</span><span class="cx"> COMP_VENDOR_CFLAGS="-msse3 $COMP_VENDOR_CFLAGS"
</span><span class="cx"> fi
</span><span class="lines">@@ -357,6 +360,7 @@
</span><span class="cx"> AM_CONDITIONAL([COND_SSE], [test "$enable_sse" = yes])
</span><span class="cx"> AM_CONDITIONAL([COND_SSE2], [test "$enable_sse2" = yes])
</span><span class="cx"> AM_CONDITIONAL([COND_SSE3], [test "$enable_sse3" = yes])
</span><ins>+AM_CONDITIONAL([COND_SSSE3], [test "$enable_ssse3" = yes])
</ins><span class="cx"> AM_CONDITIONAL([COND_SSE4_1], [test "$enable_sse4_1" = yes])
</span><span class="cx"> AM_CONDITIONAL([COND_SSE4_2], [test "$enable_sse4_2" = yes])
</span><span class="cx"> AM_CONDITIONAL([COND_SSE4A], [test "$enable_sse4a" = yes])
</span><span class="lines">@@ -389,6 +393,10 @@
</span><span class="cx"> fi
</span><span class="cx"> if test "$enable_sse4_1" = "yes" ; then
</span><span class="cx"> AC_DEFINE([SPANDSP_USE_SSE4_1], [1], [Use the SSE4.1 instruction set (i386 and x86_64 only).])
</span><ins>+ enable_ssse3="yes"
+fi
+if test "$enable_ssse3" = "yes" ; then
+ AC_DEFINE([SPANDSP_USE_SSSE3], [1], [Use the SSSE3 instruction set (i386 and x86_64 only).])
</ins><span class="cx"> enable_sse3="yes"
</span><span class="cx"> fi
</span><span class="cx"> if test "$enable_sse3" = "yes" ; then
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrc"></a>
<div class="propset"><h4>Property changes: freeswitch/trunk/libs/spandsp/src</h4>
<pre class="diff"><span>
<span class="cx">Name: svn:ignore
</span><span class="cx"> - v22bis_rx_1200_fixed_rrc.h
</span><span class="cx">v22bis_tx_fixed_rrc.h
</span><span class="cx">v27ter_tx_4800_floating_rrc.h
</span><span class="cx">v22bis_rx_2400_floating_rrc.h
</span><span class="cx">v17tx_fixed_rrc.h
</span><span class="cx">v27ter_rx_2400_fixed_rrc.h
</span><span class="cx">v29rx_fixed_rrc.h
</span><span class="cx">make_at_dictionary
</span><span class="cx">v17rx_floating_rrc.h
</span><span class="cx">v17tx_floating_rrc.h
</span><span class="cx">Makefile
</span><span class="cx">v27ter_tx_2400_fixed_rrc.h
</span><span class="cx">v27ter_rx_4800_floating_rrc.h
</span><span class="cx">spandsp.h
</span><span class="cx">v17rx_fixed_rrc.h
</span><span class="cx">v29rx_floating_rrc.h
</span><span class="cx">v29tx_floating_rrc.h
</span><span class="cx">v27ter_rx_4800_fixed_rrc.h
</span><span class="cx">v27ter_tx_2400_floating_rrc.h
</span><span class="cx">v22bis_rx_2400_fixed_rrc.h
</span><span class="cx">at_interpreter_dictionary.h
</span><span class="cx">Makefile.in
</span><span class="cx">config.h
</span><span class="cx">.deps
</span><span class="cx">v27ter_tx_4800_fixed_rrc.h
</span><span class="cx">v22bis_rx_1200_floating_rrc.h
</span><span class="cx">v29tx_fixed_rrc.h
</span><span class="cx">v22bis_tx_floating_rrc.h
</span><span class="cx">make_modem_filter
</span><span class="cx">.libs
</span><span class="cx">v27ter_rx_2400_floating_rrc.h
</span><span class="cx">stamp-h1
</span><span class="cx">Debug
</span><span class="cx">*.ncb
</span><span class="cx">*.suo
</span><span class="cx">*.user
</span><span class="cx">Release
</span><span class="cx">all
</span><span class="cx">x64
</span><span class="cx">All
</span><span class="cx"> + v22bis_rx_1200_fixed_rrc.h
</span><span class="cx">v22bis_tx_fixed_rrc.h
</span><span class="cx">v27ter_tx_4800_floating_rrc.h
</span><span class="cx">v22bis_rx_2400_floating_rrc.h
</span><span class="cx">v17tx_fixed_rrc.h
</span><span class="cx">v27ter_rx_2400_fixed_rrc.h
</span><span class="cx">v29rx_fixed_rrc.h
</span><span class="cx">make_at_dictionary
</span><span class="cx">v17rx_floating_rrc.h
</span><span class="cx">v17tx_floating_rrc.h
</span><span class="cx">Makefile
</span><span class="cx">v27ter_tx_2400_fixed_rrc.h
</span><span class="cx">v27ter_rx_4800_floating_rrc.h
</span><span class="cx">spandsp.h
</span><span class="cx">v17rx_fixed_rrc.h
</span><span class="cx">v29rx_floating_rrc.h
</span><span class="cx">v29tx_floating_rrc.h
</span><span class="cx">v27ter_rx_4800_fixed_rrc.h
</span><span class="cx">v27ter_tx_2400_floating_rrc.h
</span><span class="cx">v22bis_rx_2400_fixed_rrc.h
</span><span class="cx">at_interpreter_dictionary.h
</span><span class="cx">Makefile.in
</span><span class="cx">config.h
</span><span class="cx">.deps
</span><span class="cx">v27ter_tx_4800_fixed_rrc.h
</span><span class="cx">v22bis_rx_1200_floating_rrc.h
</span><span class="cx">v29tx_fixed_rrc.h
</span><span class="cx">v22bis_tx_floating_rrc.h
</span><span class="cx">make_modem_filter
</span><span class="cx">.libs
</span><span class="cx">v27ter_rx_2400_floating_rrc.h
</span><span class="cx">stamp-h1
</span><span class="cx">Debug
</span><span class="cx">*.ncb
</span><span class="cx">*.suo
</span><span class="cx">*.user
</span><span class="cx">Release
</span><span class="cx">all
</span><span class="cx">x64
</span><span class="cx">All
</span><span class="cx">v17_v32bis_rx_fixed_rrc.h
</span><span class="cx">v17_v32bis_rx_floating_rrc.h
</span><span class="cx">v17_v32bis_tx_fixed_rrc.h
</span><span class="cx">v17_v32bis_tx_floating_rrc.h
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcMakefileam"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/Makefile.am (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/Makefile.am        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/Makefile.am        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx"> ## License along with this program; if not, write to the Free Software
</span><span class="cx"> ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> ##
</span><del>-## $Id: Makefile.am,v 1.134 2009/06/02 11:51:57 steveu Exp $
</del><ins>+## $Id: Makefile.am,v 1.135 2009/07/12 09:23:09 steveu Exp $
</ins><span class="cx">
</span><span class="cx"> AM_CFLAGS = $(COMP_VENDOR_CFLAGS)
</span><span class="cx"> AM_LDFLAGS = $(COMP_VENDOR_LDFLAGS)
</span><span class="lines">@@ -275,6 +275,7 @@
</span><span class="cx"> filter_tools.h \
</span><span class="cx"> gsm0610_local.h \
</span><span class="cx"> lpc10_encdecs.h \
</span><ins>+ mmx_sse_decs.h \
</ins><span class="cx"> t30_local.h \
</span><span class="cx"> t4_states.h \
</span><span class="cx"> v17_v32bis_rx_constellation_maps.h \
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcat_interpreterc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/at_interpreter.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/at_interpreter.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/at_interpreter.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: at_interpreter.c,v 1.39 2009/04/24 22:35:25 steveu Exp $
</del><ins>+ * $Id: at_interpreter.c,v 1.40 2009/07/10 13:15:56 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> static at_profile_t profiles[3] =
</span><span class="cx"> {
</span><span class="cx"> {
</span><del>-#if defined(_MSC_VER)
</del><ins>+#if defined(_MSC_VER) || defined(__sunos) || defined(__solaris)
</ins><span class="cx"> /*.echo =*/ TRUE,
</span><span class="cx"> /*.verbose =*/ TRUE,
</span><span class="cx"> /*.result_code_format =*/ ASCII_RESULT_CODES,
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrccomplex_vector_floatc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/complex_vector_float.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/complex_vector_float.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/complex_vector_float.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: complex_vector_float.c,v 1.15 2009/02/03 16:28:39 steveu Exp $
</del><ins>+ * $Id: complex_vector_float.c,v 1.16 2009/07/12 09:23:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -41,33 +41,10 @@
</span><span class="cx"> #if defined(HAVE_MATH_H)
</span><span class="cx"> #include <math.h>
</span><span class="cx"> #endif
</span><del>-#include "floating_fudge.h"
</del><span class="cx"> #include <assert.h>
</span><span class="cx">
</span><del>-#if defined(SPANDSP_USE_MMX)
-#include <mmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE)
-#include <xmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE2)
-#include <emmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE3)
-#include <pmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_1)
-#include <smmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_2)
-#include <nmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4A)
-#include <ammintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE5)
-#include <bmmintrin.h>
-#endif
</del><ins>+#include "floating_fudge.h"
+#include "mmx_sse_decs.h"
</ins><span class="cx">
</span><span class="cx"> #include "spandsp/telephony.h"
</span><span class="cx"> #include "spandsp/logging.h"
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrccomplex_vector_intc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/complex_vector_int.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/complex_vector_int.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/complex_vector_int.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: complex_vector_int.c,v 1.8 2009/02/21 04:27:46 steveu Exp $
</del><ins>+ * $Id: complex_vector_int.c,v 1.9 2009/07/12 09:23:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -41,33 +41,10 @@
</span><span class="cx"> #if defined(HAVE_MATH_H)
</span><span class="cx"> #include <math.h>
</span><span class="cx"> #endif
</span><del>-#include "floating_fudge.h"
</del><span class="cx"> #include <assert.h>
</span><span class="cx">
</span><del>-#if defined(SPANDSP_USE_MMX)
-#include <mmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE)
-#include <xmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE2)
-#include <emmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE3)
-#include <pmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_1)
-#include <smmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_2)
-#include <nmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4A)
-#include <ammintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE5)
-#include <bmmintrin.h>
-#endif
</del><ins>+#include "floating_fudge.h"
+#include "mmx_sse_decs.h"
</ins><span class="cx">
</span><span class="cx"> #include "spandsp/telephony.h"
</span><span class="cx"> #include "spandsp/logging.h"
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcmake_modem_filterc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/make_modem_filter.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/make_modem_filter.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/make_modem_filter.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: make_modem_filter.c,v 1.15 2009/06/02 11:51:57 steveu Exp $
</del><ins>+ * $Id: make_modem_filter.c,v 1.16 2009/07/10 13:15:56 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if defined(HAVE_CONFIG_H)
</span><span class="lines">@@ -44,6 +44,9 @@
</span><span class="cx"> #include <stdio.h>
</span><span class="cx"> #include <time.h>
</span><span class="cx"> #include <fcntl.h>
</span><ins>+#if defined(__sunos) || defined(__solaris)
+#include <getopt.h>
+#endif
</ins><span class="cx">
</span><span class="cx"> #include "spandsp/telephony.h"
</span><span class="cx"> #include "spandsp/complex.h"
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcmmx_sse_decsh"></a>
<div class="addfile"><h4>Added: freeswitch/trunk/libs/spandsp/src/mmx_sse_decs.h (0 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/mmx_sse_decs.h         (rev 0)
+++ freeswitch/trunk/libs/spandsp/src/mmx_sse_decs.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+/*
+ * SpanDSP - a series of DSP components for telephony
+ *
+ * mmx_sse_decs.h - Pull in the appropriate systems headers for the MMX/SSE settings.
+ *
+ * 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: mmx_sse_decs.h,v 1.1 2009/07/12 09:23:09 steveu Exp $
+ */
+
+#if !defined(_MMX_SSE_DECS_H_)
+#define _MMX_SSE_DECS_H_
+
+#if defined(SPANDSP_USE_MMX)
+#include <mmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE)
+#include <xmmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE2)
+#include <emmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE3)
+#include <pmmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSSE3)
+#include <tmmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE4_1)
+#include <smmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE4_2)
+#include <nmmintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE4A)
+#include <ammintrin.h>
+#endif
+#if defined(SPANDSP_USE_SSE5)
+#include <bmmintrin.h>
+#endif
+
+#endif
+
+/*- End of include ---------------------------------------------------------*/
</ins></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspbit_operationsh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/bit_operations.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: bit_operations.h,v 1.26 2009/02/26 16:08:50 steveu Exp $
</del><ins>+ * $Id: bit_operations.h,v 1.27 2009/07/10 13:15:56 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -30,6 +30,12 @@
</span><span class="cx"> #if !defined(_SPANDSP_BIT_OPERATIONS_H_)
</span><span class="cx"> #define _SPANDSP_BIT_OPERATIONS_H_
</span><span class="cx">
</span><ins>+#if defined(__i386__) || defined(__x86_64__)
+#if !defined(__SUNPRO_C) || (__SUNPRO_C >= 0x0590)
+#define SPANDSP_USE_86_ASM
+#endif
+#endif
+
</ins><span class="cx"> #if defined(__cplusplus)
</span><span class="cx"> extern "C"
</span><span class="cx"> {
</span><span class="lines">@@ -40,7 +46,7 @@
</span><span class="cx"> \return The bit number of the highest set bit, or -1 if the word is zero. */
</span><span class="cx"> static __inline__ int top_bit(unsigned int bits)
</span><span class="cx"> {
</span><del>-#if defined(__i386__) || defined(__x86_64__)
</del><ins>+#if defined(SPANDSP_USE_86_ASM)
</ins><span class="cx"> int res;
</span><span class="cx">
</span><span class="cx"> __asm__ (" xorl %[res],%[res];\n"
</span><span class="lines">@@ -141,7 +147,7 @@
</span><span class="cx"> {
</span><span class="cx"> int res;
</span><span class="cx">
</span><del>-#if defined(__i386__) || defined(__x86_64__)
</del><ins>+#if defined(SPANDSP_USE_86_ASM)
</ins><span class="cx"> __asm__ (" xorl %[res],%[res];\n"
</span><span class="cx"> " decl %[res];\n"
</span><span class="cx"> " bsfl %[bits],%[res]\n"
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspfast_converth"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/fast_convert.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/fast_convert.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/fast_convert.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: fast_convert.h,v 1.7 2009/04/18 03:18:41 steveu Exp $
</del><ins>+ * $Id: fast_convert.h,v 1.8 2009/07/10 13:15:56 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_FAST_CONVERT_H_)
</span><span class="lines">@@ -403,7 +403,7 @@
</span><span class="cx"> the accuracy issues related to changing the rounding scheme are of little concern
</span><span class="cx"> to us. */
</span><span class="cx">
</span><del>- #if !defined(__sgi)
</del><ins>+ #if !defined(__sgi) && !defined(__sunos) && !defined(__solaris)
</ins><span class="cx"> #warning "No usable lrint() and lrintf() functions available."
</span><span class="cx"> #warning "Replacing these functions with a simple C cast."
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatet38_coreh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/t38_core.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t38_core.h,v 1.3 2009/04/12 14:18:02 steveu Exp $
</del><ins>+ * $Id: t38_core.h,v 1.4 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_T38_CORE_H_)
</span><span class="lines">@@ -97,20 +97,12 @@
</span><span class="cx"> /*! \brief The fastest data rate supported by the T.38 channel. */
</span><span class="cx"> int fastest_image_data_rate;
</span><span class="cx">
</span><del>- /*! \brief The number of times an indicator packet will be sent. Numbers greater than one
- will increase reliability for UDP transmission. Zero is valid, to suppress all
- indicator packets for TCP transmission. */
- int indicator_tx_count;
</del><ins>+ /*! \brief The number of times each packet type will be sent (low byte). The
+ depth of redundancy (2nd byte). Higher numbers may increase reliability
+ for UDP transmission. Zero is valid for the indicator packet category,
+ to suppress all indicator packets (typicaly for TCP transmission). */
+ int category_control[5];
</ins><span class="cx">
</span><del>- /*! \brief The number of times a data packet which does not end transmission will be sent.
- Numbers greater than one will increase reliability for UDP transmission. Zero
- is not valid. */
- int data_tx_count;
-
- /*! \brief The number of times a data packet which ends transmission will be sent. Numbers
- greater than one will increase reliability for UDP transmission. Zero is not valid. */
- int data_end_tx_count;
-
</del><span class="cx"> /*! \brief TRUE if IFP packet sequence numbers are relevant. For some transports, like TPKT
</span><span class="cx"> over TCP they are not relevent. */
</span><span class="cx"> int check_sequence_numbers;
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev17rxh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v17rx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,12 +22,31 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v17rx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $
</del><ins>+ * $Id: v17rx.h,v 1.2 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V17RX_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V17RX_H_
</span><span class="cx">
</span><ins>+/* Target length for the equalizer is about 63 taps, to deal with the worst stuff
+ in V.56bis. */
+/*! Samples before the target position in the equalizer buffer */
+#define V17_EQUALIZER_PRE_LEN 8
+/*! Samples after the target position in the equalizer buffer */
+#define V17_EQUALIZER_POST_LEN 8
+
+/*! The number of taps in the pulse shaping/bandpass filter */
+#define V17_RX_FILTER_STEPS 27
+
+/* We can store more trellis depth that we look back over, so that we can push out a group
+ of symbols in one go, giving greater processing efficiency, at the expense of a bit more
+ latency through the modem. */
+/* Right now we don't take advantage of this optimisation. */
+/*! The depth of the trellis buffer */
+#define V17_TRELLIS_STORAGE_DEPTH 16
+/*! How far we look back into history for trellis decisions */
+#define V17_TRELLIS_LOOKBACK_DEPTH 16
+
</ins><span class="cx"> /*!
</span><span class="cx"> V.17 modem receive side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.17 modem receiver.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev17txh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v17tx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v17tx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $
</del><ins>+ * $Id: v17tx.h,v 1.2 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -30,6 +30,9 @@
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V17TX_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V17TX_H_
</span><span class="cx">
</span><ins>+/*! The number of taps in the pulse shaping/bandpass filter */
+#define V17_TX_FILTER_STEPS 9
+
</ins><span class="cx"> /*!
</span><span class="cx"> V.17 modem transmit side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.17 modem transmitter.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev22bish"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v22bis.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,12 +22,23 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v22bis.h,v 1.10 2009/04/29 12:37:45 steveu Exp $
</del><ins>+ * $Id: v22bis.h,v 1.11 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V22BIS_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V22BIS_H_
</span><span class="cx">
</span><ins>+/*! The number of steps to the left and to the right of the target position in the equalizer buffer. */
+#define V22BIS_EQUALIZER_LEN 7
+/*! One less than a power of 2 >= (2*V22BIS_EQUALIZER_LEN + 1) */
+#define V22BIS_EQUALIZER_MASK 15
+
+/*! The number of taps in the transmit pulse shaping filter */
+#define V22BIS_TX_FILTER_STEPS 9
+
+/*! The number of taps in the receive pulse shaping/bandpass filter */
+#define V22BIS_RX_FILTER_STEPS 37
+
</ins><span class="cx"> /*! Segments of the training sequence on the receive side */
</span><span class="cx"> enum
</span><span class="cx"> {
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev27ter_rxh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_rx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,12 +22,30 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v27ter_rx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $
</del><ins>+ * $Id: v27ter_rx.h,v 1.2 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V27TER_RX_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V27TER_RX_H_
</span><span class="cx">
</span><ins>+/* Target length for the equalizer is about 43 taps for 4800bps and 32 taps for 2400bps
+ to deal with the worst stuff in V.56bis. */
+/*! Samples before the target position in the equalizer buffer */
+#define V27TER_EQUALIZER_PRE_LEN 16 /* This much before the real event */
+/*! Samples after the target position in the equalizer buffer */
+#define V27TER_EQUALIZER_POST_LEN 14 /* This much after the real event (must be even) */
+
+/*! The number of taps in the 4800bps pulse shaping/bandpass filter */
+#define V27TER_RX_4800_FILTER_STEPS 27
+/*! The number of taps in the 2400bps pulse shaping/bandpass filter */
+#define V27TER_RX_2400_FILTER_STEPS 27
+
+#if V27TER_RX_4800_FILTER_STEPS > V27TER_RX_2400_FILTER_STEPS
+#define V27TER_RX_FILTER_STEPS V27TER_RX_4800_FILTER_STEPS
+#else
+#define V27TER_RX_FILTER_STEPS V27TER_RX_2400_FILTER_STEPS
+#endif
+
</ins><span class="cx"> /*!
</span><span class="cx"> V.27ter modem receive side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.27ter modem receiver.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev27ter_txh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v27ter_tx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,12 +22,15 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v27ter_tx.h,v 1.2 2008/12/06 14:35:04 steveu Exp $
</del><ins>+ * $Id: v27ter_tx.h,v 1.3 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V27TER_TX_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V27TER_TX_H_
</span><span class="cx">
</span><ins>+/*! The number of taps in the pulse shaping/bandpass filter */
+#define V27TER_TX_FILTER_STEPS 9
+
</ins><span class="cx"> /*!
</span><span class="cx"> V.27ter modem transmit side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.27ter modem transmitter.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev29rxh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v29rx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,12 +22,22 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v29rx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $
</del><ins>+ * $Id: v29rx.h,v 1.2 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V29RX_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V29RX_H_
</span><span class="cx">
</span><ins>+/* Target length for the equalizer is about 63 taps, to deal with the worst stuff
+ in V.56bis. */
+/*! Samples before the target position in the equalizer buffer */
+#define V29_EQUALIZER_PRE_LEN 16
+/*! Samples after the target position in the equalizer buffer */
+#define V29_EQUALIZER_POST_LEN 14
+
+/*! The number of taps in the pulse shaping/bandpass filter */
+#define V29_RX_FILTER_STEPS 27
+
</ins><span class="cx"> /*!
</span><span class="cx"> V.29 modem receive side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.29 modem receiver.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspprivatev29txh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/private/v29tx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,12 +22,15 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v29tx.h,v 1.1 2008/10/13 13:14:01 steveu Exp $
</del><ins>+ * $Id: v29tx.h,v 1.2 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #if !defined(_SPANDSP_PRIVATE_V29TX_H_)
</span><span class="cx"> #define _SPANDSP_PRIVATE_V29TX_H_
</span><span class="cx">
</span><ins>+/*! The number of taps in the pulse shaping/bandpass filter */
+#define V29_TX_FILTER_STEPS 9
+
</ins><span class="cx"> /*!
</span><span class="cx"> V.29 modem transmit side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.29 modem transmitter.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspt38_coreh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/t38_core.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t38_core.h,v 1.38 2009/04/12 14:18:02 steveu Exp $
</del><ins>+ * $Id: t38_core.h,v 1.39 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -167,6 +167,22 @@
</span><span class="cx"> T38_DATA_RATE_MANAGEMENT_TRANSFERRED_TCF = 2
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+/*! T.38 Packet categories used for setting the redundancy level and packet repeat
+ counts on a packet by packet basis. */
+enum t38_packet_categories_e
+{
+ /*! \brief Indicator packet */
+ T38_PACKET_CATEGORY_INDICATOR = 0,
+ /*! \brief Control data packet */
+ T38_PACKET_CATEGORY_CONTROL_DATA = 1,
+ /*! \brief Terminating control data packet */
+ T38_PACKET_CATEGORY_CONTROL_DATA_END = 2,
+ /*! \brief Image data packet */
+ T38_PACKET_CATEGORY_IMAGE_DATA = 3,
+ /*! \brief Terminating image data packet */
+ T38_PACKET_CATEGORY_IMAGE_DATA_END = 4
+};
+
</ins><span class="cx"> #define T38_RX_BUF_LEN 2048
</span><span class="cx"> #define T38_TX_BUF_LEN 16384
</span><span class="cx">
</span><span class="lines">@@ -232,9 +248,8 @@
</span><span class="cx"> /*! \brief Send an indicator packet
</span><span class="cx"> \param s The T.38 context.
</span><span class="cx"> \param indicator The indicator to send.
</span><del>- \param count The number of copies of the packet to send.
</del><span class="cx"> \return The delay to allow after this indicator is sent. */
</span><del>-SPAN_DECLARE(int) t38_core_send_indicator(t38_core_state_t *s, int indicator, int count);
</del><ins>+SPAN_DECLARE(int) t38_core_send_indicator(t38_core_state_t *s, int indicator);
</ins><span class="cx">
</span><span class="cx"> /*! \brief Find the delay to allow for HDLC flags after sending an indicator
</span><span class="cx"> \param s The T.38 context.
</span><span class="lines">@@ -248,18 +263,18 @@
</span><span class="cx"> \param field_type The packet's field type.
</span><span class="cx"> \param field The message data content for the packet.
</span><span class="cx"> \param field_len The length of the message data, in bytes.
</span><del>- \param count The number of copies of the packet to send.
</del><ins>+ \param category The category of the packet being sent. This should be one of the values defined for t38_packet_categories_e.
</ins><span class="cx"> \return ??? */
</span><del>-SPAN_DECLARE(int) t38_core_send_data(t38_core_state_t *s, int data_type, int field_type, const uint8_t field[], int field_len, int count);
</del><ins>+SPAN_DECLARE(int) t38_core_send_data(t38_core_state_t *s, int data_type, int field_type, const uint8_t field[], int field_len, int category);
</ins><span class="cx">
</span><span class="cx"> /*! \brief Send a data packet
</span><span class="cx"> \param s The T.38 context.
</span><span class="cx"> \param data_type The packet's data type.
</span><span class="cx"> \param field The list of fields.
</span><span class="cx"> \param fields The number of fields in the list.
</span><del>- \param count The number of copies of the packet to send.
</del><ins>+ \param category The category of the packet being sent. This should be one of the values defined for t38_packet_categories_e.
</ins><span class="cx"> \return ??? */
</span><del>-SPAN_DECLARE(int) t38_core_send_data_multi_field(t38_core_state_t *s, int data_type, const t38_data_field_t field[], int fields, int count);
</del><ins>+SPAN_DECLARE(int) t38_core_send_data_multi_field(t38_core_state_t *s, int data_type, const t38_data_field_t field[], int fields, int category);
</ins><span class="cx">
</span><span class="cx"> /*! \brief Process a received T.38 IFP packet.
</span><span class="cx"> \param s The T.38 context.
</span><span class="lines">@@ -299,10 +314,29 @@
</span><span class="cx"> */
</span><span class="cx"> SPAN_DECLARE(void) t38_set_jbig_transcoding(t38_core_state_t *s, int jbig_transcoding);
</span><span class="cx">
</span><ins>+/*! Set the maximum buffer size for received data at the far end.
+ \param s The T.38 context.
+ \param max_buffer_size The maximum buffer size.
+*/
</ins><span class="cx"> SPAN_DECLARE(void) t38_set_max_buffer_size(t38_core_state_t *s, int max_buffer_size);
</span><span class="cx">
</span><ins>+/*! Set the maximum size of an IFP packet that is acceptable by the far end.
+ \param s The T.38 context.
+ \param max_datagram_size The maximum IFP packet length, in bytes.
+*/
</ins><span class="cx"> SPAN_DECLARE(void) t38_set_max_datagram_size(t38_core_state_t *s, int max_datagram_size);
</span><span class="cx">
</span><ins>+/*! \brief Send a data packet
+ \param s The T.38 context.
+ \param category The category of the packet being sent. This should be one of the values defined for t38_packet_categories_e.
+ \param setting The repeat count for the category. This should be at least one for all categories other an indicator packets.
+ Zero is valid for indicator packets, as it suppresses the sending of indicator packets, as an application using
+ TCP for the transport would require. As the setting is passed through to the transmission channel, additional
+ information may be encoded in it, such as the redundancy depth for the particular packet category. */
+SPAN_DECLARE(void) t38_set_redundancy_control(t38_core_state_t *s, int category, int setting);
+
+SPAN_DECLARE(void) t38_set_fastest_image_data_rate(t38_core_state_t *s, int max_rate);
+
</ins><span class="cx"> SPAN_DECLARE(int) t38_get_fastest_image_data_rate(t38_core_state_t *s);
</span><span class="cx">
</span><span class="cx"> /*! Set the T.38 version to be emulated.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv17rxh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v17rx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v17rx.h,v 1.64 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v17rx.h,v 1.65 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -211,25 +211,6 @@
</span><span class="cx"> TCM absolutely transformed the phone line modem business.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-/* Target length for the equalizer is about 63 taps, to deal with the worst stuff
- in V.56bis. */
-/*! Samples before the target position in the equalizer buffer */
-#define V17_EQUALIZER_PRE_LEN 8
-/*! Samples after the target position in the equalizer buffer */
-#define V17_EQUALIZER_POST_LEN 8
-
-/*! The number of taps in the pulse shaping/bandpass filter */
-#define V17_RX_FILTER_STEPS 27
-
-/* We can store more trellis depth that we look back over, so that we can push out a group
- of symbols in one go, giving greater processing efficiency, at the expense of a bit more
- latency through the modem. */
-/* Right now we don't take advantage of this optimisation. */
-/*! The depth of the trellis buffer */
-#define V17_TRELLIS_STORAGE_DEPTH 16
-/*! How far we look back into history for trellis decisions */
-#define V17_TRELLIS_LOOKBACK_DEPTH 16
-
</del><span class="cx"> /*!
</span><span class="cx"> V.17 modem receive side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.17 modem receiver.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv17txh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v17tx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v17tx.h,v 1.42 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v17tx.h,v 1.43 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -81,9 +81,6 @@
</span><span class="cx"> transmitter.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-/*! The number of taps in the pulse shaping/bandpass filter */
-#define V17_TX_FILTER_STEPS 9
-
</del><span class="cx"> /*!
</span><span class="cx"> V.17 modem transmit side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.17 modem transmitter.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv22bish"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v22bis.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v22bis.h,v 1.43 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v22bis.h,v 1.45 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -57,17 +57,6 @@
</span><span class="cx"> V22BIS_GUARD_TONE_1800HZ
</span><span class="cx"> };
</span><span class="cx">
</span><del>-/*! The number of steps to the left and to the right of the target position in the equalizer buffer. */
-#define V22BIS_EQUALIZER_LEN 7
-/*! One less than a power of 2 >= (2*V22BIS_EQUALIZER_LEN + 1) */
-#define V22BIS_EQUALIZER_MASK 15
-
-/*! The number of taps in the transmit pulse shaping filter */
-#define V22BIS_TX_FILTER_STEPS 9
-
-/*! The number of taps in the receive pulse shaping/bandpass filter */
-#define V22BIS_RX_FILTER_STEPS 37
-
</del><span class="cx"> /*!
</span><span class="cx"> V.22bis modem descriptor. This defines the working state for a single instance
</span><span class="cx"> of a V.22bis modem.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv27ter_rxh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_rx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v27ter_rx.h,v 1.60 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v27ter_rx.h,v 1.61 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -46,24 +46,6 @@
</span><span class="cx"> straightforward.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-/* Target length for the equalizer is about 43 taps for 4800bps and 32 taps for 2400bps
- to deal with the worst stuff in V.56bis. */
-/*! Samples before the target position in the equalizer buffer */
-#define V27TER_EQUALIZER_PRE_LEN 16 /* This much before the real event */
-/*! Samples after the target position in the equalizer buffer */
-#define V27TER_EQUALIZER_POST_LEN 14 /* This much after the real event (must be even) */
-
-/*! The number of taps in the 4800bps pulse shaping/bandpass filter */
-#define V27TER_RX_4800_FILTER_STEPS 27
-/*! The number of taps in the 2400bps pulse shaping/bandpass filter */
-#define V27TER_RX_2400_FILTER_STEPS 27
-
-#if V27TER_RX_4800_FILTER_STEPS > V27TER_RX_2400_FILTER_STEPS
-#define V27TER_RX_FILTER_STEPS V27TER_RX_4800_FILTER_STEPS
-#else
-#define V27TER_RX_FILTER_STEPS V27TER_RX_2400_FILTER_STEPS
-#endif
-
</del><span class="cx"> /*!
</span><span class="cx"> V.27ter modem receive side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.27ter modem receiver.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv27ter_txh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v27ter_tx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v27ter_tx.h,v 1.42 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v27ter_tx.h,v 1.43 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -64,9 +64,6 @@
</span><span class="cx"> transmitter.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-/*! The number of taps in the pulse shaping/bandpass filter */
-#define V27TER_TX_FILTER_STEPS 9
-
</del><span class="cx"> /*!
</span><span class="cx"> V.27ter modem transmit side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.27ter modem transmitter.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv29rxh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v29rx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v29rx.h,v 1.71 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v29rx.h,v 1.72 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -120,16 +120,6 @@
</span><span class="cx"> therefore, only tests that bits starting at bit 24 are really ones.
</span><span class="cx"> */
</span><span class="cx">
</span><del>-/* Target length for the equalizer is about 63 taps, to deal with the worst stuff
- in V.56bis. */
-/*! Samples before the target position in the equalizer buffer */
-#define V29_EQUALIZER_PRE_LEN 16
-/*! Samples after the target position in the equalizer buffer */
-#define V29_EQUALIZER_POST_LEN 14
-
-/*! The number of taps in the pulse shaping/bandpass filter */
-#define V29_RX_FILTER_STEPS 27
-
</del><span class="cx"> typedef void (*qam_report_handler_t)(void *user_data, const complexf_t *constel, const complexf_t *target, int symbol);
</span><span class="cx">
</span><span class="cx"> /*!
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspv29txh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/v29tx.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v29tx.h,v 1.40 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v29tx.h,v 1.41 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -94,9 +94,6 @@
</span><span class="cx">
</span><span class="cx"> */
</span><span class="cx">
</span><del>-/*! The number of taps in the pulse shaping/bandpass filter */
-#define V29_TX_FILTER_STEPS 9
-
</del><span class="cx"> /*!
</span><span class="cx"> V.29 modem transmit side descriptor. This defines the working state for a
</span><span class="cx"> single instance of a V.29 modem transmitter.
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcspandspversionh"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/spandsp/version.h (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/spandsp/version.h        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/spandsp/version.h        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -30,9 +30,9 @@
</span><span class="cx">
</span><span class="cx"> /* The date and time of the version are in UTC form. */
</span><span class="cx">
</span><del>-#define SPANDSP_RELEASE_DATE 20090602
-#define SPANDSP_RELEASE_TIME 160509
-#define SPANDSP_RELEASE_DATETIME_STRING "20090602 160509"
</del><ins>+#define SPANDSP_RELEASE_DATE 20090714
+#define SPANDSP_RELEASE_TIME 135534
+#define SPANDSP_RELEASE_DATETIME_STRING "20090714 135534"
</ins><span class="cx">
</span><span class="cx"> #endif
</span><span class="cx"> /*- End of file ------------------------------------------------------------*/
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrct31c"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/t31.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/t31.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/t31.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t31.c,v 1.150 2009/04/12 09:12:10 steveu Exp $
</del><ins>+ * $Id: t31.c,v 1.151 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -696,13 +696,13 @@
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM:
</span><span class="cx"> /* Create a 75ms silence */
</span><span class="cx"> if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL)
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_2;
</span><span class="cx"> fe->next_tx_samples = fe->samples;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_2:
</span><span class="cx"> /* Switch on a fast modem, and give the training time to complete */
</span><del>- delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_3;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_3:
</span><span class="lines">@@ -734,12 +734,12 @@
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="cx"> /* If we are sending quickly there seems no point in doing any padding */
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA_END);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5;
</span><span class="cx"> delay = 0;
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA);
</ins><span class="cx"> delay = bits_to_us(s, 8*len);
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_4:
</span><span class="lines">@@ -750,7 +750,7 @@
</span><span class="cx"> {
</span><span class="cx"> len += fe->non_ecm_trailer_bytes;
</span><span class="cx"> memset(buf, 0, len);
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA_END);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5;
</span><span class="cx"> /* Allow a bit more time than the data will take to play out, to ensure the far ATA does not
</span><span class="cx"> cut things short. */
</span><span class="lines">@@ -761,13 +761,13 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> memset(buf, 0, len);
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA);
</ins><span class="cx"> delay = bits_to_us(s, 8*len);
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_5:
</span><span class="cx"> /* This should not be needed, since the message above indicates the end of the signal, but it
</span><span class="cx"> seems like it can improve compatibility with quirky implementations. */
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NONE;
</span><span class="cx"> return delay;
</span><span class="cx"> }
</span><span class="lines">@@ -784,6 +784,7 @@
</span><span class="cx"> int previous;
</span><span class="cx"> int delay;
</span><span class="cx"> int i;
</span><ins>+ int category;
</ins><span class="cx">
</span><span class="cx"> fe = &s->t38_fe;
</span><span class="cx"> for (delay = 0; delay == 0; )
</span><span class="lines">@@ -793,13 +794,13 @@
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM:
</span><span class="cx"> /* Create a 75ms silence */
</span><span class="cx"> if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL)
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2;
</span><span class="cx"> fe->next_tx_samples = fe->samples + ms_to_samples(75);
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM_2:
</span><span class="cx"> /* Send HDLC preambling */
</span><del>- delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator);
</ins><span class="cx"> delay += t38_core_send_flags_delay(&fe->t38, fe->next_tx_indicator);
</span><span class="cx"> at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT);
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3;
</span><span class="lines">@@ -834,7 +835,8 @@
</span><span class="cx"> data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK_SIG_END;
</span><span class="cx"> data_fields[1].field = NULL;
</span><span class="cx"> data_fields[1].field_len = 0;
</span><del>- t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA_END : T38_PACKET_CATEGORY_IMAGE_DATA_END;
+ t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5;
</span><span class="cx"> /* We add a bit of extra time here, as with some implementations
</span><span class="cx"> the carrier falling too abruptly causes data loss. */
</span><span class="lines">@@ -849,23 +851,26 @@
</span><span class="cx"> data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK;
</span><span class="cx"> data_fields[1].field = NULL;
</span><span class="cx"> data_fields[1].field_len = 0;
</span><del>- t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3;
</span><span class="cx"> delay = bits_to_us(s, i*8 + fe->hdlc_tx.extra_bits);
</span><span class="cx"> at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT);
</span><span class="cx"> }
</span><ins>+ break;
</ins><span class="cx"> }
</span><del>- else
- {
- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i, fe->t38.data_tx_count);
- fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4;
- delay = bits_to_us(s, i*8);
- }
- break;
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i, category);
+ fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4;
</ins><span class="cx"> }
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], fe->octets_per_data_packet, fe->t38.data_tx_count);
- s->hdlc_tx.ptr += fe->octets_per_data_packet;
- delay = bits_to_us(s, fe->octets_per_data_packet*8);
</del><ins>+ else
+ {
+ i = fe->octets_per_data_packet;
+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &s->hdlc_tx.buf[s->hdlc_tx.ptr], i, category);
+ s->hdlc_tx.ptr += i;
+ }
+ delay = bits_to_us(s, i*8);
</ins><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM_4:
</span><span class="cx"> /* End of HDLC frame */
</span><span class="lines">@@ -877,7 +882,8 @@
</span><span class="cx"> /* End of transmission */
</span><span class="cx"> s->hdlc_tx.len = 0;
</span><span class="cx"> s->hdlc_tx.final = FALSE;
</span><del>- t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5;
</span><span class="cx"> /* We add a bit of extra time here, as with some implementations
</span><span class="cx"> the carrier falling too abruptly causes data loss. */
</span><span class="lines">@@ -888,7 +894,8 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> /* Finish the current frame off, and prepare for the next one. */
</span><del>- t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3;
</span><span class="cx"> at_put_response_code(&s->at_state, AT_RESPONSE_CODE_CONNECT);
</span><span class="cx"> /* We should now wait enough time for everything to clear through an analogue modem at the far end. */
</span><span class="lines">@@ -899,8 +906,9 @@
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM_5:
</span><span class="cx"> /* Note that some boxes do not like us sending a T38_FIELD_HDLC_SIG_END at this point.
</span><span class="cx"> A T38_IND_NO_SIGNAL should always be OK. */
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_SIG_END, NULL, 0, fe->t38.data_end_tx_count);
- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA_END : T38_PACKET_CATEGORY_IMAGE_DATA_END;
+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_SIG_END, NULL, 0, category);
+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NONE;
</span><span class="cx"> at_put_response_code(&s->at_state, AT_RESPONSE_CODE_OK);
</span><span class="cx"> t31_set_at_rx_mode(s, AT_MODE_OFFHOOK_COMMAND);
</span><span class="lines">@@ -927,14 +935,14 @@
</span><span class="cx"> of silence, starting the delay with a no signal indication makes sense.
</span><span class="cx"> We do need a 200ms delay, as that is a specification requirement. */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_CED_2;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> delay = 200000;
</span><span class="cx"> fe->next_tx_samples = fe->samples;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_CED_2:
</span><span class="cx"> /* Initial 200ms delay over. Send the CED indicator */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_CED_3;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_CED, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_CED);
</ins><span class="cx"> fe->current_tx_data_type = T38_DATA_NONE;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_CED_3:
</span><span class="lines">@@ -964,7 +972,7 @@
</span><span class="cx"> be sending 200ms of silence, according to T.30, starting that delay with
</span><span class="cx"> a no signal indication makes sense. */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_CNG_2;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> delay = 200000;
</span><span class="cx"> fe->next_tx_samples = fe->samples;
</span><span class="cx"> break;
</span><span class="lines">@@ -973,7 +981,7 @@
</span><span class="cx"> coming the other way interrupts it, or a long timeout controlled by the T.30 engine
</span><span class="cx"> expires. */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_NONE;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_CNG, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_CNG);
</ins><span class="cx"> fe->current_tx_data_type = T38_DATA_NONE;
</span><span class="cx"> return delay;
</span><span class="cx"> }
</span><span class="lines">@@ -1728,7 +1736,7 @@
</span><span class="cx"> case FAX_MODEM_SILENCE_TX:
</span><span class="cx"> if (s->t38_mode)
</span><span class="cx"> {
</span><del>- t38_core_send_indicator(&s->t38_fe.t38, T38_IND_NO_SIGNAL, INDICATOR_TX_COUNT);
</del><ins>+ t38_core_send_indicator(&s->t38_fe.t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> s->t38_fe.next_tx_samples = s->t38_fe.samples + ms_to_samples(700);
</span><span class="cx"> s->t38_fe.timed_step = T38_TIMED_STEP_PAUSE;
</span><span class="cx"> s->t38_fe.current_tx_data_type = T38_DATA_NONE;
</span><span class="lines">@@ -1755,7 +1763,7 @@
</span><span class="cx"> /* Send 200ms of silence to "push" the last audio out */
</span><span class="cx"> if (s->t38_mode)
</span><span class="cx"> {
</span><del>- t38_core_send_indicator(&s->t38_fe.t38, T38_IND_NO_SIGNAL, INDICATOR_TX_COUNT);
</del><ins>+ t38_core_send_indicator(&s->t38_fe.t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="lines">@@ -2424,17 +2432,21 @@
</span><span class="cx"> {
</span><span class="cx"> /* Continuous streaming mode, as used for TPKT over TCP transport */
</span><span class="cx"> /* Inhibit indicator packets */
</span><del>- s->t38_fe.t38.indicator_tx_count = 0;
- s->t38_fe.t38.data_tx_count = 1;
- s->t38_fe.t38.data_end_tx_count = 1;
</del><ins>+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_INDICATOR, 0);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA, 1);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA_END, 1);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA, 1);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA_END, 1);
</ins><span class="cx"> s->t38_fe.ms_per_tx_chunk = 0;
</span><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="cx"> /* Paced streaming mode, as used for UDP transports */
</span><del>- s->t38_fe.t38.indicator_tx_count = INDICATOR_TX_COUNT;
- s->t38_fe.t38.data_tx_count = DATA_TX_COUNT;
- s->t38_fe.t38.data_end_tx_count = DATA_END_TX_COUNT;
</del><ins>+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_INDICATOR, INDICATOR_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA, DATA_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA_END, DATA_END_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA, DATA_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA_END, DATA_END_TX_COUNT);
</ins><span class="cx"> s->t38_fe.ms_per_tx_chunk = MS_PER_TX_CHUNK;
</span><span class="cx"> }
</span><span class="cx"> set_octets_per_data_packet(s, 300);
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrct38_corec"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/t38_core.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/t38_core.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/t38_core.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t38_core.c,v 1.52 2009/02/10 13:06:46 steveu Exp $
</del><ins>+ * $Id: t38_core.c,v 1.53 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -777,7 +777,7 @@
</span><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><del>-SPAN_DECLARE(int) t38_core_send_indicator(t38_core_state_t *s, int indicator, int count)
</del><ins>+SPAN_DECLARE(int) t38_core_send_indicator(t38_core_state_t *s, int indicator)
</ins><span class="cx"> {
</span><span class="cx"> uint8_t buf[100];
</span><span class="cx"> int len;
</span><span class="lines">@@ -789,7 +789,7 @@
</span><span class="cx"> {
</span><span class="cx"> /* Zero is a valid count, to suppress the transmission of indicators when the
</span><span class="cx"> transport means they are not needed - e.g. TPKT/TCP. */
</span><del>- if (count)
</del><ins>+ if (s->category_control[T38_PACKET_CATEGORY_INDICATOR])
</ins><span class="cx"> {
</span><span class="cx"> if ((len = t38_encode_indicator(s, buf, indicator)) < 0)
</span><span class="cx"> {
</span><span class="lines">@@ -797,7 +797,7 @@
</span><span class="cx"> return len;
</span><span class="cx"> }
</span><span class="cx"> span_log(&s->logging, SPAN_LOG_FLOW, "Tx %5d: indicator %s\n", s->tx_seq_no, t38_indicator_to_str(indicator));
</span><del>- s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, count);
</del><ins>+ s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, s->category_control[T38_PACKET_CATEGORY_INDICATOR]);
</ins><span class="cx"> s->tx_seq_no = (s->tx_seq_no + 1) & 0xFFFF;
</span><span class="cx"> delay = modem_startup_time[indicator].training;
</span><span class="cx"> if (s->allow_for_tep)
</span><span class="lines">@@ -815,7 +815,7 @@
</span><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><del>-SPAN_DECLARE(int) t38_core_send_data(t38_core_state_t *s, int data_type, int field_type, const uint8_t field[], int field_len, int count)
</del><ins>+SPAN_DECLARE(int) t38_core_send_data(t38_core_state_t *s, int data_type, int field_type, const uint8_t field[], int field_len, int category)
</ins><span class="cx"> {
</span><span class="cx"> t38_data_field_t field0;
</span><span class="cx"> uint8_t buf[1000];
</span><span class="lines">@@ -829,13 +829,13 @@
</span><span class="cx"> span_log(&s->logging, SPAN_LOG_FLOW, "T.38 data len is %d\n", len);
</span><span class="cx"> return len;
</span><span class="cx"> }
</span><del>- s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, count);
</del><ins>+ s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, s->category_control[category]);
</ins><span class="cx"> s->tx_seq_no = (s->tx_seq_no + 1) & 0xFFFF;
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><del>-SPAN_DECLARE(int) t38_core_send_data_multi_field(t38_core_state_t *s, int data_type, const t38_data_field_t field[], int fields, int count)
</del><ins>+SPAN_DECLARE(int) t38_core_send_data_multi_field(t38_core_state_t *s, int data_type, const t38_data_field_t field[], int fields, int category)
</ins><span class="cx"> {
</span><span class="cx"> uint8_t buf[1000];
</span><span class="cx"> int len;
</span><span class="lines">@@ -845,7 +845,7 @@
</span><span class="cx"> span_log(&s->logging, SPAN_LOG_FLOW, "T.38 data len is %d\n", len);
</span><span class="cx"> return len;
</span><span class="cx"> }
</span><del>- s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, count);
</del><ins>+ s->tx_packet_handler(s, s->tx_packet_user_data, buf, len, s->category_control[category]);
</ins><span class="cx"> s->tx_seq_no = (s->tx_seq_no + 1) & 0xFFFF;
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="lines">@@ -911,6 +911,18 @@
</span><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><ins>+SPAN_DECLARE(void) t38_set_redundancy_control(t38_core_state_t *s, int category, int setting)
+{
+ s->category_control[category] = setting;
+}
+/*- End of function --------------------------------------------------------*/
+
+SPAN_DECLARE(void) t38_set_fastest_image_data_rate(t38_core_state_t *s, int max_rate)
+{
+ s->fastest_image_data_rate = max_rate;
+}
+/*- End of function --------------------------------------------------------*/
+
</ins><span class="cx"> SPAN_DECLARE(int) t38_get_fastest_image_data_rate(t38_core_state_t *s)
</span><span class="cx"> {
</span><span class="cx"> return s->fastest_image_data_rate;
</span><span class="lines">@@ -952,6 +964,13 @@
</span><span class="cx"> s->t38_version = 0;
</span><span class="cx"> s->check_sequence_numbers = TRUE;
</span><span class="cx">
</span><ins>+ /* Set some defaults */
+ s->category_control[T38_PACKET_CATEGORY_INDICATOR] = 1;
+ s->category_control[T38_PACKET_CATEGORY_CONTROL_DATA] = 1;
+ s->category_control[T38_PACKET_CATEGORY_CONTROL_DATA_END] = 1;
+ s->category_control[T38_PACKET_CATEGORY_IMAGE_DATA] = 1;
+ s->category_control[T38_PACKET_CATEGORY_IMAGE_DATA_END] = 1;
+
</ins><span class="cx"> /* Set the initial current receive states to something invalid, so the
</span><span class="cx"> first data received is seen as a change of state. */
</span><span class="cx"> s->current_rx_indicator = -1;
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrct38_gatewayc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/t38_gateway.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/t38_gateway.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/t38_gateway.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t38_gateway.c,v 1.163 2009/05/16 03:34:45 steveu Exp $
</del><ins>+ * $Id: t38_gateway.c,v 1.164 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -1498,7 +1498,7 @@
</span><span class="cx">
</span><span class="cx"> static void announce_training(t38_gateway_state_t *s)
</span><span class="cx"> {
</span><del>- t38_core_send_indicator(&s->t38x.t38, set_fast_packetisation(s), s->t38x.t38.indicator_tx_count);
</del><ins>+ t38_core_send_indicator(&s->t38x.t38, set_fast_packetisation(s));
</ins><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><span class="lines">@@ -1552,7 +1552,7 @@
</span><span class="cx"> /* TODO: If the carrier really did fall for good during the 500ms TEP blocking timeout, we
</span><span class="cx"> won't declare the no-signal condition. */
</span><span class="cx"> non_ecm_push_residue(s);
</span><del>- t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL, s->t38x.t38.indicator_tx_count);
</del><ins>+ t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> }
</span><span class="cx"> restart_rx_modem(s);
</span><span class="cx"> break;
</span><span class="lines">@@ -1586,7 +1586,7 @@
</span><span class="cx"> /* There is a fractional octet in progress. We might as well send every last bit we can. */
</span><span class="cx"> s->data[s->data_ptr++] = (uint8_t) (s->bit_stream << (8 - s->bit_no));
</span><span class="cx"> }
</span><del>- t38_core_send_data(&t->t38x.t38, t->t38x.current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, s->data, s->data_ptr, t->t38x.t38.data_end_tx_count);
</del><ins>+ t38_core_send_data(&t->t38x.t38, t->t38x.current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, s->data, s->data_ptr, T38_PACKET_CATEGORY_IMAGE_DATA_END);
</ins><span class="cx"> s->in_bits += s->bits_absorbed;
</span><span class="cx"> s->out_octets += s->data_ptr;
</span><span class="cx"> s->data_ptr = 0;
</span><span class="lines">@@ -1600,7 +1600,7 @@
</span><span class="cx"> s = &t->core.to_t38;
</span><span class="cx"> if (s->data_ptr)
</span><span class="cx"> {
</span><del>- t38_core_send_data(&t->t38x.t38, t->t38x.current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, s->data, s->data_ptr, t->t38x.t38.data_tx_count);
</del><ins>+ t38_core_send_data(&t->t38x.t38, t->t38x.current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, s->data, s->data_ptr, T38_PACKET_CATEGORY_IMAGE_DATA);
</ins><span class="cx"> s->in_bits += s->bits_absorbed;
</span><span class="cx"> s->out_octets += s->data_ptr;
</span><span class="cx"> s->bits_absorbed = 0;
</span><span class="lines">@@ -1682,6 +1682,7 @@
</span><span class="cx"> static void hdlc_rx_status(hdlc_rx_state_t *t, int status)
</span><span class="cx"> {
</span><span class="cx"> t38_gateway_state_t *s;
</span><ins>+ int category;
</ins><span class="cx">
</span><span class="cx"> s = (t38_gateway_state_t *) t->frame_user_data;
</span><span class="cx"> span_log(&s->logging, SPAN_LOG_FLOW, "HDLC signal status is %s (%d)\n", signal_status_to_str(status), status);
</span><span class="lines">@@ -1712,8 +1713,9 @@
</span><span class="cx"> case SIG_STATUS_CARRIER_DOWN:
</span><span class="cx"> if (t->framing_ok_announced)
</span><span class="cx"> {
</span><del>- t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_SIG_END, NULL, 0, s->t38x.t38.data_end_tx_count);
- t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL, s->t38x.t38.indicator_tx_count);
</del><ins>+ category = (s->t38x.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA_END : T38_PACKET_CATEGORY_IMAGE_DATA_END;
+ t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_SIG_END, NULL, 0, category);
+ t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> t->framing_ok_announced = FALSE;
</span><span class="cx"> }
</span><span class="cx"> restart_rx_modem(s);
</span><span class="lines">@@ -1739,6 +1741,7 @@
</span><span class="cx"> {
</span><span class="cx"> t38_gateway_state_t *s;
</span><span class="cx"> t38_gateway_to_t38_state_t *u;
</span><ins>+ int category;
</ins><span class="cx">
</span><span class="cx"> s = (t38_gateway_state_t *) t->frame_user_data;
</span><span class="cx"> u = &s->core.to_t38;
</span><span class="lines">@@ -1757,6 +1760,7 @@
</span><span class="cx"> /* Hit HDLC flag */
</span><span class="cx"> if (t->flags_seen >= t->framing_ok_threshold)
</span><span class="cx"> {
</span><ins>+ category = (s->t38x.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
</ins><span class="cx"> if (t->len)
</span><span class="cx"> {
</span><span class="cx"> /* This is not back-to-back flags */
</span><span class="lines">@@ -1765,7 +1769,7 @@
</span><span class="cx"> if (u->data_ptr)
</span><span class="cx"> {
</span><span class="cx"> bit_reverse(u->data, t->buffer + t->len - 2 - u->data_ptr, u->data_ptr);
</span><del>- t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_DATA, u->data, u->data_ptr, s->t38x.t38.data_tx_count);
</del><ins>+ t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_DATA, u->data, u->data_ptr, category);
</ins><span class="cx"> }
</span><span class="cx"> /*endif*/
</span><span class="cx"> if (t->num_bits != 7)
</span><span class="lines">@@ -1775,7 +1779,7 @@
</span><span class="cx"> /* It seems some boxes may not like us sending a _SIG_END here, and then another
</span><span class="cx"> when the carrier actually drops. Lets just send T38_FIELD_HDLC_FCS_OK here. */
</span><span class="cx"> if (t->len > 2)
</span><del>- t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_FCS_BAD, NULL, 0, s->t38x.t38.data_tx_count);
</del><ins>+ t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_FCS_BAD, NULL, 0, category);
</ins><span class="cx"> /*endif*/
</span><span class="cx"> }
</span><span class="cx"> else if ((u->crc & 0xFFFF) != 0xF0B8)
</span><span class="lines">@@ -1785,7 +1789,7 @@
</span><span class="cx"> /* It seems some boxes may not like us sending a _SIG_END here, and then another
</span><span class="cx"> when the carrier actually drops. Lets just send T38_FIELD_HDLC_FCS_OK here. */
</span><span class="cx"> if (t->len > 2)
</span><del>- t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_FCS_BAD, NULL, 0, s->t38x.t38.data_tx_count);
</del><ins>+ t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_FCS_BAD, NULL, 0, category);
</ins><span class="cx"> /*endif*/
</span><span class="cx"> }
</span><span class="cx"> else
</span><span class="lines">@@ -1810,7 +1814,7 @@
</span><span class="cx"> /*endif*/
</span><span class="cx"> /* It seems some boxes may not like us sending a _SIG_END here, and then another
</span><span class="cx"> when the carrier actually drops. Lets just send T38_FIELD_HDLC_FCS_OK here. */
</span><del>- t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_FCS_OK, NULL, 0, s->t38x.t38.data_tx_count);
</del><ins>+ t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_FCS_OK, NULL, 0, category);
</ins><span class="cx"> }
</span><span class="cx"> /*endif*/
</span><span class="cx"> }
</span><span class="lines">@@ -1835,7 +1839,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (s->t38x.current_tx_data_type == T38_DATA_V21)
</span><span class="cx"> {
</span><del>- t38_core_send_indicator(&s->t38x.t38, set_slow_packetisation(s), s->t38x.t38.indicator_tx_count);
</del><ins>+ t38_core_send_indicator(&s->t38x.t38, set_slow_packetisation(s));
</ins><span class="cx"> s->audio.modems.rx_signal_present = TRUE;
</span><span class="cx"> }
</span><span class="cx"> /*endif*/
</span><span class="lines">@@ -1861,6 +1865,7 @@
</span><span class="cx"> {
</span><span class="cx"> t38_gateway_state_t *s;
</span><span class="cx"> t38_gateway_to_t38_state_t *u;
</span><ins>+ int category;
</ins><span class="cx">
</span><span class="cx"> if (new_bit < 0)
</span><span class="cx"> {
</span><span class="lines">@@ -1914,7 +1919,8 @@
</span><span class="cx"> if (++u->data_ptr >= u->octets_per_data_packet)
</span><span class="cx"> {
</span><span class="cx"> bit_reverse(u->data, t->buffer + t->len - 2 - u->data_ptr, u->data_ptr);
</span><del>- t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_DATA, u->data, u->data_ptr, s->t38x.t38.data_tx_count);
</del><ins>+ category = (s->t38x.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&s->t38x.t38, s->t38x.current_tx_data_type, T38_FIELD_HDLC_DATA, u->data, u->data_ptr, category);
</ins><span class="cx"> /* Since we delay transmission by 2 octets, we should now have sent the last of the data octets when
</span><span class="cx"> we have just received the last of the CRC octets. */
</span><span class="cx"> u->data_ptr = 0;
</span><span class="lines">@@ -2028,7 +2034,7 @@
</span><span class="cx"> break;
</span><span class="cx"> case TIMED_MODE_STARTUP:
</span><span class="cx"> /* Ensure a no-signal condition goes out the moment the received audio starts */
</span><del>- t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL, s->t38x.t38.indicator_tx_count);
</del><ins>+ t38_core_send_indicator(&s->t38x.t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> s->core.timed_mode = TIMED_MODE_IDLE;
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="lines">@@ -2127,11 +2133,11 @@
</span><span class="cx"> {
</span><span class="cx"> s->core.supported_modems = supported_modems;
</span><span class="cx"> if ((s->core.supported_modems & T30_SUPPORT_V17))
</span><del>- s->t38x.t38.fastest_image_data_rate = 14400;
</del><ins>+ t38_set_fastest_image_data_rate(&s->t38x.t38, 14400);
</ins><span class="cx"> else if ((s->core.supported_modems & T30_SUPPORT_V29))
</span><del>- s->t38x.t38.fastest_image_data_rate = 9600;
</del><ins>+ t38_set_fastest_image_data_rate(&s->t38x.t38, 9600);
</ins><span class="cx"> else
</span><del>- s->t38x.t38.fastest_image_data_rate = 4800;
</del><ins>+ t38_set_fastest_image_data_rate(&s->t38x.t38, 4800);
</ins><span class="cx"> /*endif*/
</span><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="lines">@@ -2160,8 +2166,8 @@
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><span class="cx"> SPAN_DECLARE(void) t38_gateway_set_real_time_frame_handler(t38_gateway_state_t *s,
</span><del>- t38_gateway_real_time_frame_handler_t *handler,
- void *user_data)
</del><ins>+ t38_gateway_real_time_frame_handler_t *handler,
+ void *user_data)
</ins><span class="cx"> {
</span><span class="cx"> s->core.real_time_frame_handler = handler;
</span><span class="cx"> s->core.real_time_frame_user_data = user_data;
</span><span class="lines">@@ -2191,8 +2197,8 @@
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><span class="cx"> static int t38_gateway_t38_init(t38_gateway_state_t *t,
</span><del>- t38_tx_packet_handler_t *tx_packet_handler,
- void *tx_packet_user_data)
</del><ins>+ t38_tx_packet_handler_t *tx_packet_handler,
+ void *tx_packet_user_data)
</ins><span class="cx"> {
</span><span class="cx"> t38_gateway_t38_state_t *s;
</span><span class="cx">
</span><span class="lines">@@ -2204,9 +2210,11 @@
</span><span class="cx"> (void *) t,
</span><span class="cx"> tx_packet_handler,
</span><span class="cx"> tx_packet_user_data);
</span><del>- s->t38.indicator_tx_count = INDICATOR_TX_COUNT;
- s->t38.data_tx_count = DATA_TX_COUNT;
- s->t38.data_end_tx_count = DATA_END_TX_COUNT;
</del><ins>+ t38_set_redundancy_control(&s->t38, T38_PACKET_CATEGORY_INDICATOR, INDICATOR_TX_COUNT);
+ t38_set_redundancy_control(&s->t38, T38_PACKET_CATEGORY_CONTROL_DATA, DATA_TX_COUNT);
+ t38_set_redundancy_control(&s->t38, T38_PACKET_CATEGORY_CONTROL_DATA_END, DATA_END_TX_COUNT);
+ t38_set_redundancy_control(&s->t38, T38_PACKET_CATEGORY_IMAGE_DATA, DATA_TX_COUNT);
+ t38_set_redundancy_control(&s->t38, T38_PACKET_CATEGORY_IMAGE_DATA_END, DATA_END_TX_COUNT);
</ins><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx"> /*- End of function --------------------------------------------------------*/
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrct38_terminalc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/t38_terminal.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/t38_terminal.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/t38_terminal.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t38_terminal.c,v 1.125 2009/05/02 04:43:48 steveu Exp $
</del><ins>+ * $Id: t38_terminal.c,v 1.127 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -565,7 +565,7 @@
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM:
</span><span class="cx"> /* Create a 75ms silence */
</span><span class="cx"> if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL)
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> else
</span><span class="cx"> delay = 75000;
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_2;
</span><span class="lines">@@ -573,7 +573,7 @@
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_2:
</span><span class="cx"> /* Switch on a fast modem, and give the training time to complete */
</span><del>- delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_3;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_3:
</span><span class="lines">@@ -605,12 +605,13 @@
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="cx"> /* If we are sending quickly there seems no point in doing any padding */
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA_END);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5;
</span><span class="cx"> delay = 0;
</span><ins>+ break;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA);
</ins><span class="cx"> delay = bits_to_us(s, 8*len);
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_4:
</span><span class="lines">@@ -621,7 +622,7 @@
</span><span class="cx"> {
</span><span class="cx"> len += fe->non_ecm_trailer_bytes;
</span><span class="cx"> memset(buf, 0, len);
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, fe->t38.data_end_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_SIG_END, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA_END);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NON_ECM_MODEM_5;
</span><span class="cx"> /* Allow a bit more time than the data will take to play out, to ensure the far ATA does not
</span><span class="cx"> cut things short. */
</span><span class="lines">@@ -632,13 +633,13 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> memset(buf, 0, len);
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, fe->t38.data_tx_count);
</del><ins>+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_T4_NON_ECM_DATA, buf, len, T38_PACKET_CATEGORY_IMAGE_DATA);
</ins><span class="cx"> delay = bits_to_us(s, 8*len);
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_NON_ECM_MODEM_5:
</span><span class="cx"> /* This should not be needed, since the message above indicates the end of the signal, but it
</span><span class="cx"> seems like it can improve compatibility with quirky implementations. */
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NONE;
</span><span class="cx"> return delay;
</span><span class="cx"> }
</span><span class="lines">@@ -652,6 +653,7 @@
</span><span class="cx"> t38_terminal_front_end_state_t *fe;
</span><span class="cx"> uint8_t buf[MAX_OCTETS_PER_UNPACED_CHUNK + 50];
</span><span class="cx"> t38_data_field_t data_fields[2];
</span><ins>+ int category;
</ins><span class="cx"> int previous;
</span><span class="cx"> int delay;
</span><span class="cx"> int i;
</span><span class="lines">@@ -664,7 +666,7 @@
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM:
</span><span class="cx"> /* Create a 75ms silence */
</span><span class="cx"> if (fe->t38.current_tx_indicator != T38_IND_NO_SIGNAL)
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> else
</span><span class="cx"> delay = 75000;
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_2;
</span><span class="lines">@@ -672,7 +674,7 @@
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM_2:
</span><span class="cx"> /* Send HDLC preambling */
</span><del>- delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, fe->next_tx_indicator);
</ins><span class="cx"> delay += t38_core_send_flags_delay(&fe->t38, fe->next_tx_indicator);
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3;
</span><span class="cx"> break;
</span><span class="lines">@@ -701,7 +703,8 @@
</span><span class="cx"> data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK_SIG_END;
</span><span class="cx"> data_fields[1].field = NULL;
</span><span class="cx"> data_fields[1].field_len = 0;
</span><del>- t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA_END : T38_PACKET_CATEGORY_IMAGE_DATA_END;
+ t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5;
</span><span class="cx"> /* We add a bit of extra time here, as with some implementations
</span><span class="cx"> the carrier falling too abruptly causes data loss. */
</span><span class="lines">@@ -715,22 +718,25 @@
</span><span class="cx"> data_fields[1].field_type = T38_FIELD_HDLC_FCS_OK;
</span><span class="cx"> data_fields[1].field = NULL;
</span><span class="cx"> data_fields[1].field_len = 0;
</span><del>- t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data_multi_field(&fe->t38, fe->current_tx_data_type, data_fields, 2, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3;
</span><span class="cx"> delay = bits_to_us(s, i*8 + fe->hdlc_tx.extra_bits);
</span><span class="cx"> }
</span><ins>+ break;
</ins><span class="cx"> }
</span><del>- else
- {
- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], i, fe->t38.data_tx_count);
- fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4;
- delay = bits_to_us(s, i*8);
- }
- break;
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], i, category);
+ fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_4;
</ins><span class="cx"> }
</span><del>- t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], fe->octets_per_data_packet, fe->t38.data_tx_count);
- fe->hdlc_tx.ptr += fe->octets_per_data_packet;
- delay = bits_to_us(s, fe->octets_per_data_packet*8);
</del><ins>+ else
+ {
+ i = fe->octets_per_data_packet;
+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, fe->current_tx_data_type, T38_FIELD_HDLC_DATA, &fe->hdlc_tx.buf[fe->hdlc_tx.ptr], i, category);
+ fe->hdlc_tx.ptr += i;
+ }
+ delay = bits_to_us(s, i*8);
</ins><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM_4:
</span><span class="cx"> /* End of HDLC frame */
</span><span class="lines">@@ -742,7 +748,8 @@
</span><span class="cx"> if (fe->hdlc_tx.len < 0)
</span><span class="cx"> {
</span><span class="cx"> /* End of transmission */
</span><del>- t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK_SIG_END, NULL, 0, fe->t38.data_end_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA_END : T38_PACKET_CATEGORY_IMAGE_DATA_END;
+ t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK_SIG_END, NULL, 0, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_5;
</span><span class="cx"> /* We add a bit of extra time here, as with some implementations
</span><span class="cx"> the carrier falling too abruptly causes data loss. */
</span><span class="lines">@@ -759,7 +766,8 @@
</span><span class="cx"> span_log(&s->logging, SPAN_LOG_FLOW, "No new frame or end transmission condition.\n");
</span><span class="cx"> }
</span><span class="cx"> /* Finish the current frame off, and prepare for the next one. */
</span><del>- t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, fe->t38.data_tx_count);
</del><ins>+ category = (s->t38_fe.current_tx_data_type == T38_DATA_V21) ? T38_PACKET_CATEGORY_CONTROL_DATA : T38_PACKET_CATEGORY_IMAGE_DATA;
+ t38_core_send_data(&fe->t38, previous, T38_FIELD_HDLC_FCS_OK, NULL, 0, category);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_HDLC_MODEM_3;
</span><span class="cx"> /* We should now wait enough time for everything to clear through an analogue modem at the far end. */
</span><span class="cx"> delay = bits_to_us(s, fe->hdlc_tx.extra_bits);
</span><span class="lines">@@ -767,7 +775,7 @@
</span><span class="cx"> case T38_TIMED_STEP_HDLC_MODEM_5:
</span><span class="cx"> /* Note that some boxes do not like us sending a T38_FIELD_HDLC_SIG_END at this point.
</span><span class="cx"> A T38_IND_NO_SIGNAL should always be OK. */
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> fe->timed_step = T38_TIMED_STEP_NONE;
</span><span class="cx"> return delay;
</span><span class="cx"> }
</span><span class="lines">@@ -792,14 +800,14 @@
</span><span class="cx"> of silence, starting the delay with a no signal indication makes sense.
</span><span class="cx"> We do need a 200ms delay, as that is a specification requirement. */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_CED_2;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> delay = 200000;
</span><span class="cx"> fe->next_tx_samples = fe->samples;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_CED_2:
</span><span class="cx"> /* Initial 200ms delay over. Send the CED indicator */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_CED_3;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_CED, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_CED);
</ins><span class="cx"> fe->current_tx_data_type = T38_DATA_NONE;
</span><span class="cx"> break;
</span><span class="cx"> case T38_TIMED_STEP_CED_3:
</span><span class="lines">@@ -829,7 +837,7 @@
</span><span class="cx"> be sending 200ms of silence, according to T.30, starting that delay with
</span><span class="cx"> a no signal indication makes sense. */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_CNG_2;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_NO_SIGNAL);
</ins><span class="cx"> delay = 200000;
</span><span class="cx"> fe->next_tx_samples = fe->samples;
</span><span class="cx"> break;
</span><span class="lines">@@ -838,7 +846,7 @@
</span><span class="cx"> coming the other way interrupts it, or a long timeout controlled by the T.30 engine
</span><span class="cx"> expires. */
</span><span class="cx"> fe->timed_step = T38_TIMED_STEP_NONE;
</span><del>- delay = t38_core_send_indicator(&fe->t38, T38_IND_CNG, fe->t38.indicator_tx_count);
</del><ins>+ delay = t38_core_send_indicator(&fe->t38, T38_IND_CNG);
</ins><span class="cx"> fe->current_tx_data_type = T38_DATA_NONE;
</span><span class="cx"> return delay;
</span><span class="cx"> }
</span><span class="lines">@@ -1032,17 +1040,21 @@
</span><span class="cx"> {
</span><span class="cx"> /* Continuous streaming mode, as used for TPKT over TCP transport */
</span><span class="cx"> /* Inhibit indicator packets */
</span><del>- s->t38_fe.t38.indicator_tx_count = 0;
- s->t38_fe.t38.data_tx_count = 1;
- s->t38_fe.t38.data_end_tx_count = 1;
</del><ins>+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_INDICATOR, 0);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA, 1);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA_END, 1);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA, 1);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA_END, 1);
</ins><span class="cx"> s->t38_fe.ms_per_tx_chunk = 0;
</span><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="cx"> /* Paced streaming mode, as used for UDP transports */
</span><del>- s->t38_fe.t38.indicator_tx_count = INDICATOR_TX_COUNT;
- s->t38_fe.t38.data_tx_count = DATA_TX_COUNT;
- s->t38_fe.t38.data_end_tx_count = DATA_END_TX_COUNT;
</del><ins>+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_INDICATOR, INDICATOR_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA, DATA_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_CONTROL_DATA_END, DATA_END_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA, DATA_TX_COUNT);
+ t38_set_redundancy_control(&s->t38_fe.t38, T38_PACKET_CATEGORY_IMAGE_DATA_END, DATA_END_TX_COUNT);
</ins><span class="cx"> s->t38_fe.ms_per_tx_chunk = MS_PER_TX_CHUNK;
</span><span class="cx"> }
</span><span class="cx"> set_octets_per_data_packet(s, 300);
</span><span class="lines">@@ -1095,7 +1107,7 @@
</span><span class="cx"> (void *) t,
</span><span class="cx"> tx_packet_handler,
</span><span class="cx"> tx_packet_user_data);
</span><del>- s->t38.fastest_image_data_rate = 14400;
</del><ins>+ t38_set_fastest_image_data_rate(&s->t38, 14400);
</ins><span class="cx">
</span><span class="cx"> s->rx_signal_present = FALSE;
</span><span class="cx"> s->timed_step = T38_TIMED_STEP_NONE;
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcv17rxc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/v17rx.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/v17rx.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/v17rx.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v17rx.c,v 1.149 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v17rx.c,v 1.153 2009/07/09 14:17:57 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -262,24 +262,30 @@
</span><span class="cx">
</span><span class="cx"> #if defined(SPANDSP_USE_FIXED_POINTx)
</span><span class="cx"> static void tune_equalizer(v17_rx_state_t *s, const complexi16_t *z, const complexi16_t *target)
</span><ins>+{
+ complexi16_t err;
+
+ /* Find the x and y mismatch from the exact constellation position. */
+ err.re = target->re*FP_FACTOR - z->re;
+ err.im = target->im*FP_FACTOR - z->im;
+ //span_log(&s->logging, SPAN_LOG_FLOW, "Equalizer error %f\n", sqrt(err.re*err.re + err.im*err.im));
+ err.re = ((int32_t) err.re*(int32_t) s->eq_delta) >> 15;
+ err.im = ((int32_t) err.im*(int32_t) s->eq_delta) >> 15;
+ cvec_circular_lmsi16(s->eq_buf, s->eq_coeff, V17_EQUALIZER_LEN, s->eq_step, &err);
+}
</ins><span class="cx"> #else
</span><span class="cx"> static void tune_equalizer(v17_rx_state_t *s, const complexf_t *z, const complexf_t *target)
</span><del>-#endif
</del><span class="cx"> {
</span><span class="cx"> complexf_t err;
</span><span class="cx">
</span><span class="cx"> /* Find the x and y mismatch from the exact constellation position. */
</span><span class="cx"> err = complex_subf(target, z);
</span><del>- //span_log(&s->logging, SPAN_LOG_FLOW, "Equalizer error %f\n", sqrt(ez.re*ez.re + ez.im*ez.im));
</del><ins>+ //span_log(&s->logging, SPAN_LOG_FLOW, "Equalizer error %f\n", sqrt(err.re*err.re + err.im*err.im));
</ins><span class="cx"> err.re *= s->eq_delta;
</span><span class="cx"> err.im *= s->eq_delta;
</span><del>-
- err = complex_subf(target, z);
- err.re *= s->eq_delta;
- err.im *= s->eq_delta;
</del><span class="cx"> cvec_circular_lmsf(s->eq_buf, s->eq_coeff, V17_EQUALIZER_LEN, s->eq_step, &err);
</span><span class="cx"> }
</span><del>-/*- End of function --------------------------------------------------------*/
</del><ins>+#endif
</ins><span class="cx">
</span><span class="cx"> static int descramble(v17_rx_state_t *s, int in_bit)
</span><span class="cx"> {
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcv27ter_rxc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/v27ter_rx.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/v27ter_rx.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/v27ter_rx.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v27ter_rx.c,v 1.130 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v27ter_rx.c,v 1.131 2009/07/08 15:11:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -271,11 +271,7 @@
</span><span class="cx">
</span><span class="cx"> #if defined(SPANDSP_USE_FIXED_POINTx)
</span><span class="cx"> static void tune_equalizer(v27ter_rx_state_t *s, const complexi16_t *z, const complexi16_t *target)
</span><del>-#else
-static void tune_equalizer(v27ter_rx_state_t *s, const complexf_t *z, const complexf_t *target)
-#endif
</del><span class="cx"> {
</span><del>-#if defined(SPANDSP_USE_FIXED_POINTx)
</del><span class="cx"> complexi16_t err;
</span><span class="cx">
</span><span class="cx"> /* Find the x and y mismatch from the exact constellation position. */
</span><span class="lines">@@ -284,7 +280,10 @@
</span><span class="cx"> err.re = ((int32_t) err.re*(int32_t) s->eq_delta) >> 15;
</span><span class="cx"> err.im = ((int32_t) err.im*(int32_t) s->eq_delta) >> 15;
</span><span class="cx"> cvec_circular_lmsi16(s->eq_buf, s->eq_coeff, V27TER_EQUALIZER_LEN, s->eq_step, &err);
</span><ins>+}
</ins><span class="cx"> #else
</span><ins>+static void tune_equalizer(v27ter_rx_state_t *s, const complexf_t *z, const complexf_t *target)
+{
</ins><span class="cx"> complexf_t err;
</span><span class="cx">
</span><span class="cx"> /* Find the x and y mismatch from the exact constellation position. */
</span><span class="lines">@@ -292,8 +291,8 @@
</span><span class="cx"> err.re *= s->eq_delta;
</span><span class="cx"> err.im *= s->eq_delta;
</span><span class="cx"> cvec_circular_lmsf(s->eq_buf, s->eq_coeff, V27TER_EQUALIZER_LEN, s->eq_step, &err);
</span><del>-#endif
</del><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><span class="cx"> #if defined(SPANDSP_USE_FIXED_POINTx)
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcv29rxc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/v29rx.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/v29rx.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/v29rx.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v29rx.c,v 1.166 2009/06/02 16:03:56 steveu Exp $
</del><ins>+ * $Id: v29rx.c,v 1.167 2009/07/08 15:11:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -278,11 +278,7 @@
</span><span class="cx">
</span><span class="cx"> #if defined(SPANDSP_USE_FIXED_POINT)
</span><span class="cx"> static void tune_equalizer(v29_rx_state_t *s, const complexi16_t *z, const complexi16_t *target)
</span><del>-#else
-static void tune_equalizer(v29_rx_state_t *s, const complexf_t *z, const complexf_t *target)
-#endif
</del><span class="cx"> {
</span><del>-#if defined(SPANDSP_USE_FIXED_POINT)
</del><span class="cx"> complexi16_t err;
</span><span class="cx">
</span><span class="cx"> /* Find the x and y mismatch from the exact constellation position. */
</span><span class="lines">@@ -291,7 +287,10 @@
</span><span class="cx"> err.re = ((int32_t) err.re*(int32_t) s->eq_delta) >> 15;
</span><span class="cx"> err.im = ((int32_t) err.im*(int32_t) s->eq_delta) >> 15;
</span><span class="cx"> cvec_circular_lmsi16(s->eq_buf, s->eq_coeff, V29_EQUALIZER_LEN, s->eq_step, &err);
</span><ins>+}
</ins><span class="cx"> #else
</span><ins>+static void tune_equalizer(v29_rx_state_t *s, const complexf_t *z, const complexf_t *target)
+{
</ins><span class="cx"> complexf_t err;
</span><span class="cx">
</span><span class="cx"> /* Find the x and y mismatch from the exact constellation position. */
</span><span class="lines">@@ -299,8 +298,8 @@
</span><span class="cx"> err.re *= s->eq_delta;
</span><span class="cx"> err.im *= s->eq_delta;
</span><span class="cx"> cvec_circular_lmsf(s->eq_buf, s->eq_coeff, V29_EQUALIZER_LEN, s->eq_step, &err);
</span><del>-#endif
</del><span class="cx"> }
</span><ins>+#endif
</ins><span class="cx"> /*- End of function --------------------------------------------------------*/
</span><span class="cx">
</span><span class="cx"> static int scrambled_training_bit(v29_rx_state_t *s)
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcv8c"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/v8.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/v8.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/v8.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v8.c,v 1.38 2009/02/03 16:28:40 steveu Exp $
</del><ins>+ * $Id: v8.c,v 1.39 2009/06/24 00:34:38 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcvector_floatc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/vector_float.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/vector_float.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/vector_float.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: vector_float.c,v 1.21 2009/02/05 15:57:27 steveu Exp $
</del><ins>+ * $Id: vector_float.c,v 1.22 2009/07/12 09:23:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -41,33 +41,10 @@
</span><span class="cx"> #if defined(HAVE_MATH_H)
</span><span class="cx"> #include <math.h>
</span><span class="cx"> #endif
</span><del>-#include "floating_fudge.h"
</del><span class="cx"> #include <assert.h>
</span><span class="cx">
</span><del>-#if defined(SPANDSP_USE_MMX)
-#include <mmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE)
-#include <xmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE2)
-#include <emmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE3)
-#include <pmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_1)
-#include <smmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_2)
-#include <nmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4A)
-#include <ammintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE5)
-#include <bmmintrin.h>
-#endif
</del><ins>+#include "floating_fudge.h"
+#include "mmx_sse_decs.h"
</ins><span class="cx">
</span><span class="cx"> #include "spandsp/telephony.h"
</span><span class="cx"> #include "spandsp/vector_float.h"
</span></span></pre></div>
<a id="freeswitchtrunklibsspandspsrcvector_intc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/src/vector_int.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/src/vector_int.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/src/vector_int.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * License along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: vector_int.c,v 1.25 2009/02/21 04:27:46 steveu Exp $
</del><ins>+ * $Id: vector_int.c,v 1.26 2009/07/12 09:23:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -41,33 +41,10 @@
</span><span class="cx"> #if defined(HAVE_MATH_H)
</span><span class="cx"> #include <math.h>
</span><span class="cx"> #endif
</span><del>-#include "floating_fudge.h"
</del><span class="cx"> #include <assert.h>
</span><span class="cx">
</span><del>-#if defined(SPANDSP_USE_MMX)
-#include <mmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE)
-#include <xmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE2)
-#include <emmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE3)
-#include <pmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_1)
-#include <smmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4_2)
-#include <nmmintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE4A)
-#include <ammintrin.h>
-#endif
-#if defined(SPANDSP_USE_SSE5)
-#include <bmmintrin.h>
-#endif
</del><ins>+#include "floating_fudge.h"
+#include "mmx_sse_decs.h"
</ins><span class="cx">
</span><span class="cx"> #include "spandsp/telephony.h"
</span><span class="cx"> #include "spandsp/vector_int.h"
</span></span></pre></div>
<a id="freeswitchtrunklibsspandsptestsfsk_testsc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/tests/fsk_tests.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/tests/fsk_tests.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/tests/fsk_tests.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: fsk_tests.c,v 1.57 2009/05/30 15:23:13 steveu Exp $
</del><ins>+ * $Id: fsk_tests.c,v 1.58 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \page fsk_tests_page FSK modem tests
</span><span class="lines">@@ -126,37 +126,37 @@
</span><span class="cx"> switch (reason)
</span><span class="cx"> {
</span><span class="cx"> case BERT_REPORT_SYNCED:
</span><del>- printf("%d: BERT report synced\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report synced\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_UNSYNCED:
</span><del>- printf("%d: BERT report unsync'ed\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report unsync'ed\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_REGULAR:
</span><del>- printf("%d: BERT report regular - %d bits, %d bad bits, %d resyncs\n", channel, results->total_bits, results->bad_bits, results->resyncs);
</del><ins>+ fprintf(stderr, "%d: BERT report regular - %d bits, %d bad bits, %d resyncs\n", channel, results->total_bits, results->bad_bits, results->resyncs);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_GT_10_2:
</span><del>- printf("%d: BERT report > 1 in 10^2\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report > 1 in 10^2\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_LT_10_2:
</span><del>- printf("%d: BERT report < 1 in 10^2\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report < 1 in 10^2\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_LT_10_3:
</span><del>- printf("%d: BERT report < 1 in 10^3\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report < 1 in 10^3\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_LT_10_4:
</span><del>- printf("%d: BERT report < 1 in 10^4\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report < 1 in 10^4\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_LT_10_5:
</span><del>- printf("%d: BERT report < 1 in 10^5\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report < 1 in 10^5\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_LT_10_6:
</span><del>- printf("%d: BERT report < 1 in 10^6\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report < 1 in 10^6\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> case BERT_REPORT_LT_10_7:
</span><del>- printf("%d: BERT report < 1 in 10^7\n", channel);
</del><ins>+ fprintf(stderr, "%d: BERT report < 1 in 10^7\n", channel);
</ins><span class="cx"> break;
</span><span class="cx"> default:
</span><del>- printf("%d: BERT report reason %d\n", channel, reason);
</del><ins>+ fprintf(stderr, "%d: BERT report reason %d\n", channel, reason);
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="freeswitchtrunklibsspandsptestst38_core_testsc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/tests/t38_core_tests.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: t38_core_tests.c,v 1.15 2009/04/25 14:17:47 steveu Exp $
</del><ins>+ * $Id: t38_core_tests.c,v 1.16 2009/07/14 13:54:22 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \file */
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx"> for (i = 0; i < 100; i++)
</span><span class="cx"> {
</span><span class="cx"> current_indicator = i;
</span><del>- if (t38_core_send_indicator(a, i, 3) < 0)
</del><ins>+ if (t38_core_send_indicator(a, i) < 0)
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx"> current_data_type = i;
</span><span class="cx"> current_field_type = j;
</span><span class="cx"> skip = 99;
</span><del>- if (t38_core_send_data(a, i, j, (uint8_t *) "", 0, 1) < 0)
</del><ins>+ if (t38_core_send_data(a, i, j, (uint8_t *) "", 0, T38_PACKET_CATEGORY_CONTROL_DATA) < 0)
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> if (j == 0)
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> current_data_type = i;
</span><span class="cx"> current_field_type = j;
</span><span class="cx"> skip = 99;
</span><del>- if (t38_core_send_data(a, i, j, (uint8_t *) "ABCD", 4, 1) < 0)
</del><ins>+ if (t38_core_send_data(a, i, j, (uint8_t *) "ABCD", 4, T38_PACKET_CATEGORY_CONTROL_DATA) < 0)
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> if (j == 0)
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> field[1].field_type = T38_FIELD_T4_NON_ECM_SIG_END;
</span><span class="cx"> field[1].field = field_body[1];
</span><span class="cx"> field[1].field_len = field_len[1];
</span><del>- if (t38_core_send_data_multi_field(a, i, field, 2, 1) < 0)
</del><ins>+ if (t38_core_send_data_multi_field(a, i, field, 2, T38_PACKET_CATEGORY_CONTROL_DATA) < 0)
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> if (j == 0)
</span></span></pre></div>
<a id="freeswitchtrunklibsspandsptestsv17_testsc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/tests/v17_tests.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/tests/v17_tests.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/tests/v17_tests.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v17_tests.c,v 1.103 2009/05/30 15:23:14 steveu Exp $
</del><ins>+ * $Id: v17_tests.c,v 1.104 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \page v17_tests_page V.17 modem tests
</span><span class="lines">@@ -104,11 +104,11 @@
</span><span class="cx"> switch (reason)
</span><span class="cx"> {
</span><span class="cx"> case BERT_REPORT_REGULAR:
</span><del>- printf("BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs);
</del><ins>+ fprintf(stderr, "BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs);
</ins><span class="cx"> memcpy(&latest_results, results, sizeof(latest_results));
</span><span class="cx"> break;
</span><span class="cx"> default:
</span><del>- printf("BERT report %s\n", bert_event_to_str(reason));
</del><ins>+ fprintf(stderr, "BERT report %s\n", bert_event_to_str(reason));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="freeswitchtrunklibsspandsptestsv22bis_testsc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/tests/v22bis_tests.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v22bis_tests.c,v 1.62 2009/05/30 15:23:14 steveu Exp $
</del><ins>+ * $Id: v22bis_tests.c,v 1.63 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \page v22bis_tests_page V.22bis modem tests
</span><span class="lines">@@ -94,17 +94,18 @@
</span><span class="cx"> switch (reason)
</span><span class="cx"> {
</span><span class="cx"> case BERT_REPORT_REGULAR:
</span><del>- printf("V.22bis rx %p BERT report regular - %d bits, %d bad bits, %d resyncs\n",
- user_data,
- results->total_bits,
- results->bad_bits,
- results->resyncs);
</del><ins>+ fprintf(stderr, "V.22bis rx %p BERT report regular - %d bits, %d bad bits, %d resyncs\n",
+ user_data,
+ results->total_bits,
+ results->bad_bits,
+ results->resyncs);
</ins><span class="cx"> memcpy(&s->latest_results, results, sizeof(s->latest_results));
</span><span class="cx"> break;
</span><span class="cx"> default:
</span><del>- printf("V.22bis rx %p BERT report %s\n",
- user_data,
- bert_event_to_str(reason));
</del><ins>+ fprintf(stderr,
+ "V.22bis rx %p BERT report %s\n",
+ user_data,
+ bert_event_to_str(reason));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="freeswitchtrunklibsspandsptestsv27ter_testsc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/tests/v27ter_tests.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v27ter_tests.c,v 1.105 2009/05/30 15:23:14 steveu Exp $
</del><ins>+ * $Id: v27ter_tests.c,v 1.106 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \page v27ter_tests_page V.27ter modem tests
</span><span class="lines">@@ -100,11 +100,11 @@
</span><span class="cx"> switch (reason)
</span><span class="cx"> {
</span><span class="cx"> case BERT_REPORT_REGULAR:
</span><del>- printf("BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs);
</del><ins>+ fprintf(stderr, "BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs);
</ins><span class="cx"> memcpy(&latest_results, results, sizeof(latest_results));
</span><span class="cx"> break;
</span><span class="cx"> default:
</span><del>- printf("BERT report %s\n", bert_event_to_str(reason));
</del><ins>+ fprintf(stderr, "BERT report %s\n", bert_event_to_str(reason));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="freeswitchtrunklibsspandsptestsv29_testsc"></a>
<div class="modfile"><h4>Modified: freeswitch/trunk/libs/spandsp/tests/v29_tests.c (14315 => 14316)</h4>
<pre class="diff"><span>
<span class="info">--- freeswitch/trunk/libs/spandsp/tests/v29_tests.c        2009-07-22 03:40:40 UTC (rev 14315)
+++ freeswitch/trunk/libs/spandsp/tests/v29_tests.c        2009-07-22 15:18:32 UTC (rev 14316)
</span><span class="lines">@@ -22,7 +22,7 @@
</span><span class="cx"> * along with this program; if not, write to the Free Software
</span><span class="cx"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
</span><span class="cx"> *
</span><del>- * $Id: v29_tests.c,v 1.119 2009/05/30 15:23:14 steveu Exp $
</del><ins>+ * $Id: v29_tests.c,v 1.120 2009/07/09 13:52:09 steveu Exp $
</ins><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> /*! \page v29_tests_page V.29 modem tests
</span><span class="lines">@@ -99,11 +99,11 @@
</span><span class="cx"> switch (reason)
</span><span class="cx"> {
</span><span class="cx"> case BERT_REPORT_REGULAR:
</span><del>- printf("BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs);
</del><ins>+ fprintf(stderr, "BERT report regular - %d bits, %d bad bits, %d resyncs\n", results->total_bits, results->bad_bits, results->resyncs);
</ins><span class="cx"> memcpy(&latest_results, results, sizeof(latest_results));
</span><span class="cx"> break;
</span><span class="cx"> default:
</span><del>- printf("BERT report %s\n", bert_event_to_str(reason));
</del><ins>+ fprintf(stderr, "BERT report %s\n", bert_event_to_str(reason));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre>
</div>
</div>
<div id="footer">See you at ClueCon</div>
</body>
</html>