Giter Club home page Giter Club logo

libfec's Introduction

Quiet Modem Project logo

Build Status

Documentation

This library uses liquid SDR to transmit data through sound. This makes it suitable for sending data across a 3.5mm headphone jack or via speaker and mic. Quiet can build standalone binaries for encoding/decoding data via .wav files or for streaming through your soundcard via PortAudio. It can also be built as a library to be consumed by other C programs.

Build

With the dependencies installed, run ./bootstrap provided by this library, which will create a build directory and invoke cmake. If you would like to install it after building, do cd build && make install.

Profiles

The encoding and decoding processes are controlled by the profiles in quiet-profiles.json. Each profile contains a complete set of parameters such as modem type and error correction.

Cable

For cable transmission, use the cable- profiles. These will attempt to use nearly the full spectrum provided by your soundcard. As such, they contain many audible frequencies and should not be used on channels that could be heard by people.

Ultrasonic

The ultrasonic- profiles encode data through a very low bitrate, but the audio content lies above 16kHz, which should pass through audio equipment relatively well while being inaudible to the average person. This is a good option for sending data through a channel where you would prefer not to disrupt human listeners.

Dependencies

Acknowledgements

I'd like to thank the people who provided feedback and helped me with pull requests and advice on software

  • Joseph Gaeddert, for his excellent SDR library, encouragement, and feedback on all things DSP
  • Alon Zakai and @juj for advising me on emscripten and for taking my PRs
  • Jan-Ivar Bruaroey and Maire Reavy for helping me patch the echo cancellation behavior of Firefox's getUserMedia
  • Josh Gao for advising me on API design and C idioms.
  • Ryan Hitchman for extensive testing on Android Chrome
  • Fabrice Bellard for thoughtfully answering a stranger's question out of the blue about digital communications

libfec's People

Contributors

brian-armstrong avatar jgaeddert avatar v1bri avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libfec's Issues

After installing libfec, liquid-dsp cannot find libfec

I installed libfec and then I confiugured liquid-dsp , in the output of ./configure i am getting these lines about libfec
checking fec.h usability... no
checking fec.h presence... no
checking for fec.h... no

/usr/local/include/ in this path I am able to find fec.h file after instaling libfec.

Please help me in this issue.

thanks.

makefile.in seems to miss sim.o

Hi,
thank you for your work which helped me a lot, but I encountered a small problem. The configure and make went fine for my tested platforms, but to compile the test, the sim.o had to be added to the libs in the makefile.
So I suggest to just add the sim.o in the makefile.in, what solved the small problem for me at least.
Thank you for your time and work.

How to Build on Windows

I am trying to build libfec on Windows using “Build Tools for Visual Studio” and running Visual Studio Code with the C/C++ Extension Pack and CMake Tools. It just doesn't build for me. Here is the start of the long list of compiler warnings and errors I get when trying to compile the fec target:

[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,66): error C2061: syntax error: identifier '__attribute__' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,66): error C2059: syntax error: ';' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,90): error C2143: syntax error: missing ')' before 'constant' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,90): warning C4255: 'aligned': no function prototype given: converting '()' to '(void)' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,92): error C2059: syntax error: ')' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,93): error C2059: syntax error: ')' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(14,94): error C2059: syntax error: ')' [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(49,17): error C2065: 'Branchtab27': undeclared identifier [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(49,16): error C2109: subscript requires array or pointer type [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(50,17): error C2065: 'Branchtab27': undeclared identifier [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]
[build] C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\viterbi27_port.c(50,16): error C2109: subscript requires array or pointer type [C:\Users\dvisser\Documents\Tasks\FABRIC\libfec\build\fec.vcxproj]

Another clue: libraries like getopt.h are not found by the check_include_file test. If anyone out there knows the secret sauce to get this to work, please let me know.

configure fails to generate makefile on Mac OS X

Compiling libfec on Mac OS 10.11.3 (El Capitan) keeps failing by saying error: unknown target CPU 'i386' when running make after ./configure.
I tried to fix that by manually specifing the build target via --build=x86_64 (as I'm running 64-bit architecture and i686 fails with a similar error) when running configure (e.g. ./configure --build=x86_64), but this leads to an error when linking stating ld: unknown option: -soname=libfec.so.
By looking at the makefile there seems to be a target for Mac OS (libfec.dylib in line 98), it just does not get triggered.
Passing a full tuple like x86_64-apple-darwin to the configure script (e.g. ./configure --build=x86_64-apple-darwin) successfully builds libfec on my machine.
I hope this helps other users on Mac OS X as this behaviour is somewhat strange. Maybe the configure script is somehow wrong...

CMake build

Not really an issue, but would you guys be interested in adding CMake support to the project? I find it helps with cross compiling. I can submit a pull request if that works.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.