559 Commits

Author SHA1 Message Date
Jordan Petridis
d68f472683 bad: Avoid gcc false positive about variable initialization
In gstbayer2rgb the dtmp always gets initialized when
we check for bayersrc16.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8979>
2025-05-15 15:21:20 +00:00
Doug Nazar
17474ebbb2 videoframe-audiolevel: Switch to GST_AUDIO_NE()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8984>
2025-05-14 14:45:55 -04:00
Doug Nazar
4fb0a06271 uritranscodebin: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:37:59 -04:00
Doug Nazar
38ca8ae156 transcodebin: Free various props before being set
Also disable setting filters more than once.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978>
2025-05-13 19:35:58 -04:00
Olivier Crête
f13c757696 h264parse: Require codec_data when receiving stream-format=avc or avc3
It's not really possible to safely interpret the content afterwards if
it's missing.

Even for AVC3, the codec_data doesn't need to contain a SPS/PPS, but
it still needs to be present to tell downstream elements about the size
of the nal unit length field.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
2025-05-12 18:31:46 -04:00
Olivier Crête
ffed473992 h264parse: Never output stream-format=avc/avc3 caps without codec_data
It's not possible to interpret further buffers without knowing the nal_length_size
field, so avc1/avc3 caps without the codec_data aren't valid, don't push them out.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8955>
2025-05-12 18:31:46 -04:00
Daniel Morin
57e8dbfeb4 analytics: change tensor-id and use new API
- tensor-id changed to match tensor-id-registry at https://github.com/collabora/tensor-id-registry
- Use new GstTensorMeta API to get tensor.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8548>
2025-05-10 19:18:41 +00:00
Daniel Morin
ec60daa66d tensordecoder: add general classifier tensor-decoder
- Classification output is more standard compare to other tensor-decoder.
- This tensor-decoder implement a standard classification tensor-decoder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8548>
2025-05-10 19:18:40 +00:00
Alexander Slobodeniuk
7f4282481e removesilence: canonicalize property names
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8915>
2025-05-10 12:09:38 +00:00
Alexander Slobodeniuk
d437e92049 properties: add G_PARAM_STATIC_STRINGS where missing
"Hold on, I know you need to generate the registry, but let me just
create copies of all those strings first", Framework whispered

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8915>
2025-05-10 12:09:38 +00:00
Xavier Claessens
352a8a8b12 unifxfdsink: Add an property to allow copying
By design, unixfd is meant to be used for zero-copy and failing when the data is
not FD based memory is wanted to help debug pipelines. Though, there exists
cases, notably with RTP payloader and demuxers, where its not possible
to get all the data into FD memory through allocation queries.

To allow using unixfd for these cases, introduce a property on the unixfdsink
that enable copying the non FD data into freshly allocated memfd.

Co-authored-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8861>
2025-05-05 19:15:56 +00:00
Víctor Manuel Jáquez Leal
16d34468fb y4m: move y4mdec to good to have a single y4m plugin
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8719>
2025-05-05 11:53:46 +00:00
Zhao, Gang
4fa01d5e4c midiparse: Quit parsing if error occurred
Invalid midi files will crash gstreamer or let it enter infinite
loop. Fixed it by quit parsing if error is encountered.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8396>
2025-05-01 07:42:39 +00:00
Zhao, Gang
43e3796d7d midiparse: Consider tempo change when calculating duration
Midi meta event set tempo would change tempo. Should consider tempo
change when calculating buffer PTS / duration.

Save tempo change to a list and calculate duration according to the
list.

Fixed #4158

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8396>
2025-05-01 07:42:39 +00:00
Alexander Slobodeniuk
a03c4de48f elements: use set_static_metadata when it's allowed
Those strings are nice but CPU doesn't want to copy them

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8905>
2025-04-26 19:30:15 +02:00
Nicolas Dufresne
239c0eb5f8 video: Add 10bit 422 NV16_10LE40 format
Similar to NV12_10LE40, this is a 422 variant. This format is also named
NV20 (20bit per pixels) in other stack and is produced by rkvdec
decoder.

Co-authored-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5612>
2025-04-17 15:36:06 +00:00
Jan Alexander Steffens (heftig)
24bcff5650 mpegtsmux: Read prog-map[PMT_ORDER_<PID>] for PMT order key
Right now the prog-map's meaning of `PMT_%d` is overloaded:
- PMT_<PGM> is used to look up the PID for the PMT.
- PMT_<PID> is used to look up ordering keys for streams in the PMT.

This is not a problem in practice because program numbers and PES PIDs
shouldn't overlap. Still, it's quite the wart in the API.

Provide "PMT_ORDER_%d" as an unambiguous way of specifying ordering
keys.

See: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1510#note_2790022
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8584>
2025-04-16 13:39:15 +00:00
Daniel Morin
55e9e3cb13 tensordecoders: updating element classification
- `TensorDecoder` is clashing with media decoder which cause decodebin use it.
  Replacing with `Tensordecoder` to avoid clash

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8819>
2025-04-15 00:30:06 +00:00
Guillaume Desmottes
9b19c10f39 alphacombine: unblock when alpha sink is eos
If the alpha sink receives EOS while the other thread was waiting for a
alpha buffer it was stuck waiting forever.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8775>
2025-04-07 23:45:33 +00:00
Guillaume Desmottes
d2086675a4 alphadecodebin: use a multiqueue instead of a couple of queues
Fix gapless playback as queues are no longer stopped after the first
eos.

Co-authored-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Fix #4165

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8775>
2025-04-07 23:45:33 +00:00
Jakub Adam
75517d0faf unixfdsrc: fix allocating FD memory with nonzero offsets
The element should allocate GstFdMemory large enough to fit incoming
memory's size plus its potential offset.

Fixes "gst_memory_resize: assertion 'size + mem->offset + offset <=
mem->maxsize' failed".

Fixes an issue reproducible on Raspberry Pi 4 that results in a garbled
image on the receiver's end:

  gst-launch-1.0 libcamerasrc ! unixfdsink socket-path=/tmp/socket
  gst-launch-1.0 unixfdsrc socket-path=/tmp/socket ! autovideosink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8025>
2025-04-07 14:51:47 +00:00
Guillaume Desmottes
e8038d2994 codecalpha: name both queues
Make it easier to debug from logs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8744>
2025-03-31 15:15:28 +00:00
Doug Nazar
2e96ed13de rfbsrc: Free various props before being set & during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
c2cb94a421 frei0r: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
afd979c9e4 faceoverlay: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Philippe Normand
1e2b103b20 alphacombine: De-couple flush-start/stop events handling
There is no guarantee that any FLUSH_STOP event is preceded by a FLUSH_START.
The element now stops flushing once it has received a FLUSH_STOP on all its sink
pads.

Fixes #4174

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8604>
2025-03-12 18:34:53 +00:00
Thibault Saunier
ed693c7435 video: Give better names to buffer pools
Making debugging simpler

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8617>
2025-03-12 14:49:22 +00:00
Carlos Bentzen
ee6618d9ba h266parse: clear cache values with memset
Fixes a stack overflow on Windows/MSVC.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8588>
2025-03-05 10:02:38 +00:00
Benjamin Gaignard
fab7e43fe2 debugutils: videocodectestsink: Add GBR_10LE as supported pixel format
Add GBR_10LE in the list of supported format of the element.
GBR_10LE is used as output format in Fluster ARGON tests suite.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502>
2025-02-18 13:01:14 +00:00
Benjamin Gaignard
a50dddeea2 videoparsers: av1: Fix typo in debug log
comsumed -> consumed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502>
2025-02-18 13:01:13 +00:00
Benjamin Gaignard
2f81d53efc videoparsers: av1: Allow av1parse to parse annexb streams
Let's av1 parser do it job event it receives an annexb stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502>
2025-02-18 13:01:13 +00:00
Edward Hervey
96e660e0d9 mpegts: Fix PCR Discontinuity handling for HLS
We can only reliably use the adaptation field discontinuity flag if our input is
properly timestamped on a regular basis (ex: UDP, DVB, RTP, etc...).

For HLS and other systems which don't provide that information, we should not
reset the base observations. Otherwise we would potentially end up picking a
reference time from a long time ago.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8480>
2025-02-14 14:33:45 +00:00
Mart Raudsepp
def2f12d84 mpegtsmux: Fix error message for PID < 0x40 to be in the claimed base 16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8463>
2025-02-12 12:39:29 +00:00
Mart Raudsepp
395c8cafa6 mpegtsmux: Fix deadlock when requesting pad for PID < 0x40
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8463>
2025-02-12 12:39:29 +00:00
Alexander Slobodeniuk
15bf924940 cpu-throttling-clock: fix missing GObject vtable chainups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452>
2025-02-11 22:49:06 +01:00
Carlos Bentzen
b848c91dec mpegtsmux: add support for VVC/H.266 video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8435>
2025-02-10 20:57:40 +00:00
Edward Hervey
63a03b167a mpegts: Take into account adaptation field discont
If the flag is set, there is an *expected* discontinuity:
* For CC, we ignore the fact it's not contiguous
* For PCR, we acknowledge the values aren't contiguous

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8420>
2025-02-10 19:41:21 +00:00
Alexander Slobodeniuk
b22c1da0d3 basetsmux: fix chaining up GObject's constructed virtual method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2025-02-10 17:49:29 +00:00
Alexander Slobodeniuk
9f5c08931d rtpsrc: fix chaining up GObject's constructed virtual method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2025-02-10 17:49:29 +00:00
Glyn Davies
f32402e9b4 h264parse: Force full timestamp on all timecode updates. Was invalid between midnight and 1am
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8401>
2025-02-10 11:50:23 +00:00
He Junyan
f63a70966e av1parse: Handle the padding OBU correctly
The current av1parse can not find the edge of frame correctly if there
is padding OBUs inside the stream. We now use a flag seen_non_padding to
check whether we see some valid data after a data push. Then the padding
OBUs will be the part of the new frame.
We also refine the code logic to make the code more readable.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4044
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8269>
2025-02-07 16:56:53 +00:00
Carlos Bentzen
bb74aceb5d h266parse: clean up unused APS fields
Since APS is always carried in-band, we don't need to keep the APS
NALs around in the parser anymore.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
5fad23d26b h266parse: enable vvc1 and vvi1 stream formats
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
05d4a2022e h266parse: handle packetized frames
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
551782b32b h266parse: don't prepend APS NALs on IDR frames
Instead, APS NALs can just be pushed an in-band NALs like PH and SEI.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
c7e9aba025 h266parse: negotiate before handling codec_data NALs
If we find VPS/SPS/PPS in codec_data and call gst_h266_parse_process_nal
with them, we need to have negotiated before in order to correctly
process them with flags like h266parse->transform set or not depending
on the negotiation. This is important because in certain vvc1/vvi1 streams we
may have correct codec_data but faulty parameter sets in the stream and
we would want to push the parameter sets from codec_data first.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
f4f7e99e05 h266parse: parse codec_data
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
8607ccdf2c h266parse: update IDR position in more cases
The IDR position should be updated if we're processing an
IDR frame or pushing codec NALs. Not only when picture_header_in_slice_header_flag
is set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
7c29249ca5 h266parse: fix typos
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00
Carlos Bentzen
fe61b43814 h266parse: implement make_codec_data
implement serialization of codec_data containing VvcDecoderConfigurationRecord
as defined in ISO/IEC 14996-15.

The VPS/SPS/PPS NALs are added to the codec_data. APS NALs could be
optionally included as well but will be pushed in-band instead, because:
1. Logic is easier that way. We'd have to filter out for PREFIX_APS only
   (SUFFIX_APS aren't allowed in codec_data).
2. APS NALs can also be sent for every non-keyframe slice, and often are, so just pushing
   them in-band makes more sense to have less to keep track and avoid possible
   duplicates.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8359>
2025-02-07 08:25:17 +00:00