Commit graph

149 commits

Author SHA1 Message Date
Sebastian Dröge
ba70293d2b fmp4: Update to dash-mpd 0.18
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2040>
2025-01-14 10:04:35 +02:00
Jochen Henneberg
0d42ed9a57 fmp4mux: Only set TKHD transformation, precedence for stream scope
Instead of trying to figure out which global tag is meant to go into
the MVHD or such the solution now is to set the MVHD matrix to
identity and only set the TKHD matrix to either stream scope matrix if
available or global matrix (which is always available, maybe as
identity).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>
2025-01-10 09:04:41 +00:00
Jochen Henneberg
58ee9e2b9f fmp4mux: Fixed logging for unsupported orientation tags
Fmp4mux State and Stream structs now store matrix references instead
of orientation enum.

The TransformMatrix is wrapped into a struct for Default trait which
is needed by struct State.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>
2025-01-10 09:04:41 +00:00
Jochen Henneberg
aeb37c5ab1 fmp4mux: Added mut_ prefix for stream_from_pad()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>
2025-01-10 09:04:41 +00:00
Jochen Henneberg
57f24efc62 fmp4mux: Log on unsupported orientation enums
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>
2025-01-10 09:04:41 +00:00
Jochen Henneberg
7dea11f626 fmp4mux: Language and orientation are stream tags
The language tag is purely a stream specific tag and the orientation
tag can be both, stream or global scope at the same time.

Language tags in global scope are considered to be stream scope and
orientation tags set either the mvhd box transformation matrix if
global scope or tkhd if stream scope.

And switched to GStreamer API for image orientation tag storage and
handling and added the flip transformations.

Fixes #631

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1975>
2025-01-10 09:04:41 +00:00
Sebastian Dröge
7b4665c793 Fix some new clippy 1.84 warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2032>
2025-01-10 10:08:38 +02:00
Jochen Henneberg
be6074f4f4 fmp4mux: Fix state cleanup on flush
State cleanup was incomplete. If a flush happens we do not have any
buffers anymore so all buffer queue related settings must be cleared
on the state. Flush action has been moved into state impl.

The GstAggregatorPad flush() was implemented as well as the pad flush
handler - with different implementations. Unify it.

Fixes #636

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1945>
2024-12-04 11:12:55 +00:00
Sebastian Dröge
6aeb3f2af2 Fix / silence various new Rust 1.83 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 14:57:24 +02:00
Sebastian Dröge
347bee16d4 Update for GLib signal API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1936>
2024-11-22 15:52:41 +02:00
Jochen Henneberg
28a200be30 fmp4mux: Fixed comment and removed commented code from test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1921>
2024-11-18 09:52:23 +00:00
Jochen Henneberg
08c026cea6 fmp4mux: Accept tag updates before stream starts
Tag updates should be done if either the tag is set before the stream
started or if tag changes are allowed while the stream is already
running.

Fixes #629

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1921>
2024-11-18 09:52:23 +00:00
Jochen Henneberg
580e06a002 fmp4mux: Let test consume remaining buffers after EOS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1914>
2024-11-13 13:35:56 +01:00
Jochen Henneberg
b95f39f4bf fmp4mux: Avoid error on caps change with incomplete GOP pushed
New fragments may accept inter-frames if an incomplete GOP has been
pushed after a caps change and upstream did not handle the
force-key-unit event.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1914>
2024-11-13 10:25:58 +01:00
Jochen Henneberg
26a6c3b7b9 fmp4mux: Fixed caps change handling for multiple streams
* Moved FKU code into separate function.
* Send FKU for each stream where the caps change happened.
* Send FKU for each stream where an incomplete GOP has been pushed on
  caps change.
* Push incomplete GOP from stream if the early fragment end would not
  contain that stream otherwise.
* If an incomplete GOP has been pushed on the previous fragment accept
  inter-frames on the next fragment and do not drop them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1895>
2024-11-07 14:35:09 +00:00
Sebastian Dröge
98a87fb8f2 Update to quick-xml 0.37
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1891>
2024-10-28 09:12:13 +00:00
Sebastian Dröge
f73317510e Update to quick-xml 0.36
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1881>
2024-10-24 10:09:18 +03:00
Sebastian Dröge
4abc5c7a48 Be stricter with Impl-trait bounds to enforce type hierarchies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1871>
2024-10-22 13:43:12 +00:00
Sebastian Dröge
7e59c3f0fd Remove once_cell dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1868>
2024-10-21 17:53:18 +00:00
Sebastian Dröge
33becb9246 fmp4mux: Remove unreachable case
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864>
2024-10-20 19:53:15 +00:00
Thibault Saunier
50a48f4b85 mp4mux: Add support for edit lists
So we properly handle audio priming

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1434>
2024-10-18 12:33:43 +00:00
Thibault Saunier
e630aab769 fmp4mux: Add support to write edts to handle audio priming
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1434>
2024-10-18 12:33:43 +00:00
Guillaume Desmottes
bd7b94e305 fmp4: use the right DEFAULT constant
Does not really matter as both have the same value but best to have it
right.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1799>
2024-09-23 12:48:42 +00:00
Jochen Henneberg
8313260e09 fmp4mux: Renamed caps_change_allowed() to header_update_allowed()
Because tag events like orientation and language require a header
update as well.

For proper logging the function now takes a reason parameter and logs
a debug message in case the header update is allowed.

And added some explanation to the function to make sure that it is
used in the right place.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
c0f3eff18e fmp4mux: Renamed caps_changed to need_new_header
Because the header update is needed in case of language code or
orientation changes as well that come with tag events.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
1be92c4b86 fmp4mux: Added tests for caps change feature
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
0c8b84d8a8 fmp4mux: Send new fragment with header in case of caps change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
4d71525eee fmp4mux: Simplified EOS detect logic
The all_eos cannot be set without having sinkpad.is_eos(). Thus
all_eos || sinkpad.is_eos() == sinkpad.is_eos().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Guillaume Desmottes
431adaa2f9 fmp4: examples: hls_live: don't set header-update-mode=update
No need to update the header in live mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1798>
2024-09-23 12:24:22 +02:00
Jendrik Weise
1ff761e410 fmp4: Add tests for split-at-running-time signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1761>
2024-09-20 12:35:24 +03:00
Jendrik Weise
d5a9c7a940 fmp4: Add split-at-running-time signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1761>
2024-09-20 12:35:24 +03:00
Sebastian Dröge
52895223a8 fmp4: Update to dash-mpd 0.17
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1757>
2024-08-27 21:02:43 +03:00
Piotr Brzeziński
798936afc9 cmafmux: Add send-headers signal
Forces cmafmux to output headers for the init segment again, alongside the next chunk.
Needed for hlscmafsink to support changing output paths on the fly, without going back to READY.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1692>
2024-08-22 02:06:51 +00:00
Piotr Brzeziński
ad0a23fee7 cmafmux: Add opus support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1692>
2024-08-22 02:06:51 +00:00
Sebastian Dröge
ec38d416aa fmp4mux: Remove _ prefix of actually used parameter
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1694>
2024-08-07 11:16:51 +03:00
Sebastian Dröge
9006a47e9b mp4mux: added image orientation tag support
Based on a patch by sergey radionov <rsatom@gmail.com>

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1694>
2024-08-07 11:16:25 +03:00
sergey radionov
fdfa3a33d9 fmp4mux: added image orientation tag support
fix #565

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1669>
2024-07-16 18:49:07 +07:00
Sebastian Dröge
98b28d69ce Update for new debug log macro syntax
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658>
2024-07-08 11:25:23 +03:00
Sebastian Dröge
9b323a6519 Use Option::is_some_and(...) instead of Option::map_or(false, ...)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1630>
2024-06-19 13:03:37 +00:00
Sebastian Dröge
f68655b5e2 Update for gst::BufferList API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1610>
2024-06-08 09:58:10 +03:00
Mathieu Duponchelle
c282bc1bca examples/dash_vod: compare durations to the millisecond
Otherwise when the segment durations aren't as clean cut as in the
example, multiple segments with the exact same duration in milliseconds
will get output, even though they could have been repeated.

Fix this so that people copying this code don't encounter the bug.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1574>
2024-05-15 06:28:14 +00:00
Rafael Caricio
5549dc7a15 fmp4mux: Support AV1 packaging in the fragmented mp4 plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1544>
2024-05-10 20:59:49 +00:00
7d75e263f8 fmp4mux: Add language from tags
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1557>
2024-05-10 13:01:58 +00:00
Sebastian Dröge
be3ae583bc Fix new Rust 1.78 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1559>
2024-05-02 18:36:23 +03:00
Simonas Kazlauskas
5d939498f1 mp4/fmp4: support flac inside the iso (f)mp4 container
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1401>
2024-04-09 14:37:05 +03:00
Sebastian Dröge
921938fd20 fmp4mux: Require gstreamer-pbutils 1.20 for the examples
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1530>
2024-04-06 11:10:58 +03:00
Sebastian Dröge
0aabbb3186 fmp4: Update to dash-mpd 0.16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1523>
2024-03-31 09:36:53 +03:00
Sebastian Dröge
2b9272c7eb fmp4mux: Move away from deprecated chrono function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1503>
2024-03-20 15:37:18 +02:00
Sebastian Dröge
b9195ed309 fmp4mux: Update to dash-mpd 0.15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1474>
2024-02-26 11:14:01 +02:00
Bilal Elmoussaoui
d25a222bf9 Drop direct muldiv dependency
It is re-exproted in gstreamer's prelude

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1446>
2024-02-05 15:34:31 +01:00