gstreamer merge requestshttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests2021-10-04T12:54:52Zhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1036flvdemux: Use DTS for the video segment position2021-10-04T12:54:52ZJan Alexander Steffensflvdemux: Use DTS for the video segment position**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/395**
When we start with a video frame with a presentation offset, this
ensures our initial frames (video or audio) don't fall outside the
segment...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/395**
When we start with a video frame with a presentation offset, this
ensures our initial frames (video or audio) don't fall outside the
segment and get clipped later.
A simple remuxer now keeps the right timestamps:
```sh
gst-launch-1.0 \
filesrc location=$HOME/foo.flv ! flvdemux name=d \
d. ! queue ! h264parse ! m. \
d. ! queue ! aacparse ! m. \
flvmux streamable=1 name=m ! filesink location=$HOME/bar.flv
```https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1034flvmux: Timestamp outgoing buffers from mux, not incoming buffer2021-10-04T12:54:23ZJan Alexander Steffensflvmux: Timestamp outgoing buffers from mux, not incoming buffer**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/805**
This ensures that the outgoing buffer has the right timestamp if we
pulled a backwards buffer forward.**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/805**
This ensures that the outgoing buffer has the right timestamp if we
pulled a backwards buffer forward.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1032flvmux: Don't reset muxer state on flush2021-10-04T12:52:19ZJan Alexander Steffensflvmux: Don't reset muxer state on flush**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/806**
Only reset pad states. We might want to pick up muxing at the same
timestamp.**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/806**
Only reset pad states. We might want to pick up muxing at the same
timestamp.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1031flvmux: Mux timestampless buffers immediately2021-10-04T12:49:57ZJan Alexander Steffensflvmux: Mux timestampless buffers immediately**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/807**
Instead of leaving them queued indefinitely, or until we're timing out
and it's the only buffer queued.**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/807**
Instead of leaving them queued indefinitely, or until we're timing out
and it's the only buffer queued.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1016Draft: waylandsink: Render transparent video onto transparent window2021-10-01T20:10:19ZNicolas DufresneDraft: waylandsink: Render transparent video onto transparent window**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/2200**
This is a draft and a request for comment. I'd like to render transparent video onto transparent window from now on. So I'm asking if this i...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/2200**
This is a draft and a request for comment. I'd like to render transparent video onto transparent window from now on. So I'm asking if this is a fine behaviour or should we absolutly make this opt-in through a property.
As for the implementation, for now we simply make the background sub-surface fully transparent, but this wastes a layer, so the final implementation will properly remove the background surface (which is used to draw the black borders). I'm adding this video to show what it looks like:
![transparency](/uploads/923cd0711fd586bccffeb9f3fbd9791f/transparency.webm)
Another note, I notice that Wayland and X11 requires pre-multiplied alpha content, but GStreamer always produces non-premultiplied alpha (unless it was accidently premultiplied, e.g. wpe). I have for now ignored this issue, as I believe it will be better solved through a seperate series of MR.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/982Draft: hls: Add hlswebvttsink element2023-08-07T17:09:21ZSeungha Yangseungha@centricular.comDraft: hls: Add hlswebvttsink elementIntroduce a new hlssink element for producing WebVTT playlist.
Moved from https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2488Introduce a new hlssink element for producing WebVTT playlist.
Moved from https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2488https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/978WIP: aacparse: Estimate buffer timestamp when missing2021-09-30T09:48:29ZVivia NikolaidouWIP: aacparse: Estimate buffer timestamp when missing**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/733**
Estimate it from frame_samples and sample_rate.**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/733**
Estimate it from frame_samples and sample_rate.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/970ccextractor: Add force-expose-caption-pad property2022-03-09T16:13:31ZSeungha Yangseungha@centricular.comccextractor: Add force-expose-caption-pad propertyWhen this property is enabled, ccextractor will expose caption pad
on the first buffer even if caption meta is not attached in the buffer.
This feature can be useful when caption branch needs to be
strictly synchronized with video branc...When this property is enabled, ccextractor will expose caption pad
on the first buffer even if caption meta is not attached in the buffer.
This feature can be useful when caption branch needs to be
strictly synchronized with video branch via pushed GAP event.
For instance, application might want to produce text related data
even if it doesn't exist (as a dummy or similar form).
Live encoding would be a likely scenario. But by the nature of text,
stream might not contain any caption data at the beginning then
ccextractor cannot notify downstream of emptiness via GAP event
since caption pad is not added yet.
Moved from https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2489https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/962Draft: videoencoder: allow merging headers rather than pushing them separately2021-09-29T14:22:45ZNicolas DufresneDraft: videoencoder: allow merging headers rather than pushing them separately**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/1114**
To respect specific bitstream alignment requirement, like found in H264/H264,
allow merging repeated headers rather then pushign them seper...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/1114**
To respect specific bitstream alignment requirement, like found in H264/H264,
allow merging repeated headers rather then pushign them seperatly.
Related to https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2178
p.s. this is still a draft since it wasn't fully testedhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/961WIP: v4l2: Fix alternate interlacing caps and field values2021-09-29T13:48:25ZNicolas DufresneWIP: v4l2: Fix alternate interlacing caps and field values**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/665**
Alternate interlacing was broken for v4l2sink element and had some issues in caps reporting. The caps negotiation was also broken in many wa...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/665**
Alternate interlacing was broken for v4l2sink element and had some issues in caps reporting. The caps negotiation was also broken in many ways.
ToDo:
- Ensure the following fails `v4l2src ! video/x-raw\(format:Interlaced\),interlaced-mode=progressive ! fakevideosink`
- Ensure the following fails `v4l2src ! video/x-raw,interlaced-mode=alternate ! fakevideosink`
- Investigate why all second fields are dropped with vivid
cc @gdesmotthttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/940basetextoverlay: Remove redundant overlay composition metas2022-02-10T18:01:20ZPhilippe Normandbasetextoverlay: Remove redundant overlay composition metas**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/966**
Ensure the outgoing video frame has at most one overlay composition meta. When
multiple textoverlay elements are in the same pipeline, the d...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/966**
Ensure the outgoing video frame has at most one overlay composition meta. When
multiple textoverlay elements are in the same pipeline, the downstream one
reuses the overlay composition meta of the upstream one, but the overlay
compositor rightfully handles only one overlay composition meta per frame, so
the textoverlay needs to get rid of the meta that is being reused from its
upstream counterpart.
Fixes #846https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/937oggdemux: Fix racy decode error2021-09-27T13:38:40ZPhilippe Normandoggdemux: Fix racy decode error**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/206**
Sometimes the seek to the end of file to determine the duration would trigger a
reset of the source pads, that would confuse the decoder dow...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/206**
Sometimes the seek to the end of file to determine the duration would trigger a
reset of the source pads, that would confuse the decoder downstream and trigger
an error. So the proposed fix is to not reset pads when the segment event being
processed is the consequence of a seek performed to determine the duration.
Fixes #520https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/916avviddec: use a more conservative default number of threads2022-12-13T11:57:12ZMathieu Duponchelleavviddec: use a more conservative default number of threads**Copied from https://gitlab.freedesktop.org//gstreamer/gst-libav/-/merge_requests/72**
When doing per-frame multithreading, FFmpeg introduces a
delay of one frame per thread. On a machine with a high
number of cores, the default maximu...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-libav/-/merge_requests/72**
When doing per-frame multithreading, FFmpeg introduces a
delay of one frame per thread. On a machine with a high
number of cores, the default maximum of 16 can easily
lead to deadlocks in multiqueue.
The ideal situation would have multiqueue query a latency
downstream to add to its maximum, but that's not easily
implemented.
For now simply use a lower default maximum of 4, this should
usually still be enough for real-time playback purposes, and
can of course be set by the user through the max-threads
property.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/915Revert "h264parser: Expose framerate even if fixed_frame_rate flag isn't set"2021-09-24T21:35:31ZMathieu DuponchelleRevert "h264parser: Expose framerate even if fixed_frame_rate flag isn't set"**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/1215**
This reverts commit 43006110827bdf0a049befb78bf1011676374b82.
The assumption was that:
There is nothing in the spec that state that framer...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/1215**
This reverts commit 43006110827bdf0a049befb78bf1011676374b82.
The assumption was that:
There is nothing in the spec that state that framerate is not valid in
that case.
However, when looking at the speci (section E.2.1), it clearly states that:
fixed_frame_rate_flag equal to 1 indicates that the temporal distance
between the HRD output times of any two consecutive pictures in output
order is constrained as follows. fixed_frame_rate_flag equal to 0
indicates that no such constraints apply to the temporal distance
between the HRD output times of any two consecutive pictures in output order.
When fixed_frame_rate_flag is not present, it shall be inferred to be equal to 0.
Moreover, the process for calculating DeltaTfiDivisor is clearly
conditioned to this flag being set to 1:
When fixed_frame_rate_flag is equal to 1 for a coded video sequence
containing picture n [..]
There is no provision for the value of DeltaTfiDivisor when
fixed_frame_rate_flag is 0.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/914webpenc: add support for animated WebP2024-01-25T18:05:40ZMathieu Duponchellewebpenc: add support for animated WebP**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/1715**
The libwebp API doesn't match very well with the GstVideoEncoder
API, as it only delivers an unframed bitstream once all pictures
have been ...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/1715**
The libwebp API doesn't match very well with the GstVideoEncoder
API, as it only delivers an unframed bitstream once all pictures
have been processed, which means we can only push a single buffer
manually on our srcpad on finish().
Supporting animated webp is still valuable, and the feature is
behind an opt-in property.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/912compositor, videoaggregator: improve gap handling2021-09-24T21:29:18ZMathieu Duponchellecompositor, videoaggregator: improve gap handling**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/944****Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/944**https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/911urisourcebin: extend statistics to include number of queues2022-04-30T06:02:06ZMathieu Duponchelleurisourcebin: extend statistics to include number of queues**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/1194**
At the application level, we can't know whether the current URI
required queuing at all, and judging by the code it isn't trivial
to figure...**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-base/-/merge_requests/1194**
At the application level, we can't know whether the current URI
required queuing at all, and judging by the code it isn't trivial
to figure it out.
Adding the number of queues to the statistics makes it possible
to determine that there is no cause for alarm when all the levels
are at 0 (eg file://)https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/910tests: ignore shout2send in the state change tests2021-09-24T21:24:50ZMathieu Duponchelletests: ignore shout2send in the state change tests**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/204**
sink->conn is leaked racily, cannot reproduce locally, only
on the CI**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-good/-/merge_requests/204**
sink->conn is leaked racily, cannot reproduce locally, only
on the CIhttps://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/908x264enc: expose nal-hrd property2021-09-24T21:19:45ZMathieu Duponchellex264enc: expose nal-hrd property**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-ugly/-/merge_requests/73**
It can be used to force true CBR, and will cause the encoder
to output null padding packets.**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-ugly/-/merge_requests/73**
It can be used to force true CBR, and will cause the encoder
to output null padding packets.https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/902webrtcbin: Do not emit 'negotiation-needed' when we do not have any tranceive...2021-09-24T20:46:11ZThibault Sauniertsaunier@igalia.comwebrtcbin: Do not emit 'negotiation-needed' when we do not have any tranceiver set**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/424**
This implies that we do not have any sinkpad as requesting a sinkpad
leads to creating and tracking a tranceiver**Copied from https://gitlab.freedesktop.org//gstreamer/gst-plugins-bad/-/merge_requests/424**
This implies that we do not have any sinkpad as requesting a sinkpad
leads to creating and tracking a tranceiver