Skip to content

Direct View LED Software Toolkit v0.1.0

Latest

Choose a tag to compare

@dmkarthi dmkarthi released this 29 May 06:37
1942f85

Release Notes for v0.1.0

Overview (Initial Release)

Application reads a video source file (e.g., MP4), decodes it using FFmpeg, and transmits uncompressed video frames over an IP network using the SMPTE ST 2110-20 standard. Multiple crop regions of the same source video can be transmitted simultaneously as independent RTP streams — enabling tiled LED wall configurations where each panel receives its own portion of the frame.

Features:

  • Video Input and Decode: Supports FFmpeg-based H.264/MP4 decode and raw .yuv/.raw zero-copy TX input, with EOF loop restart via av_seek_frame plus decoder flush and a 10,000-EAGAIN watchdog for malformed streams.

  • Frame Processing: Handles yuv422p10le, yuv420, yuv444p10le, and gbrp10le at 25/30/50/60 fps up to 1920x1080, with sws_scale format conversion and bounds-checked crop_yuv_frame tile extraction per session.

  • Transmission: Runs multiple simultaneous TX sessions with independent crop/network settings and CLOCK_MONOTONIC-based FPS pacing to prevent MTL ring overflow.

  • Threading Model: Uses one shared decode thread plus N TX threads coordinated by barrier_decoded/barrier_copied, a pthread_cond startup gate, and a shared _Atomic bool exit path that drains final barriers without deadlock.

  • Configuration: Includes a no-dependency JSON parser with escape/control-char checks, parses tx_sessions[] fields (udp_port/payload_type/crop_x/y/w/h) and pixel format strings via av_pix_fmt_desc_get, and validates IP, port (1-65535), FPS, and session-count bounds.

  • Logging: Provides thread-safe pthread_mutex logging with ERROR/WARN/INFO/DEBUG levels, ANSI-colored console plus file output, and 20 MB rotation to timestamped gzip archives.

  • Signal Handling: Implements async-signal-safe SIGINT/SIGTERM handling using only write() and volatile sig_atomic_t, with shutdown propagated by the main loop to avoid race conditions.

  • Security Controls: Enforces code-level safeguards including realpath-based log path restrictions (/var/log/ or CWD), crop bounds checks to prevent out-of-bounds frame reads, and JSON escape parsing that rejects bare control characters.

What's Changed

  • Usage of FFmpeg APIs in transmitter application by @sunilnom
  • Enable using config file in Transmitter application by @sunilnom
  • Fix PR review comments of PR 8 by @sunilnom
  • mtl patch for additonal color format support by @roshan-ku
  • Transmitter logger by @AishaSamaanKhan
  • Remove CLI args, and restrict pixel formats by @sunilnom
  • Fix yuv420 pixel format mapping and add unit tests by @sunilnom
  • fix: replace sudo install with dependency verification for self-hosted runner by @roshan-ku
  • feat: MTL TX pipeline with modular FFmpeg/MTL split by @dmkarthi
  • Workflows fixes and cpp scans by @roshan-ku in #4
  • Fix thread safety, input validation, and error handling by @sunilnom in #6
  • fix: address critical bugs and code quality issues by @sunilnom in #7
  • SDLe fix: Github workflow vulnerabilities and migration to github runner by @dmkarthi in #8
  • Bug: Cache fix by @dmkarthi in #10
  • SDLe fix: refactor, remove drop_privileges() and capability management from main.c by @dmkarthi in #9
  • fix: correct ossf/scorecard-action commit SHA for v2.4.1 by @sunilnom in #14
  • ci: add Dependabot configuration for GitHub Actions updates by @sunilnom in #15
  • build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 by @dependabot[bot] in #19
  • build(deps): bump ossf/scorecard-action from 2.4.1 to 2.4.3 by @dependabot[bot] in #18
  • build(deps): bump github/codeql-action from 3.28.18 to 4.36.0 by @dependabot[bot] in #17
  • build(deps): bump actions/checkout from 4.2.2 to 6.0.2 by @dependabot[bot] in #16
  • Openssf changes fuzzing changes by @sunilnom in #20
  • Openssf changes by @sunilnom in #23

Contributors

@sunilnom
@roshan-ku
@dmkarthi
@AishaSamaanKhan

Full Changelog: https://github.com/OpenVisualCloud/directview-led-software-toolkit/commits/v0.1.0