Sebastian Dröge
0205aa43d6
Udpate Cargo.lock
2023-07-20 15:30:30 +03:00
Sebastian Dröge
36cdf84655
Update version to 0.9.11
2023-07-20 15:15:07 +03:00
Sebastian Dröge
38cfc72a72
ci: Remove omx=disabled from the documentation job
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:53:53 +03:00
Sebastian Dröge
96b595d942
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:47:25 +03:00
Sebastian Dröge
b6168c7255
fmp4mux: Fix draining in chunk mode if keyframes are too late
...
We would create another chunk that ends after the fragment end, and
would from then on consider the stream always filled for the chunk
because it starts after the current fragment end (i.e. nothing would go
into this fragment).
This is obviously wrong because the actual fragment end moved further
ahead because of the additional chunk.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:41:58 +03:00
Mathieu Duponchelle
b4b2ca9a82
webrtcsink: fix pipeline when input caps contain max-framerate
...
GstVideoInfo uses max-framerate to compute its fps, but this leads
to issues in videorate when framerate is actually 0/1.
Fix this by stripping away max-framerate from input caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:41:43 +03:00
Sebastian Dröge
fc75502ee4
webrtcsink: Configure only 4 threads for x264enc
...
More threads can cause more slices to be created, and Chrome simply falls
apart if there are more than a few slices and fails decoding.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:38:44 +03:00
Sebastian Dröge
9854b299a2
webrtcsink: Translate force-keyunit events to force-IDR action signal for NVIDIA encoders
...
NVIDIA's v4l2 encoder elements don't handle the force-keyunit events but
instead provide a custom action signal based API for requesting a
keyframe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:38:28 +03:00
Sebastian Dröge
bdcdbfeaaf
webrtcsink: Set config-interval=-1 and aggregate-mode=zero-latency on rtph26[45]pay
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:38:18 +03:00
Sebastian Dröge
482b7e1469
webrtcsink: Set VP8/VP9 payloader based on payloader element factory name
...
Instead of checking the encoder's name. There are more VP8/VP9 encoders
than the ones from the vpx plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:38:14 +03:00
Jan Schmidt
eda38a637e
fallbackswitch: Change the threshold for trailing buffers
...
Only discard buffers on inactive pads if they are later
than the current output running time, rather than the
later timeout running time. That can mean switching
to a higher priority pad can happen quicker.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:37:46 +03:00
Jan Schmidt
081a90fefc
fallbackswitch: Fix pad health calculation and notifies
...
Change the pad health calculation to consider a pad 'healthy'
if it has received data within the last 'timeout' window. Previously,
inactive pads were constantly flip-flopping between healthy and not
healthy depending on whether they were slightly ahead of or behind
the active pad running_time.
When the health status of a pad changes, make sure to always notify
the property, so that applications that are manually controlling
the active pad can make their switching decisions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1285 >
2023-07-19 09:37:38 +03:00
Sebastian Dröge
4b0330f680
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:46:46 +03:00
yatinmaan
6eaeb2e127
gtk4: Add python example
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:41:21 +03:00
Vivia Nikolaidou
774dda249e
togglerecord: Clip segment before calculating timestamp/duration
...
Clipping happens in buffer time space and data.clip can modify the
buffer timestamp and duration. Move it before we calculate them in order
to make it actually have some effect.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:41:21 +03:00
Vivia Nikolaidou
01f96ca40c
togglerecord: Error out if main stream buffer has no valid running time
...
We cannot continue with this buffer, because we cannot calculate the
time when the recording stopped or started. We also cannot safely drop
it, because that might break the stream, especially if it's encoded.
Therefore, we return an element error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:41:21 +03:00
Sebastian Dröge
fafe52475f
webrtcink: Use correct property types for nvvideoconvert
...
These are enums and not plain integers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:41:21 +03:00
Sebastian Dröge
8fc469b8e0
videofx: Minimize dependencies of the image crate
...
Only the basic infrastructure is needed and none of the
decoders/encoders for various image formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:41:21 +03:00
Sebastian Dröge
c74def0b12
livesync: Wait for the end timestamp of the previous buffer before looking at queue
...
Previously livesync was waiting for the start timestamp of the current
buffer after looking at the queue and right before pushing it
downstream. This meant that it generally looked too early at the queue
and especially that upstream had to provide the next buffer already at
the start timestamp of the previous one.
Instead, now wait before looking at the queue and wait for the end
timestamp of the previous buffer. Once the previous buffer has expired,
a new buffer really needs to be available or otherwise a filler buffer
has to be pushed downstream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:38:00 +03:00
Jan Alexander Steffens (heftig)
72941b5dc5
livesync: Improve EOS handling
...
I've looked at the GstQueue code again and tried making livesync behave
better with EOS. This isn't very well tested, though. My goal was to
make this look saner but I think this should be reviewed by someone who
knows the queue code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1267 >
2023-07-05 14:37:55 +03:00
Mathieu Duponchelle
0954af10c7
webrtc/signalling: fix race condition in message ordering
...
Spawning one task per message to send out instead of sending them out
sequentially from the one task used to poll the handler sometimes
resulted in peers receiving ICE candidates before SDP offers, triggering
hard to understand errors in the browser.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1254 >
2023-06-20 22:30:01 +02:00
Sebastian Dröge
dfe2442c92
webrtc/signalling: Allow unknown clippy lints
...
tracing is adding some that require a newer Rust version than used here.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 20:37:53 +03:00
Sebastian Dröge
84d6298729
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:08:02 +03:00
Mathieu Duponchelle
82f3910453
webrtcsink: don't try to use cudaconvert if not present
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:03:04 +03:00
François Laignel
460d6e1a74
mp4, fmp4: fix byte order for opus extension
...
The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
§ 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
In `write_dops`, `to_le_bytes` variants were used.
Related to [2].
[1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
[2] https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4875
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:55 +03:00
Mathieu Duponchelle
55a6609fdb
webrtcsrc: add twcc extension to codec-preferences when present
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:48 +03:00
Seungha Yang
9f6b0d426c
mccparse: Map timecode to PTS directly without offset
...
Assumes that caption stream's timeline starts from zero,
and maps timecode time_since_daily_jam() to PTS directly without
subtracting the first seen timecode.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:40 +03:00
Guillaume Desmottes
6f75243c8f
fallbackswitch: add 'stop-on-eos' property
...
Fix the following use case:
- main input of fallbackswitch is finite (a media file)
- fallback input is infinite (videotestsrc)
- main input is done and send eos, which is propagated downstream
- fallbackswitch switches to fallback, sending STREAM_START which reset
EOS downstream (aggregator does that)
- fallback input keeps pushing buffers forever.
Solve it by adding a 'stop-on-eos' property so fallbackswitch stops
pushing property once the main input is eos.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:33 +03:00
Guillaume Desmottes
68faccdacf
fallbackswitch: remove unused SinkState::eos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:28 +03:00
Guillaume Desmottes
aa1d89aa9f
fallbackswitch: log when handling events
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:23 +03:00
Sebastian Dröge
05b2caec74
webrtc: Update to fastrand 2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:02:16 +03:00
Sebastian Dröge
c9b2c88469
Use MPL as license specifier for plugins only requiring GStreamer < 1.20
...
And use MPL-2.0 for all that require GStreamer 1.20 or newer. The new
string is only allowed in 1.20 or newer and using it in older versions
causes failure to load the plugin.
All affected plugins are of course still MPL-2.0 licensed.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/374
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1249 >
2023-06-19 19:01:52 +03:00
Sebastian Dröge
530aab7af6
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 23:46:16 +03:00
Mathieu Duponchelle
e64e12e478
net/aws/transcriber: track discont offset in input stream
...
and add it up to subsequent transcripts.
This ensures synchronization is maintained even after the input stream
experiences a discontinuity and a gap in its timestamps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 23:45:05 +03:00
Guillaume Desmottes
3a98bacd39
uriplaylistbin: use thiserror
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:54:34 +03:00
Guillaume Desmottes
e33543dbfa
uriplaylistbin: example: display iterations
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:53:51 +03:00
Guillaume Desmottes
0285cb1339
uriplaylistbin: example display when leaving because of eos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:53:45 +03:00
Guillaume Desmottes
9b97e68da3
uriplaylistbin: prevent deadlock when notifying property changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:53:40 +03:00
Sebastian Dröge
9ae514f986
fmp4mux: Don't wait for more data if a stream has no GOP starting before fragment end
...
Simply don't output anything for this stream and only include it in the
future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:53:28 +03:00
Sebastian Dröge
e8bd521154
fmp4mux: Consider a stream filled if the earliest GOP starts after the current chunk
...
There's not going to be any buffer to output for this stream in the
current chunk.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:53:19 +03:00
Edward Hervey
60ae3fc0b9
rtpgccbwe: Improve packet handling
...
Both the delay-based *and* loss-based estimates should be computed instead of
just one. This ensures faster adaptation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:53:07 +03:00
Sebastian Dröge
2002c54582
whipsink: Request pads with webrtcbin's pad templates and not our own
...
It's invalid to request pads with a pad template that is not part of the
element, and results in a critical warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:52:53 +03:00
Mathieu Duponchelle
8248425905
webrtcsink: further refactor connection to stats signals
...
- Stop passing webrtcbin around without using it
- Stop using glib::closure as clippy complains when using a unit type
default-return
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:52:43 +03:00
Mathieu Duponchelle
e9d32fb221
webrtcsink: fix stats_sigid logic
...
First off, we just created the session, we know stats_sigid is None
at this point.
Second, don't first assign the result of connecting on-new-ssrc to the
field, then the result of connection twcc-stats, that simply doesn't
make sense.
Finally, actually check that stats_sigid *is* None before connecting
twcc-stats, as I understand it this must have been the original
intention / behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:52:34 +03:00
Mathieu Duponchelle
8ff2c6609c
webrtcsink: don't panic in twcc-stats callback
...
If webrtcbin was disposed of at this point, simply return
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/345
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:52:22 +03:00
Arun Raghavan
d2947ed1f3
Revert "fmp4: Return a running time in get_next_time()"
...
This reverts commit 04bb7b4db0
.
As Sebastian points out, the chunk PTS is already in running time, so
this was wrong from the start.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/363
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1234 >
2023-06-06 22:52:02 +03:00
Sebastian Dröge
df22c37268
Update Cargo.lock
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1216 >
2023-05-18 19:09:42 +03:00
Thibault Saunier
0b65a2f8af
webrtcsrc: Do not pass raw caps in the transceiver
...
That was not making sense.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1216 >
2023-05-18 18:30:08 +03:00
Thibault Saunier
482ff879a4
webrtcsrc: Fix caps used when creating transceiver
...
We used to pass all media keys and attributes to the caps which
incorrect. Instead we should be using only the keys from the map
and remove all information related to rtcp which is irrelevant
to create the transceiver.
This also simplifies the code.
New caps look like:
```
Caps(
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 96,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "VP8",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 102,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "1",
profile: (gchararray) "baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 104,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "0",
profile: (gchararray) "baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 106,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "1",
profile: (gchararray) "constrained-baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 108,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "0",
profile: (gchararray) "constrained-baseline",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 127,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "1",
profile: (gchararray) "main",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 39,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "H264",
packetization-mode: (gchararray) "0",
profile: (gchararray) "main",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 98,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "VP9",
profile-id: (gchararray) "0",
},
application/x-rtp(memory:SystemMemory) {
media: (gchararray) "video",
payload: (gint) 100,
clock-rate: (gint) 90000,
encoding-name: (gchararray) "VP9",
profile-id: (gchararray) "2",
},
)
```
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1216 >
2023-05-18 18:30:08 +03:00
Seungha Yang
cc59ff9052
fallbacksrc: Don't apply fallback-audio-caps to the main audio stream
...
Intended behavior is configuring audio convert/resample elements
only for the fallback stream and also fallback-audio-caps is set.
Video and image stream are doing it as intended already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1216 >
2023-05-18 18:28:29 +03:00