Commit graph

2621 commits

Author SHA1 Message Date
Sebastian Dröge
92f9f3be39 Remove various unnecessary & from property/structure field related code 2021-10-24 20:52:23 +03:00
Sebastian Dröge
b4a3738b82 Move more code to caps/structure builders
Instead of the new() functions requiring slices. The code reads cleaner.
2021-10-24 18:57:15 +03:00
Sebastian Dröge
8cc018c164 examples: Move to the new, simplified encoding profile API 2021-10-24 18:45:38 +03:00
Sebastian Dröge
984ab87c79 pbutils/encoding_profile: Require passing the format caps to the builders and make construction infallible
There's no way it can fail if a format is provided and we don't pass
random pointers around.
2021-10-24 18:39:55 +03:00
Sebastian Dröge
06916b23c7 pbutils/encoding_profile: Make the profile builder new() functions private and use the builder() functions on the main types
Also don't re-export the builder types at the crate root.
Fewer types to juggle in application code.
2021-10-24 18:29:03 +03:00
Sebastian Dröge
9e1fb4570f pbutils/encoding_profile: Move doc aliases to the correct function definitions/declarations
And also add `::builder()` functions on the audio/video/container
encoding profile types.
2021-10-24 18:23:45 +03:00
Sebastian Dröge
e95a75fdab pbutils/encoding_profile: Add support for 1.18 single-segment API 2021-10-24 18:15:53 +03:00
Sebastian Dröge
7f0ca0011c Add gst::GstObjectImpl, gst::ProxyPadImpl, gst_audio::AudioBaseSrc, gst_audio::AudioBaseSink subclassing traits
These were missing from the type hierarchy previously and are now
required because of more strict checks in the GLib bindings.
2021-10-23 11:59:03 +03:00
Sebastian Dröge
12fec484c7 Simplify IsSubclassable trait impls 2021-10-23 11:27:46 +03:00
Sebastian Dröge
cc76442601 gstreamer: Update ron dev-dependency to 0.7 2021-10-23 10:40:24 +03:00
Sebastian Dröge
4579fb006b ci: Update to Rust 1.56 and meson 0.59.2 2021-10-22 22:04:45 +03:00
Guillaume Desmottes
fc49a0cfd8 ci: build some plugins
I'll need those for the tests of a new element I'm writting for
gst-plugins-rs.
2021-10-22 09:38:44 +02:00
Sebastian Dröge
18e45dd991 gstreamer: Add FromIterator/Extend impls based on owned Strings and glib::Quark 2021-10-20 14:28:14 +03:00
Sebastian Dröge
a7be9ea9d9 gstreamer: Implement Extend trait for buffer, buffer list, caps, caps features and structure
And also implement FromIterator<Memory> for buffer.
2021-10-20 13:53:23 +03:00
Sebastian Dröge
febd0ee144 Declare the minimum supported Rust version in Cargo.toml 2021-10-18 19:30:37 +03:00
Sebastian Dröge
e6b78d1489 gstreamer: Have Structure::from_iter() take owned values
They were copied internally, which can be avoided in many cases if
working with owned values anyway.
2021-10-18 16:36:15 +03:00
François Laignel
f315d3a052 Use published option-operations 2021-10-18 14:30:59 +02:00
François Laignel
4bbd201377 Impl Option*{Div,Mul,Rem}
Use the inner type for Rhs, as implemented for Duration.
These operations make sense without providing a "unit".
2021-10-18 14:30:59 +02:00
François Laignel
f83b385487 tutorial: take advantage of Div impl on Percent 2021-10-18 14:30:59 +02:00
François Laignel
deb22b264e format, clock_time: gather macros together
The modules format and clock_time share common macros which are
scattered between each modules. This cross reference makes it
difficult to maintain the macros.

This commit also make it possible to use macro
impl_common_ops_for_newtype_uint for Percent.
2021-10-18 14:30:59 +02:00
François Laignel
986a136492 clock_time & format: basic opt-ops impl
The option-operations crate provides traits to improve usability
when dealing with `Option`s, which is often the case with
`ClockTime` & most formats.
2021-10-18 14:30:59 +02:00
François Laignel
051df59cd1 clock_time, format: fix checked, saturating, wrapping ops
These operations were implemented using the integer implementations.
These types' MAX values are different from the integers so they must
use specific implementations.

Also add the overflowing variants.
2021-10-18 14:30:59 +02:00
Guillaume Desmottes
675fe349a7 gstreamer: implement Sum on ClockTime
Small convenient helper.
2021-10-18 08:05:56 +02:00
Sebastian Dröge
67af5ac569 gstreamer: Add support for 1.18 instant rate request message 2021-10-17 14:39:38 +03:00
Sebastian Dröge
cdddf48f08 gstreamer: Correctly mark various messages as new in 1.10/1.16 2021-10-17 14:33:34 +03:00
Sebastian Dröge
6e3878c8f5 gstreamer: Add bindings for 1.18 instant-rate-change related events 2021-10-17 14:27:44 +03: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
d01ed466d0 gstreamer: Use #[non_exhaustive] annotation instead of a dummy enum variant 2021-10-17 14:04:18 +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
87e7a84a27 gstreamer: Remove one unnecessary use of unsafe in query code 2021-10-17 12:38:59 +03:00
Sebastian Dröge
3d39faac28 video: Implement non-fallible constructor and FromIterator for VideoOverlayComposition when building for 1.20
Previous versions needed at least one rectangle for successfull
construction.
2021-10-17 12:33:29 +03:00
Sebastian Dröge
7037f6d836 video: Rename VideoOverlayComposition iterator struct 2021-10-17 11:24:33 +03:00
Sebastian Dröge
e989899467 gstreamer: Remove FromIterator impls on references
Creating copies silently while calling collect() is unexpected and can
explicitly added to the iterator via map() if needed.
2021-10-17 11:21:31 +03:00
Sebastian Dröge
3670076f07 gstreamer: Implement IntoIterator / FromIterator for Buffer, BufferList, Caps, CapsFeatures, StreamCollection and Structure
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/285
2021-10-16 23:24:08 +03:00
Sebastian Dröge
219616ced0 video: Implement iterator for VideoOverlayComposition 2021-10-16 21:07:13 +03:00
Sebastian Dröge
dc7e705f44 base: decide_query in Aggregator/BaseTransform propose_allocation() is nullable 2021-10-16 15:36:20 +03:00
Sebastian Dröge
f6cf6c8863 Improve subclass decide_allocation() / propose_allocation() API
The queries passed in are always allocation queries, so don't require
implementors to match on that first.
2021-10-16 14:24:08 +03:00
Sebastian Dröge
7e71c74505 base: Add support for propose_allocation()/decide_allocation() in the base classes 2021-10-16 14:24:08 +03:00
Philippe Normand
b9cd38b796 gstreamer: query: Tidy up allocation pool API
Use `impl IsA<BufferPool>` and make the `set_nth_` and
`remove_nth_` methods check the index bounds.
2021-10-12 17:16:21 +01:00
Philippe Normand
6d88e18772 gstreamer: Add bindings for querying allocation params
This can be used to query downstream for custom allocators.
2021-10-12 17:16:21 +01:00
Sebastian Dröge
8fb37c5134 gstreamer: Implement Deref<Target=[glib::SendValue]> for List and Array 2021-10-12 11:24:54 +03:00
Sebastian Dröge
37c3d2d8e0 Update for glib::source_remove() removal 2021-10-12 09:30:10 +03:00
Sebastian Dröge
d7fe610767 rtp: Fix mutability of caps in RtpHeaderExtension API 2021-10-08 19:57:14 +03:00
Sebastian Dröge
6e6f5108a9 video: Add VideoDecoderImpl::handle_missing_data() 2021-10-08 19:51:52 +03:00
Sebastian Dröge
1c7b4516f9 Regenerate everything with latest GStreamer gir files 2021-10-08 19:44:38 +03:00
Sebastian Dröge
71e58bfec2 Add some newly added API 2021-10-08 19:43:47 +03:00
Sebastian Dröge
72b373c454 Update GStreamer gir files 2021-10-08 19:42:33 +03:00
Guillaume Desmottes
650787ee7c mpegts-sys: mark a couple of structs as >= gst 1.20
Their ABI have changed.
2021-10-07 15:36:40 +02:00
Guillaume Desmottes
da61c19b69 ci: install gst from mono repo 2021-10-07 15:33:19 +02:00
Sanchayan Maity
b13f2060dc Update prepare_output_buffer's type signature
Update prepare_output_buffer's type signature to correctly reflect
whether it gets to work with a writable or readable buffer.
2021-10-07 12:38:07 +05:30