4 Commits

7 changed files with 49 additions and 81 deletions

Binary file not shown.

View File

@@ -1,15 +0,0 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="filename">spandsp</param>
<param name="scm">git</param>
<param name="url">https://github.com/freeswitch/spandsp</param>
<param name="revision">master</param>
<param name="parent-tag">f995f452ee79d03c4afa90b10e86a5f9c553920c</param>
<param name="versionformat">3.0.0+g@TAG_OFFSET@</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="disabled"/>
</services>

Binary file not shown.

View File

@@ -1,47 +0,0 @@
---
src/at_interpreter.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
Index: spandsp-3.0.0.g15/src/at_interpreter.c
===================================================================
--- spandsp-3.0.0.g15.orig/src/at_interpreter.c
+++ spandsp-3.0.0.g15/src/at_interpreter.c
@@ -921,6 +921,7 @@ static const char *at_cmd_A(at_state_t *
static const char *at_cmd_D(at_state_t *s, const char *t)
{
+ int first = true;
char *u;
char num[100 + 1];
char ch;
@@ -940,6 +941,7 @@ static const char *at_cmd_D(at_state_t *
{
/* V.250 6.3.1.1 Basic digit set */
*u++ = ch;
+ first = false;
}
else
{
@@ -953,7 +955,10 @@ static const char *at_cmd_D(at_state_t *
case '#':
/* V.250 6.3.1.1 Full DTMF repertoire */
if (!s->p.pulse_dial)
+ {
*u++ = ch;
+ first = false;
+ }
break;
case ' ':
case '-':
@@ -963,7 +968,10 @@ static const char *at_cmd_D(at_state_t *
break;
case '+':
/* V.250 6.3.1.1 International access code */
- /* TODO: */
+ /* Allow + as first symbol in a dial string. */
+ if (first)
+ *u++ = ch;
+ first = false;
break;
case ',':
/* V.250 6.3.1.2 Pause */

View File

@@ -1,25 +1,37 @@
(Patch reportedly from the iaxmodem project)
Raise v17 training time tolerance, as found in iaxmodem supplied spandsp.
---
src/v17rx.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
src/v17rx.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Index: spandsp-3.0.0.g15/src/v17rx.c
Index: spandsp-4712339d6132c54d8624b7d76dddbb36c67df712/src/v17rx.c
===================================================================
--- spandsp-3.0.0.g15.orig/src/v17rx.c
+++ spandsp-3.0.0.g15/src/v17rx.c
@@ -1064,10 +1064,10 @@ static void process_half_baud(v17_rx_sta
s->carrier_track_i = 100.0f;
s->carrier_track_p = 500000.0f;
#endif
--- spandsp-4712339d6132c54d8624b7d76dddbb36c67df712.orig/src/v17rx.c
+++ spandsp-4712339d6132c54d8624b7d76dddbb36c67df712/src/v17rx.c
@@ -987,19 +987,19 @@ static void process_half_baud(v17_rx_sta
/*endif*/
if (++s->training_count >= V17_TRAINING_SHORT_SEG_2_LEN)
{
- /* TODO: This was increased by a factor of 10 after studying real world failures.
- However, it is not clear why this is an improvement, If something gives
- a huge training error, surely it shouldn't decode too well? */
- if (s->training_error < (V17_TRAINING_SHORT_SEG_2_LEN - 8)*FP_SCALE(4.0f)*FP_SCALE(1.0f)*constellation_spacing[s->space_map])
+ /* We need to be liberally accepting of poor fast-train training errors here.
+ Doing this affords the DTE the opportunity to make some use of whatever
+ valid Phase C data can be decoded. */
#if defined(SPANDSP_USE_FIXED_POINTx)
span_log(&s->logging, SPAN_LOG_FLOW, "Short training error %d\n", s->training_error);
s->carrier_track_i = 100;
s->carrier_track_p = 500000;
- if (s->training_error < (int64_t) (V17_TRAINING_SHORT_SEG_2_LEN - 8)*FP_SCALE(4.0f)*FP_SCALE(1.0f)*constellation_spacing[s->space_map])
+ if (s->training_error < (int64_t) (V17_TRAINING_SHORT_SEG_2_LEN - 8)*FP_SCALE(10.0f)*FP_SCALE(1.0f)*constellation_spacing[s->space_map])
#else
span_log(&s->logging, SPAN_LOG_FLOW, "Short training error %f\n", s->training_error);
s->carrier_track_i = 100.0f;
s->carrier_track_p = 500000.0f;
- if (s->training_error < (V17_TRAINING_SHORT_SEG_2_LEN - 8)*FP_SCALE(4.0f)*FP_SCALE(1.0f)*constellation_spacing[s->space_map])
+ if (s->training_error < (V17_TRAINING_SHORT_SEG_2_LEN - 8)*FP_SCALE(10.0f)*FP_SCALE(1.0f)*constellation_spacing[s->space_map])
#endif
{
s->training_count = 0;
if (s->bits_per_symbol == 2)

View File

@@ -1,3 +1,22 @@
-------------------------------------------------------------------
Thu Feb 13 13:05:37 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to snapshot 3.0.0+g57 (4712339d)
* Initial support for the SPRT protocol in V.150.1
* Fixed the T.38 gateway not handling FTT messages from the far
end properly.
* Introduction of SSLFax
* Improved Goertzel filters by adding harmonized approach to
setting thresholds and measuring power levels.
* Fixed a long standing bug where a FAX that has to return to
the DCS/TCF sequence, due to something like a change of page
size mid-FAX, messed up the TCF sequence, and stepped down to
a lower speed.
* Added a floating point AGC module and a Godard TED module.
* V.29 and V.17 now use the Godard TED module, and their
internal Godard TED code has been removed.
- Delete spandsp-handle-international-dialstring-prefix.diff (obsolete)
-------------------------------------------------------------------
Sun Jun 25 05:42:17 UTC 2023 - Jan Engelhardt <jengelh@inai.de>

View File

@@ -18,18 +18,17 @@
Name: spandsp
%define lname libspandsp3
Version: 3.0.0+g21
Version: 3.0.0+g57
Release: 0
Summary: A DSP library for Telephony and SoftFAX
License: GPL-2.0-only AND LGPL-2.1-only
Group: Development/Libraries/C and C++
URL: https://github.com/freeswitch/spandsp
Source: %name-%version.tar.xz
%define rev 4712339d6132c54d8624b7d76dddbb36c67df712
Source: https://github.com/freeswitch/spandsp/archive/%rev.tar.gz
Source2: baselibs.conf
Patch1: no-sse.diff
Patch2: spandsp-raise-traintime-tolerance.diff
Patch3: spandsp-handle-international-dialstring-prefix.diff
BuildRequires: docbook-xsl-stylesheets
BuildRequires: doxygen
BuildRequires: libjpeg-devel
@@ -90,7 +89,7 @@ BuildArch: noarch
This package contains documentation for the libspandsp API.
%prep
%autosetup -p1
%autosetup -p1 -n spandsp-%rev
# The cpuid calls in the source code only apply to a test program.
# The library itself is (was) statically enabling -msse during configure, which
# is now removed.