Welcome to mirror list, hosted at ThFree Co, Russian Federation.

README.md - gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 0a3842b2af2cd0bb2b49cc8bcbd62f38f5a1e08e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# gst-plugins-rs [![crates.io](https://img.shields.io/crates/v/gst-plugin.svg)](https://crates.io/crates/gst-plugin) [![pipeline status](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/badges/master/pipeline.svg)](https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/commits/master)

Repository containing various [GStreamer](https://gstreamer.freedesktop.org/)
plugins and elements written in the [Rust programming
language](https://www.rust-lang.org/).

The plugins build upon the [GStreamer Rust bindings](https://gitlab.freedesktop.org/gstreamer/gstreamer-rs).
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 standard `filesrc` and `filesink`
      elements

    - `sodium`: Elements to perform encryption and decryption using
      [libsodium](https://libsodium.org).

    - `threadshare`: Some popular threaded elements reimplemented using common
      thread-sharing infrastructure.

  * `net`
    - `reqwest`: An HTTP source element based on the
      [reqwest](https://github.com/seanmonstar/reqwest) library.

    - `rusoto`: A source and sink plugin to talk to the Amazon S3 object
      storage system, as well as an element wrapping the AWS Transcriber
      service using the [Rusoto](https://rusoto.org) library.

  * `audio`
    - `audiofx`: Plugins to apply audio effects to a stream (such as adding
      echo/reverb, [removing noise](https://jmvalin.ca/demo/rnnoise/) or normalization).

    - `claxon`: A FLAC decoder based on the
      [Claxon](https://github.com/ruuda/claxon) library.

    - `csound`: A plugin to implement audio effects using the
      [Csound](https://csound.com/) library.

    - `lewton`: A Vorbis decoder based on the
      [lewton](https://github.com/RustAudio/lewton) library.

    - `spotify`: A plugin to access content from [Spotify](https://www.spotify.com/)
      based on the [librespot](https://github.com/librespot-org/) library.


  * `video`
    - `cdg`: A parser and renderer for
      [CD+G karaoke data](https://docs.rs/cdg/0.1.0/cdg/).

    - `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](https://code.videolan.org/videolan/dav1d) library.

    - `ffv1`: FFV1 decoder based on the
      [ffv1](https://github.com/rust-av/ffv1) library.

    - `flavors`: FLV demuxer based on the
      [flavors](https://github.com/rust-av/flavors) library.

    - `gif`: A GIF encoder based on the
      [gif](https://github.com/image-rs/image-gif) library.

    - `hsv`: Elements to work with video data in hue, saturation, value form.

    - `png`: PNG encoder based on the
      [png](https://github.com/image-rs/image-png) library.

    - `rav1e`: AV1 encoder based on the [rav1e](https://github.com/xiph/rav1e)
      library.

    - `webp`: WebP decoder based on the
      [libwebp-sys-2](https://github.com/qnighy/libwebp-sys2-rs) library.

  * `text`
    - `json`: A plugin to convert a stream of JSON objects to a higher level
      wrapped NDJSON output.

    - `regex`: A regular expression text filter plugin.

    - `wrap`: A plugin to perform text wrapping with hyphenation.

    - `ahead`: A plugin to display upcoming text buffers ahead.

  * `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.

## Building

gst-plugins-rs relies on [cargo-c](https://github.com/lu-zero/cargo-c/) to
generate shared and static C libraries. It can be installed using:

```
$ cargo install cargo-c
```

Then you can easily build and test a specific plugin:

```
$ cargo cbuild -p gst-plugin-cdg
$ GST_PLUGIN_PATH="target/x86_64-unknown-linux-gnu/debug:$GST_PLUGIN_PATH" gst-inspect-1.0 cdgdec
```

Replace `x86_64-unknown-linux-gnu` with your system's Rust target triple (`rustc -vV`).

The plugin can also be installed system-wide:

```
$ cargo cbuild -p gst-plugin-cdg --prefix=/usr
$ cargo cinstall -p gst-plugin-cdg --prefix=/usr
```

This will install the plugin to `/usr/lib/gstreamer-1.0`.
You can use `--libdir` to pass a custom `lib` directory
such as `/usr/lib/x86_64-linux-gnu` for example.

Note that you can also just use `cargo` directly to build Rust static libraries
and shared C libraries. `cargo-c` is mostly useful to build static C libraries
and generate `pkg-config` files.

## 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](LICENSE-APACHE) or
   http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT](LICENSE-MIT) or
   http://opensource.org/licenses/MIT)

at your option.

gst-plugin-togglerecord is licensed under the Lesser General Public License
([LICENSE-LGPLv2](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](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.