Commit graph

119 commits

Author SHA1 Message Date
Sebastian Dröge 211cd095d6 Add new mux subdirectory for container formats
Contains the (incomplete) flavors FLV demuxer and the fragmented MP4
muxer for now.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/173
2022-10-23 20:25:08 +03:00
Sebastian Dröge 20ad9175d8 Make GStreamer plugin/crate/library/directory names and descriptions consistent
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/238
2022-10-23 20:25:08 +03:00
Sebastian Dröge 45168639e9 Rename rtpav1 plugin to just rtp
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/243
2022-10-23 20:04:43 +03:00
Sebastian Dröge 1929f5872c Sort members in Cargo.toml and meson.build alphabetically and the same in both files 2022-10-23 11:51:02 +03:00
Zhao, Gang f3546819ed meson: Fix warning
Fixed following warning.

gst-plugins-rs| WARNING: You should add the boolean check kwarg to the run_command call.
gst-plugins-rs| It currently defaults to false,
gst-plugins-rs| but it will default to true in future releases of meson.
gst-plugins-rs| See also: https://github.com/mesonbuild/meson/issues/9300
2022-10-22 16:27:41 +00:00
Thibault Saunier 5c89c3db69 webrtc: Rename and add to meson build the signalling server
The binary was only called `server` it has been renamed to
`gst-webrtc-signalling-server` and is installed in meson.
2022-10-20 18:20:15 +00:00
Stéphane Cerveau 60223d127e meson: add plugins list to summary 2022-10-20 15:29:58 +00:00
Thibault Saunier 39c0dcb0d4 Plug webrtc in 2022-10-20 11:51:58 +02:00
Jan Beich 6da4192fe6 meson: optionalize pango dependency used by video/videofx
Similar to -Dcairo=<auto|enabled|disabled> in gst-plugins-good.
2022-10-15 23:41:09 +00:00
Sebastian Dröge 3fe9e4a207 ndi: Implement dynamic loading of the NDI SDK
And build the plugin on the CI and via meson.
2022-10-12 22:09:53 +03:00
Nirbheek Chauhan 1d4d3e4cb0 build: Update versions to be 0.9.0-alpha.1
0.9.0 is the next release, so we can't name things that already.

Also the version in meson.build was 0.13.0, which is completely wrong.
2022-10-04 21:27:23 +05:30
Mart Raudsepp 4928a2badf dav1ddec: Require dav1d 1.0.0 in meson
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698
raised the dependency via bumping the dav1d rust crate used, but didn't add
a requirement at meson level, thus with automatic or enabled option for dav1d
it would pass with an older failure, but then during compilation phase fail
with:

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: PkgConfig(`"pkg-config" "--libs" "--cflags" "dav1d" "dav1d >= 1.0.0"` did not exit successfully: exit status: 1
  error: could not find system library 'dav1d' required by the 'dav1d-sys' crate

  --- stderr
  Package dependency requirement 'dav1d >= 1.0.0' could not be satisfied.
  Package 'dav1d' has version '0.8.2', required version is '>= 1.0.0'
  )', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/dav1d-sys-0.5.0/build.rs:80:10
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
2022-09-19 21:39:14 +00:00
Vivienne Watermeier 8d73b5008a Add RTP de/payloader elements for AV1
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/881
2022-09-12 18:14:39 +03:00
Sebastian Dröge 462d7aa81a meson: Fix gstwebrtc/gstsdp subproject usage 2022-09-03 11:21:03 +03:00
Xavier Claessens 184f862307 meson: Fix deprecation warning
meson.build_root() has been renamed to meson.global_build_root() to not
be confused with meson.project_build_root().
2022-09-02 22:00:57 +00:00
Xavier Claessens d1d7e99978 meson: Blacklist csound and threadshare plugins for gst-full
They are known to be broken:
- csound is missing pkgconfig file.
- threadshare duplicates rtp symbols from GStreamer.
2022-09-02 22:00:57 +00:00
Xavier Claessens 4ac60165a8 meson: Define gst_plugins with list of dependencies
This is needed to link gst-full with Rust plugins. The script requires
either python11 or the tomli module.
2022-09-02 22:00:57 +00:00
Xavier Claessens ad48d5e8f2 meson: Import python module only once 2022-09-02 22:00:57 +00:00
Taruntej Kanakamalla 67e9ba8286 whipsink: A GstBin implementation for WHIP
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1410

Created a new plugin 'webrtchttp' to implement all the
WebRTC HTTP protocols under /net/webrtc-http directory.

WhipSink wraps around 'webrtcbin' with HTTP capabilites
to exchange SDP offer/answer so an ICE/DTLS session can
be established between the encoder/media producer (WHIP client)
and the broadcasting ingestion endpoint (Media Server).

Once the ICE/DTLS session is set up, the media will
flow unidirectionally from the WHIP client to the
broadcasting ingestion endpoint (Media Server).
Spec:
https://www.ietf.org/archive/id/draft-ietf-wish-whip-04.html
2022-09-03 00:18:59 +03:00
Thibault Saunier 31a53bba8a Generate plugins documentation using hotdoc
Which will automatically be integrated in gstreamer documentation
2022-08-29 18:33:22 -04:00
Tomasz Andrzejak 14160d1d31 Add RaptorQ RTP FEC plugins 2022-07-20 13:34:58 +00:00
Sanchayan Maity 511ee766df Rename rusoto to aws
Now that migration to AWS SDK is complete, rename directory and
references to aws/AWS SDK.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Guillaume Desmottes 351453c132 add snapshotting tracer
Convenient tracer to dump all the existing pipelines when receiving the
SIGUSR1 Unix signal.
2022-05-23 13:52:52 +02:00
Mathieu Duponchelle a4a5caec53 net/onvif: implement ONVIF metadata processing elements
- RTP payloader and depayloader

- Aggregator to pair per-frame metadata with media frames

- Overlay to render detected shapes
2022-05-06 11:17:04 +03:00
Thibault Saunier 7ff998f925 meson: Cleanup our meson integration
Writing a proper "depfile" to follow depending files, based on depfiles
generated by rustc.

This is based on work done while working on gobject-examples-rs
2022-04-20 10:21:59 -04:00
Thibault Saunier 94b7677318 meson: Fix building when git isn't available
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/178
2022-04-13 17:01:34 -04:00
Thibault Saunier 3cc2b32756 meson: Only rebuild when files checked in git change
This allows for faster rebuild avoiding to run the target when nothing
changed.

This approach is not ideal as we should find a way to actually know when
to rebuild based on information from cargo itself but there seem to be
no way to do it at this point.
2022-01-13 10:12:13 +00:00
Guillaume Desmottes 4576bea10c add textahead plugin
Plugin displaying upcoming text buffers ahead.
2022-01-12 08:47:23 +01:00
Guillaume Desmottes 61cdf47462 add spotify plugin
Plugin adding an element to play audio from Spotify.
2021-12-29 16:48:20 +01:00
Guillaume Desmottes f9a39b1138 add uriplaylistbin plugin
uriplaylistbin plays a list of URIs sequentially, ensuring gapless transitions
and proper streams synchronization.
2021-11-29 10:55:01 +01:00
Sanchayan Maity 2c2cd8c2be Implement rounded corners
This plugin takes I420/YUV and appends an alpha plane to give YUVA/A420
to round the corners analogous to the border-radius in CSS. Other video
formats like NV12 not supported yet. Support for other planar formats
will follow.

Not all ways of specifying border-radius as in CSS are implemented at
the moment. Currently, we only support specifying it in pixels and it
gets applied uniformly to all corners.
2021-11-22 17:04:07 +05:30
Rafael Caricio e87a7afe3e Add hlssink3 plugin 2021-11-16 08:23:44 +00:00
Sebastian Dröge e3fbf2078d Add new fmp4 plugin with muxers for ISO fragmented MP4, DASH and CMAF containers 2021-11-15 14:04:03 +02:00
Arun Raghavan 44b4a4eb7e meson: Specify minimum cargo-c version
We need newer versions that support '-p' to select the package to build.
2021-11-09 16:14:20 -05:00
Guillaume Desmottes acce0ab4fc meson: build all workspaces all together
It's now possible thanks to cargo-c 0.9.3. Should reduce build time of
all plugins.

Fix #165
2021-10-19 07:49:22 +00:00
Bilal Elmoussaoui 30796fbe07 Add a GTK4 paintable sink plugin
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Co-authored-by: Jordan Petridis <jordan@centricular.com>
2021-10-13 12:28:51 +03:00
Arun Raghavan bb3949aeda video: Add a new ffv1 decoder plugin 2021-09-10 06:20:31 +00:00
Jan Beich f5cc0e50fe meson: optionalize pango dependency used by video/closedcaption
Similar to -Dpango=<auto|enabled|disabled> in gst-plugins-base.
2021-08-15 16:05:24 +00:00
Jan Beich fced787a63 meson: inherit python3 version used by Meson itself
python3 symlink may not be available
2021-08-15 12:57:33 +00:00
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