Johan Bjäreholt
71c268da14
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/1023 >
2022-12-22 10:31:27 +01:00
Sebastian Dröge
13b6f8fad4
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/1016 >
2022-12-16 17:43:44 +02:00
Sebastian Dröge
3f904553ea
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1011 >
2022-12-13 11:43:16 +02:00
Sebastian Dröge
3172bcd095
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/998 >
2022-12-03 18:21:19 +00:00
Jordan Petridis
a84eeeb240
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/588 >
2022-11-29 21:06:12 +02:00
Sebastian Dröge
1fcbc346bc
fmp4mux: examples: Avoid unnecessary caps copies
2022-11-22 10:39:47 +02:00
Sebastian Dröge
6b3bb2c747
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/982 >
2022-11-19 19:24:43 +02:00
Sebastian Dröge
e3f645af19
fmp4mux: Don't overflow negative composition offset calculation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/982 >
2022-11-19 19:24:04 +02:00
Sebastian Dröge
fd910cb828
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/981 >
2022-11-18 16:07:11 +02:00
Sebastian Dröge
c553ac7402
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/979 >
2022-11-18 15:00:00 +02:00
Sebastian Dröge
f062b7cf0d
fmp4mux: Make media/trak timescales configurable
...
And refactor a bit of code for easier extensibility.
2022-11-07 18:06:29 +00:00
Sebastian Dröge
7ac29827d2
fmp4mux: Don't allow VP9 for CMAF
...
This would require setting the correct compatible band for VP9 in CMAF,
which is not implemented yet.
2022-11-03 16:53:01 +02:00
Sebastian Dröge
6706f3a4b4
fmp4mux: Add initial Opus support
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/239
2022-11-03 16:53:01 +02:00
Sebastian Dröge
a8250abbf1
Fix various new clippy warnings
2022-11-01 10:27:48 +02:00
Sebastian Dröge
31d4ba2eae
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/957 >
2022-10-31 15:20:19 +02:00
Sebastian Dröge
7106b0484d
fmp4mux: Remove unused uuid dependency
2022-10-28 12:45:42 +03:00
Sebastian Dröge
938f4e4f1c
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 14:47:16 +03:00
Sebastian Dröge
627bf756b1
fmp4mux: Send force-keyunit events for now if the ideal position has already passed
2022-10-27 12:53:09 +03:00
Sebastian Dröge
a56435801d
fmp4mux: Add debug log when writing the mfra box
2022-10-26 17:22:20 +00:00
Sebastian Dröge
27fac33c44
fmp4mux: Reset timing infos to None if a stream only contained gap events for a whole fragment
2022-10-26 17:22:20 +00:00
Sebastian Dröge
cab4cd3b8c
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-26 17:22:20 +00:00
Matthew Waters
d067fb2ec8
fmp4mux: don't require dts for predictive-only formats like vp9
2022-10-26 11:42:13 +00:00
Matthew Waters
8c8384c711
fmp4: add support for muxing VP9 streams in cmaf, dash and iso fmp4
...
As specified in https://www.webmproject.org/vp9/mp4/
2022-10-25 18:33:42 +11:00
Sebastian Dröge
f2223cf2cb
Update versions to 0.10.0-alpha.1
2022-10-24 19:31:19 +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