Commit graph

3195 commits

Author SHA1 Message Date
Nick Steel
4b064bf54e spotify: avoid librespot::discovery dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1819>
2024-09-26 10:36:33 +01:00
Mathieu Duponchelle
41ec80bf8c Cargo.toml: turn lto off for dev profile
Turning on opt-level=1 is necessary to make things reasonably fast, but
it also turns on lto which since thinlto became enabled by default slows
down compile times by a factor of 2 compared to lto off.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1817>
2024-09-26 01:24:19 +01:00
Guillaume Desmottes
a5a40e75d0 fmp4: use the right DEFAULT constant
Does not really matter as both have the same value but best to have it
right.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1803>
2024-09-24 10:24:41 +00:00
Guillaume Desmottes
75d13882d7 fmp4: examples: hls_live: don't set header-update-mode=update
No need to update the header in live mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1802>
2024-09-24 11:33:24 +02:00
Jordan Petridis
b8bc0609ba ci: Set build jobs according to FDO_CI_CONCURRENT when available
The CI runners run multiple jobs concurrently, and as such we should
only be building with the number of jobs allocated to us when the
variable is set.

Related to https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1545

Also move the rest of the common flags we pass to cargo together so it's
a bit easier to read.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1795>
2024-09-21 09:02:54 +00:00
Sebastian Dröge
746acfc423 livesync: Report latency query results when handling latency query too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1781>
2024-09-21 08:40:00 +00:00
Mathieu Duponchelle
e64546598d webrtcsink: fix segment format mismatch with remote offer
webrtcsink was starting the negotiation process on Ready and concurrently
moving the consumer pipeline to Playing, but when answering the remote
description was set so fast that input streams were connected (and the time
format set on appsrc) before the state change to Paused had completed.

This meant gst_base_src_start was happening after that and setting the format
back to bytes, the time segment that was next coming in then caused:

basesrc gstbasesrc.c:4255:gst_base_src_push_segment:<video_0> segment format mismatched, ignore

And the consumer pipeline errored out.

The same issue existed in theory when webrtcsink was creating the offer,
but was much harder to trigger as it required that the remote answer
came in before the state change to Paused had completed.

This commit fixes the issue by simply waiting for the state to have
changed to Paused before negotiating.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1786>
2024-09-20 14:46:06 +03:00
Mathieu Duponchelle
0b1d5d8682 webrtcsink: fix assertions when finalizing
Dumping the pipeline on state changes from an async bus handler was
triggering criticals.

Instead, dump from the sync handler.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1784>
2024-09-20 11:01:37 +00:00
Mathieu Duponchelle
ed8d700e23 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/1783>
2024-09-20 10:34:50 +00:00
Dave Lucia
1cdddf713d net/webrtc: Fix turn-servers nick: user -> use
Noticed this typo

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1780>
2024-09-20 09:35:13 +00:00
Jan Schmidt
855390bc18 onvifmetadatapay: Set output caps earlier
As soon as input caps arrive, we can set output
caps. This means upstream can send gap events earlier,
before there is any actual metadata to send

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1787>
2024-09-20 03:24:29 +00:00
Sanchayan Maity
637e465b62 whepsrc: Fix incorrect default caps
add-transceiver needs application/x-rtp caps and not raw caps. We were
providing raw caps which is incorrect.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1782>
2024-09-19 13:39:45 +02:00
Tim-Philipp Müller
72d164fe66 Update CHANGELOG.md for 0.12.9
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1732>
2024-08-21 09:22:09 +03:00
Tim-Philipp Müller
59ee60d3dd Update versions to 0.12.9
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1732>
2024-08-21 09:22:09 +03:00
Sebastian Dröge
bf37ed15e7 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1710>
2024-08-13 16:04:48 +03:00
Jordan Petridis
e1cca97728 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/1686>
2024-08-05 09:40:36 +01:00
Tim-Philipp Müller
f5e15e8d00 Update CHANGELOG.md for 0.12.8
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1678>
2024-07-24 15:43:11 +01:00
Tim-Philipp Müller
9faea4711c Update versions to 0.12.8
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1678>
2024-07-24 14:48:22 +01:00
Tim-Philipp Müller
989c41bf39 Cargo.lock: update to gstreamer-rs 0.22.7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1678>
2024-07-24 14:46:15 +01:00
François Laignel
a79f8c76ac 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/1668>
2024-07-12 23:54:15 +02:00
François Laignel
6c25a9cfba rav1enc: document bitrate property unit
See:

e34e772e47/src/rate.rs (L365)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1668>
2024-07-12 23:54:15 +02:00
Robert Mader
49774f0f36 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/1661>
2024-07-09 23:23:31 +02:00
Sanchayan Maity
4dfce290f2 aws/s3hlssink: Do not call abort before finishing uploads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1657>
2024-07-06 17:55:46 +01:00
Sebastian Dröge
5998e1dd9d 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/1656>
2024-07-06 13:41:56 +01:00
Sebastian Dröge
9693aa6cc5 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/1650>
2024-07-04 11:07:18 +01:00
Sebastian Dröge
1a8a1dcf17 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/1648>
2024-07-02 17:07:57 +01:00
Sebastian Dröge
7088a06982 livesync: Add sync property for allowing to output buffers as soon as they arrive
By default livesync will wait for each buffer on the clock. If sync is
set to false, it will output buffers immediately once they're available
and only waits on the clock for outputting gap filler buffers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1643>
2024-06-28 17:31:34 +01:00
Sebastian Dröge
000e9c92d2 livesync: Synchronize on the first buffer too
Previously the first buffer would be output immediately and
synchronization would only happen from the second buffer onwards.
This would mean that the first buffer would potentially be output too
early.

Instead, if there is no known output timestamp yet but a buffer with a
timestamp, first of all take its start as the initial output timestamp
and synchronize on that buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1643>
2024-06-28 17:31:34 +01:00
Sebastian Dröge
6d177f5d3c livesync: Use let-else in a few more places
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1643>
2024-06-28 17:31:34 +01:00
Sebastian Dröge
de4bfa2028 livesync: Allow queueing up to latency buffers
This was already reported by the latency query, and not doing this would
require to always put a queue before livesync.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1643>
2024-06-28 17:31:34 +01:00
Nirbheek Chauhan
b73bea4a90 meson: Printing a list is only available with meson >=1.3
Fixes https://gitlab.freedesktop.org/tpm/gstreamer/-/jobs/60108579

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1633>
2024-06-20 11:14:45 +01:00
Sebastian Dröge
8bd94e284d Update CHANGELOG.md for 0.12.7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1631>
2024-06-19 20:18:59 +03:00
Sebastian Dröge
804c9bdf92 Update versions to 0.12.7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1631>
2024-06-19 20:18:59 +03:00
Sebastian Dröge
d4b17ec62c Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1631>
2024-06-19 19:35:24 +03:00
Nirbheek Chauhan
ef09a54b32 meson: Handle features needed only by examples separately
Currently we incorrectly require gtk4 to build the fallbackswitch, livesync,
togglerecord plugins when the examples option is allowed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Nirbheek Chauhan
44a8a05aa3 meson: Actually build plugin examples
This broke in 8b5a398135.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Nirbheek Chauhan
93491826e8 meson: Fix gtk4 plugin build on linux
dmabuf feature needs the wayland feature too.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Nirbheek Chauhan
01ad705bf6 meson: Only enable the gtk4 plugin when deps are found
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Nirbheek Chauhan
2478b47445 meson: Fix plugin requirement checking and add logging
We were silently skipping plugins that didn't find a required feature,
even if the plugin option was enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Nirbheek Chauhan
46094f8e40 meson: Fix typo in gstreamer-gl dep fetching
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Nirbheek Chauhan
e705f0a8a4 meson: Make gstreamer-gl dependency optional
Minimal systems like docker containers may not have GL

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1614>
2024-06-19 15:09:59 +00:00
Sebastian Dröge
627a756f04 rtp: av1pay: Derive Default trait for the state instead of manual implementation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1628>
2024-06-18 10:52:50 +00:00
Sebastian Dröge
433acfb2c6 rtp: av1pay: Correctly use N flag for marking keyframes
The "first packet of a coded video sequence" means that this should be
the first packet of a keyframe that comes together with a sequence
header, not the first packet of a new frame.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1628>
2024-06-18 10:52:50 +00:00
Sebastian Dröge
5b04b65a5e rtp: av1pay: Correctly skip over ignored OBUs
The reader is already after the header at this point so only the OBU
content has to be skipped.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1628>
2024-06-18 10:52:50 +00:00
Sebastian Dröge
8840861861 rtp: av1: Drop padding OBUs too like Chrome does
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1628>
2024-06-18 10:52:50 +00:00
Sebastian Dröge
998b4734bf Fix various new clippy 1.79 warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1627>
2024-06-18 10:01:13 +00:00
Angelo Verlain
0186930777 gtk4: update flatpak integration code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1626>
2024-06-18 10:33:55 +01:00
Sebastian Dröge
c07abf04f0 rtp: av1depay: Also log warnings on errors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1621>
2024-06-17 12:05:05 +03:00
Sebastian Dröge
c821130947 rtp: av1depay: Parse internal size fields of OBUs and handle them
They're not recommended by the spec to include in the RTP packets but it
is valid to include them. Pion is including them.

When parsing the size fields also make sure to only take that much of a
payload unit and to skip any trailing data (which should not exist in
the first place).

Pion is also currently storing multiple OBUs in a single payload unit,
which is not allowed by the spec but can be easily handled with this
code now.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1621>
2024-06-17 12:04:15 +03:00
Sebastian Dröge
dd4c466265 deny: Add override for older tungstenite
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1616>
2024-06-14 05:46:18 +00:00