Sebastian Dröge
52764e140e
gtk4: Don't try to use GL mapped video frames as raw RGB memory
...
This will fail badly because the memory pointers are actually GL texture
IDs, however this case can't really happen in practice so simply assert
on this.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1024 >
2022-12-22 22:56:48 +00:00
Sebastian Dröge
30e501e7b0
gtk4: Don't error out when the main context channel does not exist anymore when rendering
...
But instead return flushing to shut down silently.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1024 >
2022-12-22 22:56:48 +00:00
Sebastian Dröge
0c8e69ed7c
gtk4: Flush frames from the paintable when shutting down the sink
...
Otherwise it will continue showing the last frames forever and keep
around the frames forever instead of rendering black.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/281
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1024 >
2022-12-22 22:56:48 +00:00
Johan Bjäreholt
71c268da14
fmp4mux: Only push fragment_offset if write_mfra is true
...
This is done so that the fragment_offset vector does not infinitely
build up when write_mfra is disabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1023 >
2022-12-22 10:31:27 +01:00
Nirbheek Chauhan
6607a63159
meson: Disable webp plugin on Windows and macOS
...
Known to be broken, should be kept disabled till the fix is in
a release: https://github.com/qnighy/libwebp-sys2-rs/pull/13
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1021 >
2022-12-19 11:21:57 +00:00
Nirbheek Chauhan
639997d67f
meson: Handle windows path separator correctly
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1021 >
2022-12-19 11:21:57 +00:00
Nirbheek Chauhan
0530b324c1
cargo_wrapper: Handle windows paths for depfiles
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1021 >
2022-12-19 11:21:57 +00:00
Sebastian Dröge
cb45ef2c03
deny: Update
2022-12-19 09:54:50 +02:00
Sebastian Dröge
4e444a066c
aws: Update to AWS SDK 0.52/0.22
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1020 >
2022-12-18 07:54:30 +00:00
Nirbheek Chauhan
a507f24694
meson: Fix pkgconfig detection when specified in machine file
...
When pkgconfig and pkg_config_path are specified in the machine file,
we need to parse those and pass them on to the cargo_wrapper.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1018 >
2022-12-18 04:56:46 +00:00
Nirbheek Chauhan
985e3e85d6
meson: Do not serialize env, use env: kwarg
...
This is simpler, and more correct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1018 >
2022-12-18 04:56:46 +00:00
Sebastian Dröge
620ba6e185
livesync: Fix version
2022-12-16 18:53:37 +02:00
Sebastian Dröge
13b6f8fad4
fmp4mux: Skip gap buffers earlier to consider them for the sample durations and fragment start durations
...
Otherwise dropping the gap buffers would offset the timestamps of
following samples.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1016 >
2022-12-16 17:43:44 +02:00
Sebastian Dröge
e344585d99
mp4mux: Adjust durations and possibly stream start time on encountering a gap buffer
...
If there was a previous sample in this stream then its duration needs to
be extended by the gap position, and if there was none then the start
time of the whole stream has to be shifted by the duration.
Not doing so causes timestamps to be offset wrongly by the duration of
the gap.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1015 >
2022-12-16 13:24:21 +02:00
Sebastian Dröge
9307acf7fa
mp4mux: Fix edit list shift for streams with initial DTS smaller earliest PTS but initial DTS positive
...
This would be a stream where the initial DTS is negative if the initial
PTS was zero, but it is offset so the initial DTS became positive now.
The edit list shift has to happen exactly the same way though.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1014 >
2022-12-15 18:52:47 +02:00
Sebastian Dröge
ed429d570e
mp4mux: Don't write gap edit lists if their duration would be zero
...
The track might start later than the earliest track by less than one
timescale units, in which case writing an empty gap edit list would be
useless and confusing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1014 >
2022-12-15 18:45:19 +02:00
Sebastian Dröge
f8024f072f
mp4mux: Don't write empty chunks at the end if the last buffer of a stream started a new chunk and happened to be a from a gap event
...
Empty chunks are not valid in MP4.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1014 >
2022-12-15 17:44:03 +02:00
Jan Alexander Steffens (heftig)
42385c81be
Add livesync plugin
...
It attempts to produce a (nearly) gapless live stream by synchronizing
its output to the running time and forwarding the next input buffer if
its start is (nearly) flush with the end of the last output buffer.
If the input buffer is missing or too far in the future, it duplicates
the last output buffer with adjusted timestamps. If it is operating on a
raw audio stream, it will fill duplicate buffers with silence.
If an input buffer arrives too late, it is thrown away. If the last
input buffer was accepted too long ago (according to `late-threshold`),
a late input buffer is accepted anyway, but immediately considered a
duplicate. Due to the silence-filling, this has no effect on audio, but
video gets a "slideshow" effect instead of freezing completely.
The "many-repeats" property will be notified when this element has
recently duplicated a lot of buffers or recovered from such a state.
Co-authored-by: Vivia Nikolaidou <vivia@ahiru.eu>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/708 >
2022-12-14 18:51:36 +02:00
Arun Raghavan
473e7d951b
audiofx: Derive from AudioFilter where possible
...
Saves a little bit of code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1013 >
2022-12-14 10:35:28 -05:00
Michiel Konstapel
3a8536b45e
audiornnoise: Add debug output for voice activity to help you choose a threshold
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1010 >
2022-12-14 10:00:28 +00:00
Mathieu Duponchelle
e5360ff431
webrtc/README: update command to run the signalling server
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/277
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1012 >
2022-12-13 12:47:26 +01:00
Sebastian Dröge
3f904553ea
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1011 >
2022-12-13 11:43:16 +02:00
Sebastian Dröge
289e8a08c3
webrtchttp: Remove unnecessary clippy warning override
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1009 >
2022-12-12 14:32:12 +02:00
Sebastian Dröge
65efdc8c81
gtk4: Only require GTK 4.6 if GL support is enabled
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1007 >
2022-12-12 13:49:14 +02:00
Michiel Konstapel
54741b7cc4
audiornnoise: add voice detection threshold
...
Add a property "voice-activity-threshold". Frames where the voice
detection score from the RNN is below the threshold will be completely
muted.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1004 >
2022-12-12 11:55:38 +02:00
Sebastian Dröge
a077ecba85
gtk4: Deactivate application GL context again after fill_info()
...
It does not need to be activate anymore, and keeping it active can cause
problems.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1001 >
2022-12-12 10:51:15 +02:00
Jordan Petridis
37b0dab0e8
gtk4: Deactivate the context if we fail to fill_info
...
Avoid leaving the context activated if we end up erroring out.
Similar to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3492
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1001 >
2022-12-12 10:51:09 +02:00
Guillaume Desmottes
d9de2d3d7b
textahead: add settings to display previous buffers
...
I'll use this in Karapulse to keep displaying the few previous lyrics
rather than having them disappear right away.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1006 >
2022-12-12 08:31:57 +01:00
Sebastian Dröge
fb42cd8a0f
net: Update to async-tungstenite 0.19
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1005 >
2022-12-11 12:54:24 +02:00
Sebastian Dröge
1ffadbc270
audiorrnoise: Use correct value range for the samples
...
The nnnoiseless crate wants all samples in the range [-32767,32767]
instead of the [-1,1] range we're using for floating point samples.
Scale before/after processing while (de)interleaving the samples.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/276
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1003 >
2022-12-10 21:03:28 +02:00
Sebastian Dröge
08c716d110
tttocea608: Don't fail if a gap event contains no duration
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1002 >
2022-12-07 14:04:54 +00:00
Sebastian Dröge
99a1e30ab0
webrtchttp: Fix documentation JSON
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:47:04 +02:00
Sebastian Dröge
9b964db4c9
whipsink: Handle offer creation errors more gracefully
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:15:55 +02:00
Sebastian Dröge
8452cd9efa
webrtchttp: Fix missing import for docs build
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:10:53 +02:00
Sebastian Dröge
9c31344bbc
webrtchttp: Don't use let-else for now
...
We still support Rust 1.63.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:08:57 +02:00
Sebastian Dröge
5dc52975ff
webrtchttp: Fix formatting
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:07:09 +02:00
Sanchayan Maity
40680a47ab
webrtchttp: Use tokio runtime for spawning thread used for candidate offer
...
While at it, we had a bug in whepsrc where for redirect we were
incorrectly calling initial_post_request instead of do_post. Fix
that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:27:07 +05:30
Sanchayan Maity
d18761892e
webrtchttp: Use a proper Rust type name for ICE transport policy
...
We don't need to namespace here but can just use the Rust namespaces.
Only the GType name has to stay like it is.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
2eba3b321e
webrtchttp: Do not import element_imp_error
...
element_imp_error and such macros should not be imported but rather
only be accessed via gst namespace.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
0b1b8b91b9
webrtchttp: Do not block webrtcbin signal handlers for sending candidates
...
While at it, drop the OPTIONS request in WHIP sink. This was not really
required. See section 4.4 of the spec
https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html#name-stun-turn-server-configurat
Also introduce a new error type and distinguish between a future being
aborted or returning an error.
We call abort only during shutdown and hence except for the DELETE
resource request being aborted, other waits on future should not
be fatal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Alba Mendez
db39370701
webrtchttp: whipsink: construct TURN URL correctly
...
Right now the code manually pieces together the components
in a String for efficiency. When credentials contain special
characters this can result in invalid URLs, so do it the proper
way (with Url::parse + format) to make sure components are escaped
as needed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
9fb058d5bc
webrtchttp: Drop unused dependencies
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
b5daa92c9d
webrtchttp: Implement timeout for waiting on futures
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
cc7419308b
webrtchttp: whipsink: Add candidates when sending the offer
...
WHIP endpoint providers like Cloudflare do not support Trickle ICE
and need candidates to be send along with the initial offer. Instead
of sending the offer in create-offer promise, send it once the ICE
candidates have been gathered.
While at it add properties to set STUN and TURN server along with the
ICE transport policy as at least when testing the Cloudflare WHIP
endpoint seems unreachable without it. This has also been observed
with Cloudflare provided demos.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
b992596236
webrtchttp: whipsink: Miscellaneous clean up
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
b427cb6a3d
webrtchttp: Factor out the common bits for WHIP and WHEP
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
6be5796888
Add a WebRTC WHEP source element
...
This implements WHEP specification based on
https://datatracker.ietf.org/doc/html/draft-murillo-whep-00
and has been tested with Cloudflare.
Server offers are likely to be removed from the WHEP specification
in upcoming revisions, to avoid compatibility issues. None of the
commercial services implementing WHEP support server initiated offers.
So we only support client side initiated offers.
Follows session setup and tear down as covered in Figure 1, Section 3
of the specification.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sebastian Dröge
3172bcd095
fmp4mux: Crank clock for the first fragment in more tests
...
Due to how aggregator works, it depends on how buffers are pulled
whether aggregate() is called again or it is waiting for a timeout or EOS:
works:
- pad 1: 4 buffers, pad 2: 4 buffers
- aggregate ready: take all 4/4 buffers
- pad 1: 1 buffers, pad 2: 1 buffer
- aggregate ready: take all 1/1 buffers
waits:
- pad 1: 5 buffers, pad 2: 4 buffers
- aggregate ready: take all 5/4 buffers
- pad 1: 0 buffers, pad 2: 1 buffer
- aggregate not ready: waiting for timeout or EOS
Also don't manually set the clock time as that's unnecessary.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/274
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/998 >
2022-12-03 18:21:19 +00:00
Sebastian Dröge
e6fa7c0b2b
ci: Disable gst-build job for now
...
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/262
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/998 >
2022-12-03 18:21:19 +00:00
Raphael Dürscheid
aa2abc50bf
webrtcsink: Support nvv4l2vp9enc
...
Naive support for nvv4l2vp9enc by assuming configuration is equivalent
to existing nvv4l2vp8enc. Validated to have relevant properties.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/983 >
2022-12-02 10:18:27 +00:00