Commit graph

3346 commits

Author SHA1 Message Date
François Laignel
08723d37a8 gst: anticipate GQuark to GstIdStr lifetime changes
GStreamer fixes a memory leak due to GQuarks by switching to GstIdStr.
The consequence is that strings previously backed by a GQuark returned by a
function will now get their lifetime bound to that of its owner, while the
GQuark version ensured static lifetime.

Because some functions return a string with the assumption that they are static
and because we can't alter the API for existing versions of the bindings, this
MR temporarily forces affected strings as GQuarks, thus gaining static lifetime
regardless of the GStreamer version actually being used.

For newer versions of the bindings, the API will be fixed and GQuarks will be
removed in favor a leakless solution.

See: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1525>
2024-09-11 16:25:18 +02:00
François Laignel
cf9151a9b3 tags: fix index() lifetime bind
The signature for `TagListRef::index` didn't bind the lifetime of the returned
`TagValue` to `&self`. This causes the following code to compile:

```rust
 1 let title = {
 2     let mut tags = TagList::new();
 3     {
 4         let tags = tags.get_mut().unwrap();
 5         tags.add::<Title>(&"some title", TagMergeMode::Append);
 6     }
 7
 8     let title = tags.index::<Title>(0).unwrap();
 9     assert_eq!(title.get(), "some title");
10
11     title
12 };
13
14 assert_eq!(title.get(), "some title");
```

... but it panics at runtime on the last `title.get()`:

```
Invalid tag type: WrongValueType(ValueTypeMismatchError
    { actual: <invalid>, requested: gchararray })
```

Indeed, the `title` `TagValue` is freed with the `tags` on line 12.

This commit fixes the function signature so the returned `TagValue` can't
outlive its `TagListRef`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1525>
2024-09-11 16:25:18 +02:00
Sebastian Dröge
37edd497cc Update CHANGELOG.md for 0.20.7 2023-07-05 12:21:59 +03:00
Sebastian Dröge
9e8fee59c4 Update Cargo.lock 2023-07-05 12:18:03 +03:00
Sebastian Dröge
7de3cef890 Update versions to 0.20.7 2023-07-05 12:17:47 +03:00
Sebastian Dröge
2c65a5a86a Update dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:36:44 +03:00
Sebastian Dröge
0f2c850785 gstreamer: Move various MetaAPI methods to an extension trait
These don't make sense to implement any different than the default.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:36:44 +03:00
Sebastian Dröge
d77f983b02 basetransform: Don't leak any output buffer if prepare_output_buffer fails
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:36:44 +03:00
Sebastian Dröge
38420c7aab basetransform: Fix memory leak when dropping buffers from the transform function
Also add a basic test for a basetransform subclass.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/472

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:36:44 +03:00
Li Yuanheng
cbe627fe8b appsink: property should use hyphen not underscore
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:32:45 +03:00
Thibault Saunier
b9a9464301 ges: Mark asset APIs as Send+sync
Those objects are MT. safe

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:32:38 +03:00
Thibault Saunier
559720693d ges: Allow subclassing GESFormatter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:32:00 +03:00
Sebastian Dröge
9b2a0f55c7 examples: Reduce dependencies of the thumbnail example
Instead of depending on libraries for every possible image format,
depend only on the JPEG and PNG libraries.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:31:23 +03:00
Sebastian Dröge
d05ebfaf45 Update to cocoa 0.25
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:31:17 +03:00
Sebastian Dröge
5cf82ac910 Update to itertools 0.11
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:31:08 +03:00
Guillaume Desmottes
5b0f29003f pbutils: implement debug() method on DiscovererInfo related structs
The default Debug implementation is not very useful but unfortunately
cannot be overridden.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:30:33 +03:00
Sebastian Dröge
3c921f9320 examples: Update to memmap2 0.7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1290>
2023-07-05 11:30:16 +03:00
Sebastian Dröge
f17ef98d4a Update Cargo.lock 2023-06-06 17:15:41 +03:00
Sebastian Dröge
d703cbcea6 Update CHANGELOG.md for 0.20.6 2023-06-06 17:13:05 +03:00
Sebastian Dröge
3eacb10d43 Update versions to 0.20.6 2023-06-06 17:10:21 +03:00
Sebastian Dröge
1792f72a14 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 14:33:44 +03:00
Sebastian Dröge
af77bd0b6a pbutils: Move DiscovererStreamInfo iterators to an extension trait
This way it can also be called directly on subclasses.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 14:33:44 +03:00
Sebastian Dröge
24a00b9929 pbutils: Manually implement DiscovererStreamInfo::stream_id()
It can return `NULL` in some cases. The next release will use an
`Option` but to keep backwards compatibility here, `NULL` is mapped to
the empty string for now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 14:33:44 +03:00
Daniel Pendse
545781d241 rtsp-server: Add RTSPContext uri getter
Add uri getter from RTSPContext

Fix #469

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 14:03:42 +03:00
Sebastian Dröge
011d3535bc gstreamer: Only retrieve the debug category once per log call
Each retrieval would go through the one-time-initialization check, i.e.
yet another branch, so let's avoid that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 13:56:25 +03:00
Sebastian Dröge
0d45fa3f07 gstreamer: Remove unnecessary clone() in debug logging macros
The macro called from them is already doing the `clone()` itself.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 13:56:19 +03:00
Sebastian Dröge
a7517cd27b gstreamer: Use temporary GStr for the debug category constructors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 13:56:10 +03:00
Sebastian Dröge
670d8ceec6 gstreamer: Mark DebugCategory as repr(transparent)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 13:56:02 +03:00
Sebastian Dröge
b0d6cab254 examples: Update to memmap2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1274>
2023-06-06 13:55:50 +03:00
Sebastian Dröge
371713a506 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1261>
2023-05-10 11:49:35 +03:00
Sebastian Dröge
a01a0f2e37 gstreamer: Get function name for logging outside the internal closure
Otherwise the function name will include the name of the closure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1261>
2023-05-10 11:49:16 +03:00
Sebastian Dröge
50ec192285 Update Cargo.lock 2023-04-22 11:52:30 +03:00
Sebastian Dröge
022a340742 Update versions to 0.20.5 2023-04-22 11:49:53 +03:00
Sebastian Dröge
42ec126d56 Update CHANGELOG.md for 0.20.5 2023-04-22 11:49:23 +03:00
Guillaume Desmottes
ff488987fa gstreamer: fix unused import in test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1252>
2023-04-21 12:19:48 +03:00
Sebastian Dröge
97d55cdacb Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1252>
2023-04-21 12:08:48 +03:00
Sebastian Dröge
b611f9702c Fix a couple of new Rust 1.69 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1252>
2023-04-21 12:07:26 +03:00
Thibault Saunier
8d478c3fc9 miniobject: Implement the HasParamSpec trait in the macro
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1252>
2023-04-21 12:07:21 +03:00
Bilal Elmoussaoui
4a60c71c84 gst-player: Implement Default for Player
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1252>
2023-04-21 12:07:12 +03:00
Sebastian Dröge
3481f3b6c0 Update Cargo.lock 2023-04-07 13:06:40 +03:00
Sebastian Dröge
6fb1714114 Update versions to 0.20.4 2023-04-07 13:03:23 +03:00
Sebastian Dröge
78ded9ad88 Update CHANGELOG.md for 0.20.4 2023-04-07 13:02:41 +03:00
Sebastian Dröge
b72533d926 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 12:02:13 +03:00
Sebastian Dröge
e9644fb733 examples: Update to windows 0.48
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 12:02:13 +03:00
Sebastian Dröge
7d9b7fdaf7 examples: Update to windows 0.47
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 12:02:13 +03:00
Sebastian Dröge
43f29e361e examples: Update to windows 0.46
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 12:02:13 +03:00
Sebastian Dröge
a929123d4d deny: Update for older versions of the windows bindings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 12:02:01 +03:00
Sebastian Dröge
1d9d4cc346 deny: Update to allow multiple versions of syn for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 12:02:01 +03:00
Sebastian Dröge
64bc1f7625 webrtc: Work around WebRTCICE::add_candidate() API breakage in 1.24
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 11:55:10 +03:00
Sebastian Dröge
87a70b16ba audio: Don't store a copy of the AudioInfo in AudioFrame
Instead just reference the one inside the FFI struct directly by making
sure that the memory representation of the FFI and Rust type are the
same.

This reduces the size of `AudioFrame` by about half.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1245>
2023-04-07 11:52:08 +03:00