Seungha Yang
365dcfa730
fmp4mux: Ignore framerate update
...
like mp4mux in -good does already
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1098 >
2023-02-21 16:17:52 +02:00
Sebastian Dröge
eb3d3b3088
Update versions to 0.9.9
2023-02-09 22:08:17 +02:00
Sebastian Dröge
58a6dbacca
fmp4mux: Pass one more buffer in test_buffer_multi_stream_short_gops test
...
This works around non-determinism in aggregator where depending on
timing it can happen that it consumes all buffers from both pads or
waits for another buffer on one pad while the other one already has one.
The effect in this test was that it sometimes timed out. By providing
one more buffer it is guaranteed now that at this point the muxer is
beyond the end of the first fragment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:43:57 +02:00
Sebastian Dröge
e52bb160c7
fmp4mux: Accept more data on already filled streams if the remaining streams need more data for finishing a GOP
...
In other words, continue queueing buffers in sync from all streams until
all of them are ready for draining instead of stopping to queue buffers
on every stream that is already filled individually.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/310
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:43:57 +02:00
Sebastian Dröge
da7743d2e7
fmp4mux: Handle GOPs ending after the desired fragment end correctly
...
Either create further chunks if enough data is queued or simply start
the new fragment at a later time if the keyframe is later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:17:51 +02:00
Sebastian Dröge
a65feb7ef9
fmp4: Add support for AV1
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:16:40 +02:00
Sebastian Dröge
1029669427
fmp4: Add support for VP8
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:15:50 +02:00
Sebastian Dröge
68bec4a0db
fmp4mux: Fix a couple of assertions by handling these cases cleaner
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:06:56 +02:00
Sebastian Dröge
adbb8b6495
fmp4mux: Refactor and clean up code
...
Split many longer functions into multiple functions and simplify various
parts. Overall this is functionally still the same as before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:06:56 +02:00
Sebastian Dröge
a01437b675
fmp4mux: Add support for sub-fragments / chunking
...
Allow outputting sub-fragments (chunks in CMAF terms) that are shorter
than the fragment duration and don't usually start on a keyframe. By
this the buffering requirements of the element is reduced to one chunk
duration, as is the latency.
This is used for formats like low-latency / LL-HLS and DASH.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:06:56 +02:00
Guillaume Desmottes
b9e203d6c1
fmp4mux: add 'offset-to-zero' property
...
Add it only to 'isofmp4mux', the onvif variant already does this and
CMAF and DASH are always single-stream so you rely on inter-container
synchronization via the running-time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:06:08 +02:00
Sebastian Dröge
4eeb8ffb63
fmp4mux: Don't write the first sample flags into any trun but the first
...
The flags are based on the first sample of this fragment so writing it
into any trun but the first is not very useful.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:05:48 +02:00
Sebastian Dröge
01aa9380d4
fmp4mux: Fix decision whether per-sample flags are needed in the trun
...
Previously it would never use per-sample flags if any later sample
needed different flags than the first two.
Also comment the code a bit better.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1086 >
2023-02-09 21:05:40 +02:00
Sebastian Dröge
5c2582d105
Update version to 0.9.8
2023-01-23 11:30:27 +02:00
Sebastian Dröge
4ba452dcc3
Update versions to 0.9.7
2023-01-19 19:06:43 +02:00
Sebastian Dröge
c818a575b4
Update versions to 0.9.6
2023-01-18 17:19:17 +02:00
Sebastian Dröge
2a8a90f76f
Update versions to 0.9.5
2023-01-07 16:06:17 +02:00
Sebastian Dröge
85a03f5ff0
fmp4mux: Remove obsolete comment
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1038 >
2023-01-07 13:25:44 +02:00
Sebastian Dröge
b0bd55c4d2
Update versions to 0.9.4
2022-12-27 13:14:59 +02:00
Johan Bjäreholt
d9d5571641
fmp4mux: Only push fragment_offset if write_mfra is true
...
This is done so that the fragment_offset vector does not infinitely
build up when write_mfra is disabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1027 >
2022-12-27 12:39:56 +02:00
Sebastian Dröge
bae5294e8f
Update versions to 0.9.3
2022-12-16 20:22:17 +02:00
Sebastian Dröge
fb745f077b
fmp4mux: Skip gap buffers earlier to consider them for the sample durations and fragment start durations
...
Otherwise dropping the gap buffers would offset the timestamps of
following samples.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1017 >
2022-12-16 18:59:32 +02:00
Sebastian Dröge
b4185134d1
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1017 >
2022-12-16 18:51:00 +02:00
Jordan Petridis
b8d2d98027
mux/{mp4, fmp4}: Hard depend on feature v1_18
...
Else --no-default-features was failing to compile.
v1_18 is needed to for the aggregator code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1008 >
2022-12-12 13:32:02 +02:00
Sebastian Dröge
a7c75f8066
fmp4mux: Crank clock for the first fragment in more tests
...
Due to how aggregator works, it depends on how buffers are pulled
whether aggregate() is called again or it is waiting for a timeout or EOS:
works:
- pad 1: 4 buffers, pad 2: 4 buffers
- aggregate ready: take all 4/4 buffers
- pad 1: 1 buffers, pad 2: 1 buffer
- aggregate ready: take all 1/1 buffers
waits:
- pad 1: 5 buffers, pad 2: 4 buffers
- aggregate ready: take all 5/4 buffers
- pad 1: 0 buffers, pad 2: 1 buffer
- aggregate not ready: waiting for timeout or EOS
Also don't manually set the clock time as that's unnecessary.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/274
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/999 >
2022-12-05 00:47:51 +00:00
Sebastian Dröge
1f4a035dc0
Update versions to 0.9.2
2022-11-28 11:44:33 +02:00
Sebastian Dröge
93ba677b18
fmp4mux: Handle EOS correctly if it happens before a fragment start time was determined
...
Whatever earliest time we have at that point is going to be the start
time.
Also handle the case correctly where all inputs are EOS before any
buffers were received at all.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/270
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/986 >
2022-11-27 20:52:30 +02:00
Sebastian Dröge
9491c77540
fmp4mux: For video with N/1001 framerates use N as timescale
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3049
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/986 >
2022-11-27 20:51:48 +02:00
Sebastian Dröge
6c15bba592
fmp4mux: Re-work buffer dequeueing and calculations of timestamps
...
Especially simplify calculation of ONVIF UTC times. As a side-effect
this reduces the number of times the running times of a buffer are
calculated, and also causes streams to be interleaved correctly in ONVIF
mode if there is a non-constant UTC-to-running-time difference.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/986 >
2022-11-27 20:51:48 +02:00
Sebastian Dröge
e434fd19ca
Update versions to 0.9.1
2022-11-13 20:23:47 +02:00
Sebastian Dröge
43ac186e69
fmp4mux: Make media/trak timescales configurable
...
And refactor a bit of code for easier extensibility.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977 >
2022-11-12 15:52:50 +00:00
Sebastian Dröge
4556657602
fmp4mux: Don't allow VP9 for CMAF
...
This would require setting the correct compatible band for VP9 in CMAF,
which is not implemented yet.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977 >
2022-11-12 15:52:49 +00:00
Sebastian Dröge
cb5a956ee7
fmp4mux: Add initial Opus support
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/239
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977 >
2022-11-12 15:52:49 +00:00
Sebastian Dröge
07f3b0f504
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977 >
2022-11-12 15:52:49 +00:00
Sebastian Dröge
8dc22d3bf1
fmp4mux: For VP9, write resolution into the tkhd and include a stss box to signal that not all frames are sync samples
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977 >
2022-11-12 15:52:49 +00:00
Sebastian Dröge
2b6d87cf66
fmp4mux: Remove unused uuid dependency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/977 >
2022-11-12 15:52:49 +00:00
Sebastian Dröge
8e2a6500aa
fmp4mux: Clip negative PTS to zero/last PTS instead of erroring out
...
This can happen at the beginning of a stream if upstream is
rtpjitterbuffer and it has problems figuring out timestamps in the
beginning due to resetting / skew.
2022-10-27 15:35:17 +03:00
Sebastian Dröge
e268577994
fmp4mux: Send force-keyunit events for now if the ideal position has already passed
2022-10-27 15:35:17 +03:00
Sebastian Dröge
f2a6a8d3de
fmp4mux: Add debug log when writing the mfra box
2022-10-27 15:35:17 +03:00
Sebastian Dröge
51ff099221
fmp4mux: Reset timing infos to None if a stream only contained gap events for a whole fragment
2022-10-27 15:35:17 +03:00
Sebastian Dröge
eefa8540ba
fmp4mux: If a stream is longer than the main stream at EOS, simply include all of its buffers in the last fragment nonetheless
2022-10-27 15:35:17 +03:00
Matthew Waters
32d2372e90
fmp4mux: don't require dts for predictive-only formats like vp9
2022-10-27 15:34:52 +03:00
Matthew Waters
a54318fbb4
fmp4: add support for muxing VP9 streams in cmaf, dash and iso fmp4
...
As specified in https://www.webmproject.org/vp9/mp4/
2022-10-27 15:34:32 +03:00
Sebastian Dröge
ba5270d30a
Update to release versions of gtk-rs and gstreamer-rs
2022-10-24 19:28:41 +03:00
Sebastian Dröge
2ff40142db
Update versions to 0.9.0
2022-10-24 18:25:05 +03:00
Sebastian Dröge
9a68f6e221
Move from imp.instance()
to imp.obj()
...
It's doing the same thing and is shorter.
2022-10-23 23:08:46 +03:00
François Laignel
86776be58c
Remove &
for obj
in log macros
...
This is no longer necessary.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1137
2022-10-23 21:22:31 +02:00
Sebastian Dröge
211cd095d6
Add new mux subdirectory for container formats
...
Contains the (incomplete) flavors FLV demuxer and the fragmented MP4
muxer for now.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/173
2022-10-23 20:25:08 +03:00