Commit graph

3519 commits

Author SHA1 Message Date
Matthew Waters
70c6fb6228 cea708overlay: enable a black background by default
It is the recommended colour sceheme in CEA-608.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:45 +11:00
Matthew Waters
1e04c11eb6 cea708overlay: produce a slightly more CEA-608 layout
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:42 +11:00
Matthew Waters
9a614f68f8 tttocea708: log the bytes and times generated
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:40 +11:00
Matthew Waters
56afb23f75 tttocea708: don't incorrectly recode timestamp to frame conversion on gap events
Simply use the already existing generate() which will convert from a timestamp
and duration into frames for processing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:38 +11:00
Matthew Waters
897352fa91 cea708mux: handle different timestamped inputs
If different inputs have different framerates, then an input buffer may need
to be combined or split.  Account for that in the aggregate loop.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:35 +11:00
Matthew Waters
237460598f cea708mux: output padding by default
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:33 +11:00
Matthew Waters
54d9ffac7c tttocea708: output CEA-X08 padding by default
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:31 +11:00
Matthew Waters
f22b738c5a cea708mux: forward CEA-608 data correctly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1976>
2024-12-11 22:57:29 +11:00
Taruntej Kanakamalla
6cf39d4a00 webrtc: use the nick to set enum type properties on openh264enc
The properties `rate-control` and `complexity` are of enum types and passing
a gint value is resulting in a panic. So pass the corresponding nick of the enum
value instead

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1971>
2024-12-05 17:17:51 +00:00
Guillaume Desmottes
625eeccf25 webrtc: janus: handle slowlink event
Fix this warning:

webrtc-janusvr-signaller imp.rs:426:gstrswebrtc::janusvr_signaller:👿:Signaller::handle_msg:<GstJanusVRWebRTCSignallerU64@0x7f317009b4d0> Unknown message from server: {
   "janus": "slowlink",
   "session_id": 980554280060589,
   "sender": 5867141593320621,
   "mid": "video0",
   "media": "video",
   "uplink": false,
   "lost": 15
}

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1967>
2024-12-04 13:05:26 +00:00
Guillaume Desmottes
8434126a58 webrtc: janus: handle slow_link videoroom event
Fix this warning:

webrtc-janusvr-signaller imp.rs:426:gstrswebrtc::janusvr_signaller:👿:Signaller::handle_msg:<GstJanusVRWebRTCSignallerU64@0x7f317009b4d0> Unknown message from server: {
   "janus": "event",
   "session_id": 980554280060589,
   "sender": 5867141593320621,
   "plugindata": {
      "plugin": "janus.plugin.videoroom",
      "data": {
         "videoroom": "slow_link",
         "current-bitrate": 0
      }
   }
}

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1967>
2024-12-04 13:05:26 +00:00
Edward Hervey
7aa1450b3a gitlab-ci: Don't use massive image for cerbero trigger
Just use a lightweight alpine:latest image

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1960>
2024-12-02 18:07:53 +00:00
Mathieu Duponchelle
f8178fbd21 webrtscink: fix deadlock when answering
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/637
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1959>
2024-12-02 16:49:18 +00:00
Guillaume Desmottes
9ea8b6e3f3 togglerecord: release rec_state before pushing buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1962>
2024-12-02 10:57:04 +00:00
Guillaume Desmottes
de0178ddca togglerecord: move the next pad id to its own variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1958>
2024-12-02 07:54:23 +00:00
Guillaume Desmottes
7e92f973ad togglerecord: stop copying settings
It's racy as the settings values can be changed between the copy and
reading them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1958>
2024-12-02 07:54:23 +00:00
Guillaume Desmottes
5024be9f2e togglerecord: define total order on mutexes
I'm tracking a bug which may or may not be related to a deadlock in
togglerecord.

I audited the code and figured we could define a total order on the
mutexes with just a few changes.
I don't know yet if that will help with my bug but it can't hurt to have
a order properly documented with so many mutexes involved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1958>
2024-12-02 07:54:23 +00:00
Guillaume Desmottes
8b798fb2ac togglerecord: move pads and other_streams to State
Allow us to remove two mutexes, making dead locks easier to debug.

Also now use the State lock with `main_stream_cond` as we want to use
the higher order mutex in order to prevent dead locks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1958>
2024-12-02 07:54:23 +00:00
Guillaume Desmottes
571db6caaf togglerecord: implement Debug on Stream and StreamState
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1958>
2024-12-02 07:54:23 +00:00
Guillaume Desmottes
ea91c5e47a togglerecord: document mutexes hold when calling ToggleRecord methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1958>
2024-12-02 07:54:23 +00:00
Ruben Gonzalez
0821c39640 webrtcsink: add openh264enc support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1957>
2024-11-29 23:08:45 +00:00
L. E. Segovia
a263f503c8 version-helper: Add script for setting the release date in Cargo.toml
See #599

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1953>
2024-11-29 14:15:35 +00:00
Sebastian Dröge
3cccede612 webrtcsink: Set caps-change-mode=delayed on encoder capsfilter
Otherwise when changing the target caps (e.g. for reducing quality)
there is a race condition between buffers between the converter elements
and renegotiation.

For example, videoconvertscale might've output a 1920x1080 buffer, then
the capsfilter is configured to 1280x720, the buffer arrives in
videorate, videorate notices that renegotiation is pending, tries to
renegotiate and ends up with EMPTY caps because it can only change the
framerate but not the resolution.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1951>
2024-11-29 12:39:20 +00:00
Edward Hervey
37d5a2495d tttocea708: Fix off-by-one issue
last_frame_no is used to eventually calculate the outgoing pts. We want to
increment it *after* having created the content

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1952>
2024-11-29 10:49:37 +00:00
Edward Hervey
c3a3f5ccdd meson: Fix document of dependencies.py argument
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1944>
2024-11-28 13:40:50 +00:00
Edward Hervey
2af278fda2 meson: Detect unrelease gstreamer version number
If the minor version is odd, it means we are depending on gstreamer main and
should therefore enable the features of the (upcoming) even minor version

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1944>
2024-11-28 13:40:50 +00:00
Matthew Waters
0537734aee webrtcsink: don't block the tokio runtime while holding state lock in unprepare()
It is possible that in unprepare(), waiting for a task to complete while
holding the state lock, that task may be waiting to acquire the state lock and
result in a deadlock.

This is quick to reproduce when starting and stopping webrtcsink in very quick
succession.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1932>
2024-11-28 16:44:05 +11:00
Xavier Claessens
52f48d7279 webrtcsink: Ignore more fields in caps change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1940>
2024-11-27 12:18:33 +00:00
Sebastian Dröge
d032c52ff5 mpegtslivesrc: Fix mismatch between internal / external time usage
Previously the internal time was stored as base offset for calculating
the external time from the PCR, which resulted in disconts being
detected wrongly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1934>
2024-11-21 12:55:36 +00:00
Sebastian Dröge
5fe4d948bf mpegtslivesrc: Rename variables to make it clear which time domain they refer to
We have the internal time domain (monotonic clock) and the external time
domain (scaled monotonic clock in the rate of the PCR).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1934>
2024-11-21 12:55:36 +00:00
Jordan Petridis
d9fb91e56d cargo: Default to thin lto for the release profile
Normal "fat" lto is quite resource heavy and requires
a lot of ram at compile time. Thinlto is a
much lighter alternative that produces comparable results
performance but it scales much better. [1] [2] [3]

All browser engines also compile with thinlto exclusively,
as it's almost as fast and saves considerable amount of
link time in the build.

[1]: https://doc.rust-lang.org/cargo/reference/profiles.html#lto
[2]: https://clang.llvm.org/docs/ThinLTO.html
[3]: https://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html

In a test build on a windows machine, this brings down
the from scratch compile time from 7m30s to roughly 5m.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1923>
2024-11-18 16:37:33 +00:00
Marc Wiblishauser
a736b17d8e gtk4: add gtk::gdk use declaration for feature dmabuf
Fixes gstreamer/gst-plugins-rs#626

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1913>
2024-11-11 12:58:57 +01:00
Guillaume Desmottes
132d93537c videofx: update image and image_hasher deps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:39:14 +02:00
Sebastian Dröge
be2b4952d2 Update to async-tungstenite 0.28
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:34:43 +02:00
Sebastian Dröge
1afe165fce Update async-tungstenite dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:34:11 +02:00
Guillaume Desmottes
da2ee5cd1b cdg: update to image 0.25
I just published a new cdg_renderer release depending of image 0.25.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:30:47 +02:00
Sebastian Dröge
442bd275ca Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:26:44 +02:00
Sebastian Dröge
d14e6ad792 Update versions to 0.13.3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:25:07 +02:00
Sebastian Dröge
9e24658516 Update CHANGELOG.md for 0.13.3 release
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-02 12:23:56 +02:00
Xavier Claessens
634ec19e24 janusvr_signaller: Do not block in end_session()
Only stop() is allowed to block, wait there.

Fixes #603

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1903>
2024-11-01 15:11:17 +00:00
Mathieu Duponchelle
4d75091e91 awstranscriber: post warning message with details when item is late
When the latency is configured to a value that is too low, items will be
pushed out with an adjusted timestamp, thus affecting synchronization.

It can be useful for the application to receive details about those
adjustments.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1897>
2024-10-29 11:36:07 +00:00
Sebastian Dröge
da634989d9 Update to quick-xml 0.37
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1893>
2024-10-29 06:51:38 +00:00
Sebastian Dröge
d9664d77b0 mpegtslivesrc: Parse PAT/PMT and only handle PCRs from the first program
This matches default behaviour of tsdemux and makes sure we're not
jumping between different PCRs if there are multiple.

At a later time, program selection could be implemented.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1894>
2024-10-28 13:25:43 +00:00
Jerome Colle
05e3c4a5a3 rtpbasedepay2: fix reference timestamp meta duplicates
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1892>
2024-10-28 12:05:54 +00:00
Sanchayan Maity
199995201c net/quinn: Specify crypto provider explicitly
rustls allows the choice of ring or aws-lc-rs as the cryptographic
library implementation. This is enabled/selected via Cargo feature
flags. We have plugins directly or indirectly depending on rustls
like quinn, aws and spotify. In the presence of multiple plugins,
selecting different implementations as the default, rustls can
panic.

The safest way to avoid this is by using builder_with_provider
and selecting a provider explicitly.

See below issues for further discussion and clarifications.
https://github.com/rustls/rustls/issues/1877
https://github.com/seanmonstar/reqwest/pull/2225

While at it, also specify features explicitly for quinn and rustls.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1884>
2024-10-28 11:10:03 +00:00
Sebastian Dröge
3a098b9d9e gtk4: Use a correctly typed None value when retrieving the paintable property fails
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/609

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1851>
2024-10-28 10:12:57 +00:00
Sebastian Dröge
eeae79cfdd deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1885>
2024-10-28 09:36:03 +02:00
Sebastian Dröge
d10a7224e1 Update to quick-xml 0.36
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1885>
2024-10-28 09:33:11 +02:00
Sebastian Dröge
07f7730632 aws: Allow a deprecated BehaviourVersion for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1873>
2024-10-22 20:21:55 +00:00
Sebastian Dröge
347b5987bd Fix a couple of type hierarchy bugs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1873>
2024-10-22 20:21:55 +00:00