gstreamer-rs merge requestshttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests2024-03-27T11:09:41Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1415WIP: ci: Create clippy codequality report2024-03-27T11:09:41ZJordan PetridіsWIP: ci: Create clippy codequality reportClose #508Close #508https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1296Draft: gst-inspect (enhanced output)2023-12-10T18:33:54ZFabián OrccónDraft: gst-inspect (enhanced output)I was working in a separate repository before: https://github.com/cfoch/gst-inspect-rs but now I have decided to move all the commits to `gstreamer-rs`.
Example:
```
$ ./target/debug/gstreamer-inspect --help # help
$ ./target/debug/gs...I was working in a separate repository before: https://github.com/cfoch/gst-inspect-rs but now I have decided to move all the commits to `gstreamer-rs`.
Example:
```
$ ./target/debug/gstreamer-inspect --help # help
$ ./target/debug/gstreamer-inspect # List all plugins
$ ./target/debug/gstreamer-inspect videotestsrc # Inspect videotestsrc element
```
The output is identical to gst-inspect
![image](/uploads/38b75cf0600bce9bf7a1c1c55c0b19d6/image.png)
![image](/uploads/d4e92b1a1b414c07566490469c05110c/image.png)
The output of this proposed MR is more complete than the MR proposed in https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/242 but lacks of paging.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1289gst: Add getting for mini object type names2023-07-04T12:52:53ZThibault Sauniertsaunier@igalia.comgst: Add getting for mini object type namesThibault Sauniertsaunier@igalia.comThibault Sauniertsaunier@igalia.comhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1265validate: Bind the gst_validate_get_action_type() function and make it possib...2023-06-09T11:39:27ZThibault Sauniertsaunier@igalia.comvalidate: Bind the gst_validate_get_action_type() function and make it possible to implement Async action typesThibault Sauniertsaunier@igalia.comThibault Sauniertsaunier@igalia.comhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1243Draft: gstreamer-audio: Add GstAudioConverter API2023-10-31T13:30:49ZAbdul RehmanDraft: gstreamer-audio: Add GstAudioConverter APIhttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1133Draft: Use `imp Into<Option<_>>` in argument position as much as possible2022-10-21T09:31:16ZFrançois LaignelDraft: Use `imp Into<Option<_>>` in argument position as much as possibleThis allows users to call the corresponding functions without the
need to embed the argument in `Some(_)`.
I applied this approach to manual code and I moved `Bin::new`
and `Pipeline::new` to manual code to implement it too there.
Many ...This allows users to call the corresponding functions without the
need to embed the argument in `Some(_)`.
I applied this approach to manual code and I moved `Bin::new`
and `Pipeline::new` to manual code to implement it too there.
Many `auto` functions could take advantage of this but that would
require a `gir` evolution. We could probably apply this to
`App{Sink,Src}::set_caps` manually though.
See the result in the `examples` and in this (WIP) `gst-plugins-rs` branch: https://gitlab.freedesktop.org/fengalin/gst-plugins-rs/-/tree/nullability-into-option-args
When the user wants to pass `None`, most of the time, the compiler
is able to infer the type:
```rust
let buf = pool.acquire_buffer(None).unwrap();
```
However, when the function uses a `trait` bound for the optional
argument type, user must disambiguate the type. Ex.:
```rust
alloc_query.add_allocation_pool::<gst::BufferPool>(None, 1024, 1, 4);
```
For most types, the `NONE` constant is also available:
```rust
alloc_query.add_allocation_pool(gst::BufferPool::NONE, 1024, 1, 4);
```https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1111Add rtsp record encrypted example2022-10-03T07:59:52ZJoão AlvesAdd rtsp record encrypted exampleThis MR adds an encrypted RTSP server in record mode example, and a corresponding client.This MR adds an encrypted RTSP server in record mode example, and a corresponding client.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/938gstreamer-gl/wayland: make GLDisplayWayland::with_display safe2022-01-26T09:13:38ZJordan Petridіsgstreamer-gl/wayland: make GLDisplayWayland::with_display safehttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/802appsink: Only return `Ready(None)` after true EOS in `AppSinkStream`2023-05-25T10:19:35ZAustin Bonanderappsink: Only return `Ready(None)` after true EOS in `AppSinkStream`closes #346
cc @slomocloses #346
cc @slomohttps://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/738Draft: Introduce the GL integration crate2021-05-28T09:32:41ZMarijn SuijtenDraft: Introduce the GL integration crateIntroduce the GL integration crate: a crate that retrieves `gst_gl::GLContext` and `gst_gl::GLDisplay` from "common" sources in the Rust ecosystem: a `RawWindowHandle`, and as bonus also from `glutin::WindowedContext`.
This substitutes ...Introduce the GL integration crate: a crate that retrieves `gst_gl::GLContext` and `gst_gl::GLDisplay` from "common" sources in the Rust ecosystem: a `RawWindowHandle`, and as bonus also from `glutin::WindowedContext`.
This substitutes the matching logic that was originally in the `glupload` example to be expandable and reusable by other crates, similar to how the [`ash-window`](https://crates.io/crates/ash-window) crate exists for [`ash`](https://crates.io/crates/ash) (turns `RawWindowHandle`s into Vulkan `Surface`).
Since a `GLDisplay` acquired from a `RawWindowHandle` is only half the info we need and has an incomplete implementation currently (no support for Android or Windows), a second function retrieves `GLContext` from `glutin` together with display fallbacks for `EGL`-based windows.
Most interesting is probably to find a public crate or two using these bindings, and see if we can migrate them over to this crate as a final review of the API and versatility. At the same time they might support more platforms too. So far `crates.io` shows only a single crate, supporting `Wgl` and `Glx`: https://github.com/marek-g/rust-media/blob/master/media_gstreamer/src/pipeline_factory.rs.
### Remaining tasks
- [ ] `TODO` comments in code;
- [x] Deal with `Wgl` handles to support Windows;
- [ ] `XCB` constructor in gstreamer-base (backported, or with a fallback written in pure Rust);
- [ ] Returning `Result`/`Option` instead of panicking;
- [ ] Move code out of `cfg_if` to:
- Have `rustfmt` work on the contents;
- Get rid of some unexpected clippy warnings related to `use` items after statements (despite supposedly sitting at the top of a `#[cfg]` block - and `#[allow]` not being allowed inside the `cfg_if` block either);
- Reduce indentation and make it more readable overall;
- [ ] Documentation, readme, etc.https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/735Draft: gstreamer: Use Pin<&mut T> for references to FFI types2021-04-10T14:43:16ZSebastian DrögeDraft: gstreamer: Use Pin<&mut T> for references to FFI typesSee https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/324See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/324https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/304examples: Add a cocoa video overlay sample app2019-07-21T18:24:36ZPhilippe Normandexamples: Add a cocoa video overlay sample appThis example demonstrates how to embed a video sink in a native macOS Cocoa
application.This example demonstrates how to embed a video sink in a native macOS Cocoa
application.