Nicolas Dufresne
e7b962d9b5
alphacombine: Ignore all events coming from the alpha_pad
...
As per usage of this element, everything from this pad is a
duplicate. Instead of implemented needless aggregation, simply
drop all events from this pad and let the one from the main stream
passthrough. Also stop proxying some queries from the alpha pad_too.
This fixes racy test failure:
- validate.file.playback.scrub_forward_seeking.opus_vp9-alpha_webm
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247 >
2021-05-14 14:11:39 -04:00
Nicolas Dufresne
0484d658a8
codecalphademux: Do not set a GstFlowReturn from a boolean
...
This was a small overlook, gst_pad_send_event() returns a boolean,
so setting it into ret could confuse the flow combiner. Though,
it didn't bug, since both 0 and 1 are success (though 1 being
undefined).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247 >
2021-05-14 14:11:39 -04:00
Nicolas Dufresne
35775f1aec
codecalphademux: Remove eos flow return workaround
...
It turns out that downstream returning OK after EOS is a bug in
multiqueue. As we moved to queue, we no longer have this issue.
Let's keep the code clean and just assuming that downstream will
keep returning EOS and allow convergence of flow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247 >
2021-05-14 14:11:39 -04:00
Nicolas Dufresne
c63b2f2712
alphadecodebin: Use normal queues instead of multiqueue
...
The multiqueue was too flexible for our need, allowing to queue passed
the configured threshold. It also didn't work well when trying to
propagate EOS flow return.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2238 >
2021-05-13 14:38:47 +00:00
Nicolas Dufresne
1229257ad4
alphacombine: Implement flow return propagation
...
The EOS handling was not the problem way. Instead of this, implement
proper prorogation of the flow return for the alpha chain function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2238 >
2021-05-13 14:38:47 +00:00
Nicolas Dufresne
ea08442699
codecalphademux: Fix handling of flow combine
...
As the alphacombine is simplified to received matching pair of buffers,
we can't just stop streaming when we receive EOS from downstream. Due
to usage of queue, the moment we get this return value may differ.
Though, by continuing pushing, we override the last_flowret on the pad
which can make us miss that we effectively can combine all flow into
EOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2238 >
2021-05-13 14:38:47 +00:00
Thibault Saunier
61a04cf51f
testbinsrc: Handle setting URI on the fly
...
Reusing existing streams when possible
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2210 >
2021-05-13 02:03:57 +00:00
Nicolas Dufresne
b884bcb93e
vp9parse: Manually fixate codec-alpha field
...
This is a newly introduced field, and we interpret it as false when missing in
the caps. Otherwise, a simple capsfilter will just add the missing field and
keep going, despite the upstream caps being a superset.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199 >
2021-05-11 16:06:56 -04:00
Nicolas Dufresne
e08c0803e1
doc: codecalpha: Add plugin documentation
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199 >
2021-05-11 16:06:56 -04:00
Nicolas Dufresne
ba4053a2b9
alphadecodebin: Add wrappers to decode VP8/VP9 alpha
...
This includes base class with wrappers bin that will create a static
pipeline capable of handling the VP8/VP9 alpha channel decoding
using two instances of vp8/vp9dec element each.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199 >
2021-05-11 16:06:56 -04:00
Nicolas Dufresne
2cd927435c
codecalpha: Implement alphacombine element
...
This element will merge video buffers in order to use the alpha stream
luma plane as the alpha of the video stream. The implementation is zero-copy
and currently only support merging I420 stream with an I420, NV12 or GRAY8
alpha stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199 >
2021-05-11 16:06:56 -04:00
Nicolas Dufresne
4dbf61d1ef
alphacodecdemux: Implement meta demuxing
...
Produce two streams from a buffer that has GstVideoCodecAlphaMeta
attached.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199 >
2021-05-11 16:06:56 -04:00
Nicolas Dufresne
f3114d4d7e
Introduce CODEC Alpha plugin
...
This plugin contains a set of utility elements allowing to extract,
decode and combine CODEC (typically VP8/VP9) alpha stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199 >
2021-05-11 16:06:56 -04:00
Jan Alexander Steffens (heftig)
3d02559002
rtpsrc: Plug leak of rtcp_send_addr
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2226 >
2021-05-07 12:34:20 +00:00
Jan Alexander Steffens (heftig)
88d7141ba4
rtpsink: Return proper pad from _request_new_pad
...
Bizarrely, it returned a pad from the child rtpbin. I noticed because
our application leaked the implicitly created ghost pad. Make an
explicit ghost pad so this works properly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2227 >
2021-05-07 12:07:05 +00:00
Jan Alexander Steffens (heftig)
ddac6ab91d
rist: Plug leak of rtcp_send_addr
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2225 >
2021-05-07 11:06:53 +00:00
Nirbheek Chauhan
4c4f031207
h265parse: don't invalidate the last PPS when parsing a new SPS
...
This is a port of https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2019
to h265parse.
When a SPS is received then any previous PPS remains valid. So don't clear
the PPS flag from the parser state.
This is important because there are encoders that don't generated a PPS after
every SPS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2217 >
2021-05-05 10:02:28 +00:00
François Laignel
ad3d7d34cc
Use gst_element_request_pad_simple...
...
Instead of the deprecated gst_element_get_request_pad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2180 >
2021-05-05 06:17:14 +00:00
Stéphane Cerveau
eb96f50c45
mxf: check EOS cond with any segment's flag
...
The previous test was preventing the pad to be in EOS
when the segment position was greater than segment stop.
It ended up consuming all the data before getting in EOS.
Regarding GST_SEEK_FLAG_SEGMENT it seems to be
correctly handled later in the method.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2173 >
2021-05-04 19:11:27 +00:00
Stéphane Cerveau
c32f455b7b
mxfdemux: fix keyframe detection in index
...
An index entry should be considered as a keyframe
if the flags allow a random access only.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2173 >
2021-05-04 19:11:27 +00:00
Olivier Crête
4b47b96ae1
jpegparse: Don't generate timestamp for 0/1 framerates
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2194 >
2021-04-23 17:54:30 +00:00
Thibault Saunier
788dfdbfa6
rtpsrc: Fix wrong/NULL URI handling
...
We can reset the URI to NULL and this fix a deadlock in that case or
when the URI was invalid.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2132 >
2021-04-23 01:23:03 +00:00
Mathieu Duponchelle
0fb7392131
tsdemux: fix truncated output segment when seeking with a stop
...
In disabling the stop adjustment for negative rates in
03031037fa
, two instructions
were inverted resulting in the stop always being adjusted by
0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2182 >
2021-04-21 21:40:26 +00:00
Jan Schmidt
bd9f675318
switchbin: When collecting srcpad caps, don't intersect with path caps.
...
The path caps describe the input caps that will select each path, don't
intersect those with the srcpad caps, which could be completely
different. Instead, when querying allowed caps for the srcpad, just
construct the union of all possible output caps from all path srcpads.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2018 >
2021-04-12 14:27:00 +00:00
Jan Schmidt
1f865246c1
switchbin: Don't report sink pad caps for src pad queries.
...
When handling a caps query on the src pad, don't return the union
of input caps. Even when not active, a path element can be queried
for srcpad template caps, or for dropping paths the allowed downstream
caps is anything - as data will be dropped anyway.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2018 >
2021-04-12 14:27:00 +00:00
Stéphane Cerveau
891be51105
gst-plugins: allow per feature registration
...
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2110 >
2021-04-11 16:16:55 +00:00
Helmut Januschka
7f60138ef6
allow NetStream.Play.PublishNotify Message
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2154 >
2021-04-10 20:34:26 +02:00
Philippe Normand
933ebba435
debugutils: Add fakeaudiosink element
...
This element can be useful for CI purposes on machines not running any system
audio daemon. The element implements the GstStreamVolume interface.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2125 >
2021-04-09 08:13:12 +00:00
Haihua Hu
e69d0151d2
jpeg2000parse: fix critical log when play one gray colorspace video
...
Need guess color space based on number of components when cannot
got it from sink caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1955 >
2021-04-08 01:06:12 +00:00
Doug Nazar
81d4ccdc44
rtmp2: Use correct size of write macro for param2.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2146 >
2021-04-07 07:48:57 -04:00
Jan Schmidt
3a3c80e7be
mpegtsmux: Respect the start-time-selection property.
...
Use the start time provided by the aggregator base class for output
times.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2105 >
2021-03-31 13:34:40 +00:00
Sebastian Dröge
5bcfb2dda0
avwait: Don't reset time tracking when receiving the same segment again
...
This causes avwait to go back into "dropping" mode until audio and video
are synced again, which is unnecessary when the segment didn't actually
change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2121 >
2021-03-30 08:38:03 +00:00
Jan Alexander Steffens (heftig)
0b916e7cec
rtmp2/connection: Separate inner from outer cancelling
...
The connection cancels itself when it is closed. To avoid the
cancellable passed to `gst_rtmp_connection_new` from being unexpectedly
cancelled, separate inner from outer cancellation by holding two
cancellables.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1558
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2111 >
2021-03-28 11:07:33 +00:00
Stéphane Cerveau
176a00985a
mpegpsdemux: fix accurate seek
...
In an accurate seek, the segment start should be
the same as the one requested in the seek.
The start should be kept as the one from the
segment if its inferior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2048 >
2021-03-22 12:54:14 +01:00
Stéphane Cerveau
497e88ae88
mpegpsdemux: Keep seqnum events
...
Keep the same seqnum of the new segment events for each
of the streams.
Keep the segment to send the EOS event.
Keep the seek seqnum for segment and flush event.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2048 >
2021-03-22 12:54:14 +01:00
Stéphane Cerveau
96467f581e
mpegpsdemux: avoid early EOS
...
In a case of a scr different from 0, after a seek,
the src_segment.stop has been updated with the duration
not including the base_time (scr). The segment position
needs to be tested upon segment.stop + base_time (scr)
to check for an EOS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2048 >
2021-03-22 12:54:14 +01:00
Matthew Waters
640a65bf96
gst: don't use volatile to mean atomic
...
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead. GCC 11 has started warning about using volatile
with atomic operations.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2098 >
2021-03-22 14:34:36 +11:00
Jan Schmidt
18a095ca63
mpegtsmux: Add PMT_%d support to prog-map.
...
Support a PMT_%d field in the prog-map, that's optionally used
to set the PMT for each program in the mux.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2039 >
2021-03-18 15:07:53 +00:00
Jan Schmidt
5e4a11bf36
mpegtsmux: Don't write PCR until PAT/PMT are output.
...
Make sure streams start cleanly with a PAT/PMT and defer the first PCR
output until after that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073 >
2021-03-18 13:57:27 +00:00
Mathieu Duponchelle
b7e9e606a9
tsmux: finalize PCR timing for complete accuracy
...
In order to always insert a PCR packet right on time, we need to
check whether one is needed when outputting any packet, not only
a packet for the PCR stream. Most of the PCR packets will remain
data-carrying packets, but as a last resort we may insert stuffing
packets on the PCR stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073 >
2021-03-18 13:57:27 +00:00
Jan Schmidt
3201575d2a
mpegtsmux: Improve PCR/SI scheduling.
...
Change PCR / SI scheduling so that instead of checking if
the current PCR is larger than the next target time, instead
check if the PCR of the next packet would be too late, so PCR
and SI are always scheduled earlier than the target, not later.
There are still cases where PCR can be written too late though,
because we don't check before each output packet.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073 >
2021-03-18 13:57:27 +00:00
Jan Schmidt
49c61338d6
tsmuxstream: Fix comment typo
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073 >
2021-03-18 13:57:27 +00:00
Stéphane Cerveau
b0a9ba4ccf
mpegvideoparse: do not clip the frame
...
If the current buffer is delta unit such as P or B
frame, the buffer should not be clipped and need to
let the decoder handle the segment boundary situation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2070 >
2021-03-11 15:01:38 +01:00
Sebastian Dröge
80c1722cba
avwait: Don't post messages with the mutex locked
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2063 >
2021-03-09 13:01:45 +02:00
Vivia Nikolaidou
cde4e74eca
interlace: Discard stored_frame on EOS and PAUSED_TO_READY
...
Would otherwise leak it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2062 >
2021-03-08 21:02:01 +02:00
Vivia Nikolaidou
cb55d30b3c
interlace: Specify interlace-modes in the sink pad template
...
Especially specify the field-order in the interleaved mode. Otherwise it
might cause the negotiation to fail, because
GST_PAD_SET_ACCEPT_INTERSECT is not set on the sinkpad, and the
field-order is missing in the sink template but can be present in the
outside caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2062 >
2021-03-08 21:01:50 +02:00
Tim-Philipp Müller
766bd655fc
interlace: add more formats, esp 10-bit, 12-bit and 16-bit ones
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2054 >
2021-03-03 18:34:26 +00:00
Jan Alexander Steffens (heftig)
b9cc83ccf8
mpegtsparse: Fix switched DTS/PTS when set-timestamps=false
...
Fixes 30ee21eae3
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2047 >
2021-03-01 16:29:58 +01:00
Tim-Philipp Müller
438449db69
sdpsrc: fix double free if sdp is provided as string via the property
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1532
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2025 >
2021-02-19 00:05:41 +00:00
Michael Olbrich
5a03862fca
h264parse: don't invalidate the last PPS when parsing a new SPS
...
When a SPS is received then any previous PPS remains valid. So don't clear
the PPS flag from the parser state.
This is important because there are encoders that don't generated a PPS after
every SPS.
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/571
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2019 >
2021-02-17 16:22:18 +00:00