Edward Hervey
80b3ba7b36
tsdemux: Clear all streams when rewinding
...
This avoids sending out partial invalid data downstream which could cause
decoders (ex: `dvdlpmdec`) to error out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2301 >
2021-06-03 22:54:12 +00:00
Daniel Almeida
ad70e0d5e8
codecalpha: alphacombine: add support for NV12/AV12
...
Alpha combine works by appending the GstMemory for the alpha channel
to the GstBuffer containing I420, thereby pushing A420 on its src pad.
Add support for the same workflow for NV12, thereby producing the
recently introduced AV12 format (NV12 + Alpha).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2277 >
2021-05-27 11:03:41 -04:00
Seungha Yang
ad65081ef9
interlace: Don't set field-order field for progressive caps
...
That would cause negotiation issue
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2282 >
2021-05-27 08:15:15 +00:00
Seungha Yang
1ac30ad53f
interlace: Drop framerate from query caps of sinkpad
...
Query caps should return caps which represent the element can accept,
not resulting format.
Fixing negotiation error with
gst-launch-1.0 videotestsrc ! video/x-raw,framerate=25/1 ! interlace field-pattern=0 ! fakesink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2282 >
2021-05-27 08:15:15 +00:00
Tim-Philipp Müller
8e04651b8b
Use gst_buffer_new_memdup()
...
Update for function rename in core.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/827
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2281 >
2021-05-24 19:05:27 +01:00
Tim-Philipp Müller
0151276d7f
Use new gst_buffer_new_copy()
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2279 >
2021-05-23 17:20:16 +01:00
Jan Alexander Steffens (heftig)
0312887452
mpegtsmux: Fixup program array indices after stream removal
...
Each stream stores the `program_array_index` of its position in its
program's `streams` array. When we remove a stream from this array, we
need to correct the `program_array_index` of all streams that were
backshifted by the removal.
Also extract the removal into a new function and add some more safety
checks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2266 >
2021-05-20 13:35:06 +00:00
Seungha Yang
1f743c8d84
audiolatency: Drop incoming downstream stick events
...
stream-start, caps, and segment events will be pushed by internal
audiotestsrc element.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265 >
2021-05-20 15:50:55 +09:00
Seungha Yang
3bd600741c
audiolatency: Use live mode audiotestsrc
...
Expected use case of audiolatency element is that mimic audio capture
device which is most likely live source. So audiolatency element
should use live mode as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265 >
2021-05-20 15:41:50 +09:00
Seungha Yang
5c4a13b5a0
interlace: Fix too small buffer size error
...
Even though input/output resolutions are identical there, default
buffer size of progressive and interleaved formats could be different
because we are rounding up height of all plane of interlaced frame
to be multiple of two.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2244 >
2021-05-17 08:49:30 +00:00
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