Commit graph

43 commits

Author SHA1 Message Date
Nirbheek Chauhan
086ffd7aff New RTSP source plugin with live streaming support
GST_PLUGIN_FEATURE_RANK=rtspsrc2:1 gst-play-1.0 [URI]

Features:
* Live streaming N audio and N video
  - With RTCP-based A/V sync
* Lower transports: TCP, UDP, UDP-Multicast
* RTP, RTCP SR, RTCP RR
* OPTIONS DESCRIBE SETUP PLAY TEARDOWN
* Custom UDP socket management, does not use udpsrc/udpsink
* Supports both rtpbin and the rtpbin2 rust rewrite
  - Set USE_RTPBIN2=1 to use rtpbin2 (needs other MRs)
* Properties:
  - protocols selection and priority (NEW!)
  - location supports rtsp[ut]://
  - port-start instead of port-range

Co-Authored-by: Tim-Philipp Müller <tim@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1425>
2024-02-07 20:29:18 +05:30
Mathieu Duponchelle
e905299eba generic: expose inter plugin
This new plugin exposes two elements, intersink and intersrc. These act
as wormholes for data in the same process and can be used to forward
data from one pipeline to another.

The implementation makes use of gstreamer-utils' StreamProducer, and
supports dynamically adding and removing consumers, before and after
producers, and changing producer names while PLAYING, both on the sink
and the src.

This initial implementation comes with a small demo, and a few tests.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1257>
2023-08-14 08:13:12 +00:00
Tim-Philipp Müller
0b5cf4e5fd ci: add check for symlinks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1169>
2023-04-08 23:20:54 +01:00
Sebastian Dröge
143bf7608e ci: Update to cargo-c 0.9.15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096>
2023-02-20 13:08:46 +02:00
Sebastian Dröge
53b6efaa6e ci: Update to dav1d 1.1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096>
2023-02-20 11:09:21 +02:00
Jordan Petridis
975f0141be video/gtk4: Implement support for GLTextures when possible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/588>
2022-11-29 21:18:46 +02:00
Jordan Petridis
b75483e597 meson: Fix build of static plugins
While we were correctly skipping the plugins that couldn't be
built statically, we were still adding their names to the list
and the .pc list causing them to still get built.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/994>
2022-11-29 20:04:25 +02:00
Jordan Petridis
12c058bc49 meson: Fix build of static plugins
While we were correctly skipping the plugins that couldn't be
built statically, we were still adding their names to the list
and the .pc list causing them to still get built.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/994>
2022-11-29 20:03:29 +02:00
Sebastian Dröge
e87251c7d9 ci: Update to cargo-c 0.9.14 2022-11-05 16:26:23 +00: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
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
Thibault Saunier
39c0dcb0d4 Plug webrtc in 2022-10-20 11:51:58 +02:00
Jordan Petridis
2bf5f0bf67 ci: combine windows build jobs
Instead of having a matrix of jobs, use a single job running
all the tests like the linux jobs do.

This helps with improved cache hits as most of the deps are shared
between the builds.
2022-09-12 16:35:56 +03:00
Jordan Petridis
165f3a788b ci/windows: Build all the crates at once
In gst-rs we build each crate on its own, since not all
crates share the same features and some conflict with each other.

However currently, that isn't the case in plugins-rs and instead
we can be building all the crates with the same flags and simplify
the the script.

Close #241
2022-09-10 14:29:23 +03:00
Jordan Petridis
de3972a707 ci: Add visual studio/msvc builds
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/841>
2022-09-08 15:12:59 +03:00
Sebastian Dröge
919b60bb6b ci: Update to cargo-c 0.9.12 2022-09-07 12:15:21 +03: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
e391f1ef25 ci: Check that documentation is updated as required 2022-08-29 18:33:22 -04:00
Sebastian Dröge
065bc72bfe ci: Update to cargo-c 0.9.11 2022-07-19 18:16:19 +03: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
Arun Raghavan
ea98a0b596 dav1ddec: Bump dependency for dav1d 1.0.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/698>
2022-05-11 08:29:15 -04:00
Jordan Petridis
a4aa45d27f ci: remove the david checkot after install
Makes the docker image slightly smaller
2022-05-10 12:34:03 +03: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
Jordan Petridis
f78b97ba4a ci: stop installing gtk4 manually
It's now included in the base image we use.

https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/942
2022-01-12 22:24:22 +02:00
Guillaume Desmottes
4576bea10c add textahead plugin
Plugin displaying upcoming text buffers ahead.
2022-01-12 08:47:23 +01:00
Sebastian Dröge
0a7d1639e7 Update to Rust edition 2021 and minimum supported Rust version to 1.56 2021-10-31 17:40:05 +02:00
Sebastian Dröge
db30cfcc74 ci: Install cargo-c 0.9.4 until our minimum supported Rust version is 1.56 2021-10-23 10:37:55 +03: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
Sebastian Dröge
e61bfa1ea9 ci: Update to dav1d 0.9.2 2021-09-10 10:21:01 +03:00
Sebastian Dröge
94ae345701 ci: Update to dav1d 0.9.0 2021-06-20 11:54:06 +03:00
Sebastian Dröge
9d359d9341 ci: Update to dav1d 0.8.2 2021-03-25 18:20:05 +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
595616fe2d ci: install cargo-c to proper location
Need to define CARGO_HOME so it's installed to the same places as the
rest of the Rust tools.
2021-01-04 16:04:52 +01:00
Guillaume Desmottes
fdc3ea68e8 ci: test linking on all static plugins
Will ensure that our static libraries and pkg-config files are properly
generated.
2021-01-04 12:26:45 +01:00
Guillaume Desmottes
9167e5e561 ci: factor out iterate_plugins()
Will be re-used for another test.

Also explicitly list the 'rs' prefixed plugins.
2021-01-04 12:26:45 +01:00
Sebastian Dröge
0f4383a8a0 ci: Update to dav1d 0.8.0 2020-12-31 17:28:04 +02:00
Guillaume Desmottes
d921ee2245 ci: check if all plugins are installed with meson
Will prevent us to forget adding new plugins to meson.
2020-11-19 09:23:52 +01:00
Sebastian Dröge
7255c1d204 ci: set -e in all shell scripts
Otherwise errors are silently ignored.
2020-07-28 09:47:44 +03:00
Sebastian Dröge
04e98f9306 ci: Update CI image for dav1d 0.7.1 2020-07-28 09:47:00 +03:00
Guillaume Desmottes
9efe4168b7 ci: install dav1d when generating image
Save us from using the static version when building the crate.
2020-04-28 14:21:01 +02:00
Guillaume Desmottes
54586c6ecc ci: use fdo template
Build our own images based on the ones used by gstreamer-rs ci.

Fix #109

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/321>
2020-04-27 12:19:08 +02:00