Mathieu Duponchelle
1dd13c4812
webrtcsink: fix session_id / peer_id confusion
...
In a few places, for instance parameter names, peer_id was still used
when session_id was actually getting passed.
Go through all instances of peer_id in webrtcsink/imp.rs and address
those mix-ups.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1269 >
2023-07-07 05:33:30 +00:00
Bilal Elmoussaoui
dd2d7d9215
Use re-exported once_cell
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1268 >
2023-07-06 17:50:49 +03:00
Bilal Elmoussaoui
2cc98bf410
Adapt to glib::Continue rename
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1268 >
2023-07-06 17:50:49 +03:00
Sebastian Dröge
58adebb325
Fix a couple of typos
2023-07-06 13:50:17 +03:00
Olivier Crête
08b6251a7a
webrtc-utils: Ensure there is only one cancellable call at a time
...
Since we only have one canceller at a time, panic if one try to
use it twice in parallel.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1262 >
2023-07-05 21:43:17 +00:00
Olivier Crête
817b60a758
webrtc: Value.get() is already type checks in the property calls
...
GObject will have ensured we get a GValue of the right type.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1262 >
2023-07-05 21:43:17 +00:00
Olivier Crête
793ee66afa
webrtcsink: Add LiveKit WebRTC sink and signaller
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1262 >
2023-07-05 21:43:17 +00:00
Seungha Yang
1f0ce101eb
awstranscriber: Tone down log message
...
It's not an ERROR case at all
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1263 >
2023-06-28 23:57:54 +09:00
Sebastian Dröge
c350f3c2af
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/1256 >
2023-06-26 14:48:58 +00:00
Mathieu Duponchelle
84a33ca7b9
webrtcsink: bring in signalling code from whipsink as a signaller
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1168 >
2023-06-16 00:32:56 +02:00
Mathieu Duponchelle
f00a169081
webrtcsrc: add twcc extension to codec-preferences when present
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1245 >
2023-06-15 20:41:53 +00:00
Mathieu Duponchelle
1200ae0ee6
webrtcsink: improve debug
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1239 >
2023-06-14 22:27:15 +02:00
Mathieu Duponchelle
64056c5527
net/webrtc: improve documentation layout
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1239 >
2023-06-14 22:27:15 +02:00
Sebastian Dröge
8a7a1f519c
webrtc: Update to fastrand 2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1240 >
2023-06-09 09:36:51 +03:00
Mathieu Duponchelle
81ae675f2d
webrtcsink: don't try to use cudaconvert if not present
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1238 >
2023-06-08 15:32:49 +02:00
Mathieu Duponchelle
7f78a8428e
webrtcsink: dump discovery pipelines on state changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1238 >
2023-06-08 15:32:49 +02:00
Mathieu Duponchelle
7447d95f1b
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/1236 >
2023-06-08 13:24:45 +02:00
Mathieu Duponchelle
de0f7a08fe
gstwebrtc-api: fix firefox errors about more than two stun servers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1236 >
2023-06-08 13:24:45 +02:00
Mathieu Duponchelle
cd4b90fef4
webrtcsink/utils: remove unused decoders field in DecodingInfo
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1236 >
2023-06-08 01:54:13 +02:00
Mathieu Duponchelle
271b583876
webrtcsink: avoid panic on unprepare from an async tokio context
...
.. and log an error with advice on how to dispose of elements properly
from a tokio runtime.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1218 >
2023-06-07 19:57:19 +00:00
Sebastian Dröge
c65b3429ad
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/1235 >
2023-06-07 19:13:55 +03:00
Mathieu Duponchelle
fda5aed89f
webrtcsink: encoded streams: address last review comments
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1194 >
2023-06-06 16:05:28 +02:00
Thibault Saunier
ab1ec12698
webrtcsink: Add support for pre encoded streams
...
This is a first step where we try to replicate encoding conditions from
the input stream into the discovery pipeline. A second patch will
implement using input buffers in the discovery pipelines.
This moves discovery to using input buffers directly. Instead of trying
to replicate buffers that `webrtcsink` is getting as input with testsrc,
directly run discovery based on the real buffers. This way we are sure
we work with the exact right stream type and we don't need encoders to
support encoding streams inputs.
We use the same logic for both encoded and raw input to avoid having
several code paths and makes it all more correct in any case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1194 >
2023-06-06 15:32:40 +02:00
Thibault Saunier
059cdecf7d
webrtc: Unify the Codec structure between sink and source
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1194 >
2023-06-06 15:31:45 +02:00
Thibault Saunier
cf32d9d668
webrtc: Move make_element to the utils
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1194 >
2023-06-06 15:31:45 +02:00
Thibault Saunier
ce42723ad2
webrtc: Minor documentation enhancement
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1194 >
2023-06-06 15:31:45 +02:00
Mathieu Duponchelle
6346d5608e
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/1230 >
2023-06-02 08:55:11 +00:00
Mathieu Duponchelle
80582923bb
aws_kvs_signaller: don't force us-east-1 region
...
Instead use default region provider, with a fallback to us-east-1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1228 >
2023-05-30 16:04:27 +00:00
Edward Hervey
31b06e52ea
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/1179 >
2023-05-29 08:20:36 +00:00
François Laignel
4cc2498c24
webrtcsink: use spawn_blocking instead of call_async
...
In `webrtcsink`, we terminate a session by setting the session's pipeline to
`Null` like this:
```rust
pipeline.call_async(|pipeline| {
[...]
pipeline.set_state(gst::State::Null);
[...]
// the following cvar is awaited in unprepare()
cvar.notify_one();
});
```
However, `pipeline.call_async` keeps a ref on the pipeline until it's done,
which means the `cvar` is notified before `pipeline` is actually 'disposed',
which happens in a different thread than `unprepare`'s. [`gst_rtp_bin_dispose`]
releases some resources when the pipeline is unrefed. In some cases, those
resources are actually released after the main thread has returned, leading
various issues.
This commit uses tokio runtime's `spawn_blocking` instead, which allows owning
and disposing of the pipeline before the `cvar` is notified.
[`gst_rtp_bin_dispose`]: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/subprojects/gst-plugins-good/gst/rtpmanager/gstrtpbin.c#L3108
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1225 >
2023-05-26 14:23:03 +02:00
Mathieu Duponchelle
a20855dfd9
webrtcsink: expose consumer-pipeline-created signal
...
This signal is emitted as soon as the pipeline for each consumer
is created, and can be used by applications that require a greater
level of control over webrtcsink's internals.
An example is also provided to demonstrate usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1220 >
2023-05-25 13:15:52 +02:00
Sebastian Dröge
a27be7d054
net: Update to AWS SDK 0.28
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1224 >
2023-05-25 13:23:49 +03:00
François Laignel
e62e9f5bd4
webrtcsink: adapt commit "abort stats collection before stopping the Signaller"
...
Adapt a commit [1] that was introduced as part of the forward port of the MR
'add signal "request-encoded-filter"' [2].
The deadlock said commit was fixing doesn't happen on main branch due to
changes in the element design: the Sessions are no longer aborted with the
element `State` held. However, we want to ensure the stats collection task
is terminated when the `webrtcbin` element returns from the Ready to Null
transition, meaning that the related resources are released.
[1]: gstreamer/gst-plugins-rs!1176 (0e6b9df9
)
[2]: gstreamer/gst-plugins-rs!1176
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1222 >
2023-05-24 21:35:39 +02:00
Sebastian Dröge
e3c46b40a0
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/1223 >
2023-05-24 14:14:32 +00:00
Mathieu Duponchelle
44a395f134
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/1217 >
2023-05-24 13:35:26 +02:00
Mathieu Duponchelle
e13124a426
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/1217 >
2023-05-24 13:35:26 +02:00
Mathieu Duponchelle
ccf076ed1e
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/1217 >
2023-05-24 13:35:26 +02:00
François Laignel
9a59763df1
webrtcsink: wait for Sessions to end
...
`State::finalize_session()` asynchronously sets the Session pipeline to Null.
In some cases, sessions `webrtcbin` could terminate their transition to Null
after `webrtcsink` had reached Null.
This commit adds a set of `finalizing_sessions`. When the finalization process
starts, the session is added to the set. After `webrtcbin` has reached the Null
state, the session is removed from the set and a condvar is notified.
In `unprepare`, `webrtcsink` loops until the `finalizing_sessions` set is
empty, awaiting for the condvar to be notified when it's not.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1221 >
2023-05-24 10:18:47 +02:00
François Laignel
b68e2a1ed0
webrtcsink: remove unneeded mut
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1221 >
2023-05-24 10:18:43 +02:00
Thibault Saunier
04e35e86d6
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/1214 >
2023-05-18 18:23:56 +03:00
Thibault Saunier
e73d7082a6
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/1214 >
2023-05-18 18:23:56 +03:00
François Laignel
7ba0073052
use Pad builders for optional name definition
...
Also, apply auto-naming in the following cases
* When building from a non wildcard-named template, the name of the template is
automatically assigned to the Pad. User can override with a specific name by
calling `name()` on the `PadBuilder`.
* When building with a target and no name was provided via the above, the
GhostPad is named after the target.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/448
Auto-naming discussion: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1255#note_1891181
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1197 >
2023-05-12 12:55:31 +02:00
François Laignel
8e93d294e5
Update to argumentless {Bin,Pipeline}::new
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/449
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1197 >
2023-05-12 12:55:31 +02:00
François Laignel
680d5221db
net/webrtc: src: add signal "request-encoded-filter"
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1202 >
2023-05-09 12:02:15 +02:00
François Laignel
092ae1fec8
net/webrtc: sink: add signal "request-encoded-filter"
...
The new "request-encoded-filter" signal is emitted when the encoder and related
elements are added to the pipeline. When defined, the element returned by the
signal is inserted between the encoder and the payloader.
The transformation can be reverted using the [insertable streams API] on the
receiver side.
[insertable streams API]: https://developer.mozilla.org/en-US/docs/Web/API/Insertable_Streams_for_MediaStreamTrack_API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1202 >
2023-05-09 11:17:32 +02:00
François Laignel
dc5ddd3022
net/webrtc: sink: abort stats collection before stopping the Signaller
...
In some rare cases, the webrtc-test entered a deadlock while executing
`WebRTCSink::unprepare`. Attaching gdb to a blocked instance showed:
* `gstrswebrtc::signaller:👿 :Signaller::stop()` parked, waiting for a
`Condvar` in `Signaller::stop()`. This was most likely awaiting for the
receive task to complete while it was locked in `element.end_session()`.
This code path is triggered from `unprepare` with the `State` `Mutex` locked.
* `webrtcsink:👿 :WebRtcSink::process_stats` waiting for a contended `Mutex`,
which is also the `State` `Mutex`. This prevented completion of the signal
`gst_webrtc_bin_get_stats`.
This commit aborts the task in charge of periodically collecting stats and
ensures any remaining iteration completes before requesting the Signaller to
stop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1202 >
2023-05-09 10:26:11 +02:00
François Laignel
eca269cbf2
net/webrtc: src: don't set stun-server on webrtcbin when our property is None
...
... otherwise an error occurs about the stun-server address being an empty
string which doesn't comply with the expected address format.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1202 >
2023-05-09 10:26:07 +02:00
Sebastian Dröge
cb5b527d74
Update to AWS SDK 0.27 and async-tungstenite 0.22
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1199 >
2023-05-02 15:30:00 +03:00
Sebastian Dröge
5451035215
Update async-tungstenite and AWS SDK dependencies
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1187 >
2023-04-21 10:48:10 +00:00
Sebastian Dröge
cc3646640e
Fix a couple of new Rust 1.69 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1186 >
2023-04-20 16:47:45 +03:00
Edward Hervey
721d17e181
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/1181 >
2023-04-15 19:35:27 +02:00
Mathieu Duponchelle
dbdb9bc164
webrtcsink: fix navigation data channel
...
At some point, presumably recently, the data channel stopped being
requested in Ready, making webrtcbin refuse to create it.
There was quite a lot of churn recently so I couldn't pinpoint the
breaking commit easily.
Fix by simply restoring the correct behavior of requesting the channel
after going to the Ready state
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/341
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1180 >
2023-04-14 14:26:22 +02:00
Mathieu Duponchelle
f1fd8d84c3
webrtc: extract a BaseWebRTCSink
...
For documentation purposes, AwsKVSWebRTCSink should not inherit from
another element.
+ Mark base class as plugin API and update plugin cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1178 >
2023-04-13 15:06:59 +00:00
Loïc Le Page
dba91bceca
webrtc: fix documentation after signaller interface changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1175 >
2023-04-12 20:19:22 +02:00
Thibault Saunier
8f2273328b
webrtcsrc: Return bool en 'end-session' as required
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1172 >
2023-04-12 12:17:56 +00:00
Sebastian Dröge
5dcdf645d6
net: ndi: Update to libloading 0.8
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1173 >
2023-04-12 11:03:05 +03:00
Mathieu Duponchelle
f366c20869
awstranscriber: fix what we send over for translations
...
Prior to this commit, we were sending over words concatenated together
with no separators, for instance "Idon'twanttobeanemperor".
The translation service seems clever enough to translate the contents
anyway, but there is no reason to make its task harder than necessary,
and it didn't re-add separators when the target language was the same as
the source language, which resulted in less than ideal output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1171 >
2023-04-10 20:47:12 +00:00
Mathieu Duponchelle
408fd2030c
awstranscriber: slight debug improvement
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1171 >
2023-04-10 20:47:12 +00:00
Guillaume Desmottes
403004a85e
fix typos
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1170 >
2023-04-10 13:35:32 +02:00
Mathieu Duponchelle
a455819871
webrtcsink: fix tracking of signaller state
...
For the signaller to get stopped, we need to remember that we started it
in the first place.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1167 >
2023-04-10 07:58:10 +03:00
Mathieu Duponchelle
3368f55a88
webrtcsink: don't return value from error closure
...
the signal doesn't expect a return value, which meant we were panicking
as soon as the signaller tried to report an error.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1167 >
2023-04-10 07:58:10 +03:00
Mathieu Duponchelle
58c8c0edc7
webrtc: signaller iface: fix session-ended vs end-session confusion
...
Session ending is bidirectional: the signaller can tell the sink that a
session was ended, and the sink can tell the signaller to end a session.
As such, two signals are needed, before this patch the second case was
not working as in essence the sink was telling itself that a session was
ended, and obviously failing to even find it when trying to end it again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1167 >
2023-04-10 07:58:10 +03:00
Tim-Philipp Müller
7c30430320
webrtc-api: replace LICENSE file symlink with copy
...
As in !1157
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1169 >
2023-04-08 17:22:37 +01:00
Matthew Waters
e69b4b7f45
webrtc/signaller/iface: give variables appropriate names
...
Rather than arg0, arg1, etc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
4f4e5f0d75
webrtcsink/signaller: don't call signals while having state/settings locked
...
It is a recipe for deadlocks if the signal callback calls back into
webrtcsink in some way.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
1c61e46f37
webrtcsink: privatise signalling functions
...
The functionality is now access through the relevant signals instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
2ac560975c
webrtc/signaller: emit the relevant signals instead of the interface vtable
...
In order to support the use case of an external user providing their own
signalling mechanism, we want the signals to be used and only if nothing
is connected, fallback to the default handling. Calling the interface
vtable directly will bypass the signal emission entirely.
Also ensure that the signals are defined properly for this case. i.e.
1. Signals the the application/external code is expected to emit are
marked as an action signal.
2. Add accumulators to avoid calling the default class handler if
another signal handler is connected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
343b659755
webrtc/signaller: remove SignallableImplExt
...
This pattern is used for subclassing and calling parent class/interface functions.
However that is not useful for the signaller object.
1. The signals are the API contract and should instead be used by
webrtcsrc/sink to ask or provide outside for/with information.
2. The default case (no signal attached)is instead handled by default class
handlers that call directly using the relevant rust trait. No parent
(GObject) vfuncs necessary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
b6e78b5f04
webrtcsink: expose signaller as a property
...
in the process move the signaller field to the settings struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Thibault Saunier
8236f3e5e7
webrtcsink: Port to the 'webrtcsrc' signaller object/interface
...
With contributions from:
Matthew Waters <matthew@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:03:47 +10:00
Seungha Yang
762fb86ce7
awstranscriber: Reset start_time per task
...
Otherwise wrong start time can be assigned if the element is
reused with state change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1159 >
2023-04-05 18:22:59 +00:00
Sebastian Dröge
9cb211470f
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/1158 >
2023-04-05 16:45:48 +03:00
Loïc Le Page
f17622a1e1
webrtc: Add gstwebrtc-api subproject in net/webrtc plugin
...
This subproject adds a high-level web API compatible with GStreamer
webrtcsrc and webrtcsink elements and the corresponding signaling
server. It allows a perfect bidirectional communication between HTML5
WebRTC API and native GStreamer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/946 >
2023-04-04 16:29:44 +02:00
Tim-Philipp Müller
8845f6a4c6
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/1157 >
2023-04-04 14:26:37 +01:00
Seungha Yang
4000d60305
awstranscriber: Avoid too large initial GAP event
...
Initialized GstSegment.position is always zero
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1154 >
2023-04-03 13:05:15 +00:00
Mathieu Duponchelle
15e1844956
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/1151 >
2023-03-31 12:19:07 +00:00
Sebastian Dröge
315e53f064
webrtc: Update to AWS SDK 0.55/0.25
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1152 >
2023-03-31 09:12:26 +00:00
Sebastian Dröge
6fe806c2b5
aws: Update to AWS SDK 0.55/0.25
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1152 >
2023-03-31 09:12:26 +00:00
David Revay
002a70a2a4
chore(webrtcsink): fix max-bitrate blurb and nick
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1150 >
2023-03-28 16:11:05 +11:00
Vivia Nikolaidou
7a1b2d97d4
webrtcsink: Add ice-transport-policy option
...
Can be used to force relay ICE candidates, ensuring TURN server is used.
Proxy to the corresponding setting in webrtcbin,
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1143 >
2023-03-27 16:12:13 +03:00
François Laignel
2b32d00589
net/aws/transcriber: use two queues for sending transcript items
...
* A queue dedicated to transcript items not intended for translation.
* A queue dedicated to transcript items intended for translation. The items are
enqueued after a separator is detected or translate-lookahead was reached.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1137 >
2023-03-16 20:29:31 +01:00
François Laignel
5a5ca76d9d
net/aws/transcriber: desambiguify SrcPad output items queue
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1137 >
2023-03-16 12:41:07 +01:00
François Laignel
162db2f3b9
net/aws/transcriber: fix translate lookahead
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1137 >
2023-03-16 12:39:15 +01:00
François Laignel
d5d6a4daf9
net/aws/transcriber: rename prop transcript-lookahead & TranslationSrcPad
...
... as translate-lookahead and TranslateSrcPad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1137 >
2023-03-16 12:37:31 +01:00
François Laignel
3b3f0c1a29
net/aws/transcriber: fix transcript-lookahead prop nick
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1136 >
2023-03-14 21:11:33 +01:00
François Laignel
299e25ab3c
net/aws/transcriber: translate: optional experimental translation tokenization
...
This commit adds an optional experimental translation tokenization feature.
It can be activated using the `translation_src_%u` pads property
`tokenization-method`. For the moment, the feature is deactivated by default.
The Translate ws accepts '<span></span>' tags in the input and adds matching
tags in the output. When an 'id' is also provided as an attribute of the
'span', the matching output tag also uses this 'id'.
In the context of close captions, the 'id's are of little use. However, we can
take advantage of the spans in the output to identify translation chunks, which
more or less reflect the rythm of the input transcript.
This commit adds simples spans (no 'id') to the input Transcript Items and
parses the resulting spans in the translated output, assigning the timestamps
and durations sequentially from the input Transcript Items. Edge cases such as
absence of spans, nested spans were observed and are handled here. Similarly,
mismatches between the number of input and output items are taken care of by
some sort of reconcialiation.
Note that this is still experimental and requires further testings.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1109 >
2023-03-14 13:48:32 +00:00
François Laignel
743e97738f
net/aws/transcriber: add translation request src pads
...
This commit adds an optional transcript translation feature implemented as
request src Pads.
When requesting a src Pad, the user can specify the translation language code
using Pad properties 'language-code'.
The following properties are defined on the Element:
- 'transcribe-latency': formerly 'latency', defines the expected latency for
the Transcribe webservice.
- 'translate-latency': defines the expected latency for the Translate
webservice.
- 'transcript-lookahead': maximum transcript duration to send to translation
when a transcript is hitting its deadline and no punctuation was found.
When the input and output languages are the same, only the 'transcribe-latency'
is used for the Pad. Otherwise, the resulting latency is the addition of
'transcribe-latency' and 'translate-latency'.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1109 >
2023-03-14 13:48:32 +00:00
Sebastian Dröge
4eccd30ce2
Revert "aws: Temporarily enable the default features of the test-with
crate"
...
This reverts commit 42116b5bce
.
2023-03-14 13:28:28 +02:00
Sebastian Dröge
42116b5bce
aws: Temporarily enable the default features of the test-with
crate
...
Version 0.9.4 fails compiling without them enabled.
See https://github.com/yanganto/test-with/pull/57
2023-03-14 09:19:26 +02:00
Sebastian Dröge
c1bac30694
webrtc: Update to aws 0.54/0.24
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1131 >
2023-03-11 09:37:14 +02:00
Mathieu Duponchelle
584392049c
net/webrtc: implement AWS KVS signaller
...
And expose a wrapper webrtcsink variant, aws-kvs-webrtcsink.
This adds support in webrtcsink for processing a consumer offer, instead
of producing one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1114 >
2023-03-09 15:39:09 +00:00
Sebastian Dröge
fc5ed15af5
Update for gst::Element::link_many()
and related API generalization
...
Specifically, get rid of now unneeded `&`.
2023-03-09 16:46:52 +02:00
François Laignel
b9cd71d8eb
net/aws/transcriber: fix eos not being sent
...
For eos to be sent from the srcpad task loop, we need to go through `dequeue`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1122 >
2023-03-09 13:07:03 +01:00
François Laignel
2ea9f147ab
net/aws/transcriber: fix deadlock when the pipeline is interrupted
...
... also makes sure to abort the taks_iter Future.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1122 >
2023-03-09 13:07:03 +01:00
Sebastian Dröge
3ef8a48ded
Fix a few new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1120 >
2023-03-07 08:47:01 +00:00
Vivia Nikolaidou
cd74d01324
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/1110 >
2023-03-01 12:30:54 +00:00
François Laignel
4a988aaeb8
net/aws/transcriber: use a TranscriberLoop struct
...
This helps gather together the details related to the `TranscriberLoop`.
One difference with previous implementation is that the ws `Client` is
build each time the loop is started instead of being reused. With the new
approach, we don't keep the connection open after EOS and we should be
more resistant in case of a connection failure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1104 >
2023-03-01 08:47:58 +00:00
François Laignel
f1a080c94e
net/aws/transcriber: own transcription items
...
So that we can avoid copying the content.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1104 >
2023-03-01 08:47:58 +00:00
François Laignel
36ae29d746
net/aws: enqueue transcribed buffers within the ws loop
...
Instead of sending transcription events to the src pad loop, this commit
enqueues the transcribed buffers immediately in the ws loop, then notifies
the src pad loop. The src pad loop is only in charge of dequeuing the buffers.
This should help with upcoming evolutions.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1104 >
2023-03-01 08:47:58 +00:00
François Laignel
00153754bb
net/aws: use aws-sdk-transcribestreaming
...
Switch from manual webservice client impl to `aws-sdk-transcribestreaming`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1104 >
2023-03-01 08:47:58 +00:00
François Laignel
57f365979c
net/aws: remove aws_ from the aws_transcribe* folder names
...
Those folders reside under `aws`, so there's shouldn't be any confusion.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1104 >
2023-03-01 08:47:58 +00:00
Thibault Saunier
ce3bb2f1d4
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/932 >
2023-02-28 20:50:15 -03:00
Thibault Saunier
0ae637f531
webrtcsink: Move RUNTIME to the crate so it can be reused
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/932 >
2023-02-28 17:57:14 -03:00
Thibault Saunier
4ec441560b
webrtc: Enhance debug messages when using unknown peer ID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/932 >
2023-02-28 19:28:51 +00:00
Matthew Waters
542c7e12b8
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/1107 >
2023-02-28 10:12:36 +11:00
Sebastian Dröge
9fc1404415
Update minimum supported Rust version to 1.66
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096 >
2023-02-20 11:09:01 +02:00
Arun Raghavan
487d7fb26b
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/1093 >
2023-02-14 11:25:44 -05:00
Sebastian Dröge
04e101c605
Optimize various error message / debug message formatting
...
Directly make use of format strings instead of formatting a string
beforehand and then passing it to the macros.
2023-02-13 11:50:57 +02:00
Arun Raghavan
39e0acb55a
hlssink3: Fix case on unspecified playlist type nick for consistency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1089 >
2023-02-10 23:07:12 +00:00
Seungha Yang
6420fe43da
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/1090 >
2023-02-10 18:47:52 +00:00
Sebastian Dröge
ac8afc4ac0
Update to async-tungstenite 0.20
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1087 >
2023-02-10 13:03:07 +02:00
Sebastian Dröge
1e13dbb99c
Update versions to 0.11.0-alpha.1
2023-02-10 00:23:56 +02:00
rajneeshksoni
994c79569e
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/1085 >
2023-02-09 19:04:07 +00:00
rajneeshksoni
0f383a6545
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/1070 >
2023-02-08 14:04:46 +00:00
Sebastian Dröge
0ed74d0aa4
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/1078 >
2023-02-06 21:56:46 +02:00
Sanchayan Maity
6006a0ba36
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/1076 >
2023-02-03 19:09:18 +05:30
Sanchayan Maity
41aa1e51da
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/1076 >
2023-02-03 19:08:40 +05:30
Sebastian Dröge
5506f8001e
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/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
194c4e9e9f
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/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
49350f738f
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/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
1756d7a516
rtpav1depay: Fix error handling
...
Don't error out immediately on errors anymore but try again with the
next packet.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/289
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
ed4e9a50d5
rtpav1depay: Set DISCONT flag on buffers following a corrupted packet
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
d6cb9d72d8
rtpav1depay: Don't output full TUs but just OBUs as they come
...
Simplifies state tracking and potentially reduces latency as it's not
necessary to wait until all fragments of an OBU are received.
The last OBU of a TU is marked with the marker flag to allow parsers to
detect this without first seeing the beginning of the next TU.
Also use a simple `Vec` for collecting complete OBUs instead of a
`gst_base::Adapter` as this reduces the number of allocations.
And also handle invalid packets a little bit more gracefully.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/244
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1072 >
2023-02-02 20:24:27 +02:00
Sebastian Dröge
560bdc4cb7
Update for glib API changes
2023-01-31 12:24:07 +02:00
Sebastian Dröge
a1cce9b796
aws: Update to AWS SDK 0.54/0.24
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1066 >
2023-01-27 22:10:23 +02:00
Sebastian Dröge
3b4c48d9f5
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1062 >
2023-01-25 10:31:19 +02:00
Arun Raghavan
ad3f1cf534
aws: s3hlssink: Fix the name of the hlssink child element
...
It's easier to set child element properties if the name doesn't depend
on the factory.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1061 >
2023-01-24 18:56:46 +00:00
Sebastian Dröge
2c386fb792
Update for various deprecated APIs
2023-01-22 20:07:26 +02:00
Sebastian Dröge
4582ae91ab
Move remaining plugins to ParamSpec
builders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1054 >
2023-01-21 18:34:55 +02:00
Sebastian Dröge
458b2386ed
Update for glib API changes
2023-01-21 18:13:48 +02:00
Sebastian Dröge
7cfd570c15
onvif: Update for allocation query caps API changes
2023-01-19 16:38:06 +02:00
Sebastian Dröge
812df78b75
webrtcbin: Update for StreamProducer
API changes
2023-01-16 16:36:41 +02:00
Sebastian Dröge
6132788b02
Update for caps/structure-related string API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1048 >
2023-01-15 22:58:44 +02:00
Sebastian Dröge
0c954135a3
aws: Update to AWS SDK 0.53/0.23
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1047 >
2023-01-14 18:58:30 +02:00
Mathieu Duponchelle
1a8abde884
webrtcsink: fix panic on pre-bwe request error
...
We dispose of consumer pipelines asynchronously, potentially after the
session objects have been disposed of.
As session objects are the owner of the cc element, it is entirely
possible for the bwe-request signal to get emitted after cc has been
disposed of, as the closure only takes a weak reference to it.
Fix by simply checking if cc is None
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1044 >
2023-01-11 15:09:45 +00:00
Sebastian Dröge
be72fefb18
reqwest: Update for API changes
2023-01-06 12:52:30 +02:00
Sebastian Dröge
781fd1df9a
aws: Update to test-with 0.9
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1035 >
2023-01-05 12:35:42 +02:00
Sebastian Dröge
27435ad82e
Update for API changes
2023-01-05 12:33:54 +02:00
rajneeshksoni
d846f527af
awss3hlssink: Add stats property.
...
application can monitor the progress of hls segment generation
and upload progress.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1022 >
2023-01-04 12:36:13 +00:00
Philippe Normand
0fd63ece7d
rtpav1depay: Implement srcpad set_caps
...
Without this auto-pluggers such as decodebin or parsebin will be unable to
process AV1 RTP payloads.
Tested with: `videotestsrc num-buffers=50 ! videoconvert ! av1enc ! av1parse ! rtpav1pay ! queue ! decodebin3 ! videoconvert ! queue ! autovideosink`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1034 >
2023-01-03 19:35:45 +02:00
Zhao, Gang
9fa838e366
webrtc: Fix rustfmt errors
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-27 11:12:54 +02:00
Zhao, Gang
877a9bd7f3
webrtc: Share runtime between webrtcsink and signaller crates
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Zhao, Gang
1ffeb4d44d
webrtc: Move from async-std to tokio
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Zhao, Gang
2bc29c1fd3
webrtc: examples: Update package-lock.json
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Sebastian Dröge
4e444a066c
aws: Update to AWS SDK 0.52/0.22
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1020 >
2022-12-18 07:54:30 +00:00
Mathieu Duponchelle
e5360ff431
webrtc/README: update command to run the signalling server
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/277
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1012 >
2022-12-13 12:47:26 +01:00
Sebastian Dröge
3f904553ea
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1011 >
2022-12-13 11:43:16 +02:00
Sebastian Dröge
289e8a08c3
webrtchttp: Remove unnecessary clippy warning override
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1009 >
2022-12-12 14:32:12 +02:00
Sebastian Dröge
fb42cd8a0f
net: Update to async-tungstenite 0.19
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1005 >
2022-12-11 12:54:24 +02:00
Sebastian Dröge
9b964db4c9
whipsink: Handle offer creation errors more gracefully
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:15:55 +02:00
Sebastian Dröge
8452cd9efa
webrtchttp: Fix missing import for docs build
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:10:53 +02:00
Sebastian Dröge
9c31344bbc
webrtchttp: Don't use let-else for now
...
We still support Rust 1.63.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:08:57 +02:00
Sebastian Dröge
5dc52975ff
webrtchttp: Fix formatting
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:07:09 +02:00
Sanchayan Maity
40680a47ab
webrtchttp: Use tokio runtime for spawning thread used for candidate offer
...
While at it, we had a bug in whepsrc where for redirect we were
incorrectly calling initial_post_request instead of do_post. Fix
that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 12:27:07 +05:30
Sanchayan Maity
d18761892e
webrtchttp: Use a proper Rust type name for ICE transport policy
...
We don't need to namespace here but can just use the Rust namespaces.
Only the GType name has to stay like it is.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
2eba3b321e
webrtchttp: Do not import element_imp_error
...
element_imp_error and such macros should not be imported but rather
only be accessed via gst namespace.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
0b1b8b91b9
webrtchttp: Do not block webrtcbin signal handlers for sending candidates
...
While at it, drop the OPTIONS request in WHIP sink. This was not really
required. See section 4.4 of the spec
https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html#name-stun-turn-server-configurat
Also introduce a new error type and distinguish between a future being
aborted or returning an error.
We call abort only during shutdown and hence except for the DELETE
resource request being aborted, other waits on future should not
be fatal.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Alba Mendez
db39370701
webrtchttp: whipsink: construct TURN URL correctly
...
Right now the code manually pieces together the components
in a String for efficiency. When credentials contain special
characters this can result in invalid URLs, so do it the proper
way (with Url::parse + format) to make sure components are escaped
as needed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
9fb058d5bc
webrtchttp: Drop unused dependencies
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
b5daa92c9d
webrtchttp: Implement timeout for waiting on futures
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
cc7419308b
webrtchttp: whipsink: Add candidates when sending the offer
...
WHIP endpoint providers like Cloudflare do not support Trickle ICE
and need candidates to be send along with the initial offer. Instead
of sending the offer in create-offer promise, send it once the ICE
candidates have been gathered.
While at it add properties to set STUN and TURN server along with the
ICE transport policy as at least when testing the Cloudflare WHIP
endpoint seems unreachable without it. This has also been observed
with Cloudflare provided demos.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
b992596236
webrtchttp: whipsink: Miscellaneous clean up
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
b427cb6a3d
webrtchttp: Factor out the common bits for WHIP and WHEP
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Sanchayan Maity
6be5796888
Add a WebRTC WHEP source element
...
This implements WHEP specification based on
https://datatracker.ietf.org/doc/html/draft-murillo-whep-00
and has been tested with Cloudflare.
Server offers are likely to be removed from the WHEP specification
in upcoming revisions, to avoid compatibility issues. None of the
commercial services implementing WHEP support server initiated offers.
So we only support client side initiated offers.
Follows session setup and tear down as covered in Figure 1, Section 3
of the specification.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/949 >
2022-12-05 11:04:45 +05:30
Raphael Dürscheid
aa2abc50bf
webrtcsink: Support nvv4l2vp9enc
...
Naive support for nvv4l2vp9enc by assuming configuration is equivalent
to existing nvv4l2vp8enc. Validated to have relevant properties.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/983 >
2022-12-02 10:18:27 +00:00
Jordan Petridis
821c23e202
net/ndi: fix build with --no-default-features
...
doc_show_default() is only available with gst/v1_18
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/588 >
2022-11-29 21:06:12 +02:00
Vivia Nikolaidou
5bbe0eab25
ndisrc: Use actual number of channels in positions_from_mask
...
Otherwise it fails for mono and stereo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/991 >
2022-11-29 12:19:45 +02:00
Vivia Nikolaidou
73ce616bd9
ndisrc: Use default channel mask for audio output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/988 >
2022-11-28 17:06:07 +02:00
Sebastian Dröge
fceacf7081
Update for gst::Array / gst::List API improvements
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/985 >
2022-11-27 01:12:46 +02:00
Sebastian Dröge
0e2a00cbc8
aws: Update to env_logger 0.10 for the tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/984 >
2022-11-25 11:08:19 +02:00
Sebastian Dröge
456fb276d6
Revert "Update for pango API changes"
...
This reverts commit 6e54d3cea9
.
The change was wrong and the pango bindings work the same as before
again.
2022-11-18 10:58:41 +02:00
Sebastian Dröge
6e54d3cea9
Update for pango API changes
...
pango::Language::from_string() can fail and also can accept None as
argument.
2022-11-18 09:46:50 +02:00
Thibault Saunier
6b11284e8a
webrtcsink: Make the turn-server prop a turn-servers
list
...
So that we can simply specify several turn servers at once
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/973 >
2022-11-16 14:48:16 +00:00
Arun Raghavan
3abd13e57b
aws: s3sink: Treat stopping without EOS as an error for multipart upload
...
This allows us to try to clean up based on configuration (abort /
complete / do nothing) if the pipeline is shut down without an EOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/970 >
2022-11-15 02:28:35 +00:00
Guillaume Desmottes
37cb636140
webrtc: README: fix couple of links
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/975 >
2022-11-11 14:51:46 +01:00
Mathieu Duponchelle
66e7b314f7
webrtcsink: improve debug
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/972 >
2022-11-10 15:00:19 +00:00
Sebastian Dröge
a5f3197651
Add missing doc
features to WebRTC plugins
2022-11-07 18:06:29 +00:00
Jan Beich
9aeaac5a96
ndi: provide Unix fallback after 3fe9e4a207
...
error[E0425]: cannot find value `LIBRARY_NAME` in this scope
--> net/ndi/src/ndisys.rs:336:23
|
336 | path.push(LIBRARY_NAME);
| ^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find value `LIBRARY_NAME` in this scope
--> net/ndi/src/ndisys.rs:339:33
|
339 | path::PathBuf::from(LIBRARY_NAME)
| ^^^^^^^^^^^^ not found in this scope
2022-11-05 02:51:28 +00:00
Arun Raghavan
54c84a7211
aws: Skip s3 test on Windows until we figure out why it times out
2022-11-02 13:14:08 -04:00
Sebastian Dröge
a8250abbf1
Fix various new clippy warnings
2022-11-01 10:27:48 +02:00
Sebastian Dröge
976ae5707e
webrtc: Update to human_bytes 0.4
2022-10-31 14:11:29 +02:00
Sebastian Dröge
6ceeadc0f0
aws: Update to aws 0.21/0.51
2022-10-31 14:11:29 +02:00
Sebastian Dröge
ce166b4d8f
whipsink: Add object to debug logs
2022-10-26 16:20:26 +03:00
Guillaume Desmottes
d46857d3b1
aws: fix title in README
...
The title was not matching the actual plugin name which was confusing.
2022-10-26 11:13:47 +02:00
Sebastian Dröge
bf6bdab80c
webrtc: Remove version requirement from internal crate dependencies
2022-10-24 19:50:24 +03:00
Sebastian Dröge
f2223cf2cb
Update versions to 0.10.0-alpha.1
2022-10-24 19:31:19 +03:00
Sebastian Dröge
b64f951160
Update to async-tungstenite 0.18
2022-10-24 18:03:33 +03:00
Sebastian Dröge
9a68f6e221
Move from imp.instance()
to imp.obj()
...
It's doing the same thing and is shorter.
2022-10-23 23:08:46 +03:00
François Laignel
86776be58c
Remove &
for obj
in log macros
...
This is no longer necessary.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1137
2022-10-23 21:22:31 +02:00
Sebastian Dröge
f045099fc1
Fix GObject type names, GStreamer debug category names and element factory names
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/198
2022-10-23 20:46:08 +03:00
Sebastian Dröge
5d44e0eb3c
rtp: Move GCC bandwidth estimation element from webrtc to rtp plugin
2022-10-23 20:25:08 +03:00
Sebastian Dröge
20ad9175d8
Make GStreamer plugin/crate/library/directory names and descriptions consistent
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/238
2022-10-23 20:25:08 +03:00
Sebastian Dröge
45168639e9
Rename rtpav1 plugin to just rtp
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/243
2022-10-23 20:04:43 +03:00
Sebastian Dröge
f058a5e229
Various minor cleanups
2022-10-22 19:50:24 +03:00
François Laignel
6319d104a8
Take advantage of Into<Option<_>>
args
...
Commit 24b7cfc8
applied changes related to nullability as declared
by gir. One consequence was that some functions signature ended up
requiring users to pass `Some(val)` when they could use `val`
before.
This commit applies changes on `gstreamer-rs` which, will honoring
the nullability stil allow users to pass `val` for the few affected
functions.
This commit also fixes the signature for `Element::request_new_pad`
which was updated upstream.
2022-10-21 11:54:24 +02:00
Sebastian Dröge
7b5d887c5b
onvifmetadatacombiner: On timeout don't wait for metadata to arrive anymore but output the current video frame
...
Otherwise it will be too late downstream.
2022-10-21 07:08:46 +00:00
Sebastian Dröge
09ffeaf04e
onvifmetadatacombiner: Add a lot of trace debug output
2022-10-21 07:08:46 +00:00
Thibault Saunier
5c89c3db69
webrtc: Rename and add to meson build the signalling server
...
The binary was only called `server` it has been renamed to
`gst-webrtc-signalling-server` and is installed in meson.
2022-10-20 18:20:15 +00:00
Thibault Saunier
cbdd3a7f26
webrtc: Enhance documentation
2022-10-20 12:04:43 +00:00
Sebastian Dröge
c0bf05d4bb
webrtc: Minor cleanup
2022-10-20 13:20:32 +03:00
Thibault Saunier
71ed04d89b
webrtc: Rename signaller and protocol crates
2022-10-20 13:32:31 +02:00
Thibault Saunier
25bda89ac8
webrtc: Update an unify rust-version and edition
...
So it all matches the rest of the plugins
2022-10-20 13:32:31 +02:00
Thibault Saunier
4942a916a8
webrtc: Uniformise GType names
2022-10-20 13:32:31 +02:00
Thibault Saunier
37c0239aff
webrtc: Port to new ElementBuilder API
2022-10-20 13:32:31 +02:00
Thibault Saunier
ad78936365
webrtc: Enable more documentation
2022-10-20 13:32:31 +02:00
Thibault Saunier
0f0dec7fa9
webrtc: Fix fmt issues
2022-10-20 11:51:59 +02:00
Thibault Saunier
5ab7be6124
webrtc: Add SDPX license header on every file
2022-10-20 11:51:58 +02:00
Thibault Saunier
39c0dcb0d4
Plug webrtc in
2022-10-20 11:51:58 +02:00
Thibault Saunier
b164daf510
webrtc: Fix clippy issues
2022-10-20 11:51:58 +02:00
Thibault Saunier
87fd49a9bf
webrtc:signalling: Remove short option for 'host' in the cli
...
It clashes with `--help`
2022-10-20 11:51:58 +02:00
Thibault Saunier
eb9d0bb824
Merge 'webrtcsink' from 020c7e2900
2022-10-20 11:51:58 +02:00
Sebastian Dröge
12400b6b87
Update everything for element factory builder API changes
...
And set properties as part of object construction wherever it makes
sense.
2022-10-19 19:43:29 +03:00
Sebastian Dröge
9ce8e93c63
rtpav1pay: Track last known upstream PTS/DTS in case not all OBUs are properly timestamped
2022-10-19 15:42:48 +03:00
Sebastian Dröge
36861edf9a
rtpav1pay: Use a VecDeque
instead of a Vec
for the queued OBUs
...
And use a `Vec` plus offset for consuming partial byte buffers.
Removing the first element from a `Vec` repeatedly is not very cheap.
Also simplify calculation of the current packet by removing a mostly
unused type and keeping track of the calculations always locally instead
of sometimes storing it in the element state.
2022-10-19 15:23:10 +03:00
Sebastian Dröge
24b7cfc841
Update for GStreamer API changes
2022-10-18 19:26:52 +03:00
Arun Raghavan
03b03fe2dd
whipsink: Log error body along with status code when POST fails
2022-10-18 17:01:36 +02:00
Thibault Saunier
5e7537953c
webrtc: Move to net/webrtc
2022-10-18 15:18:53 +02:00
Sanchayan Maity
c63307e6d7
net/webrtc-http: whipsink: Return a proper error message & not panic
...
On a server error, we currently crash and panic. Return a proper error
message instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/914 >
2022-10-18 10:38:57 +00:00
François Laignel
8011eadfd2
Use new format constructors
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1128
2022-10-18 10:36:59 +00:00
Arun Raghavan
e66378d254
aws: Add a test for s3src/s3sink
...
This does rely on AWS credentials being provided in the environment, but
the test will be ignored if those are missing.
2022-10-18 09:51:34 +00:00
Sebastian Dröge
e17688a2da
Update for pango API changes
2022-10-17 20:02:02 +03:00
Vivia Nikolaidou
0ab965335f
onvifmetadataoverlay, cea608overlay: Fix pangocairo::FontMap::new()
...
It doesn't return an Option anymore.
2022-10-14 18:12:33 +03:00
Vivia Nikolaidou
f11b0fa5eb
plugins, examples, tutorials: Use AudioCapsBuilder and VideoCapsBuilder
...
Simplify caps creation code
2022-10-13 19:24:57 +00:00
Sebastian Dröge
862c2af1d9
ndi: Remove unnecessary explicit Send+Sync
impls
...
These are automatically available now.
2022-10-13 17:54:08 +00:00
Vivia Nikolaidou
dbd5a44b90
hlssink3: Use #[cfg(feature = "doc")] on gst::prelude import
...
It otherwise gives a warning about the unused import
2022-10-13 14:22:36 +03:00
Sebastian Dröge
5f19639d0f
ndi: Various code cleanup
2022-10-13 08:52:52 +00:00
Sebastian Dröge
b2ddb34258
onvif: Switch from minidom to xmltree for parsing ONVIF timed metadata
...
minidom doesn't handle various valid but suboptimal XML documents.
2022-10-12 21:00:13 +00:00
Sebastian Dröge
97e0852156
ndi: Add NDI plugin to the docs
2022-10-12 22:25:13 +03:00
Sebastian Dröge
53b02a82ae
ndi: Re-organize code a bit and don't make internal modules public
2022-10-12 22:09:56 +03:00
Sebastian Dröge
0a2e6e47c9
ndi: Silence some more clippy warnings
2022-10-12 22:09:55 +03:00
Sebastian Dröge
db8037d16c
ndi: Update for pad default functions API changes
2022-10-12 22:09:55 +03:00
Sebastian Dröge
3fe9e4a207
ndi: Implement dynamic loading of the NDI SDK
...
And build the plugin on the CI and via meson.
2022-10-12 22:09:53 +03:00
Sebastian Dröge
16c036e2cc
ndi: Make element factory details and debug categories more consistent
2022-10-12 21:29:07 +03:00
Sebastian Dröge
907910329f
ndi: Prefix GType names with Gst
2022-10-12 21:29:07 +03:00
Sebastian Dröge
047f990c78
ndi: Integrate into the build system
2022-10-12 21:29:07 +03:00
Sebastian Dröge
a000432b13
ndi: Relicense plugin from LGPL-2.1 to MPL-2
...
This was agreed to by all previous contributors in writing.
2022-10-12 21:29:07 +03:00
Sebastian Dröge
fb8192f40b
ndi: Remove unnecessary reference-timestamps feature
2022-10-12 21:29:07 +03:00
Vivia Nikolaidou
fedd67dcaa
ndi: Use AudioCapsBuilder and VideoCapsBuilder
...
Simplify caps creation codes
2022-10-12 21:29:07 +03:00
Vivia Nikolaidou
95e8deded9
ndi: Simplify code using ParamSpecBuilder
2022-10-12 21:29:07 +03:00
Vivia Nikolaidou
77a5e35081
ndi: Update to git version of the bindings
2022-10-12 21:29:07 +03:00
Vivia Nikolaidou
18cbb587ba
ndisrcdemux: Add no-more-pads signal
...
Emit no-more-pads if we are adding the second pad of the element.
2022-10-12 21:29:07 +03:00
Sebastian Dröge
1c43a51520
ndisrcdemux: Use ANY caps in the pad templates of ndisrcdemux
...
When using the Advanced SDK it is possible to output compressed formats
too.
2022-10-12 21:29:07 +03:00
Sebastian Dröge
26f843a89f
ndisrc: Fix latency reporting in auto timestamp mode
2022-10-12 21:29:07 +03:00
Sebastian Dröge
9c10ba87df
ndisrc: Improve handling of broken sources with regards to timestamping
...
- NDI HX Camera Android in the past used 1ns instead of 100ns as unit
for timecodes/timestamps.
- NDI HX Camera iOS uses 0 for all timecodes and the same non-zero
value for all audio timestamps
Detect such situations and try to compensate for them. Also add a new
"auto" timestamping mode that prefers to use timecodes and otherwise
falls back to timestamps or receive times.
Fixes https://github.com/teltek/gst-plugin-ndi/issues/79
2022-10-12 21:29:07 +03:00
Sebastian Dröge
a3c752830b
ndisrc: Keep track of audio/video and timestamp/timecode observations separately
...
Audio/video are in practice not always from the same clock and can have
different behaviours with regards to clock rate and jitter. Handling
them separately generally gives better results for the timestamps output
by the source element.
2022-10-12 21:29:07 +03:00
Sebastian Dröge
b82acb9ca9
ndisrc: Remove unnecessary Arc around the timestamp observations and use AtomicRefCell instead of Mutex
2022-10-12 21:29:07 +03:00
Sebastian Dröge
718734ab18
ndi: Fix/silence various clippy warnings
2022-10-12 21:29:07 +03:00
Sebastian Dröge
7a90500fe7
Merge branch 'master' of https://github.com/teltek/gst-plugin-ndi
2022-10-12 21:27:56 +03:00
Sebastian Dröge
e49138516c
Update for pad default functions API changes
2022-10-12 19:50:15 +03:00
Sebastian Dröge
9c540d8abb
Move everything to net/ndi for preparing to merge into gst-plugins-rs
2022-10-12 19:25:32 +03:00