Guillaume Desmottes
5349822962
utils/streamproducer: add ConsumptionLink
...
Having an explicit link object makes it much easier to build complex
producers/consumers dynamics graphs.
It provides helper to switch producers and prevent accidentally keeping
broken links around as they are disconnected on Drop.
2022-05-17 11:04:35 +03:00
Guillaume Desmottes
f68efd0cab
utils/streamproducer: add API to not forward eos to consumers
...
User may want to plug another producer when one is eos, in such case we
don't want to propagate eos to consumers.
2022-05-17 11:04:35 +03:00
Guillaume Desmottes
351f070c8e
utils/streamproducer: reset callbacks when removing consumer
2022-05-12 14:56:55 +02:00
Sebastian Dröge
98cc289bcc
utils/streamproducer: Add StreamProducer::error()
to signal an error message to all consumers
2022-05-12 10:51:56 +03:00
Sebastian Dröge
e263bd8945
utils/streamproducer: Request keyframes without a lock held and also after an appsrc has dropped some data
2022-05-12 10:44:59 +03:00
Sebastian Dröge
d6095900e9
utils/streamproducer: Improve debug output a bit
2022-05-12 10:37:14 +03:00
Sebastian Dröge
e82d388410
utils/streamproducer: Index hashmap by appsrc instance instead of pointer
...
This behaves the same but requires a little bit less code.
2022-05-12 10:34:11 +03:00
Sebastian Dröge
a51235048d
utils/streamproducer: Add StreamProducer::configure_consumer()
...
This allows configuring an `appsrc` before actually adding it as
consumer at a later time, and can be useful if the pipeline with the
source should be started earlier than adding it to a consumer.
Also use strongly-typed property API for the `appsrc` properties.
2022-05-12 10:34:06 +03:00
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