Sebastian Dröge
c33fb38ca1
gstreamer: Mark various enums as exhaustive
...
This reduces their size to 4 bytes instead of 5 bytes, and as such makes
it possible to store them in a register on 32 bit platforms too.
Additionally it makes it possible for enums like
`Result<FlowSuccess, FlowReturn>` to be stored in a single register on
64 bit platforms.
Also the conversions between the C and Rust type is a simple copy of the
value now instead of a mapping.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1200 >
2023-01-24 11:07:33 +02:00
Sebastian Dröge
a028e807df
gstreamer: Autogenerate some more API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1182 >
2023-01-04 13:25:17 +02:00
Sebastian Dröge
e8859951d3
gstreamer: Ignore EventType::to_sticky_ordering
...
This is handled manually via the `PartialOrd` impl.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1159 >
2022-12-09 17:37:01 +02:00
Sebastian Dröge
fa5491e6b3
Use borrowed miniobject/structure types in more places
...
When the function does not keep around an additional reference of the
value this is correct and more flexible for callers.
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/420
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1152 >
2022-11-21 12:40:37 +02:00
Sebastian Dröge
d3543efec2
gstreamer: Manually implement Allocator::register()
...
Due to a bug it causes use-after-free in versions < 1.20.5, so work
around that here.
2022-11-08 19:07:48 +02:00
Sebastian Dröge
130cc9d63b
element: Implement linking functions manually for better error reporting
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/318
2022-10-19 17:59:04 +03:00
Sebastian Dröge
7423b1dea6
elementfactory: Change make()
/ create()
to builders and keep the old variants as create_with_name()
/ make_with_name()
...
As a side-effect, this also now includes the element factory name in the
error messages instead of giving the same error string for every
factory.
Partially fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/318
Also let them all go through the same, single object construction code.
2022-10-19 17:48:39 +03:00
Sebastian Dröge
d80227e566
Trust nullability annotations everywhere
2022-10-18 18:15:01 +03:00
François Laignel
069c6a2c01
Rename feature 'ser_de' as 'serde'
...
When I introduced the 'ser_de' feature, I couldn't find a way to
name it 'serde' while also make it pull the optional 'serde'
crate together with the other related dependencies.
With rustc >= 1.60 we can use 'dep:serde' to refer to the 'serde'
dependency as part of the 'serde' feature.
2022-09-12 19:36:30 +02:00
Thibault Saunier
e9d95eda59
gstreamer: Add extension trait to mark API as plugins API
...
This adds an extension trait implemented for GType so we can
add and check plugins API status.
Required so we can document plugins written in rust.
2022-08-24 10:38:06 -04:00
Sebastian Dröge
fbad0fd0bc
Regenerate with latest gir / gir-files / gst-gir-files
2022-08-14 14:02:50 +03:00
Sebastian Dröge
cf1a64ecf8
gstreamer: Hide some useless enum variants that only make sense in C
2022-07-18 13:13:48 +03:00
Sebastian Dröge
14f485d0b1
bus: Take ownership of the message in post()
2022-06-28 23:36:08 +03: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
Vivienne Watermeier
fec2718aef
Remove generated serde derives from all bitflags types
2022-05-06 09:05:52 +00: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
8d03a0d032
gstreamer: Complete the Task bindings
2022-04-04 18:56:25 +03:00
Jan Alexander Steffens (heftig)
b7afdd4dd0
gstreamer: Add TaskPool bindings and subclassing
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/14
2022-03-30 23:01:21 +02:00
Sebastian Dröge
9eb479cf78
Regenerate everything
2022-01-12 15:40:36 +02:00
Sebastian Dröge
8f3ed6d289
Add checks for the Gir.tomls
...
... and fix all the failures.
2021-12-03 20:27:50 +00:00
Piotrek Brzeziński
abd2d4dfd7
gstreamer: Add getters for ElementFactory/DeviceProviderFactory metadata
2021-11-28 21:00:05 +01:00
Sebastian Dröge
668b2b3fdf
gstreamer: Use glib::List
in various places for reducing allocations when working with factory lists
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/359
2021-11-20 14:44:49 +02:00
Sebastian Dröge
63f6d6a7d3
gstreamer: Make child proxy property API more consistent with the object property API
...
And especially check various conditions for the property and the value.
Also add `ChildProxy::lookup()`.
2021-11-19 10:54:52 +02:00
Sebastian Dröge
df36a7c57a
gstreamer: Add gst::MetaFlags
and accessor on meta
2021-11-16 13:05:47 +02:00
Sebastian Dröge
f27a2bddd6
gstreamer: Add bindings for DebugCategory::all() to list all available debug categories
2021-11-09 09:58:22 +00:00
Sebastian Dröge
c942a1d563
gstreamer: Implement Element::request_pad_simple()
only once
...
With < 1.20 it will use `gst_element_get_request_pad()` and otherwise
`gst_element_request_pad_simple()`. It's not marked as deprecated in
either case.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/358
2021-11-04 15:44:35 +02:00
Sebastian Dröge
8b77bd4068
gstreamer: Mark select-streams / stream-collection as only available in 1.10
2021-10-17 14:11:56 +03:00
Sebastian Dröge
aab0a45cfc
gstreamer: Implement pad sticky event getter by type
...
This allows the caller to directly use the specific event type API on
the result instead of first having to match on it first.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/314
2021-10-17 14:04:18 +03:00
Sebastian Dröge
a1c4a58180
Bind various new API
2021-09-19 13:12:58 +00:00
Edward Hervey
f504493134
gstreamer: Add serde support for more enums and flags
...
PadDirection, PadPresence, URITYpe, Rank
2021-08-16 15:05:37 +02:00
Simonas Kazlauskas
cb475e0965
Bindings to GstTracer and GstTracerFactory
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/147
2021-08-16 14:38:22 +03:00
François Laignel
532af96ef9
Gir.toml: use TryFromGlib::Option for ClockTime
2021-06-04 22:09:38 +02:00
Marijn Suijten
aa60c40c61
gst/gir: Generate new flags since 1.19.1
2021-06-04 10:26:24 +02:00
Marijn Suijten
7d13ecf1aa
gst,gl: Drop superfluous enum/flag member versions (since 1.19.1)
...
https://github.com/gtk-rs/gir/pull/1180 now parses these from `.gir`
directly, and `1.19.1` now includes the version for a few more of these
enums.
2021-06-03 21:24:12 +02:00
Marijn Suijten
bdc26746b6
treewide/gir: Mark Gst.Structure as ref
instead of ref-mut
mode
...
The only bindings using this type show up in v1.20 and use `&mut` which
lacks a matching `.to_glib_full()` implementation.
2021-06-03 20:35:35 +02:00
Marijn Suijten
9fd768425e
Rename request_pad_simple to avoid 1.19.1 clash
...
Fixes: 3f442d977
("prep for regen: relaxed get fn identification")
2021-06-03 20:35:35 +02:00
Marijn Suijten
4f479326f3
gstreamer/gir: Document manually implemented types and functions
2021-06-01 13:40:52 +00:00
Marijn Suijten
1e58dd553c
treewide: Add missing external external types to manual
list
...
Gir now uses analyzed objects to generate documentation, and to know
exactly what is available. Additionally, this allows more bindings to
be generated.
2021-06-01 13:40:52 +00:00
Sebastian Dröge
849a524b09
element: Make caps in link_filtered() / link_pads_filtered() mandatory
...
Instead of passing `None`, the non-filtered variants of the functions
can be used.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/328
2021-05-30 17:30:22 +00:00
Marijn Suijten
0f73912133
gstreamer/gir: Remove duplicate function configurations
...
Found this ambiguity in https://github.com/gtk-rs/gir/pull/1164 .
2021-05-28 13:24:49 +02:00
François Laignel
4b2e001f8e
Gir.toml: use TryFromGlib for *Return types
2021-05-04 11:33:51 +00:00
François Laignel
7b0a3487c8
gstreamer/ControlSource: fix explicit getter rename
2021-05-03 20:45:26 +02:00
Marijn Suijten
7ede94fec8
Replace all girs_dir with girs_directories and add gst-gir-files dir
...
The previous commit reinstantiated `girs_dir`, and this commit applies
the rename to `girs_directories` and adds the new/missing
`gst-gir-files` directory where GStreamer-specific `.gir` files live.
2021-04-23 22:01:23 +02:00
Marijn Suijten
666ea908a5
Revert "Gir.toml: Drop unused/renamed girs_dir in favour of gir -d
"
...
This reverts commit 7f9fcb09e2
.
`generator.py` is in the process of being moved to a generic place in
the `gir` repository for reuse across crates. This means `-d` cannot be
passed for our GStreamer-specific `gst-gir-files` directory anymore, and
should be configured from `Gir.toml` instead.
2021-04-23 21:59:33 +02:00
François Laignel
3f442d9775
prep for regen: relaxed get fn identification
2021-04-20 18:18:02 +02:00
François Laignel
d392d968f9
gir prep. for regen - remove get prefix for getters
2021-04-12 14:46:19 +02:00
Marijn Suijten
7f9fcb09e2
Gir.toml: Drop unused/renamed girs_dir in favour of gir -d
...
We were already using `gir -d` and especially now that our files are
separated across two directories that are relative to the directory
containing Gir.toml this only becomes cumbersome. Besides `gir` lacks
functionality to normalize the path, leading to ie.
gstreamer-gl/egl/sys/../../../gir-files in the version comment as a
result.
2021-04-01 15:53:23 +02:00
Jan Alexander Steffens (heftig)
59d91b2abf
gstreamer/plugin_feature: Make load downcast to Self
...
The loaded plugin feature is always of the same type as the unloaded
one. Move `fn load` to PluginFeatureExtManual to implement this.
2021-02-19 11:23:56 +00:00
Sebastian Dröge
d746bf91e1
gstreamer: Provide better bindings for ElementFactoryListType
...
Make it an actual bitflags type instead of just an u64 alias and add all
the constants. As it's not defined as bitflags in C this needs to be
done manually.
2021-02-19 12:56:54 +02:00