Skip to content

Subtitle format implementation as components for desktop applications

License

Notifications You must be signed in to change notification settings

substation-beta/ssb_implementation

Repository files navigation

Logo

Crates Crate Version Crate Version Crate Version
Code quality GitHub Workflow Status Code Coverage Deps.rs dependency status for GitHub repo
Properties License Minimal rust version Last commit
Platforms Windows support Linux support Mac support
Contact Discord channel Github issues

 


Index of contents
Substation BetaComponentsGetting startedBuildingContributingLicenseAcknowledgment

SubStation Beta

This project is the reference implementation of subtitle format substation beta (short ssb).

Components target desktop application development and evolve with continuation of ssb_book.

Components

Project contents consist of multiple components which build on top of each other:

ssb_parserssb_rendererssb_filter

ssb_parser

Parser of text in ssb format.

  • Reads from file or byte stream
  • Validates content
  • Packs data into ordered structures
  • Allows serialization in other format (like JSON)
  • Relevant for rust developers

See sub-project ssb_parser.

ssb_renderer

2d graphics software renderer for ssb format.

  • Builds upon ssb_parser for input processing
  • Renders 2-dimensional graphics on system memory buffers
  • High-performance by efficient hardware workload
  • Relevant for rust developers

See sub-project ssb_renderer.

ssb_filter

Interfaces to ssb rendering for video frameserving and language wrapping.

  • Builds upon ssb_renderer for graphics rendering (including ssb_parser for input processing)
  • Plugin binary for immediate use in popular frameservers
  • C API provides access by FFI
  • Relevant for c developers and frameserver users

See sub-project ssb_filter.

Getting started

TODO

Install

All components get released on crates.io therefore are easy to add as dependency in rust projects (ssb_parser & ssb_renderer) or build to a binary (ssb_filter).

ssb_filter gets additionally deployed on github releases for windows and linux distributions.

For installing ssb_filter as frameserver plugin, see the documentation of your target frameserver. Usually it's just putting the shared library into an autoload directory or calling an import command with the filepath as parameter.

First steps

TODO

Documentation

TODO

Building

All components are projects inside a rust workspace - the ssb_implementation repository. Build tool cargo (part of rust toolchain) already manages dependencies. Enabling features may require additional software installed on your operating system.

  1. Install rust
  2. Get ssb_implementation
    • Git clone: git clone https://github.com/substation-beta/ssb_implementation.git
    • HTTPS download
  3. Change current directory to new...
    • ./ssb_implementation (git)
    • ./ssb_implementation-master (https)
  4. Install software for features
    1. Vapoursynth for ssb_filter vapoursynth-interface (! on by default !)
  5. Build components by cargo
    1. Libraries with release profile: cargo build --release
    2. Documentation without dependencies: cargo doc --no-deps
  6. Build output can be found in default cargo location
    1. Libraries: ./target/release/*.{rlib,dll,so,dylib,lib,a,h}
    2. Documentation: ./target/doc/**/*

For references see CI by Github Actions script.

Contributing

We welcome contributers but insist on working by our rules. The principle quality > quantity has to be followed through every part of this project.

For details, see CONTRIBUTING.

License

This project and all of its components are licensed under Apache-2.0. Distributed on an "AS-IS" basis, there's no warranty, a limited liability and no grant of trademark rights.

For more, see LICENSE.

Acknowledgment

About

Subtitle format implementation as components for desktop applications

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published