Crates |
|
---|---|
Code quality |
|
Properties |
|
Platforms |
|
Contact |
|
Index of contents |
---|
Substation Beta • Components • Getting started • Building • Contributing • License • Acknowledgment |
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_parser → ssb_renderer → ssb_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.
- Install rust
- Get ssb_implementation
- Git clone:
git clone https://github.com/substation-beta/ssb_implementation.git
- HTTPS download
- Git clone:
- Change current directory to new...
-
./ssb_implementation
(git) -
./ssb_implementation-master
(https)
-
- Install software for features
- Vapoursynth for ssb_filter vapoursynth-interface (! on by default !)
- OpenCL for ssb_renderer gpgpu (passed down by ssb_filter as well)
- Build components by cargo
- Libraries with release profile:
cargo build --release
- Documentation without dependencies:
cargo doc --no-deps
- Libraries with release profile:
- Build output can be found in default cargo location
- Libraries:
./target/release/*.{rlib,dll,so,dylib,lib,a,h}
- Documentation:
./target/doc/**/*
- Libraries:
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.