platform/upstream/gst-plugins-base.git
3 years agovideoconvert: Forward colorimetry and chroma-site from upstream.
Jan Schmidt [Mon, 15 Feb 2021 07:34:33 +0000 (18:34 +1100)]
videoconvert: Forward colorimetry and chroma-site from upstream.

If downstream has expressed no preference for particular colorimetry
and chroma-site configuration, transfer them from the input caps.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/614

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1033>

3 years agodecodebin3: change stream selection message owner
Stéphane Cerveau [Tue, 19 Jan 2021 14:56:18 +0000 (15:56 +0100)]
decodebin3: change stream selection message owner

In order to select the streams on GST_MESSAGE_STREAM_COLLECTION,
the app needs to send the select-streams event
to the decodebin and not to the parsebin.

The message should be always owned by the decodebin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1014>

3 years agolibs: audio: Handle meta changes in gst_audio_buffer_truncate
Vivia Nikolaidou [Wed, 17 Feb 2021 10:41:06 +0000 (12:41 +0200)]
libs: audio: Handle meta changes in gst_audio_buffer_truncate

Set timestamp and duration to GST_CLOCK_TIME_NONE unless trim==0,
because that function doesn't know the rate and therefore can't
calculate them. Set offset and offset_end to appropriate values. Make it
clear in the documentation that the caller is responsible for setting
the timestamp and duration.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/869

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1039>

3 years agouridecodebin3: make caps property work
Tim-Philipp Müller [Mon, 15 Feb 2021 16:05:30 +0000 (16:05 +0000)]
uridecodebin3: make caps property work

The caps set on uridecodebin3 via the "caps" property
were never passed to the internal decodebin3, so did
absolutely nothing.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/837

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1034>

3 years agovideodecoder: Fix racy critical when pool negotiation occurs during flush
Alicia Boya García [Fri, 12 Feb 2021 23:27:04 +0000 (00:27 +0100)]
videodecoder: Fix racy critical when pool negotiation occurs during flush

I found a rather reproducible race in a WebKit LayoutTest when a player
was intantiated and a VP8/9 video was loaded, then torn down after
getting the video dimensions from the caps.

The crash occurs during the handling of the first frame by gstvpxdec.
The following actions happen sequentially leading to a crash.

(MT=Main Thread, ST=Streaming Thread)

MT: Sets pipeline state to NULL, which deactivates vpxdec's srcpad,
    which in turn sets its FLUSHING flag.

ST: gst_vpx_dec_handle_frame() -- which is still running -- calls
    gst_video_decoder_allocate_output_frame(); this in turn calls
    gst_video_decoder_negotiate_unlocked() which fails because the
    srcpad is FLUSHING. As a direct consequence of the negotiation
    failure, a pool is NOT set.

    gst_video_decoder_negotiate_unlocked() still assumes there is a
    pool, crashing in a critical in gst_buffer_pool_acquire_buffer()
    a couple statements later.

This patch fixes the bug by returning != GST_FLOW_OK when the
negotiation fails. If the srcpad is FLUSHING, GST_FLOW_FLUSHING is
returned, otherwise GST_FLOW_ERROR is used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1031>

3 years agolibs: audio: Fix gst_audio_buffer_truncate meta handling
Jan Alexander Steffens (heftig) [Mon, 15 Feb 2021 16:22:47 +0000 (17:22 +0100)]
libs: audio: Fix gst_audio_buffer_truncate meta handling

In the non-interleaved case, it made `buffer` writable but then changed
the meta of the non-writable buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1035>

3 years agoaudioencoder: Fix gst_audio_encoder_get_audio_info return ownership GTK-Doc
Alejandro González [Sat, 13 Feb 2021 21:25:18 +0000 (21:25 +0000)]
audioencoder: Fix gst_audio_encoder_get_audio_info return ownership GTK-Doc

GTK-Doc specifies that, by default, the caller owns returned objects, so that the caller should free them when it is done. However, in the case of this function, the returned GstAudioInfo is owned by the decoder, so this default choice is incorrect. This creates double free problems when using GStreamer Rust bindings, because they are generated using the information contained in the docs.

Fix this by correctly specifying that the caller does not own the returned object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1032>

3 years agoaudiodecoder: Fix gst_audio_decoder_get_audio_info return ownership GTK-Doc
Alejandro González [Sat, 13 Feb 2021 17:24:37 +0000 (17:24 +0000)]
audiodecoder: Fix gst_audio_decoder_get_audio_info return ownership GTK-Doc

GTK-Doc specifies that, by default, the caller owns returned objects, so that the caller should free it when it is done. However, in the case of this function, the returned GstAudioInfo is owned by the decoder, so this default choice is incorrect. This creates double free problems when using GStreamer Rust bindings, because they are generated using the information contained in the docs.

Fix this by correctly specifying that the caller does not own the returned object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1032>

3 years agoencoding-profile: Plug a leak of factory list
Thibault Saunier [Fri, 8 Jan 2021 11:39:32 +0000 (08:39 -0300)]
encoding-profile: Plug a leak of factory list

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1002>

3 years agoencodebin: Add APIs to set element properties on encoding profiles
Thibault Saunier [Fri, 20 Nov 2020 21:35:49 +0000 (18:35 -0300)]
encodebin: Add APIs to set element properties on encoding profiles

User often want to set encoder properties on encoding profiles,
this introduces a way to easily 'preset' properties when defining the
profile. This uses GstStructure to define those properties the same
way it is done in `splitmux` for example as it makes simple to handle.

This also defines a more complex structure type where we can map a set
of properties to set depending on the muxer/encoder factory that has
been picked by EncodeBin so it is quite flexible.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1002>

3 years agoencoding-profile: Cleanup profile serialization documentation
Thibault Saunier [Fri, 20 Nov 2020 21:35:49 +0000 (18:35 -0300)]
encoding-profile: Cleanup profile serialization documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1002>

3 years agogl/dispmanx: fix deadlock triggered by `set_render_rectangle`
Alexander Vandenbulcke [Fri, 8 Jan 2021 10:51:36 +0000 (11:51 +0100)]
gl/dispmanx: fix deadlock triggered by `set_render_rectangle`

When the gstglimagesink is started with the option `glimagesink
render-rectangle="<0,0,1920,1080>"`, the pipeline reaches a deadlock.
The reason the deadlock occurs is that the
`gst_gl_window_set_render_rectangle` takes locks on the window, in
addition it calls `window_class->set_render_rectangle(...)` which
executes the `_on_resize` function. Since the `_on_resize` function also
takes locks on the window the deadlock is achieved.

By scheduling the adjustment of the render rectangle through an async
message for `gst_gl_window_dispmanx_set_render_rectangle`, the actual
resize happens in another context and therefore doesn't suffers from the
lock taken in `gst_gl_window_set_render_rectangle`.

This solution follows the same approach as gl/wayland. The problem was
introduced by b887db1. For the full discussion check #849.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1030>

3 years agovideoconvert,videoscale: Add alternate-field negotiation tests
Vivia Nikolaidou [Thu, 4 Feb 2021 16:51:27 +0000 (18:51 +0200)]
videoconvert,videoscale: Add alternate-field negotiation tests

Make sure buffers with alternate-field interlacing mode can be
negotiated

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1027>

3 years agovideoscale: Support for alternate-field interlacing
Vivia Nikolaidou [Thu, 4 Feb 2021 16:22:15 +0000 (18:22 +0200)]
videoscale: Support for alternate-field interlacing

Accept the negotiation, video-converter.c is aware of the half-height
already

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1027>

3 years agovideoconvert: Support for alternate-field interlacing
Vivia Nikolaidou [Tue, 2 Feb 2021 18:33:27 +0000 (20:33 +0200)]
videoconvert: Support for alternate-field interlacing

Treat the data just like normal data with half the height. Also treat it
as progressive when converting from/to I420 because it requires
different handling for chroma subsampling.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1027>

3 years agoaudio: add GstAudioLevelMeta
Havard Graff [Thu, 5 Apr 2018 09:59:52 +0000 (11:59 +0200)]
audio: add GstAudioLevelMeta

Will be used to implement RTP extension https://tools.ietf.org/html/rfc6464

Co-authored-by: Guillaume Desmottes <guillaume.desmottes@collabora.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/706>

3 years agortpbasedepayload: add auto-header-extension property
Guillaume Desmottes [Tue, 26 Jan 2021 08:37:44 +0000 (09:37 +0100)]
rtpbasedepayload: add auto-header-extension property

Same property as the one I just added on rtpbasepayload.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1022>

3 years agortpbasepayload: add auto-header-extension property
Guillaume Desmottes [Tue, 26 Jan 2021 08:37:44 +0000 (09:37 +0100)]
rtpbasepayload: add auto-header-extension property

Using RTP header extensions is currently not convenient. Users have to
handle signals from the RTP payloader and instantiate the extension
element themselves, making it impossible to use with gst-launch.

Adding a property allowing the payloader to automatically try creating
extensions. This should help simple use cases and testing using
gst-launch.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1022>

3 years agotypefindfunctions: Consider the number and types of atoms found in a row for suggesti...
Sebastian Dröge [Tue, 19 Jan 2021 08:23:12 +0000 (10:23 +0200)]
typefindfunctions: Consider the number and types of atoms found in a row for suggesting a probability

If there are 3 or more known atoms in a row, it's likely that this is
actually MOV/MP4 even if we don't find any other known atoms. If 5 or
more are found then this is most certainly MOV/MP4 and we can return.

Also if a moov and mdat atom is found, this is definitely a MOV/MP4 file
and can be used as such, independent of anything else following the
mdat.

Fixes typefinding of various MOV files that have no `ftyp` atom but
otherwise a valid file structure followed by some garbage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1013>

3 years agogstaudiostreamalign: Pass self as const pointer in getter functions
Marijn Suijten [Fri, 29 Jan 2021 20:40:33 +0000 (21:40 +0100)]
gstaudiostreamalign: Pass self as const pointer in getter functions

It was noticed in [1] that `GstAudioStreamAlign` is a simple boxed type
that is passed as const in the copy function, but not as such in the
getters. These functions turn out to be the only users of `const = true`
overrides in `gstreamer-rs`. Since there is no locking or other advanced
caching/sharing going on (as happens with miniobjects) these functions
can safely take self as const pointer.

[1]: https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/683#note_783129

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1025>

3 years agovideo-hdr: Add API to check content light level equality
Jakub Adam [Mon, 27 Apr 2020 18:52:34 +0000 (20:52 +0200)]
video-hdr: Add API to check content light level equality

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/969>

3 years agortpbasedepayload: set attributes on newly requested extensions
Guillaume Desmottes [Tue, 26 Jan 2021 09:39:34 +0000 (10:39 +0100)]
rtpbasedepayload: set attributes on newly requested extensions

Users were supposed to configure the extension themselves but it was
impossible to do so as they didn't have access to the caps.

Fix #864

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1021>

3 years agortpbasepayload: set attributes on newly requested extensions
Guillaume Desmottes [Tue, 26 Jan 2021 09:39:34 +0000 (10:39 +0100)]
rtpbasepayload: set attributes on newly requested extensions

Users were supposed to configure the extension themselves but it was
impossible to do so as they didn't have access to the caps.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1021>

3 years agortpbasedepayload: fix clear-extensions signal definition
Guillaume Desmottes [Mon, 25 Jan 2021 13:25:45 +0000 (14:25 +0100)]
rtpbasedepayload: fix clear-extensions signal definition

Typo as we were using the wrong enum.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1021>

3 years agooverlay/example: added qt core dependency for qt overlay example
Knobe, Daniel [Tue, 26 Jan 2021 13:05:48 +0000 (14:05 +0100)]
overlay/example: added qt core dependency for qt overlay example

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1020>

3 years agortp: fix clear-extensions signal definition
Guillaume Desmottes [Mon, 25 Jan 2021 13:25:45 +0000 (14:25 +0100)]
rtp: fix clear-extensions signal definition

Typo as we were using the wrong enum.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1018>

3 years agortphdrext: fix typo in doc
Guillaume Desmottes [Fri, 22 Jan 2021 09:10:05 +0000 (10:10 +0100)]
rtphdrext: fix typo in doc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1018>

3 years agogl/examples: fix recordgraphic example
Matthew Waters [Fri, 22 Jan 2021 03:02:29 +0000 (14:02 +1100)]
gl/examples: fix recordgraphic example

Not ported to proper modern OpenGL though but that is the case for a lot
of the GL examples.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/859

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1016>

3 years agogl,video: Make ptrs to VideoInfo and (GL)AllocationParams immutable
Marijn Suijten [Mon, 4 Jan 2021 22:25:10 +0000 (23:25 +0100)]
gl,video: Make ptrs to VideoInfo and (GL)AllocationParams immutable

These parameters are incorrectly regarded as mutable in G-IR making them
"incompatible" with languages that are explicit about mutability like
Rust. In order to clean up the code and expected API there, update the
signatures here, right at the source (instead of overriding them in
Gir.toml and hoping for the best).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1005>

3 years agoaudio/audio-buffer: @buffer in audio_buffer_map is out caller-allocates
Marijn Suijten [Thu, 14 Jan 2021 09:09:40 +0000 (10:09 +0100)]
audio/audio-buffer: @buffer in audio_buffer_map is out caller-allocates

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1005>

3 years agovideo/video-frame: @frame in video_frame_map is out caller-allocates
Marijn Suijten [Wed, 13 Jan 2021 10:07:47 +0000 (11:07 +0100)]
video/video-frame: @frame in video_frame_map is out caller-allocates

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1005>

3 years agoaudio,video: Add `out caller-allocates` to init and from_caps
Marijn Suijten [Tue, 12 Jan 2021 09:34:41 +0000 (10:34 +0100)]
audio,video: Add `out caller-allocates` to init and from_caps

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1005>

3 years agovideosink: Add new GstVideoSink::set_info() virtual method
Sebastian Dröge [Mon, 11 Jan 2021 10:25:33 +0000 (12:25 +0200)]
videosink: Add new GstVideoSink::set_info() virtual method

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/986>

3 years agovideosink: Implement more complete BaseSink::get_times() based on the framerate
Sebastian Dröge [Sat, 26 Dec 2020 12:16:34 +0000 (14:16 +0200)]
videosink: Implement more complete BaseSink::get_times() based on the framerate

This will only make use of the framerate if the subclass is chaining up
BaseSink::set_caps(). Otherwise it will have the same behaviour as the
basesink default.

Doing so is useful if video buffers don't contain a duration to
calculate a default duration, and various video sinks already implement
a custom version of this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/986>

3 years agovideo: Convert info_to_caps to take self as const ptr
Marijn Suijten [Tue, 12 Jan 2021 09:36:34 +0000 (10:36 +0100)]
video: Convert info_to_caps to take self as const ptr

This requires a slight modification to the function itself because it
was overwriting a member locally.

However, now this side-effect cannot be observed outside the function
anymore.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1008>

3 years agogl: add get_type() implementations for all of our memory types
Matthew Waters [Wed, 6 Jan 2021 00:16:18 +0000 (11:16 +1100)]
gl: add get_type() implementations for all of our memory types

Otherwise, various bindings can't really know the type of an object as
required.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/999>

3 years agortpbasepayload: fix header extension length calculation
Jakub Adam [Tue, 12 Jan 2021 21:08:14 +0000 (22:08 +0100)]
rtpbasepayload: fix header extension length calculation

Since ternary operator has the lowest precedence in the expressions at
hand, wordlen would always incorrectly yield 0 or 1.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1009>

3 years agogiosrc: Ensure that an error is posted when underlying file is deleted
Thibault Saunier [Thu, 7 Jan 2021 19:27:25 +0000 (16:27 -0300)]
giosrc: Ensure that an error is posted when underlying file is deleted

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1001>

3 years agovideo-blend: fix blending 8-bit and 16-bit frames together
Jakub Adam [Tue, 14 Jul 2020 18:44:18 +0000 (20:44 +0200)]
video-blend: fix blending 8-bit and 16-bit frames together

Replace hardcoded 255s with the correct max value for the given color
depth. Use 64-bit integer in calculations where overflow may occur.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1000>

3 years agoencodebasebin: Ensure that parsers are compatible with selected encoders
Thibault Saunier [Mon, 7 Dec 2020 14:23:49 +0000 (11:23 -0300)]
encodebasebin: Ensure that parsers are compatible with selected encoders

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/845

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/963>

3 years agogl: document some GL caps specifics
Matthew Waters [Tue, 5 Jan 2021 09:18:24 +0000 (20:18 +1100)]
gl: document some GL caps specifics

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/854
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/996>

3 years agotagdemux: resize and trim buffer in place to fix interaction with oggdemux
Tim-Philipp Müller [Mon, 4 Jan 2021 13:40:20 +0000 (13:40 +0000)]
tagdemux: resize and trim buffer in place to fix interaction with oggdemux

Elements operating in pull mode may optionally pass a buffer to
pull_range that should be filled with the data. The only element
that does that at the moment is oggdemux operating in pull mode.

tagdemux currently creates a sub-buffer whenever a buffer pulled
from upstream (filesrc, usually) needs to be trimmed. This creates
a new buffer, however, so disregards any passed-in buffer from a
downstream oggdemux.

This would cause assertion failures and playback problems for
ogg files that contain ID3 tags at the end.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/848

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/994>

3 years agoappsrc: fix signal documentation
Mathieu Duponchelle [Thu, 31 Dec 2020 16:25:40 +0000 (17:25 +0100)]
appsrc: fix signal documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/992>

3 years agovideoaggregator: Pop out old buffers on timeout
Edward Hervey [Wed, 30 Dec 2020 13:56:54 +0000 (14:56 +0100)]
videoaggregator: Pop out old buffers on timeout

This situation happens in the situation where an input stream has a framerate
exceeding the timeout latency (Ex: 1fps with a latency of 500ms) and an input
stream greater than output framerate (ex: 60fps in, 30 fps out).

The problem that would happen is that we would timeout, but then buffers from
the fast input stream would only be popped out one by one.... until a buffer
reaches the low-framerate input stream at which point they would quickly be
popped out/used. The resulting output would be "slow ... fast ... slow ... fast"
of that input fast stream.

In order to avoid this situation, whenever we detect a late buffer, check if
there's a next one and re-check with that one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/990>

3 years agocompositor/blend.c: fix MT checker pattern
Mathieu Duponchelle [Tue, 29 Dec 2020 22:44:42 +0000 (23:44 +0100)]
compositor/blend.c: fix MT checker pattern

When filling the checker pattern from multiple threads, y_start
needs to be taken into account to determine the shade of the
current pixel.

Example pipeline:

gst-launch-1.0 videotestsrc ! video/x-raw, width=1920, height=1080, format=I420 ! \
  queue ! compositor sink_0::xpos=200 ! video/x-raw, format=I420 ! videoconvert ! \
  xvimagesink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/988>

3 years agocompositor/blend.c: fix MT fill_checker for YUY2
Mathieu Duponchelle [Tue, 29 Dec 2020 22:42:08 +0000 (23:42 +0100)]
compositor/blend.c: fix MT fill_checker for YUY2

The initial byte offset should be calculated from the stride,
not from the dest_add variable

Example pipeline:

gst-launch-1.0 videotestsrc ! video/x-raw, width=1920, height=1080, format=YUY2 ! \
  queue ! compositor sink_0::xpos=200 ! video/x-raw, format=YUY2 ! xvimagesink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/988>

3 years agocompositor/blend: fix blending of subsampled components
Mathieu Duponchelle [Tue, 29 Dec 2020 19:24:51 +0000 (20:24 +0100)]
compositor/blend: fix blending of subsampled components

The correct way to determine the byte offset at a certain yoffset
in a subsampled component is to shift the yoffset by the component's
hsub

This fixes out-of-bounds memory accesses and visible artefacts,
example pipeline with the samples from #802:

gst-launch-1.0 compositor name=vmixer sink_1::xpos=1910 sink_1::ypos=1080 ! \
    videoconvert ! videorate ! xvimagesink \
  filesrc location=VID_20200723_203606.mp4 ! decodebin name=demux1 ! \
    queue ! videoflip method=vertical-flip ! vmixer. \
  filesrc location=bridgeoverstubbledwater.mp4 ! decodebin name=demux2 ! \
    queue ! vmixer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/988>

3 years agodecodebin3: When reconfiguring a slot make sure that the ghostpad is unlinked
Sebastian Dröge [Thu, 24 Dec 2020 09:44:27 +0000 (11:44 +0200)]
decodebin3: When reconfiguring a slot make sure that the ghostpad is unlinked

This was only taken care of previously if there was a decoder before.
However if previously a decoder was not needed then the ghostpad
would've been linked directly to the slot's srcpad.

Reconfiguring the slot requires this to be undone so that linking can
happen normally.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/985>

3 years agoexamples: overlay: Add an example for Win32 window handle with playbin
Seungha Yang [Sun, 20 Dec 2020 13:35:45 +0000 (22:35 +0900)]
examples: overlay: Add an example for Win32 window handle with playbin

Demonstrate video overlay handling on Windows when playbin is in use

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/983>

3 years agohdr: update doc
Stéphane Cerveau [Tue, 15 Dec 2020 21:05:11 +0000 (22:05 +0100)]
hdr: update doc

update GST_VIDEO_HDR10_PLUS_MAX_ROWS_MD_APL and
GST_VIDEO_HDR10_PLUS_MAX_COLS_MD_APL

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/979>

3 years agovideodecoder: Forward hdr-format info downstream
Stéphane Cerveau [Fri, 3 Jul 2020 10:06:14 +0000 (12:06 +0200)]
videodecoder: Forward hdr-format info downstream

By default the hdr-format detected by a parser should
be passed to the downstream element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/650>

3 years agovideo-hdr: add hdr formats
Stéphane Cerveau [Fri, 8 May 2020 09:06:42 +0000 (11:06 +0200)]
video-hdr: add hdr formats

Provide enum and helper method to set the hdr format
name in caps by example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/650>

3 years agovideo-hdr: introduce HDR10+ parser
Stéphane Cerveau [Mon, 19 Oct 2020 13:36:58 +0000 (15:36 +0200)]
video-hdr: introduce HDR10+ parser

Video can now parse a HDR10+ data structure
coming from a SEI message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/650>

3 years agovideo-hdr: add HDR10+ structure
Stéphane Cerveau [Mon, 27 Jan 2020 09:12:05 +0000 (10:12 +0100)]
video-hdr: add HDR10+ structure

Provides structure and GstVideoMeta

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/650>

3 years agoaudiorate: Make buffer writable before changing its metadata
Sebastian Dröge [Tue, 15 Dec 2020 13:07:31 +0000 (15:07 +0200)]
audiorate: Make buffer writable before changing its metadata

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/977>

3 years agogst-libs/gst/video/gstvideoaggregator.c: fix build with gcc 4.8
Fabrice Fontaine [Mon, 14 Dec 2020 06:42:55 +0000 (07:42 +0100)]
gst-libs/gst/video/gstvideoaggregator.c: fix build with gcc 4.8

Fix the following build failure with gcc 4.8 which has been added with
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/commit/d268c193ad39fb970351ed62898be806ebd0a71e:

../gst-libs/gst/video/gstvideoaggregator.c: In function 'gst_video_aggregator_init':
../gst-libs/gst/video/gstvideoaggregator.c:2762:3: error: 'for' loop initial declarations are only allowed in C99 mode
   for (gint i = 0; i < gst_caps_get_size (src_template); i++) {
   ^

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/974>

3 years agolibvisual: workaround clang warning
Jordan Petridis [Thu, 10 Dec 2020 17:06:00 +0000 (19:06 +0200)]
libvisual: workaround clang warning

libvisual api expects a priv data pointer to be passed, though we know its
going to be `GstDebugLevel`.

```
../subprojects/gst-plugins-base/ext/libvisual/plugin.c:33:39: error: cast to smaller integer type 'GstDebugLevel' from 'void *' [-Werror,-Wvoid-pointer-to-enum-cast]
 GST_CAT_LEVEL_LOG (libvisual_debug, (GstDebugLevel) (priv), NULL, "%s - %s",
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/975>

3 years agodecodebin3: Release selection lock when pushing EOS
Edward Hervey [Fri, 11 Dec 2020 09:13:59 +0000 (10:13 +0100)]
decodebin3: Release selection lock when pushing EOS

We can't keep the lock otherwise this would lock other actions. In order to keep
it safe, we grab a list of peer pads to send EOS to with the lock taken, then
send to the peer pads with the lock released.

Also make sure the selection lock is taken for another call to this function

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/847

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/971>

3 years agotypefind: Fix debug category usage
Edward Hervey [Fri, 11 Dec 2020 10:40:22 +0000 (11:40 +0100)]
typefind: Fix debug category usage

Only register it in one place and use it everywhere from the header. Also make
sure it doesn't clash with the debug category from core.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/972>

3 years agotypefindfunctions: allow per features registration
Stéphane Cerveau [Fri, 4 Dec 2020 15:55:53 +0000 (16:55 +0100)]
typefindfunctions: allow per features registration

Split plugin into features including
typefind functions 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-base/-/merge_requests/900>

3 years agopbtypes: allow per features registration
Stéphane Cerveau [Tue, 1 Dec 2020 12:34:15 +0000 (13:34 +0100)]
pbtypes: allow per features 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-base/-/merge_requests/900>

3 years agosubparse: allow per feature registration
Stéphane Cerveau [Mon, 30 Nov 2020 10:00:30 +0000 (11:00 +0100)]
subparse: allow per feature registration

Split plugin into features including
elements and device providers which
can be indiviually registered during
a static build.

More details here:
i
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-base/-/merge_requests/900>

3 years agoogg: allow per feature registration
Julian Bouzas [Tue, 11 Aug 2020 15:47:02 +0000 (11:47 -0400)]
ogg: allow per feature registration

Split plugin into features including
elements and device providers 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-base/-/merge_requests/900>

3 years agoplayback: allow per feature registration
Stéphane Cerveau [Thu, 22 Oct 2020 09:07:26 +0000 (11:07 +0200)]
playback: allow per feature registration

Split plugin into features including
elements and device providers 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-base/-/merge_requests/900>

3 years agoalsa: allow per feature registration
Stéphane Cerveau [Fri, 16 Oct 2020 12:35:04 +0000 (14:35 +0200)]
alsa: allow per feature registration

Split plugin into features including
elements and device providers 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-base/-/merge_requests/900>

3 years agotests: Fix races in the read-growing-file test
Thibault Saunier [Wed, 9 Dec 2020 13:40:40 +0000 (10:40 -0300)]
tests: Fix races in the read-growing-file test

First: the buffer is pushed on the encoding filesink only *after* the
checkpoints, leading to wrong ordering in expectations.

The second one is about EOS being posted on the bus *before* the
stop action is executed, leading to the action never being executed.
That action was plain useless as the default behavior of validate
scenario is to internally create a "stop" action on EOS (unless
disabled by user).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/968>

3 years agogiosrc: Add support for growing source files
Thibault Saunier [Thu, 19 Nov 2020 22:17:18 +0000 (19:17 -0300)]
giosrc: Add support for growing source files

Add a way for applications to specify that the underlying file is
growing which implies that the source won't EOS when reaching the end
of the file but instead start monitoring it and start reading it again
whenever a change is detected.

Also add a validate test to check the behavior

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/937>

3 years agovideo: Make use of gst_video_chroma_site_{from,to}_string() API
Seungha Yang [Wed, 25 Nov 2020 19:04:48 +0000 (04:04 +0900)]
video: Make use of gst_video_chroma_site_{from,to}_string() API

Replace deprecated gst_video_chroma_{from,to}_string()
to newly added gst_video_chroma_site_{from,to}_string()

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/927>

3 years agovideo-chroma: Add support for any combination of chroma-site flags
Seungha Yang [Tue, 10 Nov 2020 09:01:12 +0000 (18:01 +0900)]
video-chroma: Add support for any combination of chroma-site flags

We've been allowing only a few known chroma-site values such as
jpeg (not co-sited), mpeg2 (horizontally co-sited) and
dv (co-sited on alternate lines). That's insufficient for
representing all possible chroma-site values. By this commit,
we can represent any combination of chroma-site flags.
But, an exception here is that any combination with
GST_VIDEO_CHROMA_SITE_NONE will be considered as invalid value.

For any combination of chroma-site flags,
gst_video_chroma_to_string() method is deprecated in order to
return newly allocated string via a new gst_video_chroma_site_to_string()
method. And for consistent API naming, gst_video_chroma_from_string()
is also deprecated. Newly written code should use
gst_video_chroma_site_from_string() instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/927>

3 years agortpbasepayload: pass optional caps fields in a GstStructure
Jakub Adam [Mon, 30 Nov 2020 20:38:08 +0000 (21:38 +0100)]
rtpbasepayload: pass optional caps fields in a GstStructure

For more flexibility, allow to pass the extra output caps fields as
a GstStructure.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/952>

3 years agoaudiobasesrc: always acquire if not acquired in _setcaps
Ratchanan Srirattanamet [Thu, 5 Dec 2019 13:08:36 +0000 (20:08 +0700)]
audiobasesrc: always acquire if not acquired in _setcaps

audiobasesrc's setcaps contains an optimization that makes it not re-
acquire the ringbuffer if the caps have not changed. However, it doesn't
check if it has successfully acquired it or not. It's possible to have
the caps set but not having ringbuffer acquired if the previous attempt
to acquire fails.

This commit replaces the caps existence check with whether the
ringbuffer is acquired or not. There's no need to check for caps
existence because 1.) it's unlikely to be NULL if the ringbuffer is
acquired, and 2.) _setcaps shouldn't be called with a NULL caps.

This should also let the element retry on acquiring ringbuffer after an
error by re-setting the element's state to READY and back to PLAYING.
Whether this behavior is correct is up for debate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/512>

3 years agoglimagesink: Avoid assert in query.
He Junyan [Fri, 6 Nov 2020 06:05:39 +0000 (14:05 +0800)]
glimagesink: Avoid assert in query.

The sink_query just uses context, other_context and display to query info.
But all these objects can be changed or distroyed in state_change() func
and other places.
This patch is not very perfect. The condition race still exists in other
places in this element. All the functions directly access these objects
without protection. Most of them are executed when the data is pushing and
draw context/window have already been established, so they should not have
problems. But the sink_query and propose_allocation functions are the query
-like functions and executed in query context, which can be called in any
state of the element. So it can cause some crash issues because of destroyed
context object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/922>

3 years agoglcolorconver: Return empty caps in transform_caps if fails.
He Junyan [Fri, 6 Nov 2020 08:18:14 +0000 (16:18 +0800)]
glcolorconver: Return empty caps in transform_caps if fails.

We should not return a NULL in transform_caps() function. The NULL
will generate a assert of:
  "transform_caps returned caps which are not a real subset of the
   filter caps"
in transform base class.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/922>

3 years agoglbasefilter: Need to check the display before lock it.
He Junyan [Fri, 6 Nov 2020 07:36:01 +0000 (15:36 +0800)]
glbasefilter: Need to check the display before lock it.

In find_gl_context_unlocked(), the display of filter may be NULL
and can cause crash if we directly access and lock it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/922>

3 years agoglbasefilter: Delete the un-paired unlock in change_state().
He Junyan [Fri, 6 Nov 2020 07:36:21 +0000 (15:36 +0800)]
glbasefilter: Delete the un-paired unlock in change_state().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/922>

3 years agoaudioencoder: Fix incorrect GST_LOG_OBJECT usage
Arun Raghavan [Thu, 3 Dec 2020 11:50:07 +0000 (06:50 -0500)]
audioencoder: Fix incorrect GST_LOG_OBJECT usage

GstBuffer is not a GstObject, so this causes a warning to be emitted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/956>

3 years agortp/basepayload: implement support for rtp header extensions
Matthew Waters [Fri, 10 Jul 2020 05:33:46 +0000 (15:33 +1000)]
rtp/basepayload: implement support for rtp header extensions

New signals are added for managing the internal list of rtp header
extension implementations read by a specific depayloader instance.

If the 'extmap-$NUM' field is present in the src caps, then an
extension implementation will be requested but is not required to be able
to negotiate correctly.  An extension will be requested using the
'request-extension' signal if none could be found internally.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/748>

3 years agortp/basedepayload: implement support for rtp header extensions
Matthew Waters [Fri, 10 Jul 2020 05:30:57 +0000 (15:30 +1000)]
rtp/basedepayload: implement support for rtp header extensions

New signals are added for managing the internal list of rtp header
extension implementations read by a specific depayloader instance.

If the 'extmap-$NUM' field is present in the sink caps, then an
extension implementation will be requested but is not requited to be
able to negotiate correctly.  An extension will be requested using the
'request-extension' signal if none could be found internally.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/748>

3 years agortp: add base object for reading/writing rtp header extensions (RFC5285)
Matthew Waters [Fri, 10 Jul 2020 05:14:09 +0000 (15:14 +1000)]
rtp: add base object for reading/writing rtp header extensions (RFC5285)

Facilitates the creation of rtp header extension implementations that
can be reused across applications.

Implementations are registered into the GStreamer registry as elements
(idea from GstRTSPExtension) and can be retrieved by URI or filtered
manually.  RTP header extensions must have the classification
"Network/Extension/RTPHeader" to be considered as a RTP Header
extension.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/777
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/748>

3 years agogl/eagl: Fix automatic resize behaviour
Mart Raudsepp [Thu, 26 Nov 2020 12:52:26 +0000 (14:52 +0200)]
gl/eagl: Fix automatic resize behaviour

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/681
added a layoutSubViews, which never gets called, because it should have been
called layoutSubviews (non-capital "v"). However after fixing that, it still
doesn't work correctly, because window_width/height values are immediately
updated and then draw_cb will never trigger the resize path, because the
values are already up to date.
Update the values inside the resize path again instead, so the check for
entering the resize path is logically always correct.
This makes the layoutSubviews unnecessary, as it only updated the internal
size values prematurely, so it is deleted instead of method naming fixed.

These changes were originally done to avoid accessing UIKit objects on the
main thread, but no additional accesses are added here, only internal
private variable assignments under the same draw_lock, so there should be
no threading issues reintroduced.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/945>

3 years agogl/eagl: Fix resize condition check in draw_cb to not get called unnecessarily
Mart Raudsepp [Thu, 26 Nov 2020 12:45:05 +0000 (14:45 +0200)]
gl/eagl: Fix resize condition check in draw_cb to not get called unnecessarily

A CGSize contains CGFloat values (a typedef to double or float), which means
that the values aren't equal, despite it being equal after they are cast to
int by assigning them to window_height/width private members. This leads to
excessive gst_gl_window_resize calls on each frame, at least if the CGFloat
value has a .5 decimal value, e.g. 103.5.
Fix it by storing them as CGFloat instead of gint.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/945>

3 years agovideo/converter: increase the number of cache lines for resampling
Matthew Waters [Fri, 20 Nov 2020 05:51:09 +0000 (16:51 +1100)]
video/converter: increase the number of cache lines for resampling

The exising hardcoded max default does not account for the possible
-1 offset when retrieving lines for resampling.  As a result, when
another chain has the same number of cache lines (4), the resample
operation would be attempting to generate 5 lines with a cache size
of 4 and would overwrite the first cache line.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/821

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/938>

3 years agocompositor: Don't crash in prepare_frame() if the pad was just removed
Sebastian Dröge [Tue, 1 Dec 2020 11:13:40 +0000 (13:13 +0200)]
compositor: Don't crash in prepare_frame() if the pad was just removed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/950>

3 years agovideometa: gir annotate the size of plane array in new API
Guillaume Desmottes [Tue, 1 Dec 2020 08:31:48 +0000 (09:31 +0100)]
videometa: gir annotate the size of plane array in new API

Fix #838

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/949>

3 years agoencodebin: Enhance algorithm to check if profiles can be plugged to muxer
Thibault Saunier [Thu, 19 Nov 2020 22:06:12 +0000 (19:06 -0300)]
encodebin: Enhance algorithm to check if profiles can be plugged to muxer

In particular muxing sinks have specific set of sinkpads and we need
to handle that.

3 years agoencodebin: Ignore element classification when a muxer name specified
Thibault Saunier [Thu, 19 Nov 2020 22:03:29 +0000 (19:03 -0300)]
encodebin: Ignore element classification when a muxer name specified

Instead of going through the list of known muxers go ahead and
instantiate the muxer specified as 'preset name' as this specifies
the exact element factory name to use.

3 years agopbutils: Add support for muxing sinks usage in encoding profiles
Thibault Saunier [Fri, 13 Nov 2020 19:32:45 +0000 (16:32 -0300)]
pbutils: Add support for muxing sinks usage in encoding profiles

3 years agoencoding: Implement encodebin2 with an ON_REQUEST src pad
Thibault Saunier [Fri, 13 Nov 2020 19:32:45 +0000 (16:32 -0300)]
encoding: Implement encodebin2 with an ON_REQUEST src pad

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/304

3 years agoencodebin: Split implementation into a base class
Thibault Saunier [Fri, 13 Nov 2020 16:06:32 +0000 (13:06 -0300)]
encodebin: Split implementation into a base class

Create EncodeBaseBin as a base class for the existing
encodebin to allow other implementations.

Co-authored with Jan Schmidt <jan@centricular.com>

3 years agoglcontext: wgl: Implement check_feature vfunc
Seungha Yang [Fri, 27 Nov 2020 19:14:14 +0000 (04:14 +0900)]
glcontext: wgl: Implement check_feature vfunc

There are several WGL specific extenstions such as WGL_NV_DX_interop.
Currently we have no WGL specific extension support and
this commit is also only for debugging purpose.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/947>

3 years agoaudiodecoder: Move max_errors out of GstAudioDecoderContext
Sanchayan Maity [Fri, 27 Nov 2020 06:11:36 +0000 (11:41 +0530)]
audiodecoder: Move max_errors out of GstAudioDecoderContext

Currently max-errors gets set during init to default or via property.
However, if a decoder element calls gst_audio_decoder_reset with 'full'
argument set to TRUE, it would result in all the fields of context being
zeroed with memset. This effectively results in max-errors getting a
value of 0 overriding the default or user requested value set during
init.

This would result in calls to GST_AUDIO_DECODER_ERROR which track error
counts and allow max-errors, to be ineffective.

To fix this move max-errors out of GstAudioDecoderContext, as changes to
context should not affect this. The error_count is anyways also in
GstAudioDecoderPrivate and not in context.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/946>

3 years agoopus: disable docs option in meson fallback
Stéphane Cerveau [Thu, 26 Nov 2020 16:37:01 +0000 (17:37 +0100)]
opus: disable docs option in meson fallback

As the docs are not necessary, no need to keep it
enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/943>

3 years agovideo: Provide "deprecated in" version for gst_video_color_transfer fns
Marijn Suijten [Wed, 25 Nov 2020 19:16:53 +0000 (20:16 +0100)]
video: Provide "deprecated in" version for gst_video_color_transfer fns

As requested in [1].

[1]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/940#note_706437

Fixes: d0f36c7e1 ("video: Rename video_color_transfer to video_transfer_function")

3 years agoaudio: Move fill_silence into audio_format_info
Marijn Suijten [Tue, 24 Nov 2020 19:54:49 +0000 (20:54 +0100)]
audio: Move fill_silence into audio_format_info

With the function named gst_audio_format_fill_silence it would get
associated to the GstAudioFormat type in .gir which is incorrect and
confusing. See [1] for the discussion sparking this change.

https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/630#note_694795

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/940>

3 years agoxvimagesink: Add support for the XV_COLORSPACE attribute.
Jan Schmidt [Wed, 25 Nov 2020 12:54:08 +0000 (23:54 +1100)]
xvimagesink: Add support for the XV_COLORSPACE attribute.

The XV_COLORSPACE attribute exists on some Xv adapters, with the same
semantics as the XV_ITURBT_709 attribute that was already supported.

A value of 0 is bt601, and 1 is for bt709 colorspace.

Fixes color shifting issues displaying bt709 content on some Xv
adapters.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/941>

3 years agodecodebin3: Take into account decoder latency for interleave size
Edward Hervey [Fri, 13 Nov 2020 16:45:12 +0000 (17:45 +0100)]
decodebin3: Take into account decoder latency for interleave size

Some decoders might introduce quite large latencies, which would result in
multiqueue draining out on some streams. In order to avoid that, check the
latency of decoders and adjust the minimum interleave time of multiqueue
accordingly.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/800

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/931>

3 years agodecodebin3: Don't leak filter caps
Edward Hervey [Thu, 19 Nov 2020 13:35:32 +0000 (14:35 +0100)]
decodebin3: Don't leak filter caps

Introduced by previous commit

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/933

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/934>

3 years agodecodebin3: Properly handle caps query with no filter
Edward Hervey [Sat, 14 Nov 2020 08:43:59 +0000 (09:43 +0100)]
decodebin3: Properly handle caps query with no filter

There's no guarantee that upstream elements will do queries with specified
filter caps. If that's the case, just return GST_CAPS_ANY

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/933>

3 years agoopus: add subproject fallback
Tim-Philipp Müller [Sat, 7 Nov 2020 17:30:19 +0000 (17:30 +0000)]
opus: add subproject fallback

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/924>

3 years agocompositor: expose zero-size-is-unscaled property
Mathieu Duponchelle [Sat, 7 Nov 2020 01:59:09 +0000 (02:59 +0100)]
compositor: expose zero-size-is-unscaled property

When that property is left to its default, the width and height
property considers frames from input pads with width or height <= 0
should be left unscaled in that dimension.

Setting this property to FALSE changes that behaviour to < 0, as when
animating these properties, 0 should be a valid end value (eg. shrinking
an input stream until it disappears).

The default value of the width and height properties is set to -1, so that
the default behaviour stays consistent whether that new property is set
or not.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/923>