Commit graph

239 commits

Author SHA1 Message Date
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