de796c95f0
- Report a latency: By design, tttocea608 will output buffers in the "past" when receiving an input buffer: we want the second to last buffer in the buffer list that we output to have the same pts as the input buffer, as it contains the end_of_caption control code which determines when the current closed caption actually gets displayed in pop_on mode. The previous buffers have timestamps decreasing as a function of the framerate, for up to potentially 74 byte pairs (the breakdown is detailed in a comment). The element thus has to report a latency, at 30 frames per second it represents around 2.5 seconds. - Refactor timestamping: Stop using a frame duration, but rather base our timestamps on a scaled frame index. This is to avoid rounding errors, and allow for exactly one byte pair per buffer if the proper framerate is set on the closed caption branch, and the video branch has perfect timestamps, eg videorate. In practice, that one byte pair per frame requirement should only matter for line 21 encoding, but we have to think about this use case too. - Splice in erase_display_memory: When there is a gap between the end of a buffer and the start of the next one, we want to erase the display memory (this is unnecessary otherwise, as the end_of_caption control code will in effect ensure that the display is erased when the new caption is displayed). The previous implementation only supported this imperfectly, as it could cause timestamps to go backwards. - Output last erase_display_memory: The previous implementation was missing the final erase_display_memory on EOS - Output gaps - Write more tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/314> |
||
---|---|---|
audio | ||
generic | ||
net | ||
text/wrap | ||
tutorial | ||
utils | ||
version-helper | ||
video | ||
.gitignore | ||
.gitlab-ci.yml | ||
Cargo.toml | ||
cargo_wrapper.py | ||
LICENSE-APACHE | ||
LICENSE-LGPLv2 | ||
LICENSE-MIT | ||
Makefile | ||
meson.build | ||
meson_options.txt | ||
README.md | ||
update-version.sh |
gst-plugins-rs
Repository containing various GStreamer plugins and elements written in the Rust programming language.
The plugins build upon the GStreamer Rust bindings. Check the README.md of that repository also for details about how to set-up your development environment.
Plugins
You will find the following plugins in this repository:
-
generic
-
file
: A Rust implementation of the standardfilesrc
andfilesink
elements -
sodium
: Elements to perform encryption and decryption using libsodium. -
threadshare
: Some popular threaded elements reimplemented using common thread-sharing infrastructure.
-
-
net
-
audio
-
video
-
cdg
: A parser and renderer for CD+G karaoke data. -
closedcaption
: Plugins to deal with several closed caption formats (MCC, SCC, EIA-608/CEA-608 and timed text). -
dav1d
: AV1 decoder based on the dav1d library. -
flavors
: FLV demuxer based on the flavors library. -
gif
: A GIF encoder based on the gif library. -
rav1e
: AV1 encoder based on the rav1e library.
-
-
utils
-
fallbackswitch
: Aggregator element that allows falling back to a different sink pad after a timeout. -
togglerecord
: Element to enable starting and stopping multiple streams together.
-
LICENSE
gst-plugins-rs and all crates contained in here that are not listed below are licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
gst-plugin-togglerecord is licensed under the Lesser General Public License (LICENSE-LGPLv2) version 2.1 or (at your option) any later version.
gst-plugin-csound is licensed under the Lesser General Public License (LICENSE-LGPLv2) version 2.1 or (at your option) any later version.
GStreamer itself is licensed under the Lesser General Public License version 2.1 or (at your option) any later version: https://www.gnu.org/licenses/lgpl-2.1.html
Contribution
Any kinds of contributions are welcome as a pull request.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in gst-plugins-rs by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.