Git Product home page Git Product logo

libdabdemod's Introduction

libdabdemod

libdabdemod provides a subsytem to demodulate a stream of complex baseband samples into OFDM symbols. The baseband symbols are can be acquired using libdabdevice for example. The library is designed to be run on a separate thread, since demodulation is a computationally very expensive process.

The demodulated symbols will be placed in a user-provided queue, which can be used to feed them to libdabdecode in order to acquire the transported payload data from a DAB/DAB+ ensemble.

Code example:

#include <dabdemod.h>
#include <types/common_types.h>

#include <future>

int main(int argc, char * * argv)
  {
  using namespace dab::literals;

  dab::sample_queue_t samples{};
  dab::symbol_queue_t symbols{};

  /*
   * Asynchronously fill the sample queue
   */

  dab::demodulator demod{samples, symbols, dab::transmission_modes::kTransmissionMode1};
  auto demodRunner = std::async(std::launch::async, [&]{ demod.run(); });

  /*
   * Asynchronously process the recovered symbols
   */
  }

Building:

You first need to check out the source code and the respective submodules:

$ git clone --recursive https://github.com/Opendigitalradio/libdabdemod.git

Like the other members of the libdabXYZ family, libdabdemod uses CMake as it build environment. There are several configuration option that you can choose from when building libdabdemod:

Option Default Comment
BUILD_DOCUMENTATION OFF Build the libdabdemod documentation.
BUILD_DOCUMENTATION_ONLY OFF Only build the documentation.
BUILD_INTERNAL_DOCUMENTATION OFF Generate the developer documentation.
CMAKE_BUILD_TYPE Debug The type of binary to produce.
DOCUMENTATION_FOR_THESIS OFF Build the documentation for the inclusion in the thesis
WITH_ADDRESS_SANITIZER OFF Include additional memory checks (slow)
WITH_COMMON_TESTS OFF Build and run the common library tests.
WITH_UNDEFINED_SANITIZER OFF Check for undefined behavior.

To build the library, enter the build directory and run cmake or ccmake to configure the build environment to you liking. Afterward, you can use cmake --build . to build the library. Depending on your selection, the built library will be in the directory products/{Debug|Release}/lib. If you chose to build the documentation, the pdf will be found in dabdemod_doc/latex/refman.pdf.

You can use this library as a subproject in any CMake based project.

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.