dsdcc  by f4exb

C++ library for decoding digital speech

created 9 years ago
307 stars

Top 88.4% on sourcepulse

GitHubView on GitHub
Project Summary

DSDcc is a C++ library for digital voice decoding, offering a complete rewrite of the original DSD project. It targets developers integrating speech decoding into applications like SDRangel, providing a cleaner, library-centric API. The primary benefit is a more flexible and embeddable decoder for various digital radio standards.

How It Works

DSDcc operates by pushing audio samples to a central DSDDecoder object, facilitating library integration. It processes samples to extract symbols and then decodes various digital voice formats (DMR, D-Star, dPMR, YSF) using specialized objects. An optional mbelib wrapper handles AMBE frame decoding and audio output, with support for upsampling to 48 kHz.

Quick Start & Requirements

  • Install via cmake and make.
  • Requires mbelib for full audio decoding (optional, compile with -DUSE_MBELIB=ON).
  • Supports DVSI AMBE3000 serial devices via SerialDV (requires separate installation).
  • Input: S16LE samples at 48 kS/s. Output: S16LE samples at 8 kS/s (or upsampled).
  • Example usage: socat stdout udp-listen:9999 | dsdccx -i - -fa -o - | play -q -t s16 -r 8k -c 1 -
  • Documentation: dsdccx -h

Highlighted Details

  • Rewritten symbol timing and DMR processing for improved performance.
  • Supports DMR/MOTOTRBO, D-Star, dPMR, and Yaesu System Fusion (YSF).
  • Optional mbelib dependency for AMBE decoding, with clear patent warnings.
  • Binary dsdccx supports piping and integration with serial devices like ThumbDV.

Maintenance & Community

  • Active development branches (master, dev).
  • No explicit community links (Discord/Slack) or major contributor mentions in the README.

Licensing & Compatibility

  • Primarily licensed under GPLv3.
  • mbelib usage may involve DVSI Inc. patents; users must assess their jurisdiction.
  • GPLv3 license may impose copyleft restrictions on derivative works.

Limitations & Caveats

  • mbelib usage carries potential patent infringement risks and requires separate installation.
  • FTDI device latency issues may affect serial device compatibility on newer Linux kernels (requires manual configuration).
  • Voice full rate with SerialDV is not supported for Yaesu System Fusion.
Health Check
Last commit

1 year ago

Responsiveness

1 week

Pull Requests (30d)
0
Issues (30d)
1
Star History
4 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.