Commit graph

46 commits

Author SHA1 Message Date
Sebastian Dröge
09ffeaf04e onvifmetadatacombiner: Add a lot of trace debug output 2022-10-21 07:08:46 +00:00
Sebastian Dröge
24b7cfc841 Update for GStreamer API changes 2022-10-18 19:26:52 +03: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
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
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
e49138516c Update for pad default functions API changes 2022-10-12 19:50:15 +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
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
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
caefa6d33e net/onvif: update with new gst::Signed features 2022-09-21 17:45:22 +00: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
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
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
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
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
Vivia Nikolaidou
5606111345 plugins: Simplify code using ParamSpecBuilder 2022-08-22 17:58:43 +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
42b6c32f34 onvif: Update to minidom 0.15 2022-07-18 11:21:04 +03:00
Sebastian Dröge
51c7d0652e Fix/silence a couple new clippy warnings 2022-06-30 16:07:32 +03:00
Mathieu Duponchelle
20d2a7d05b onvifoverlay: render polygons when present 2022-06-15 14:32:48 +00:00
Sebastian Dröge
dfa5b9d8bb onvifaggregator: Add support for UNIX reference timestamp metadata
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/780>
2022-06-14 23:44:00 +02:00
Sebastian Dröge
939f37dec5 onvif: Disable default features for the chrono dependency
We don't need all those.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/780>
2022-06-14 23:43:47 +02:00
Mathieu Duponchelle
ab01fc6143 onvifaggregator: refactor to support duration-less media buffers
For instance when dealing with a variable framerate media stream,
input media buffers may not hold a duration, in which case we try
to calculate one by waiting for the following buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/765>
2022-05-25 17:35:04 +00:00
Mathieu Duponchelle
77260a8442 onvifaggregator: implement proper EOS support
We could otherwise busy loop in aggregate forever when the meta
sink pad received EOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/765>
2022-05-25 17:35:04 +00:00
Sebastian Dröge
dcad6ffe34 rtponvifdepay: Set caps on the source pad
The RTP depayloader base class does not take care of this in any way and
it has to be done manually.
2022-05-13 13:34:30 +03:00
Mathieu Duponchelle
7425b31173 onvifaggregator: always push current media buffer on timeout
Even when aggregator.meta_frames is empty

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/751>
2022-05-10 14:35:50 +00:00
Sebastian Dröge
92c66be943 onvifaggregator: Update for minor PadTemplate API changes
`PadTemplate::caps()` returns a reference to the caps now instead of a
new strong reference, so keeping the template in scope as long as the
caps reference is required.
2022-05-08 13:31:03 +03:00
Mathieu Duponchelle
a4a5caec53 net/onvif: implement ONVIF metadata processing elements
- RTP payloader and depayloader

- Aggregator to pair per-frame metadata with media frames

- Overlay to render detected shapes
2022-05-06 11:17:04 +03:00