Skip to content

mirakc-tools for Japanese TV broadcast contents

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

mirakc/mirakc-arib

Repository files navigation

mirakc-arib

mirakc-tools for Japanese TV broadcast contents

CI coverage

How to build

Get the repository including the Git submodule:

git clone --recursive https://github.com/mirakc/mirakc-arib.git

Make sure that tools listed below has already been installed:

  • autoconf
  • automake
  • cmake
  • dos2unix
  • gcc/g++
  • libtool
  • make
  • ninja (optional)
  • patch
  • pkg-config

Then:

cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=Release
ninja -C build vendor
ninja -C build
build/bin/mirakc-arib -h

Cross compilation

Use a CMake toolchain file like below:

cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=Release \
  -D CMAKE_TOOLCHAIN_FILE=/path/to/toolchain.cmake
ninja -C build vendor
ninja -C build

Content shown below is a CMake toolchain file which can be used for a cross compilation on a Debian-based Linux distribution, targeting AArch64 like ROCK64:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)

set(MIRAKC_ARIB_HOST_TRIPLE aarch64-linux-gnu)

set(CMAKE_C_COMPILER ${MIRAKC_ARIB_HOST_TRIPLE}-gcc)
set(CMAKE_C_COMPILER_TARGET ${MIRAKC_ARIB_HOST_TRIPLE})

set(CMAKE_CXX_COMPILER ${MIRAKC_ARIB_HOST_TRIPLE}-g++)
set(CMAKE_CXX_COMPILER_TARGET ${MIRAKC_ARIB_HOST_TRIPLE})

Make sure that a toolchain for the cross compilation has been installed before running cmake with a CMake toolchain file.

Several CMake toolchain files are included in the toolchain.cmake.d folder.

How to test

cmake -S . -B build -G Ninja -D CMAKE_BUILD_TYPE=Debug -D MIRAKC_ARIB_TEST=ON
ninja -C build vendor
ninja -C build test

Logging

Define the MIRAKC_ARIB_LOG environment variable like below:

cat file.ts | MIRAKC_ARIB_LOG=info mirakc-arib scan-services

One of the following log levels can be specified:

  • trace
  • debug
  • info
  • warning
  • error
  • critical
  • off

Why not use tsp?

tsp creates a thread for each plug-in. This approach can work effectively when running a single tsp with multiple plug-ins.

Usages of mirakc-arib are different from tsp:

  • Multiple mirakc-arib sub-commands may be executed in parallel
    • Costs of context switching may be considerable
  • It seems not to be a good idea to construct a mirakc-arib sub-command of multiple plug-ins
    • Communication costs between plug-ins may be considerable

Dependencies

mirakc-arib is static-linked against the following libraries:

The following libraries are used for testing purposes:

TODO

  • Add more unit tests

ARIB STD Specifications

ARIB STD specifications can be freely downloaded from this page.

  • ARIB STD-B10: Additional definitions of tables and descriptors
  • ARIB STD-B24: Character encoding

Acknowledgments

mirakc-arib is implemented based on knowledge gained from the following software implementations:

License

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.