Sebastian Dröge
2bbf095e5b
matroskamux: Simplify timestamp comparison logic in find_best_pad()
...
If a buffer has no timestamp it is immediately muxed so we can directly break
the loop and simplify comparisons in the other cases.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872 >
2024-11-15 22:33:53 +00:00
Sebastian Dröge
a391728ad4
matroskamux: Don't time out in live mode if no timestamped next buffer is available
...
The muxer can only advance the time if it has a timestamped buffer that can be
output, otherwise it will just busy-wait and use up a lot of CPU.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872 >
2024-11-15 22:33:53 +00:00
Philippe Normand
701f563996
matroskamux: Delay stream-header until all sink pads have caps
...
If we don't wait, an incomplete header might be generated due to a race between
the _aggregate thread and the sink pad setcaps.
Fixes #3929
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7872 >
2024-11-15 22:33:53 +00:00
Sebastian Dröge
12b434ae9d
matroskamux: Add support for latency timeouts in live pipelines
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7510 >
2024-10-01 13:20:18 +00:00
Sebastian Dröge
945a7bdfc4
matroskamux: Port to GstAggregator
...
Co-authored-by: Tim-Philipp Müller <tim@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7510 >
2024-10-01 13:20:18 +00:00
Sebastian Dröge
6233eb0ff3
common: Stop using GQuark-based GstStructure field name API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Sebastian Dröge
762a281b0c
matroskamux: Include end padding in the block duration for Opus streams
...
It has to be included in the block duration but in GStreamer we're not
including it in the buffer duration, so it has to be added again here.
Not including it in the block duration can lead to fatal errors when playing
back with Firefox if there are more padding samples than actual samples, e.g.
> D/MediaDemuxer WebMDemuxer[7f6a0808b900] ::GetNextPacket: Padding frames larger
> than packet size, flagging the packet for error (padding: {13500000,1000000000},
> duration: {6000,1000000}, already processed: false)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7502 >
2024-09-13 20:38:51 +00:00
Mark Hymers
1ae8af4909
matroska: Add support for more pixel formats
...
- Add support for GRAY16_LE (using ffmpeg fourcc mapping)
- Update documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4824 >
2023-06-14 13:40:58 +00:00
Daniel Morin
00178cbd89
matroska: Add new pixels format support
...
- Add support for GRAY10_BE32
- Add support for RGBA64_LE and BGRA64_LE
Sponsored by Living Optics
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4824 >
2023-06-14 13:40:57 +00:00
Tim-Philipp Müller
0fc568c6b1
gst-plugins-good: re-indent with GNU indent 2.2.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182 >
2023-03-17 03:18:54 +00:00
Arun Raghavan
82b892ba3e
matroskamux: Set rate/channels in Opus template caps
...
For some reason these were missed, and if caps didn't have them, we would emit
an invalid Matroska file with a 0 value for Sampling Frequency or channels.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4151 >
2023-03-14 11:09:08 -04:00
Sebastian Dröge
067b5d92b4
matroska: Add stream-format = (string) obu-stream
to AV1 caps
...
Anything else is not allowed in Matroska/WebM.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3740 >
2023-01-19 12:10:40 +02:00
Nicolas Dufresne
0f15580853
matroska: Fix AV1 alignment to TU
...
Matroska stores AV1 in temporal unit, so that all OBU sharing the same
timestamp are put together. This was previously just assumed, which isn't
safe now that we have more alignments.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1837 >
2022-03-04 21:58:15 +00:00
Tristan Matthews
9d0d001d19
matroskamux: allow width+height caps changes for VP8/9
...
For VP8 and VP9, width+height changes are signalled inband.
Refs https://github.com/Kurento/bugtracker/issues/535 and
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1657 >
2022-03-04 14:17:20 -05:00
Tristan Matthews
c6ba57eb8e
matroskamux: allow width + height changes for avc3|hev1
...
For avc3 and hev1, the intent was to allow more flexibility for caps changes
(see https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1047/diffs?commit_id=9bd8d608d5bae27ec5ff09e733f76ca32b17420c )
however width and resolution were previously omitted.
avc3 and hev1 specifically support changing stream-parameters on the fly, whereas avc1/hvc1 disallow in-band SPS.
This commit allows for changes to width and height for these which is in line with matroskamux's behaviour prior to 1.14.0.
Practically speaking, one use case where this is commonly seen is when capturing a WebRTC stream, as the browser will adapt the resolution live.
Suggested-by: Mathieu Duponchelle "<mathieu@centricular.com>"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1657 >
2022-03-04 14:17:20 -05:00
Sebastian Dröge
9f798776e5
matroska-mux: Handle pixel-aspect-ratio caps field correctly when checking caps equality
...
Not having this field is equivalent with it being 1/1 so consider
it like that. The generic caps functions are not aware of these
semantics and would consider the caps different, causing a negotiation
failure when caps are changing from caps with to caps without or the
other way around.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1826 >
2022-03-02 10:27:47 +00:00
Sebastian Dröge
1b851ae23f
matroska-mux: Handle multiview-mode/flags caps fields correctly when checking caps equality
...
Not having these fields is equivalent with them being mono/0 so consider
them like that. The generic caps functions are not aware of these
semantics and would consider the caps different, causing a negotiation
failure when caps are changing from caps with to caps without or the
other way around.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1826 >
2022-03-02 10:27:47 +00:00
Jan Schmidt
cebf769725
matroska-mux: If a stream has a TITLE tag, use it for the name.
...
If a title tag is pushed to a pad, store it as the Track name.
This means that players will use it as the human readable
description of the track, instead of something generic like 'Video'
or 'Subtitle'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1798 >
2022-03-01 13:17:40 +00:00
Thibault Saunier
32a88fe16f
matroskamux: Ignore some fields when renegotiating
...
Those values are never used in the muxer so we should not fail the
negotiation if those are changing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1062 >
2021-10-18 10:10:24 -03:00
Thibault Saunier
5ff769d731
Move files from gst-plugins-good into the "subprojects/gst-plugins-good/" subdir
2021-09-24 16:13:50 -03:00