Commit graph

2377 commits

Author SHA1 Message Date
Sebastian Dröge e17688a2da Update for pango API changes 2022-10-17 20:02:02 +03:00
Guillaume Desmottes 676b061af3 textahead: fix pango markup URL
The old one no longer works.
2022-10-17 14:47:52 +02:00
Jan Beich 6da4192fe6 meson: optionalize pango dependency used by video/videofx
Similar to -Dcairo=<auto|enabled|disabled> in gst-plugins-good.
2022-10-15 23:41:09 +00:00
Vivia Nikolaidou b688326383 audio: Use channel_mask() for AudioCapsBuilder 2022-10-14 18:21:28 +03:00
Vivia Nikolaidou 9b1361b538 plugins: Use .into() instead of gst::Fraction::new() where applicable 2022-10-14 18:21:28 +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 2bffdec691 ts: better use of imp & elem args in Pad{Sink,Src}Handlers
This is a follow-up to commit 7ee4afac.

This commit cleans up the `Pad{Sink,Src}Handler` by

- Keeping arguments which are strictly necessary.
- Passing arguments by value for the trait functions which return
  a `Future`. The arguments which were previously passed by reference
  were `clone`d internally and then `clone`d again in most
  implementations.

There are unfortunate differences in trait function signatures
between those which return a `Future` and the sync functions. This
is due to the requirement for the arguments to be moved to the
resulting `Future`, whereas sync functions can rely on references.
One particular notable difference is the use of the `imp` in sync
functions instead of the `elem` in functions returning a `Future`.
Because the `imp` is not guaranteed to implement `Clone`, we can't
move it to the resulting `Future`, so the `elem` is used.
2022-10-12 12:35:20 +02:00
Thibault Saunier f4692cb1dd gcc: Ignore errors pausing task
We can't do much about it at this point

Fixes https://github.com/centricular/webrtcsink/issues/110
2022-10-11 17:39:38 +02: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
Mathieu Duponchelle e110847ede Relicense from MIT to MPL-2.0
Fixes #107
2022-10-11 08:07:47 +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
Seungha Yang b1b707008f jsontovtt: Print object information to debug message
Use GST_*_OBJECT() variant debug printing method whenever possible
2022-10-10 22:28:30 +09:00
Seungha Yang 3d317b976e jsontovtt: Add timeout property
As described in the spec D.4 Automatic Caption Blanking,
allows automatic clear if user specified timeout value
2022-10-10 22:16:15 +09:00
Sebastian Dröge 6e7ebc30e0 Revert "rav1e: Pin v_frame dependency to version 0.2.5 for now"
This reverts commit f85321ce9f.

Versio 0.2.6, which broke API, was yanked and released as 0.3 so this is
all working fine again.
2022-10-10 15:45:51 +03: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
François Laignel 7818ac658b Use GFV::none_for_format where applicable 2022-10-08 18:29:10 +02:00
Sebastian Dröge 4c57a97d4d Update for glib::Object::new() API changes 2022-10-07 23:54:53 +03:00
Mathieu Duponchelle 9a345f9c6f webrtcsink: don't hold settings lock while negotiating 2022-10-07 21:08:00 +02:00
Mathieu Duponchelle f82a731b3a webrtcsink: fix deadlock on encoder setup
Refactor connect_input_stream in order to avoid an ABBA deadlock
altogether: where in other spots we lock settings then state, here we
were emitting encoder-setup with state held, then locking settings in
the default handler.

We could have changed the locking order in the other spots, but instead
we can also just release the state lock when emitting the signal, which
is good practice.

Fixes #108
2022-10-07 21:08:00 +02:00
Sebastian Dröge 0b13bfe9dc fallbacksrc: Always restart the fallback stream on EOS and make sure to EOS all streams if the main stream is EOS 2022-10-05 19:13:36 +03:00
Sebastian Dröge 9719b055c5 fallbacksrc: Retry fallback stream on errors too
It was retrying but then nonetheless handling the error as fatal.
2022-10-04 16:31:09 +00:00
Sebastian Dröge f85321ce9f rav1e: Pin v_frame dependency to version 0.2.5 for now
See https://github.com/rust-av/v_frame/issues/1
2022-10-04 19:12:59 +03:00