Git Product home page Git Product logo

rt-tests's Introduction

Real-time tests for Roc Toolkit

Build Matrix chat

About rt-tests

The scope if this repo is non-functional real-time integration tests for Roc Toolkit public API. These tests are supposed to run on real hardware and produce metrics to be checked for regressions. Some examples of non-functional tests are:

  • service quality tests
  • latency tests
  • performance tests (benchmarks)
  • stress tests
  • tests invloving real network interfaces and audio devices

About Roc

Key features of Roc Toolkit:

  • real-time streaming with guaranteed latency;
  • robust work on unreliable networks like Wi-Fi, due to use of Forward Erasure Correction codes;
  • CD-quality audio;
  • multiple profiles for different CPU and latency requirements;
  • relying on open, standard protocols, like RTP and FECFRAME;
  • interoperability with both Roc and third-party software.

Compatible Roc Toolkit senders and receivers include:

Requirements

  • Linux or macOS
  • C++17 compiler
  • CMake >= 3.0.0
  • Google Test >= 1.10 (downloaded automatically)
  • Roc Toolkit (downloaded automatically)

Instructions

Simple build

When using this method, CMake will automatically download and build dependencies (Roc Toolkit). Roc will be statically linked into the modules and there is no need to install it into the system.

First install build tools:

sudo apt install -y \
    g++ pkg-config scons ragel gengetopt \
      libuv1-dev libunwind-dev \
      libpulse-dev libsox-dev \
      libcpputest-dev libspeexdsp-dev \
      libtool intltool autoconf automake make cmake

Next build and run:

make

To specify roc-toolkit branch use cmake flag ROC_BRANCH:

ROC_BRANCH=master make

Additional targets

You can accomplish these additional tasks using the following targets.

To clean working build directory:

make clean

To format code:

make fmt

Advanced bulid

You can disable automatic downloading of roc-toolkit and build it manually.

Download, build and install Roc Toolkit into the system as described on this page

mkdir build && cd build
cmake -DDOWNLOAD_ROC=OFF .. && make

To provide custom path to roc-toolkit library and headers use flags ROC_INCLUDE_DIR and ROC_LIB_DIR

Workflow

The diagram below illustrates generic workflow of a test from this repo.

Explanations:

  • test writes stream of audio frames to roc sender
  • roc sender encodes audio into UDP packets and sends them to roc receiver
  • optionally, test inserts a UDP proxy between sender and receiver, to alter packets somehow (e.g. introduce packet losses)
  • roc receiver receives packets, repairs losses, adjusts clock, decodes audio from UDP packets, and produces stream of audio frames
  • test reads stream of audio frames from roc receiver
  • test compares original and retrieved audio stream and computes some metrics, depending on the test (e.g. latency or service quality)

Authors

See here.

License

MPL-2.0

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.