Commit graph

3694 commits

Author SHA1 Message Date
Mathieu Duponchelle
9080c90120 net/webrtc: add support for answering to webrtcsink
Support was added to the base class when the AWS KVS signaller was
implemented, but the default signaller still only supported the case
where the producer was creating the offer.

Also extend the javascript API

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1702>
2024-08-09 14:02:48 +02:00
Mathieu Duponchelle
a9ff9615ff net/webrtc: correct signaller debug category
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1702>
2024-08-08 18:28:43 +02:00
Mathieu Duponchelle
64f0b76f71 webrtc: update README with section on embedded signalling / web services
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1671>
2024-08-08 16:40:46 +02:00
Mathieu Duponchelle
9455e09d9f webrtcsink: expose properties for running web server
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1671>
2024-08-08 16:40:46 +02:00
Mathieu Duponchelle
b709c56478 webrtcsink: expose properties for running signalling server
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1671>
2024-08-07 19:55:00 +02:00
Sebastian Dröge
6c04b59454 webrtcsrc: Don't hold the state lock while removing sessions
Removing a session can drop its bin and during release of the bin its
pads are removed, but the pad-removed handler is also taking the state
lock.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1695>
2024-08-07 09:35:15 +00:00
Sebastian Dröge
ec38d416aa fmp4mux: Remove _ prefix of actually used parameter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1694>
2024-08-07 11:16:51 +03:00
Sebastian Dröge
9006a47e9b mp4mux: added image orientation tag support
Based on a patch by sergey radionov <rsatom@gmail.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1694>
2024-08-07 11:16:25 +03:00
Guillaume Desmottes
cfe9968a77 gtk4: add custom widget automatically updating the window size
Use it in the example and debug window but let's not make it public yet.
Plan is to have a proper bin on top of gtk4paintablesink at some point.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1680>
2024-08-06 10:29:41 +00:00
Guillaume Desmottes
17910dd532 gtk4: add window-{width,height} property
Allow the application to pass the actual rendering size so overlays can
be rendered accordingly.

Fix #562

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1680>
2024-08-06 10:29:41 +00:00
Sebastian Dröge
ba0265970e deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1691>
2024-08-06 09:10:08 +03:00
Sebastian Dröge
df330093d5 deny: Update to new configuration format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1691>
2024-08-06 09:05:44 +03:00
Sebastian Dröge
b83b6031e5 Update etherparse and async-tungstenite dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1691>
2024-08-06 09:00:32 +03:00
Sebastian Dröge
184778d087 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1691>
2024-08-06 08:57:31 +03:00
Dave Lucia
3a949db720 net/webrtc: Fix turn-servers nick: user -> use
Noticed this typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1690>
2024-08-05 12:38:51 -04:00
Guillaume Desmottes
2333b241f0 gtk4: log paintable size in snapshot
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1689>
2024-08-05 15:53:19 +02:00
Sebastian Dröge
fa060b9fa0 Fix various 1.80 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1688>
2024-08-05 14:14:17 +03:00
Jordan Petridis
1316b821c4 video/gtk4: Move the dmabuf cfg to the correct bracket level
This was defined one bracket above, which was causing the
gst-gl codepath below to also be disabled when there was
no dmabuf feature enabled.

This was also resulting in the following warning as
we were never creating the MappedFrame::GL vartiant due to this

```
warning: unused variable: `wrapped_context`
   --> video/gtk4/src/sink/frame.rs:541:85
    |
541 | ...", feature = "gst-gl"))] wrapped_context: Option<
    |                             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wrapped_context`
    |
    = note: `#[warn(unused_variables)]` on by default

warning: variant `GL` is never constructed
  --> video/gtk4/src/sink/frame.rs:80:5
   |
74 | enum MappedFrame {
   |      ----------- variant in this enum
...
```

Move the cfg to the appropriate place where it encaplsulates only
the dmabuf related code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1682>
2024-08-01 15:44:58 +03:00
Thibault Saunier
a05ab37b49 tracers: Add a tracer that dumps data flow into .pcap files
See documentation for more details

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/879>
2024-07-31 20:27:27 +00:00
Mathieu Duponchelle
86039dd5c1 webrtc-api example: do not rely on webpack / npm proxying websocket
Instead simply use the desired address directly from the reference
example, this makes it work out of the box without placing expectations
on the web server.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1674>
2024-07-30 16:29:54 +00:00
Mathieu Duponchelle
79657e5671 transcriberbin: fix inspect with missing elements
Relax the dependency on `awstranscriber` by still building the initial
state when it is absent, this also means an alternative transcriber can
be linked even when `awstranscriber` was not available during
construction.

Also fix property getter / setters to avoid unwrapping the pad state,
and bubble up channel bin construction errors instead of unwrapping (eg
when textwrap was not available).

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/584
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1679>
2024-07-29 08:38:36 +00:00
Sebastian Dröge
380448587b gtk4: Enable GtkGraphicsOffload::black-background property when building with GTK 4.16
This allows offloading in more situations.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/576

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1673>
2024-07-18 12:28:20 +03:00
Loïc Le Page
5a1d12419f gstwebrtc-api: always include index file in dist for convenience
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1670>
2024-07-17 08:27:31 +00:00
François Laignel
34b791ff5e webrtc: add raw payload support
This commit adds support for raw payloads such as L24 audio to `webrtcsink` &
`webrtcsrc`.

Most changes take place within the `Codec` helper structure:

* A `Codec` can now advertise a depayloader. This also ensures that a format
  not only can be decoded when necessary, but it can also be depayloaded in the
  first place.
* It is possible to declare raw `Codec`s, meaning that their caps are compatible
  with a payloader and a depayloader without the need for an encoder and decoder.
* Previous accessor `has_decoder` was renamed as `can_be_received` to account
  for codecs which can be handled by an available depayloader with or without
  the need for a decoder.
* New codecs were added for the following formats:
  * L24, L16, L8 audio.
  * RAW video.

The `webrtc-precise-sync` examples were updated to demonstrate streaming of raw
audio or video.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1501>
2024-07-16 19:32:02 +00:00
Sebastian Dröge
9c84748fc3 gopbuffer: Use workspace dependency for gst-plugin-version-helper 2024-07-16 19:13:49 +03:00
Sebastian Dröge
d4d02d70a8 rtp: Require bitstream-io < 2.4.0
Version 2.4.0 contains a breaking change that it shouldn't, and updating
to 2.4.0 requires a newer Rust version.

See https://github.com/tuffy/bitstream-io/issues/22
2024-07-16 19:13:49 +03:00
Sebastian Dröge
d20ffd5d39 Update CHANGELOG.md for 0.13.0 2024-07-16 19:13:49 +03:00
sergey radionov
fdfa3a33d9 fmp4mux: added image orientation tag support
fix #565

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1669>
2024-07-16 18:49:07 +07:00
Taruntej Kanakamalla
3a8462367e threadshare: udpsrc: add buffer-size property
Use buffer-size to set the receive buffer size
on the socket

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1636>
2024-07-15 12:13:41 +00:00
Taruntej Kanakamalla
276ec91cb2 threadshare: udpsrc: add loop property to set multicast loopback
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1636>
2024-07-15 12:13:41 +00:00
François Laignel
6e9855c36b webrtcsink: fix property types for rav1enc
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/572
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1667>
2024-07-12 18:59:20 +02:00
François Laignel
000c486568 rav1enc: document bitrate property unit
See:

e34e772e47/src/rate.rs (L365)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1667>
2024-07-12 18:59:17 +02:00
Sanchayan Maity
12be9a24a6 net/quinn: Fix generation of self signed certificate
The certificate chain was incorrectly being passed the private key instead
of certificate. With rustls 0.23.11 version, this error was being caught
and reported. As stated in the 0.23.11 release, it has a new feature

"API for determining whether a CertifiedKey's certificate and private key
matches: keys_match(). This is called from existing fallible functions
that accept a private key and certificate (for example, with_single_cert())
so these functions now detect this misconfiguration."

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1666>
2024-07-12 12:26:54 +05:30
Sebastian Dröge
797dd3f3ca Update version to 0.14.0-alpha.1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1663>
2024-07-11 20:00:24 +03:00
Sebastian Dröge
a8ccfe49d9 webrtc: Require livekit-protocol < 0.3.4 due to uncoordinated breaking changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1663>
2024-07-11 20:00:24 +03:00
Sebastian Dröge
73fa904a7b Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1663>
2024-07-11 20:00:24 +03:00
Robert Mader
c7ef8e8185 gtk4: Use scale instead of rotate where possible
In order to make it easier for GTK4 to figure out that the resulting
operation is 2D and - crucially - can get offloaded to Wayland.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1662>
2024-07-10 10:58:20 +02:00
Robert Mader
2238db2005 gtk4: Support RGBx formats in SW paths
GTK4 has matching enums and thus should handle them fine. Further more
it should allow renderers to reduce memory bandwidth by applying
occlusion culling.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1660>
2024-07-09 16:53:01 +02:00
Sebastian Dröge
3609411801 gtk4: Invalidate paintable size if changing because of orientation changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1659>
2024-07-08 14:49:43 +03:00
Sebastian Dröge
98b28d69ce Update for new debug log macro syntax
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658>
2024-07-08 11:25:23 +03:00
Sebastian Dröge
f88f5b03c4 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658>
2024-07-08 10:58:14 +03:00
Sebastian Dröge
4123b5d1a1 mpegtslive: Update for gst::Clock::set_calibration() API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658>
2024-07-08 09:59:06 +03:00
Sebastian Dröge
8522c8a445 gtk4: Add support for rotations / flipping
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/284

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1590>
2024-07-07 07:43:49 +00:00
Sanchayan Maity
2fe852166e aws/s3hlssink: Do not call abort before finishing uploads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1653>
2024-07-06 14:44:08 +00:00
Sebastian Dröge
6e974cf4b9 gtk4: Document paintable properties correctly
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1655>
2024-07-06 11:36:55 +00:00
Sebastian Dröge
195c089f18 gtk4: Declare correct default value for force-aspect-ratio property
It's defaulting to false as generally keeping the aspect ratio is the
job of the widget layout and not the paintable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1654>
2024-07-06 13:41:44 +03:00
Artem Martus
ac0e24b2bd tutorial-1: Fix broken links for struct references
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1652>
2024-07-04 15:01:22 +00:00
Sebastian Dröge
4ab8d92f28 mpegtslivesrc: Don't skip the first MPEG-TS packet
If every buffer contains only a single MPEG-TS packet we would otherwise
skip over everything and would never observe a PCR.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1651>
2024-07-04 17:01:43 +03:00
Sebastian Dröge
c701aa6f84 audioloudnorm: Fix limiter buffer index wraparound off-by-one for the last buffer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1649>
2024-07-02 19:31:11 +03:00
Sebastian Dröge
bd2a039c8d livesync: Use the actual output buffer duration of gap filler buffers
Otherwise the following can happen:

  - 25fps stream
  - buffer with PTS 0ms, duration 20ms arrives, is output
  - buffer with PTS 40ms, duration 20ms arrives
  - is considered early because 20ms < 40ms
  - filler buffer with PTS 20ms and 40ms duration is output
  - buffer with PTS 40ms is output

After this change no filler would be inserted because the gap is smaller
than the duration of a filler buffer.

Also, previously the 40ms duration would be used if a filler was
previously output because in that case the cached output buffer duration
would've already been patched from 20ms to 40ms.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1647>
2024-07-02 17:15:58 +03:00