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
François Laignel
bc5b51687d
fix formatted values constructors
...
In restrospect, building formatted values using operations on the
`ONE` constant doesn't seem idiomatic. This commit uses new panicking
constructors instead.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1122
2022-10-11 15:06:53 +02:00
François Laignel
bd14e476f1
Fix direct access to the inner specific formatted values
...
This is no longer available as this could lead to building a defined
value in Rust which could be interpreted as undefined in C due to
the sentinel `u64::MAX` for `None`.
Use the constants (e.g. `ONE`, `K`, `M`, ...) and operations to build
a value and deref (`*`) to get the quantity as an integer.
2022-10-10 19:28:13 +02:00
Sebastian Dröge
7ee4afacf4
Change *Impl trait methods to only take &self and not Self::Type in addition
2022-10-10 15:03:25 +03:00
Sebastian Dröge
4c57a97d4d
Update for glib::Object::new() API changes
2022-10-07 23:54:53 +03:00
Nirbheek Chauhan
1d4d3e4cb0
build: Update versions to be 0.9.0-alpha.1
...
0.9.0 is the next release, so we can't name things that already.
Also the version in meson.build was 0.13.0, which is completely wrong.
2022-10-04 21:27:23 +05:30
Sebastian Dröge
8601562efe
onvif: Fix for gst::meta::CustomMeta::register()
API change
2022-09-29 17:48:27 +03:00
Sebastian Dröge
0b81ed2e34
rtpav1: Use GStreamer types by namespace instead of importing dozens of types directly into the scope
...
For consistency with other plugins and to reduce confusion of where
types actually come from.
2022-09-28 08:14:07 +00:00
Sebastian Dröge
5774d9c9ee
rtpav1: Reset state on FlushStop/Eos in all conditions and reset all of the state
2022-09-28 08:14:07 +00:00
Sebastian Dröge
d6ab55c263
onvifmetadataparse: Schedule EOS events after the last currently queued up frame
...
Otherwise EOS might be sent before the last frame's data, or even at a
much earlier frame due to reordering.
2022-09-27 11:43:54 +00:00
Sebastian Dröge
f0b2df49dc
onvifmetadataparse: Handle negative running times in debug output
2022-09-27 11:43:54 +00:00
Sebastian Dröge
692a063528
onvifmetadataparse: Refactor clock/condvar waiting
...
Always first try draining queued data in the loop and only start waiting
if there's nothing to drain right now. Otherwise data might have to be
drained right now but we still wait and nothing is ever waking up the
source pad task again.
Also make sure to not wait multiple times on the same gst::ClockId but
instead unset it after waiting on it and no new one was scheduled in the
meantime. Future waits on the same ClockId will immediately return and
instead we should wait on the condvar if no new ClockId is available.
2022-09-23 13:26:15 +03:00
Sebastian Dröge
c4d2f4a60a
onvifmetadataparse: Start source pad task on StreamStart if needed
...
Otherwise receiving StreamStart after Eos might keep the source pad task
paused and no new data is ever pushed downstream.
2022-09-23 13:26:15 +03:00
François Laignel
0b7259afac
Fixes for removal of SpecificFormattedValues ops on ref
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/874 >
2022-09-22 12:18:49 +02:00
François Laignel
caefa6d33e
net/onvif: update with new gst::Signed
features
2022-09-21 17:45:22 +00:00
Sebastian Dröge
c32f0ca12e
rtpav1: Specify version helper dependency by path
...
It's in the same repository after all.
2022-09-21 11:17:44 +03:00
Sebastian Dröge
6a10728d94
aws: Update to aws 0.48/0.18
2022-09-21 11:17:44 +03:00
Sebastian Dröge
1fa39d0ab4
onvifmetadatacombiner: Drop gap metadata buffers
...
They won't have a reference timestamp metadata set and are not useful
for further processing.
2022-09-16 14:54:33 +03:00
Sebastian Dröge
f2893aae0b
onvifmetadataparse: Simplify some code
2022-09-16 14:54:33 +03:00
Sebastian Dröge
49602e1e01
onvifmetadataparse: Drop initial buffers until an UTC/running time mapping can be established
2022-09-16 14:54:33 +03:00
Sebastian Dröge
c6d8fec18f
onvifmetadataparse: Drop initial buffers if their UTC time would be negative
2022-09-16 14:54:33 +03:00
Sebastian Dröge
28151f2011
onvifmetadataparse: Push buffers from a separate source pad task to guarantee latency and generally improve correctness
2022-09-16 14:54:33 +03:00
Sebastian Dröge
18f3edd3ee
Add missing Since markers to new plugins
2022-09-15 09:40:53 +03:00
rajneeshksoni
45962eca1c
s3sink, s3src: Max 1 (re)try when retry-duration < request_timeout.
...
When retry-duration is less than request_timeout, only 1 try
is attempted.
2022-09-13 08:02:54 +00:00
rajneeshksoni
62f76e1e8b
s3sink: Dont set call_timeout,call_attempt_timeout is enough with retry.
...
When call_timeout is triggered, request will fail
irrespective of the retry setting. call_timeout define
max time request can take along with retry.
It can be solved by either setting call_timeout to
retry * call_attempt_timeout or not setting the call_timeout.
As per thread call_attempt and rety setting is enough.
https://github.com/awslabs/aws-sdk-rust/issues/558
2022-09-13 08:02:54 +00:00
Sebastian Dröge
cc0ef5290f
rtpav1depay: Don't unnecessary map RTP payload a second time
...
`RTPBuffer` already has it mapped internally and can give direct access
to it as byte slice.
2022-09-12 18:14:39 +03:00
Sebastian Dröge
7edc9e656f
rtpav1pay: Don't push buffers downstream while holding mutexes
...
And also push all packets that can be generated as a time as a single
buffer list instead of one by one.
2022-09-12 18:14:39 +03:00
Sebastian Dröge
f9a8e121e1
rtpav1: Remove some unneeded lifetime annotations
2022-09-12 18:14:39 +03:00
Vivienne Watermeier
8d73b5008a
Add RTP de/payloader elements for AV1
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/881
2022-09-12 18:14:39 +03:00
Thibault Saunier
528bbcf67e
onvifmetadatacombiner: Do not classify as Muxer
...
It confuses `encodebin` and technically it is not really a muxer so
as agreed on IRC, I am proposing to remove that classification.
2022-09-09 10:01:12 +03:00
Mathieu Duponchelle
419cc03133
awstranscriber: only set vocabulary filter when vocabulary is set
...
AWS otherwise refuses to start the transcription.
2022-09-09 06:53:54 +00:00
Mathieu Duponchelle
72b659b3ea
awstranscriber: fix set_property for language-code
2022-09-09 06:53:54 +00:00
Sebastian Dröge
1a40186485
Update for GLib ParamSpec builder API changes
2022-09-05 11:45:47 +03:00
Sebastian Dröge
46dddaf31c
Update minimum supported Rust version to 1.63
2022-09-04 21:31:55 +03:00
Xavier Claessens
16f9c37c71
Fix missing pkgconfig requires
2022-09-02 22:00:57 +00:00
Taruntej Kanakamalla
67e9ba8286
whipsink: A GstBin implementation for WHIP
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1410
Created a new plugin 'webrtchttp' to implement all the
WebRTC HTTP protocols under /net/webrtc-http directory.
WhipSink wraps around 'webrtcbin' with HTTP capabilites
to exchange SDP offer/answer so an ICE/DTLS session can
be established between the encoder/media producer (WHIP client)
and the broadcasting ingestion endpoint (Media Server).
Once the ICE/DTLS session is set up, the media will
flow unidirectionally from the WHIP client to the
broadcasting ingestion endpoint (Media Server).
Spec:
https://www.ietf.org/archive/id/draft-ietf-wish-whip-04.html
2022-09-03 00:18:59 +03:00
Sebastian Dröge
827099d22d
aws: Update to aws 0.18/0.48
2022-09-02 10:46:02 +03:00
Sebastian Dröge
cb339c1bf8
onvifmetadataparse: Pass through other XML as is with the UTC times based on the buffer PTSs
2022-08-31 10:33:16 +00:00
Sebastian Dröge
420f36251a
onvif: Rename onvif(de)pay to rtponvifmetadata(de)pay and include the metadata specifier in the other element names too
...
This is more descriptive and avoids any future conflicts with other
kinds of ONVIF specific RTP (de)payloaders.
2022-08-31 13:00:53 +03:00
Thibault Saunier
16d804e761
doc: Mark request::user-agent as doc show default
2022-08-29 18:33:22 -04:00
Thibault Saunier
67e651f57c
Allow "unused_doc_comments" as we use hotdoc and not rustdoc
2022-08-29 18:33:22 -04:00
Thibault Saunier
31a53bba8a
Generate plugins documentation using hotdoc
...
Which will automatically be integrated in gstreamer documentation
2022-08-29 18:33:22 -04:00
Mathieu Duponchelle
052092cd2e
onvifmetadata: removing encoding field
...
The encoding of ONVIF metadata is always UTF-8. ONVIF metadata may
or may not be encoded with gzip, but we don't see a use case for
transporting compressed ONVIF metadata between elements for now.
2022-08-24 08:57:12 +00:00
Arun Raghavan
56e7a2f6ab
aws: Document the s3hlssink element in README
2022-08-23 06:19:39 -04:00
Vivia Nikolaidou
5606111345
plugins: Simplify code using ParamSpecBuilder
2022-08-22 17:58:43 +03:00
Sebastian Dröge
374bb8323f
Fix build after glib SignalBuilder::param_types() API change
2022-08-17 23:37:39 +03:00
Sebastian Dröge
9827406113
onvifmetadataparse: Use NTP reference timestamp meta
...
The times are in the NTP epoch.
2022-08-16 15:51:32 +03:00
Sebastian Dröge
be56991b73
onvifmetadataparse: use NTP epoch everywhere instead of mixing UNIX/NTP epochs
2022-08-16 14:14:24 +03:00
Mathieu Duponchelle
3011764da1
onvifaggregator: refactor, expect parsed metadata
...
The aggregator was consuming meta buffers too greedily, causing
potential interleaving starvation upstream. Refactor to consume
media and meta buffers synchronously
Also expect parsed=true metadata caps (requiring an upstream
onvifmetadataparse element).
2022-08-16 12:28:52 +03:00
Sebastian Dröge
837126be76
onvifmetadataparse: Only define the namespace prefix once for the top-level element
2022-08-12 22:35:40 +03:00
Sebastian Dröge
2b61d51e91
Remove unnecessary unsafe
blocks for Buffer::as_ptr()
2022-08-12 18:12:22 +03:00
Sebastian Dröge
35b42b88d9
onvif: Add onvifmetadataparse element
...
This splits XML metadata into separate frames and ensures properly
timestamped metadata.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/781 >
2022-08-12 14:00:27 +00:00
Sebastian Dröge
05207cafea
raptorq: Derive Eq
for some more structs
...
warning: you are deriving `PartialEq` and can implement `Eq`
--> net/raptorq/src/fecscheme.rs:13:24
|
13 | #[derive(Clone, Debug, PartialEq)]
| ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq`
|
= note: `#[warn(clippy::derive_partial_eq_without_eq)]` on by default
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq
warning: you are deriving `PartialEq` and can implement `Eq`
--> net/raptorq/src/fecscheme.rs:38:24
|
38 | #[derive(Clone, Debug, PartialEq)]
| ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq
2022-08-09 13:40:39 +00:00