Skip to content

AudYoFlo: Special Build Cases

jvxgit edited this page Jun 17, 2024 · 5 revisions

This chapter lists some specific build case. These specific build case are not relevant for every build configuration. However, some third party libraries require some specific tools which shall be listed in the following:

Options to Obtain Third-party Libraries

This project may involve some third-party libraries. These libraries have optional checkout folders that can be found at sources/jvxLibraries/thirdparty. Two options exist how these librries can be obtained:

  1. Projects obtained using Git: These projects can be found in sources/jvxLibraries/thirdparty/git,
  2. Projects obtained from public web space: These projects can be found in sources/jvxLibraries/thirdparty/web.

In both cases, the cmake build system involves a shell script that is written in bash format. On windows, a bash script does not run in the command shell or a power shell. However, since a user typically involves a git bash to contact the git servers, the git bash is also involved for these commands.

The projects in the git subfolder are the following:

  • civetweb: Small footprint web server implemented in C.
  • cminpack: Numeric library to do some computations in C.
  • eaqual: Library to evaluate audio quality in the PEAQ measure.
  • ebur128: Library to rate loudness according to the R.128 standard.
  • eigen: Matrix/vector library which contains a lot of mathematical computations.
  • hash-lib: Simple library to compute and derive some hash values.
  • jsmn: Simple json parser realized in C.
  • kissfft: An alternative FFT implementation available in source code. The default fft, however, is the FFTW as provided in the web folder.
  • mysofa: Library to read, write and administer HRTFs (Head related transfer function).
  • orc: Nice code runtime optimization tool developed for gstreamer.
  • portaudio: Famous audio device wrapper library.
  • qwt: Library to extend classic QT for plotting.
  • speex-dsp: Signal processing library with algorithms such as acoustic echo compensation and similar in C.

The projects in the web subfolder are the following:

  • boost: Famous C++ library for almost eveything. Most functions appeared in boost first and in the C++ standardization shortly after.
  • fftw: FFT library which is well-known for ts speed.
  • flutter: Flutter toolkit from google to realize the modern UIs attached to AudYoFlo applications.
  • hdf5: Library to load and store hdf5 files which is a format very similar to the Matlab mat file format.
  • libsdl: Library that is used by ffmpeg to realize data streams.
  • npcap: Up-to-date implementation of WinPCAP. WinPCAP is the library used by Wireshark to analyze network traffic.
  • qcustomplot: Another library for plotting in QT.
  • qt: QT library as downloaded during the cmake configuration build phase.

More specifically, we find the well-known ffmpeg library in the AudYoFlo package folder sources/jvxPackages/ffmpeg/jvxLibraries/third_party/git as well as the libsdl library in folder sources/jvxPackages/ffmpeg/jvxLibraries/third_party/web,

  • ffmpeg: Well-known media streaming library including encoder/decoder, muxer/demuxer and reader/writer.
  • libsdl: Multimedia library to connect to media technologies such as audio as used in the ffmpeg code examples.

The third-party projects are typically downloaded to the local PC by running specific download scripts in the corresponding subfolders, e.g., in the ffmpeg subfolder at sources/jvxPackages/ffmpeg/jvxLibraries/third_party/git/ffmpeg,

grafik

This download script may involve git bash(git) or curl (web) followed by an (optional) unpack operation and a patch operation where required. All these operation can be realized in the git bash in MS Windows. However, some special operations are involved here and there:

  1. In some projects, a zip file is loaded from the web, unzipped and then prepared. The unzip tool is NOT part of the git bash tool. Therefore, a zip.exe is located in the repository in folder AudYoFlo/bin/tools and are typically used in the scripts to obtain the projects.
  2. The ffmpeg projects must be compiled in MS Windows. In this case, a full Linux build system with configure and make has been addressed by ffmpeg. In order to build it, the git bash is not powerful enough as it can not be extended and does not involve all build tools such as make. Instead, msys2 can be used in Windows. However, some steps must be taken to run msys2 during the buold process:
  • The path to the msys2_shell.cmd must be added to the system PATH vaeriable. This command will then be found by the cmake system.
  • msys2must be pre-configured to have all required tools on board.

The msys2 system is prepared by taking the following steps:

  1. After msys2 install, run the following commands
pacman -S yasm
pacman -S make
pacman -S base-devel
pacman -S unzip
  1. In file msys2.iniwhich is part of the msys2 installation, uncomment line
MSYS2_PATH_TYPE=inherit

Note that, e.g., in a linux build the linux light functionality as realized in git bash or msys2 are invoked by simply running the conventional terminal shell.

Back

Clone this wiki locally