Seungha Yang
fe333063ab
hlssink3: Use sprintf for segment name formatting
...
The zero-padded naming requirement is unnecessary. Use simple
sprintf instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1387 >
2023-11-10 17:32:39 +02:00
Seungha Yang
0bb381aad9
hlssink3: Use Path API for getting file name
...
Current implementation does not support Windows path separator.
Use Path API instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1387 >
2023-11-10 14:28:42 +02:00
Sebastian Dröge
c261dd4445
webrtcsink: Fix clippy warning
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 11:50:27 +03:00
Sebastian Dröge
04136b6cc1
onvifmetadataparse: Skip metadata frames with unrepresentable UTC time
...
Previously we would panic, which causes the element to post an error
message. Instead, simply skip metadata frames if their UTC time since
the UNIX epoch can't be represented as nanoseconds in u64.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 11:50:27 +03:00
Seungha Yang
4fc905c9ea
webrtcsink: Propagate GstContext messages
...
Implement CustomBusStream so that NEED_CONTEXT and HAVE_CONTEXT
messages from session/discovery can be forwarded to parent
pipeline and also GstContext can be shared.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 11:47:34 +03:00
Seungha Yang
581787f651
webrtcsink: Add support for d3d11 memory and qsvh264enc
...
Adding d3d11 memory and qsvh264enc support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 11:45:05 +03:00
Robert Ayrapetyan
2151df4d70
webrtcsink: fix TWCC extension adding
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 10:22:45 +03:00
Mathieu Duponchelle
1ccc93df07
webrtcsink: don't forget to setup encoders for discoveries
...
The "encoder-setup" signal must also be emitted for the encoders
used in discovery pipelines in order for the default settings to
be applied.
This otherwise meant that for instance the x264 encoder would
use a 60 frames latency, greatly delaying startup.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 09:59:17 +03:00
Sebastian Dröge
17f7b04b82
webrtcsink: NVIDIA V4L2 encoders always require NVMM memory
...
And if the input is not like that then a corresponding converter must be
inserted.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1327 >
2023-09-20 09:40:58 +03:00
Sebastian Dröge
36cdf84655
Update version to 0.9.11
2023-07-20 15:15:07 +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
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
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
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
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
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
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
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
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
Edward Hervey
f4a565d4ea
rtpgccbwe: Don't process empty lists
...
The structure parsing could result in an empty vector. Don't do any processing
since the loss code assumes it's non-empty for average estimates which would
result in weird/invalid results.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1190 >
2023-04-22 12:10:43 +03:00
Sebastian Dröge
e0a7c93d46
ndisrc: Fix copying of raw video frames with different NDI/GStreamer strides
...
And also don't copy each line twice for single-plane formats.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1161 >
2023-04-05 18:17:31 +03:00
Tim-Philipp Müller
2d56989f5c
git: replace LICENSE file symlinks with copies
...
Git will de-duplicate the contents for us anyway, and
symlinks can cause problems with some versions of git
and also on Windows.
https://github.com/mesonbuild/meson/issues/11646
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1161 >
2023-04-05 18:17:16 +03:00
Mathieu Duponchelle
c2d6273786
webrtcsink: fix calculation of fec_ratio with multiple encoders
...
In this context, the bitrate variable is for all encoders, but the
max_bitrate field is per encoder. To calculate a proper FEC ratio, we
need to scale max_bitrate to the number of encoders.
+ Also clamp the fec-percentage that we set on the transceiver for extra
safety
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1161 >
2023-04-05 18:16:10 +03:00
Thibault Saunier
4b867d27fe
Add a webrtcsrc element
...
Updating the docker image to include:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3236
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1117 >
2023-03-02 14:56:30 -03:00
Sebastian Dröge
9a779607c7
Update versions to 0.9.10
2023-03-02 13:18:00 +02:00
Vivia Nikolaidou
a0fe1aba5f
ndisinkcombiner: Properly handle caps changes
...
We are caching one video buffer, so previously we were changing the src
caps one buffer too early.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1116 >
2023-03-02 11:01:18 +02:00
Thibault Saunier
e4c9ba43df
webrtc: Enhance debug messages when using unknown peer ID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1116 >
2023-03-02 11:01:18 +02:00
Matthew Waters
0d3dc25414
webrtcsink: also support nvvidconv in lieu of nvvideoconvert
...
nvvideoconvert may not exist and nvvidconv might on some Jetson
platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1116 >
2023-03-02 10:53:19 +02:00
Arun Raghavan
611c7d6cd3
hlssink3: Allow GIOStream signal handlers to return None
...
If creating a playlist or fragment stream fails (disk is full, the
directory is removed, ...), we will currently crash because the signal
handler expects a non-None GIOStream. The actual callback is allowed to
return None values and we handle this in the caller, so let's not have
this restriction on the signal handler.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1098 >
2023-02-21 16:17:45 +02:00
Seungha Yang
562b429388
rtpav1pay: Fix Leb128Bytes size parsing
...
There are multiple ways of encoding the value, and don't assume
that bitstream used the way used in this plugin. Instead, count
the number of used bytes.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/312
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1092 >
2023-02-11 19:44:51 +02:00
Sebastian Dröge
eb3d3b3088
Update versions to 0.9.9
2023-02-09 22:08:17 +02:00
rajneeshksoni
01d3b0f9da
awss3sink: Add properties to set content-Type and content-disposition.
...
for uploaded object default content-type is set to binary/octet-stream,
which is correct.
metadata cannot be used to set content-type and content-disposition as
setting metadata add a prefix x-amz-meta to key
e.g. setting metadate "content-type=video/mp4" actually set value as
x-amz-meta-content-type. So these has to be seaprate property.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:43:57 +02:00
rajneeshksoni
f96b64e1c1
hlssink3: Allow setting i-frame-only playlist.
...
HLS allows manifest where all segments are single ifames.
This manifest requires `EXT-X-I-FRAMES-ONLY` tag in the
manifest.
I-FRAMES-ONLY playlist segments are video only segments.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:43:57 +02:00
Sebastian Dröge
5f70c0f5fe
rtpgccbwe: Don't use clamp()
if there's no clear min/max value
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/305
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:43:57 +02:00
Sanchayan Maity
0e55e19d57
aws/s3hlssink: Fix deadlock on EOS
...
In state change to NULL, we take state lock and call stop. When stop
is called, we will try to upload queued segments in S3 request thread.
That tries to take the state lock again and deadlocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:14:06 +02:00
Sanchayan Maity
7a8ecb5343
aws/s3hlssink: Use factory name when checking name of child element
...
Commit ad3f1cf
fixed the name of hlssink child element to be the same
for hlssink2 and hlssink3. However, we rely on element name to return
boolean in case of hlssink3 or None in case of hlssink2 as the return
value of the delete-fragment closure.
Fix this by using the factory name instead of the element name.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:14:01 +02:00
Sebastian Dröge
17dec1cb26
rtpav1pay: Add support for tu/frame aligned input
...
In this case every buffer can be sent out immediately and makes up a
whole frame.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:13:40 +02:00
Sebastian Dröge
ba0904630d
rtpav1pay: Consider the marker flag to output packets immediately at the end of a frame
...
Otherwise it is necessary to wait for the beginning of the following
frame, which unnecessarily increases the latency.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/255
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:13:33 +02:00
Sebastian Dröge
af0e6281d2
rtpav1depay: Fix depayloading of packets starting with a leading OBU fragment followed by more OBUs
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/288
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:13:26 +02:00