Sebastian Dröge
38a9b7a242
video: Add array-based accessor for all video frame planes' data at once
...
This is mostly useful for getting mutable access to all planes at once.
Using `plane_data_mut()` for this is not possible as it would require
borrowing the frame mutably multiple times.
As each plane's data is not overlapping with any other plane we can
still provide such functionality safely.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1367 >
2023-12-19 10:14:23 +02:00
Sebastian Dröge
2fb93e1c12
Update CHANGELOG.md for 0.21.3
2023-12-18 11:07:55 +02:00
Sebastian Dröge
8b9862052b
gstreamer: memory: Simplify and correct offset/size calculations in mem_share()
...
This is all supposed to do unsigned wrapping arithmetic to calculate the
new offsets and sizes, despite input parameters being signed integers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1363 >
2023-12-17 13:15:55 +02:00
Sebastian Dröge
5c88bd0b5f
gstreamer: memory: Use ranges instead of offset/size parameter pairs
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/497
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1363 >
2023-12-17 13:15:38 +02:00
Sebastian Dröge
96de51a7b7
gstreamer: buffer: Use ranges instead of offset/length parameter pairs
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/497
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1363 >
2023-12-17 11:41:01 +02:00
Sebastian Dröge
cd30854c2b
gstreamer: memory: Fix assertions for copy_range/resize/share functions
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1363 >
2023-12-17 11:37:58 +02:00
Sebastian Dröge
33e3e25b49
gstreamer: buffer: Add bindings for Buffer::map_range_readable()
and _writable()
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/496
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1363 >
2023-12-17 11:37:56 +02:00
Olivier Crête
248b6d2f31
gstreamer: meta: Implement Clone trait on MetaRef
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1365 >
2023-12-13 18:05:27 -05:00
Sebastian Dröge
2139f368e9
gstreamer: buffer: Add Buffer::dump()
and Buffer::dump_range()
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/495
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1362 >
2023-12-11 18:34:13 +02:00
Sebastian Dröge
e72a3bfc8d
gstreamer: Improve support for dumping memories and add same functionality to byte slices
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1362 >
2023-12-11 16:05:34 +00:00
Sebastian Dröge
34fee6b691
gstreamer: formatted values: Implement ClockTime::absdiff()
and on related types
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/494
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1364 >
2023-12-10 20:49:17 +02:00
Sebastian Dröge
fddeacc358
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1361 >
2023-12-09 12:14:28 +02:00
Sebastian Dröge
5d8652e872
Update to pretty-hex 0.4
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1361 >
2023-12-09 12:13:42 +02:00
Sebastian Dröge
3daab0112d
examples: Add a few more docs/comments to the subclass/virtual methods example
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1360 >
2023-12-09 11:58:14 +02:00
Sebastian Dröge
0ec7b2608c
examples: Add an example that shows how to write subclasses with virtual methods
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1356 >
2023-12-05 11:20:24 +02:00
Sebastian Dröge
84ca72a833
gstreamer: audiofilter: Add parent_allowed_caps()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1356 >
2023-12-05 11:20:24 +02:00
Sebastian Dröge
ceed45cfd7
gstreamer: Optimize Buffer
/ Memory
from_slice()
to have fewer allocations
...
Instead of using `gst_memory_new_wrapped_full()` and boxing the data,
create an GstAllocator subclass that allows allocating memories that
store the data inline.
By avoiding the box, one additional heap allocation per memory is
avoided.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/498
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1357 >
2023-12-05 10:51:28 +02:00
Guillaume Desmottes
a29d7c0e19
gstreamer: rename util_get_timestamp() to get_timestamp()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1355 >
2023-12-04 17:07:21 +01:00
Guillaume Desmottes
f055c113ac
streamer: do not publicly import functions
...
All the functions are re-exported in the root crate.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1355 >
2023-12-04 16:15:51 +01:00
Guillaume Desmottes
9bcf48050b
gstreamer: move update_registry() as Registry method
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1355 >
2023-12-04 16:15:51 +01:00
Guillaume Desmottes
a649e7dead
gstreamer: move parse_* functions to their own module
...
Better namespacing so the API is more Rust-y.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1355 >
2023-12-04 16:15:51 +01:00
Guillaume Desmottes
f255b82b55
gstreamer: move debug_* functions to their own module
...
Better namespacing so the API is more Rust-y.
Fix #500
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1355 >
2023-12-04 12:46:59 +01:00
Dave Patrick Caberto
7f234c88ac
pbutils: make element_properties mod public
...
This makes the builders accessible/nameable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1354 >
2023-11-29 19:32:44 +08:00
Sebastian Dröge
59420b1590
Regenerate with latest gir
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1353 >
2023-11-29 11:59:03 +02:00
Sebastian Dröge
a05e3fed14
Update gir
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1353 >
2023-11-29 11:58:35 +02:00
Sebastian Dröge
ca8309a5dd
Simplify various raw pointer casts everywhere
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1353 >
2023-11-29 11:24:47 +02:00
Sebastian Dröge
897c7dfd39
gstreamer: Remove deprecated APIs
...
They were deprecated in the previous release or even older releases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1352 >
2023-11-23 13:38:16 +02:00
Sebastian Dröge
c82ba6ffe0
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1351 >
2023-11-17 10:58:50 +02:00
Sebastian Dröge
e56061c25e
examples: Update to windows 0.52
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1351 >
2023-11-17 10:58:40 +02:00
Sebastian Dröge
4c3de8b80e
Update versions of all autogenerated files
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1348 >
2023-11-16 20:53:08 +02:00
Sebastian Dröge
db2028c4c5
net: Add new PtpClock::init_full()
function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1348 >
2023-11-16 20:53:08 +02:00
Philippe Normand
9ab8dee59c
gstreamer-editing-services: Add bindings for FrameCompositionMeta
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1348 >
2023-11-16 20:53:08 +02:00
Philippe Normand
6371b82c48
gst-gir-files: Update submodule for GES FrameCompositionMeta
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1348 >
2023-11-16 19:47:58 +02:00
Bilal Elmoussaoui
9617731206
ci/docs: Add missing cfg docsrs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1350 >
2023-11-16 17:29:36 +00:00
Sebastian Dröge
53f1ab938e
ci: Update to Rust 1.74
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1349 >
2023-11-16 16:42:08 +02:00
Sebastian Dröge
6cb371d3e5
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1347 >
2023-11-15 17:17:52 +02:00
Sebastian Dröge
1946973c25
Update to itertool 0.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1347 >
2023-11-15 16:53:20 +02:00
Sebastian Dröge
c4413f1db7
examples: play: Set message bus to flushing before dropping the Play
reference
...
Otherwise there might be pending messages on the bus that keep a
reference to the `Play` instance alive, and neither the bus nor the
`Play` are ever going to be freed then.
See also https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/489
and https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3107 .
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/493
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1346 >
2023-11-14 09:36:58 +02:00
Sebastian Dröge
3ac254d34c
gstreamer: pad: Remove "caps" property getter
...
Only only leave the notify signal connection function. The property
getter is the same as `current_caps()`, which is more lightweight.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1345 >
2023-11-11 19:21:20 +02:00
Sebastian Dröge
30d8a7893b
Update CHANGELOG.md for 0.21.2
2023-11-11 15:57:11 +02:00
Sebastian Dröge
4c6bb9eefa
allocators: Ignore init_once()
function correctly
2023-11-11 11:43:17 +02:00
Sebastian Dröge
39b472ce8b
gl: Update serde serialization tests for new flags/enum variants
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 17:19:20 +02:00
Sebastian Dröge
9bc2a3dbf5
ci: Update image version for rebuild
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 16:51:05 +02:00
Sebastian Dröge
9419730ea4
video: Add VIDEO_FORMATS_ANY
and iterator over the formats
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 16:51:05 +02:00
Sebastian Dröge
ec3a3610d3
allocator: Generate new ShmAllocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 16:51:05 +02:00
Sebastian Dröge
6403d3c0ee
Regenerate with latest gir
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 16:51:04 +02:00
Sebastian Dröge
b8fff2d6fc
Update some Gir.toml configuration
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 16:50:55 +02:00
Sebastian Dröge
7cabb4f22c
Update GStreamer gir files
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1343 >
2023-11-10 16:50:43 +02:00
Marijn Suijten
bf568714b6
examples/glupload: Upgrade to glutin 0.31
...
Glutin completely detached from `winit` in the `0.30` upgrade, concerning
itself exclusively with OpenGL and WSI APIs around it and leaving any
windowing system interop to the `raw-window-handle` crate specifically
designed for this purpose.
This untanglement massively cleans up and simplifies the `glutin`
codebase, and expands on surfaceless rendering as well as drawing to
simple views (textures) on the screen as is common on Android, without
having control over the entire "window" and event loop.
Some winit boilerplate is however still provided as part of the
`glutin-winit` crate. Most of the `glutin`+`winit` flow in this
`glupload` example is adopted from `glutin`'s example, following
platform-specific initialization sequences that heavily clutter the code
(only creating a window upfront on Windows, only forcing transparency on
macOS, and trying various fallback attributes to create a context).
At the same time `winit`'s `Event::Resumed` and `Event::Suspended`
event strategy is adopted: this event was previously for Android and
iOS exclusively - where window handles come and go at the merit of
the OS, rather than existing for the lifetime of the application -
but is now emitted on all platforms for consistency. A `Surface` (via
`RawWindowHandle`) is only available and usable after `Event::Resumed`,
where we can create a GL surface and "current" the context on that
surface for rendering. This is where the `GstPipeline` will be set
to `Playing` so that data starts flowing. The inverse should happen in
`Event::Suspended` where the `Surface` has to be given up again after
un-currenting, before giving control back to the OS to free the rest of
the resources. This will however be implemented when Android is brought
online for these examples.
Finally, now that the `gst-gl-egl` and `gst-gl-x11` features turn on
the relevant features in `glutin` and `winit`, it is now possible to
easily test `x11` on Wayland (over XWayland) without even unsetting
`WAYLAND_DISPLAY`, by simply compiling the whole stack without EGL/
Wayland support (on the previous example `winit` would always default to
a Wayland handle, while `glupload` could only create `GstGLDisplayX11`).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1336 >
2023-11-10 15:47:20 +02:00
Marijn Suijten
73180e530b
examples/glupload: Pass actual program
handle to glGetProgramiv()
...
This is what you get with an untyped API. `glGetError()` further down
the line was returning `GL_INVALID_OPERATION` and failing other calls
after `load()` in the `glutin 0.31` upgrade. This turns out to be
[returned by `glGetProgramiv`] when the `program` that is passed in
does not refer to a program object. Which was the case here, where the
fragment shader identifier was passed in instead.
Just in case we insert a few extra asserts that check the result of
`glGetError()` to catch such issues earlier on in the chain, instead of
postponing them and falsely accusing code that runs later.
[returned by `glGetProgramiv`]: https://registry.khronos.org/OpenGL-Refpages/es2.0/xhtml/glGetProgramiv.xml#errors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1336 >
2023-11-10 12:57:16 +01:00