Commit graph

130 commits

Author SHA1 Message Date
Guillaume Desmottes
1ec1352c88 meson: fix csound detection
csound-sys can detect the system lib using either pkg-config or using
the CSOUND_LIB_DIR env variable.
The former case just work but the second is trickier as we need to
ensure that CSOUND_LIB_DIR is defined when building.

So we no longer try to detect the lib using find_library() if user
didn't define the env variable as the build will fail later.

Also explicitly pass the env variable to cargo so user can now call
'CSOUND_LIB_DIR=/usr/lib64 meson build && ninja -C build'
and have it work without repassing the env variable to ninja.
2021-05-26 12:08:05 +02:00
Stéphane Cerveau
6b5e536ca6 cargo: fix build issue with cargo-c
Using ubuntu 20.04, the build was failing with version
cargo 0.47 / rustc 1.47.

Following this discussion:
https://github.com/rust-lang/cargo/issues/9340

it appears that rustc 1.52 is the minimum version.
2021-05-17 11:46:06 +02:00
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
Guillaume Desmottes
9d8fe31a5b meson: bump minimal version to 0.56
Needed because of substring().

Fix #138
2021-01-07 10:03:01 +01:00
Guillaume Desmottes
0754c98f9d meson: check if cargo-c is installed 2021-01-04 16:04:52 +01:00
Guillaume Desmottes
32d511684e meson: install plugins pc files 2021-01-04 12:26:45 +01:00
Guillaume Desmottes
dfdbd370f9 meson: use cargo-c
We now have to run 'cbuild' and 'ctest' on each plugin individually.
Replace plugins_rep key by the source path so we can easily discard the
excluded plugins.
2021-01-04 12:26:45 +01:00
Blaxar Waldarax
348b865187 Added hsv plugin with hsvfilter and hsvdetector elements 2020-12-23 18:40:20 +01:00
Guillaume Desmottes
b664055e3c meson: add missing plugins 2020-11-19 09:23:27 +01:00
Guillaume Desmottes
fd26dfecca meson: fix multiple outputs target warning
meson 0.54 introduced a new API allowing us to fix this warning.
2020-11-18 14:40:43 +01:00
Guillaume Desmottes
b9f8ce9995 meson: add support for static build
There is no way to dynamically ask Cargo to build static or dynamic lib
so we have to build both and pick the one we care when doing the meson
processing.

Fix #88
2020-11-16 15:30:32 +01:00
Jan Alexander Steffens (heftig)
7a2c8768ad
meson: Install plugins 2020-07-29 15:48:31 +02:00
Mathieu Duponchelle
44d4a2a832 meson: fix mistakenly checked-in csound disabling 2020-04-23 22:05:57 +02:00
Mathieu Duponchelle
de796c95f0 tttocea608: refactor to fit more scenarios
- 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>
2020-04-23 20:10:42 +02:00
Guillaume Desmottes
6607377496 version-helper: stop using git2
The crate pulls openssl-sys which is an annoying dep to build.

Fix #103
2020-04-03 20:17:59 +03:00
Natanael Mojica
cf59318ab4 Add csound-based filter plugin 2020-03-22 13:44:40 +02:00
Stéphane Cerveau
1c7f9041e0 meson: update cargo to minimum 1.40 2020-02-25 13:44:46 +01:00
Guillaume Desmottes
90cb42fdf9 meson: check for openssl on not Windows/Mac platforms 2020-01-30 10:57:00 +00:00
Guillaume Desmottes
1b84dd1f6b meson: add sodium option
Allow us to pick between the built-in libsodium, use the one from the
system or disable the plugin.
2020-01-30 10:57:00 +00:00
Sebastian Dröge
1ad4e39cc9 meson: Add claxon plugin 2020-01-20 08:01:14 +02:00
Guillaume Desmottes
28e3e3199c meson: add test wrapper
Allow us to run the tests using 'meson test'.

Needed for https://gitlab.freedesktop.org/gstreamer/gst-ci/issues/46
2020-01-07 14:19:13 +05:30
Guillaume Desmottes
accd10dfea meson: add 'command' argument to cargo wrapper
Will be used to add test support.
2020-01-07 14:06:14 +05:30
Guillaume Desmottes
13d4029f70 meson: add dav1d option
Allow to ensure that the plugin is actually build.
2020-01-03 09:46:29 +05:30
Guillaume Desmottes
e158f4ef88 meson: rename cargo.py to cargo_wrapper.py
Fix 'cargo build' on Windows as its $PATH includes $PWD, it seems to
pick our script rather than the actual cargo.
2020-01-03 09:35:10 +05:30
Guillaume Desmottes
cbb1912e99 meson: check for dav1d dep
Needed to build dav1d-sys which is required by the dav1d decoder plugin.

Exclude the plugin if the dep isn't found, preventing the build to fail.
2020-01-02 08:19:55 +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
Guillaume Desmottes
317679fec3 meson: add gstreamer-rs deps
Fix race when building from gst-build as we need to be sure that all
these deps have been built before starting building gst-plugins-rs which
will build gstreamer-rs.
2019-12-24 13:58:56 +05:30
Guillaume Desmottes
9390295281 add meson support
This is needed to integrate gst-plugins-rs with gst-build, see
https://gitlab.freedesktop.org/gstreamer/gst-build/issues/63
2019-12-18 10:41:21 +00:00