Vivia Nikolaidou
9b1361b538
plugins: Use .into() instead of gst::Fraction::new() where applicable
2022-10-14 18:21:28 +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
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
9b85dcc03b
fmp4mux: Drop GAP buffers before doing ONVIF UTC time re-timestamping
...
GAP buffers won't have the reference timestamp meta.
2022-10-02 09:27:50 +00:00
Sebastian Dröge
36ce8bd4f7
fmp4mux: Implement a better strategy for splitting fragments and deciding which buffers go into which fragment
...
It is now guaranteed that each fragment is at most fragment-duration
long unless the one and only GOP of the fragment is longer than that.
The first (non-EOS) stream determines the duration of each fragment and
all other streams are drained to at most the fragment end timestamp
determined this way.
In addition the next fragment's target time is now at the end of the
previous fragment plus fragment-duration instead of using
first-fragment + N*fragment-duration
regardless of where fragments were split before.
That is, fmp4mux now uses the same strategy as used by splitmuxsink and
as is required e.g. by HLS with regards to the target duration.
2022-10-02 09:27:50 +00:00
Sebastian Dröge
b63627025e
fmp4mux: Split huge drain function into separate functions
2022-09-29 10:40:41 +03:00
Sebastian Dröge
7e13ea4ba9
fmp4mux: Drop gap buffers before further processing
...
They would potentially change timestamps and will break in ONVIF mode.
2022-09-16 14:54:33 +03: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
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
84f6484140
fmp4mux: Consider invalid running times as zero and before anything else
...
The code tried to do this before but didn't consider the case where the
first pad has a valid running time, in which case the buffer with the
invalid running time would never be dequeued and the muxer would never
output anything.
2022-08-22 15:20:10 +03:00
Sebastian Dröge
2c99f66ea5
fmp4mux: Dequeue the earliest buffer from any pad first instead of dequeueing up to a whole fragment from the same pad
...
This keeps the fill levels of each sinkpad in sync.
2022-08-17 19:23:18 +03:00
Sebastian Dröge
b464e74d41
fmp4mux: Require parsed ONVIF timed metadata
2022-08-12 18:51:26 +03:00
Sebastian Dröge
e4081872c5
fmp4mux: Use UTC times from reference timestamp meta in ONVIF mode
2022-08-12 18:51:26 +03:00
Sebastian Dröge
5376596557
fmp4mux: Write ONVIF Export File Format CorrectStartTime box for ONVIF variant
2022-08-12 18:51:06 +03:00
Sebastian Dröge
ef7ed2d953
fmp4mux: Remove obsolete #[allow(clippy::too_many_arguments)]
2022-08-12 10:06:10 +03:00
Sebastian Dröge
d058c96596
fmp4: Update to m3u8-rs 5
2022-08-09 13:40:39 +00:00
François Laignel
18f85a1543
generic/fmp4: use opt_ops
2022-07-20 15:56:04 +00:00
François Laignel
6a2df92453
Revert "fmp4mux: Dequeue as many buffers as are available in each aggregate call"
...
This reverts commit 402500f79c
.
This commit introduces race conditions. It was intended as solving
an issue with some pipelines which had their queues filling up,
causing the streams to stall. It is reverted as this solution is
considered a workaround for another issue.
See discussion in:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/803
2022-07-20 15:56:04 +00:00
François Laignel
44b05b4285
generic/fmp4: update Signed return type
...
See: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1068
2022-07-19 15:40:43 +02:00
François Laignel
5c5c15d36a
Simplify Formatted value handling
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1059
2022-07-11 21:21:54 +02:00
Sebastian Dröge
8e90abfebb
fmp4mux: Handle PTS<segment.start when requesting keyframes
2022-06-30 16:51:03 +03:00
Sebastian Dröge
e52d1fa317
fmp4mux: Ensure that DTS (or PTS for intra-only streams) are monotonically increasing
2022-06-30 16:51:03 +03:00
Sebastian Dröge
402500f79c
fmp4mux: Dequeue as many buffers as are available in each aggregate call
2022-06-30 16:51:03 +03:00
Sebastian Dröge
7e2cf613b4
fmp4mux: Add debug output for each fragment's start PTS
2022-06-30 16:51:03 +03:00
Sebastian Dröge
3d7a38f7d4
fmp4mux: Fix draining if there are no GOPs for a stream
2022-06-30 16:51:03 +03:00
Sebastian Dröge
a1553a8411
fmp4mux: Fix some clippy warnings
2022-06-30 16:51:03 +03:00
Sebastian Dröge
191a48ca41
fmp4mux: Write header as late as possible
...
Especially do it only after the initial fragment's information are all
known.
2022-06-30 16:51:03 +03:00
Sebastian Dröge
4ef0e26762
fmp4mux: Refactor timestamp handling for writing out data
...
Pass less data around and calculate the values we need to work with
earlier.
2022-06-30 16:50:59 +03:00
Sebastian Dröge
0a02d8c096
fmp4mux: Write tref
box for ONVIF timed metadata tracks to reference the first video track
2022-06-30 16:35:56 +03:00
Sebastian Dröge
6edb188899
fmp4mux: Fix usage of first_sample_flags/default_sample_flags
...
Previously first_sample_flags was never used so if the first sample was
a keyframe and all others not then each sample got its own flags.
2022-06-30 16:35:56 +03:00
Sebastian Dröge
51c7d0652e
Fix/silence a couple new clippy warnings
2022-06-30 16:07:32 +03:00
Sebastian Dröge
d6fa921822
fmp4mux: Use saturing_sub() in more places
...
On unclean input, PTS/DTS might go backwards a bit and in those cases
calculate a duration of 0 instead of panicking.
2022-05-20 15:03:06 +03:00
Sebastian Dröge
6bca5a9962
fmp4mux: Implement interleaving based on start timestamps instead of accumulated durations
...
Durations might accumulate rounding errors and streams might not
actually start at the same time. For that reason also start with the
stream that has the lowest timestamp.
2022-05-20 15:03:06 +03:00
Sebastian Dröge
d7bd4c1c93
fmp4mux: Implement handling of GAP events
2022-05-20 15:03:04 +03:00
Sebastian Dröge
987e4efc02
fmp4mux: In live pipelines use the current fragment end time as timeout
...
This allows muxing even if some streams are sparse or have big gaps.
2022-05-20 15:02:46 +03:00
Sebastian Dröge
ffea0e2d2d
fmp4mux: Add support for ONVIF timed XML metadata
2022-05-19 17:55:07 +03:00
Sebastian Dröge
e4634ca2fe
fmp4mux: Add ONVIF variant with support for additional codecs
...
This variant supports H264/5, JPEG, alaw, mulaw and G726.
2022-05-19 17:55:07 +03:00
Sebastian Dröge
0206178279
fmp4mux: Check for force-keyunit events on both pads in the multistream test
2022-05-19 17:55:07 +03:00
Sebastian Dröge
4bc0ae09fa
fmp4mux: Use saturing subtraction to calculate sample durations
...
PTS/DTS might go backwards if the input is borderline broken but that
shouldn't cause a panic.
2022-05-13 10:54:23 +00:00
Sebastian Dröge
cfb59100d6
fmp4mux: Add test for muxing of multiple streams
2022-05-12 18:31:02 +03:00
Sebastian Dröge
e06665b92d
fmp4mux: Add support for multiple input streams
2022-05-12 18:31:02 +03:00
Sebastian Dröge
31a32a7e2e
fmp4mux: Add support for writing out multiple tracks in the serialization code
...
Not yet exposed from the element.
2022-05-12 18:31:02 +03:00
Sebastian Dröge
c09b7b9e41
fmp4mux: Port to aggregator as base class as preparation for supporting multiple streams
2022-05-12 18:31:02 +03:00
Sebastian Dröge
23cc00ce4b
fmp4mux: Write sample flags in tfhd
if there's only a single sample
...
Instead of declaring them to be in the `tfhd` but not writing them into
the `tfhd` but also not the `trun`.
2022-05-12 18:31:02 +03:00
Julien Vary
f908cbaffd
fmp4mux: adding headers when data resumes after EOS
2022-04-28 11:39:55 -04:00