Commit graph

2841 commits

Author SHA1 Message Date
Thibault Saunier f3bba21faa Introduce StreamProducer
Introduce a new `gstreamer-utils` crate where we implement a
`StreamProducer` structure that allows "producing" pipeline (Producers)
pushing their data to 0 or several "consuming" pipelines. The Producer
needs to push their data to an `appsink` which the `StreamProducer` controls
and the "consumer" pipelines need to have an AppSrc which the same
StreamProducer controls.

It allows similare behavior as a `tee` element but with a simpler to
handle addition and removal of "consumers" as well as a total decoupling
of the various consumer, both between each others and the producer
pipeline.

This has simply been extracted from
[webrtcsink](https://github.com/centricular/webrtcsink/blob/main/plugins/src/webrtcsink/utils.rs)
2022-05-11 10:14:54 -04:00
Thibault Saunier 56a46fc6fd ci: Re-implement the gi-checker in python
To cleanup and ignore the gstreamer-utils crate
2022-05-11 10:14:54 -04:00
Sebastian Dröge 081d42ac86 net: Add various static PTP clock API
This allows initializing the PTP clock infrastructure, deinitializing
it, checking the current status and adding statistics callbacks.
2022-05-11 14:19:50 +03:00
Jordan Petridis b62d22852e ci: cleanup the checkouts in the docker image after install 2022-05-10 10:11:47 +03:00
Sebastian Dröge 45e16f7753 gstreamer: Add #[must_use] annotation to PadTemplateBuilder 2022-05-08 11:41:54 +03:00
Guillaume Gomez c1d3ed5eac Use IntoGlibPtr trait instead of implementing into_ptr 2022-05-07 13:38:11 +02:00
Sebastian Dröge cd49659fae gstreamer: Add a PadTemplateBuilder
And only allow setting documentation caps via that. It's not actually
allowed to update the documentation caps at random times as it is not
thread-safe.
2022-05-06 16:57:06 +03:00
Sebastian Dröge 0aa59be45c gstreamer: Improve accessors to various pad template fields 2022-05-06 16:22:40 +03:00
Sebastian Dröge 45856ac35b gstreamer: Return a glib::List instead of a Vec for the pad template list
Avoids an unnecessary allocation for the `Vec`.
2022-05-06 12:42:52 +03:00
Vivienne Watermeier 1b22be2e15 Add De/Serialization for most bitflag types
Represents combinations of flags with a '+' separated string of nicks,
or an empty string for no flags set.

Note that most flag types will ignore any flags using multiple bits when
serializing, since in most cases these flags cover all used bits.
2022-05-06 09:05:52 +00:00
Vivienne Watermeier 94b5a13f4b Regenerate with Gir.toml changes 2022-05-06 09:05:52 +00:00
Vivienne Watermeier fec2718aef Remove generated serde derives from all bitflags types 2022-05-06 09:05:52 +00:00
Sebastian Dröge a34bc85ca1 video: Don't change the VideoOverlayComposition constructor API based on feature flags
Feature flags are additive and a higher feature might be enabled by some
other dependency, which then can cause code that assumes the other API
fail to compile.

Still implement the constructor separately per version to make it clear
to the compiler that the constructor can't fail at all in newer
versions.
2022-05-06 11:01:02 +03:00
Mathieu Duponchelle d83faa044e rtp_buffer: buffer() does not need to return an Option
When a RTP buffer is mapped, its buffer field always holds a
non-null pointer.
2022-05-05 14:36:43 +02:00
Sebastian Dröge a16c3888e5 Return base class pads by reference instead of strong reference
Avoids unnecessary reference counting and the caller can get a strong
reference easily by calling clone().
2022-05-05 14:18:03 +03:00
Mathieu Duponchelle 80b0b378fc base classes: expose accessors for static pads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1023>
2022-05-04 17:15:07 +02:00
Sebastian Dröge ba955a22bd ci: Update image version for including a newer GStreamer build 2022-05-03 15:42:18 +03:00
Sebastian Dröge b50a7993de video: Add bindings for VideoFormatInfo::tile_sizes() 2022-05-03 15:41:54 +03:00
Sebastian Dröge 4a28a188d9 Regenerate with latest gir/gir-files 2022-05-03 15:37:25 +03:00
Sebastian Dröge 90ac00a6f6 Update GStreamer gir files 2022-05-03 15:36:05 +03:00
Sebastian Dröge d3eb9db8ce Update gir-files 2022-05-03 15:36:00 +03:00
Sebastian Dröge 0f89be2751 Update gir 2022-05-03 15:35:54 +03:00
Sebastian Dröge 2b7a63fc8e gstreamer: Implement FusedStream for the Bus stream 2022-04-30 21:10:59 +03:00
Sebastian Dröge e04bb8b524 Update CHANGELOG.md for 0.18.8 2022-04-26 14:06:28 +03:00
Mathieu Duponchelle 7fa0b4e84d rtpbuffer: bind length calculation API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1014>
2022-04-23 01:12:16 +00:00
Sebastian Dröge 0e0d9f532b gstreamer: Update to pretty-hex 0.3 2022-04-22 13:57:24 +03:00
Sebastian Dröge 7420a72831 gstreamer: Add error/warning/info message constructors from a pre-existing glib::Error 2022-04-21 15:33:51 +03:00
Sebastian Dröge 40dcdcbf5c gstreamer: Simplify error/warning/info message builders 2022-04-21 15:03:50 +03:00
Vivienne Watermeier 61a3f5296c video: Fix de/serialization for empty modifier states
Empty modifier states are now de/serialized from/to the empty string;
This also adds more thorough testing for deserializing.
2022-04-14 18:19:56 +02:00
Mathieu Duponchelle f095b6f0ba rtp_buffer: bind buffer getters
* Expose the buffer field, useful to look up flags and meta

* Expose the payload_buffer API, useful to avoid copies, for instance
  when storing in an adapter

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1008>
2022-04-14 13:31:28 +00:00
Mathieu Duponchelle af89799e06 rtp: add bindings for RTPBaseDepayload
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1008>
2022-04-14 13:31:28 +00:00
Mathieu Duponchelle 062ceaa00a rtp: add bindings for RTPBasePayload
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1008>
2022-04-14 13:31:28 +00:00
Vivienne Watermeier 3b18f10342 video: Implement De/Serialization for NavigationModifierType
Modifier state is represented by a "+" separated list of lowercase flag
names, or "empty" for no flags.
2022-04-13 14:29:45 +02:00
Sebastian Dröge 8d001d8b16 Stop using glib::SendUnique
It is being removed because it does not add a lot of value.
2022-04-09 11:37:53 +03:00
Jan Alexander Steffens (heftig) 7d2ab1450e gstreamer: Export subclass::TaskPoolFunction
This must be accessible in order to subclass TaskPool.
2022-04-07 17:57:59 +00:00
Sebastian Dröge c82aefd2a4 ci: Run coverage job on the stable image 2022-04-07 18:51:20 +03:00
Sebastian Dröge 680d4af732 ci: Update to Rust 1.60 2022-04-07 18:48:59 +03:00
Sebastian Dröge 4651c9db4d Update minimum supported version to 1.14
This is the version that is available in Ubuntu 18.04.
2022-04-07 12:45:47 +03:00
Sebastian Dröge 5052a93ee3 Fix macOS instructions in other READMEs too 2022-04-07 11:35:40 +03:00
Sebastian Dröge a90aed0d41 examples: Update to memfd 0.5 2022-04-06 11:05:05 +03:00
Vivia Nikolaidou 60a192d525 rustfmt.toml: Add file
This will automatically run `cargo fmt` when a file is saved.
2022-04-06 07:46:29 +00:00
Sebastian Dröge 9a8ca0cadd gstreamer: Add bindings for the new 1.22 selectable query 2022-04-06 10:18:48 +03:00
Sebastian Dröge 627f4d798e gstreamer: Get rid of some duplicated feature cfg attributes 2022-04-06 10:18:48 +03:00
Sebastian Dröge bcf4f63ac6 gstreamer: Don't make the bitrate query available at all with v1_16 2022-04-06 09:51:19 +03:00
Sebastian Dröge d92e49a797 ci: Update image version 2022-04-06 09:39:25 +03:00
Sebastian Dröge b36b63c60a Regenerate with latest gir files 2022-04-06 09:38:34 +03:00
Sebastian Dröge 8dd2af610f Update gir files 2022-04-06 09:37:27 +03:00
Sebastian Dröge 3532c9adb2 Update GStreamer gir files 2022-04-06 09:36:55 +03:00
Vivienne Watermeier d5e4705605 video: Add builders for navigation events 2022-04-05 19:49:05 +00:00
Vivienne Watermeier 1274a59472 video: update navigation API for recent changes
Add support for the new send_event_simple and event_get/set_coordinates
functions, as well as touchscreen events and modifier state. See:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1633
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2010
2022-04-05 19:49:05 +00:00