Commit graph

49 commits

Author SHA1 Message Date
Mathieu Duponchelle
d9e727050c video: implement webp decoder around libwebp-sys2 crate
Unlike webpdec from -bad, this element inherits from GstElement
and can decode animated webp data.
2021-03-20 10:53:20 +02:00
Mathieu Duponchelle
77bf0c945e text: new element for text processing: regex
The element expects an array of "commands", as GstStructures,
in the form:

operation, pattern=<pattern>, ...

The only operation implemented for now is replace-all, eg:

replace-all, pattern=foo, replacement=bar

Other operations can be implemented if useful in the future,
eg. "match" could post a message to the bus when the pattern
is encountered.

The main use case for this is automatic speech recognition,
as implemented by eg awstranscribe as users may want to replace
swear words with tamer language.

Commands are applied in order.

The interface is usable through the CLI with the usual escaping
strategies, though trying to pass in actual regular expressions
through it is a bit tricky, as this introduces yet another
level of escaping.
2021-02-19 15:58:14 +01:00
Mathieu Duponchelle
b062f63ec3 Add new text/json crate
This new crate consists of two elements, jsongstenc and jsongstparse

Both these elements can deal with an ndjson based format, consisting
for now of two item types: "Buffer" and "Header"

eg:

{"Header":{"format":"foobar"}}
{"Buffer":{"pts":0,"duration":43,"data":{"foo":"bar"}}}

jsongstparse will interpret this by first sending caps
application/x-json, format=foobar, then a buffer containing
{"foo":"bar"}, timestamped as required.

Elements further downstream can then interpret the data further.

jsongstenc will simply perform the reverse operation.
2021-01-20 02:29:19 +01:00
Blaxar Waldarax
348b865187 Added hsv plugin with hsvfilter and hsvdetector elements 2020-12-23 18:40:20 +01:00
Mathieu Duponchelle
7bf43241e5 audio/transcribe: remove and merge with rusoto
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/348>
2020-05-29 20:21:34 +00:00
neithanmo
d130b29146 video/png: Add PNG encoder element
It can encode raw video formats like Gray8/16, RGB and RGBA and
uses the PNG crate which is a decoding and encoding library in pure Rust
2020-05-15 08:30:32 -06:00
Mathieu Duponchelle
7701850586 Implement text wrapping element around the textwrap crate 2020-04-16 20:46:21 +02:00
Jordan Petridis
e7d49c45da gst-plugin-transcribe: implement parser 2020-04-13 17:48:36 +00:00
Arun Raghavan
9c0416b56d Rename flv directory as flavors
Follows the same convention as all the other plugins.
2020-04-05 19:10:47 +00:00
Arun Raghavan
dc3c8fd049 Drop gst-plugin- prefix in plugin directory name 2020-04-05 19:10:47 +00:00
Arun Raghavan
205b6040fb Reorganise plugins into directories by function
This should start making navigating the tree a little easier to start
with, and we can then move to allowing building specific groups of
plugins as well.

The plugins are moved into the following hierarchy:

  audio
    / gst-plugin-audiofx
    / gst-plugin-claxon
    / gst-plugin-csound
    / gst-plugin-lewton
  generic
    / gst-plugin-file
    / gst-plugin-sodium
    / gst-plugin-threadshare
  net
    / gst-plugin-reqwest
    / gst-plugin-rusoto
  utils
    / gst-plugin-fallbackswitch
    / gst-plugin-togglerecord
  video
    / gst-plugin-cdg
    / gst-plugin-closedcaption
    / gst-plugin-dav1d
    / gst-plugin-flv
    / gst-plugin-gif
    / gst-plugin-rav1e

  gst-plugin-tutorial
  gst-plugin-version-helper
2020-04-05 19:10:46 +00:00
Natanael Mojica
cf59318ab4 Add csound-based filter plugin 2020-03-22 13:44:40 +02:00
Markus Ebner
750b29b76c gif: Add initial implementation of a gif encoder
- Implemented a simple gif encoder based on the rust crate "gif".
- Currently supported input pixel formats are RGB and RGBA
- The encoder dynamically changes frame delays to approximate the actual
  input framerate
- For the moment, each frame uses its own local colorpalette, leading to
  good image quality, but big files
- Every frame is currently a full frame. No incremental frames for now
- The produced GIF is currently compressed (LZW)
2020-02-25 08:45:22 +00:00
Ruben Gonzalez
7d3ab342d2 Add claxon based FLAC decoder.
Audio decoder element structure is based in `gst-plugin-lewton` (a lewton based Vorbis decoder created by @slomo)

The element assumes correctly parsed input from `flacparse`.

Implementation details:

* Claxon returned frames does not contain audio channels interleaved, the reorganization of the channels is done by the element.
* Claxon output buffers are always Vec<i32>, mapping to the correct type (depending on the audio format) is also done by the element.

Mono s16 and stereo_s32 test are provided.

Complete pipelines to test are:

```
gst-launch-1.0  -v souphttpsrc location=https://archive.org/download/MLKDream/MLKDream.flac ! queue2 !  flacparse ! flacdec ! audioconvert ! autoaudiosink
gst-launch-1.0  -v audiotestsrc ! audio/x-raw, format=S16LE, layout=interleaved, rate=44100, channels=1 ! audioconvert ! flacenc ! flacparse ! claxondec ! autoaudiosink
```

Fixes #71
2020-01-19 16:01:23 +00:00
Philippe Normand
84c40b872d dav1d: Add dav1ddec element
This element uses the Dav1d AV1 decoder library to decode AV1 video.
2019-12-24 15:10:58 +01:00
Arun Raghavan
d18dbb85d8 rusoto: Rename s3 as rusoto
Will disambiguate from any other S3 plugins, and matches how we name
other plugins (soup, lewton, rav1e, ...).

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/issues/76
2019-10-21 13:10:28 +05:30
Sebastian Dröge
d0978473d3 Add initial version of lewton based Vorbis decoder 2019-09-14 20:08:18 +03:00
Sebastian Dröge
b401b2f243 fallbackswitch: New plugin providing a fallbackswitch element
Allows having a live input stream and falling back to another input
stream after a configurable timeout without any buffers received on the
main input.
2019-08-19 15:59:02 +00:00
ahamedsajeer.15
42d4d10b43 rshttpsrc: rename to reqwesthttpsrc 2019-06-26 18:28:12 +05:30
ahamedsajeer.15
dc45b7f8ac Add build.rs that provides a version number, release date and other details 2019-06-03 11:11:29 +00:00
Arun Raghavan
a7d24506c2 Add a plugin to read data from Amazon S3
Moving from https://github.com/ford-prefect/gst-plugin-s3/ to have these
plugins in a central location.
2019-05-25 16:57:39 +02:00
Sebastian Dröge
150f672fde rav1e: Add AV1 encoder around rav1e crate 2019-05-25 15:01:18 +02:00
Guillaume Desmottes
d7125aee68 Cargo: set opt-level to 1 in dev builds
We need some level of optimizations so the CDG decoder is usable in dev
build. '1' is suitable for debugging according to the doc.
2019-05-23 16:49:13 +02:00
Guillaume Desmottes
cfe660ae82 cdg: add cdgdec element
CDG video decoder used to render karaoke videos.

Acting as a parser for now as we don't have cdgparse yet. I'll probably
implement it at some point once we have GstBaseParse bindings.
2019-05-23 16:49:13 +02:00
Jordan Petridis
8c03237949 Add libsodium-based encrypter/decrypter elements
With some changes by Sebastian Dröge <sebastian@centricular.com>
2019-05-09 12:29:39 +03:00
Sebastian Dröge
774110ec0a closedcaption: Add closed caption plugin with an MCC parser and encoder 2019-01-13 14:23:31 +02:00
Sebastian Dröge
abe87fae12 Remove gst-plugin and gst-plugin-simple crates
They're not used anymore.
2019-01-03 23:58:00 +02:00
Sebastian Dröge
20bec35c68 Merge gst-plugin-threadshare into gst-plugin-rs 2018-11-05 13:40:43 +02:00
Sebastian Dröge
6803cb5fac Move gobject-subclass to its own repository 2018-05-01 17:55:27 +03:00
Dirk Van Haerenborgh
31a48c4baa Split out base object traits
This allows using this independent from GStreamer for subclassing e.g.
GIO or GTK GObjects.

Fixes https://github.com/sdroege/gst-plugin-rs/issues/28
Fixes https://github.com/sdroege/gst-plugin-rs/pull/32
2018-05-01 17:11:18 +03:00
Sebastian Dröge
20743b29c0 Add gst-plugin-tutorial sub-crate and rgb2gray element 2018-01-13 20:12:37 +02:00
Sebastian Dröge
b25309a66a Add gst-plugin-togglerecord 2017-12-05 09:56:58 +02:00
Sebastian Dröge
393cd6236a Move simple Source/Sink/Demuxer traits to a separate crate
Fixes https://github.com/sdroege/gst-plugin-rs/issues/20
2017-10-11 13:32:44 +03:00
Sebastian Dröge
16b6d61e10 Improve release configuration a bit 2017-10-07 12:43:38 +03:00
Sebastian Dröge
80341fd90e Add audiofx plugin with audioecho element 2017-10-07 01:04:33 +03:00
Sebastian Dröge
19936e4eae Do LTO for release builds 2017-02-02 21:11:06 +02:00
Sebastian Dröge
89b0220e26 Build each component into its own GStreamer plugin 2016-12-23 19:04:32 +02:00
Sebastian Dröge
7ef2679cb5 Implement metadata handling 2016-12-23 17:36:14 +02:00
Sebastian Dröge
9e53c0a926 Simplify state handling
This is not too nice now as we have None values to unwrap, but the code
is at least less convoluted.
2016-12-23 17:36:14 +02:00
Sebastian Dröge
62d24efc04 WIP demuxer 2016-12-23 17:35:57 +02:00
Sebastian Dröge
ed2bcf875a Use reqwest 0.2 release
It has the needed changes now
2016-12-23 17:35:31 +02:00
Sebastian Dröge
f7148bd910 Port HTTP source from hyper to reqwest 2016-11-14 20:57:54 +02:00
Sebastian Dröge
b23385e88f Add some more Buffer API and use explicit bitflags instead of magic numbers 2016-09-18 10:23:14 -04:00
Sebastian Dröge
3d83de761f Switch to cdylib crate type 2016-08-22 23:03:45 +03:00
Sebastian Dröge
546d67fa5a Add license and copyright notices 2016-05-15 18:54:09 +03:00
Sebastian Dröge
b2b8332043 Add initial HTTP source based on Hyper
No seeking yet
2016-05-14 17:04:53 +03:00
Sebastian Dröge
15865ab86b Implement parsing of URIs in Rust 2016-05-14 12:34:50 +03:00
Sebastian Dröge
0b67ffc9c7 Add location property handling 2016-05-13 18:02:19 +03:00
Sebastian Dröge
9bb2d32c75 Initial commit 2016-05-13 16:35:48 +03:00