Commit graph

4953 commits

Author SHA1 Message Date
Dimitrios Katsaros
19b7b248cc uridecodebin3: Fixed defauts not being set on initialization
The default values were not being set on element initialization. This
was a problem for buffer_duration and buffer_size since they would be
zero initialized, rather then being set to -1. This would cause the
underlaying queue2 element to have no limits and depending on the
streamed file, could cause queue2 to allocate massive amounts of memory.
2020-01-17 13:34:27 +01:00
Víctor Manuel Jáquez Leal
f4bcf8290b playbin3: handle GST_PLAY_FLAG_FORCE_SW_DECODERS
In decodebin3 and uridecodebin3 the `force-sw-decoders` boolean property is
added. In uridecodebin3 it is only a proxy property which will forward
the value to decodebin3.

When decodebin3 has `force-sw-decoders` disabled, it will filter out in its
decoder and decodable factories those elements within the 'Hardware'
class, at reconfiguring output stream.

playbin3 adds by default GST_PLAY_FLAG_FORCE_SW_DECODERS, and sets
`force-sw-decoders` property accordingly to its internal uridecodebin, also
filters out the 'Hardware' class decoder elements when caps
negotiation.
2020-01-09 12:28:32 +00:00
Víctor Manuel Jáquez Leal
f3182a88b1 playbin2: handle GST_PLAY_FLAG_FORCE_SW_DECODERS
Added `force-sw-decoders` boolean property in decodebin2 and
uridecodebin. By default the property is %FALSE and it bypass the new
code. Otherwise the factory list is filtered removing decoders
within 'Hardware' class.

uridecodebin sets the `force-sw-decoders` property in its internal
decodebin, and also filters out Hardware class in the
autoplug-factories default signal handler.

playbin2 adds by default GST_PLAY_FLAG_FORCE_SW_DECODERS it its flags
property, and depending on it playbin2 sets the `force-sw-decoders`
property on its internal uridecodebin, also filters out the Hardware
class decoding decoders at the autoplug-factories signal handler.
2020-01-09 12:28:32 +00:00
Víctor Manuel Jáquez Leal
d50c71708a playback: add GST_PLAY_FLAG_FORCE_SW_DECODERS enum
This flag would be common either for playbin2 and playbin3.
2020-01-09 12:28:32 +00:00
Sebastian Dröge
1c147208cc compositor: memcpy() lines directly for alpha formats with SOURCE operator and alpha=1.0 2020-01-08 16:20:30 +02:00
Randy Li
e85b856d30 rawvideoparse: allow setting the colorimetry
You can neither guess nor parse the colorimetry from the
input stream.

Signed-off-by: Randy Li <ayaka@soulik.info>
2020-01-08 02:34:17 +00:00
Sebastian Dröge
18ee5e57fd compositor: Alpha inputs with the SOURCE operator can be considered opaque
We don't have to look at each pixel's alpha component because we will
directly write it over the background.
2020-01-07 20:03:59 +02:00
Philippe Normand
0a515acfa8 playbin3: Propagate sink context
When the playsink's sink is activated its state is set to READY but it remains
unlinked. So, in order for decodebin3 to potentially reuse the context later on,
the whole playbin3 needs to have it internally stored.
2019-12-31 10:00:20 +00:00
Seungha Yang
539a703b0b playbin: Propagate sink context
Any contexts created by sink during activation need to be propagated
to whole elements of playbin.
2019-12-31 15:51:53 +09:00
Aaron Boxer
0fb2acab5b playbin: remove deprecated raw audio and raw video sink flags
These flags were deprecated in 2011 with commit
105da803ad

Removing these flags will simplify the logic in playbin.
2019-12-22 07:16:11 +00:00
Stéphane Cerveau
58e6f598f4 base: use of g_value_dup_string
Use helper method to get string from GValue.
2019-12-18 16:03:59 +01:00
Tim-Philipp Müller
006f8cea96 typefindfunctions: build gio xdgmime typefinder again
And add gio-typefinder option to disable it. HAVE_GIO
was never set, at least not in the Meson build.
2019-12-09 07:33:55 +00:00
Tim-Philipp Müller
64b6c4796a multifdsink: remove defunct include guarded by unused HAVE_FIONREAD_IN_SYS_FILIO
The configure check for this went away in 2012 in commit cd3eee.
2019-12-09 07:33:55 +00:00
Seungha Yang
fab2d6d60c audiorate: Update next_offset per rate change
To support runtime audio samplerate change, re-calculate next target offset
per caps. Calculating the next buffer offset using the previous
offset seems to be tricky and rounding error prone.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/693
2019-11-18 08:56:21 +00:00
Seungha Yang
b6bdff0c84 Revert "audiorate: accumulate offset by time diff"
This reverts commit 4fa850e3e6.

The commit would break an constant rate audio stream with gap.
2019-11-18 08:56:21 +00:00
Thibault Saunier
494ee67446 playbin: Handle error message with redirection indication
There are in the wild (mp4) streams that basically contain no tracks
but do have a redirect info[0], in which case, qtdemux won't be able
to expose any pad (there are no tracks) so can't post anything but
an error on the bus, as:
  - it can't send EOS downstream, it has no pad,
  - posting an EOS message will be useless as PAUSED state can't be
    reached and there is no sink in the pipeline meaning GstBin will
    simply ignore it

In that case, currently the application could try to handle that but it
is pretty complex as it will get the REDIRECT message on the bus at
which point it could set the URL but playbin will ignore it, as
it will only be for the next EOS, it thus need to set the pipeline to
NULL (READY won't do as it is already in READY at that point). And it
needs to figure out the following ERROR message on the bus needs to be
ignored, which is not really simple.

The approach here is to allow element to add details to the ERROR
message with a `redirect-location` field which elements like playbin handle
and use right away.

We could also use the element 'redirect' message in playbin, but the
issue with that approach is that the element will still emit the ERROR
message on the bus, leading to wrong behaviour. That can't be avoided
since in the case the app/parent pipeline is not handling the redirect
instruction, the ERROR message is necessary (and there is no way to
detect that the message has been "handled" from the element emitting the
redirect).

[0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov
2019-11-07 12:22:02 +00:00
Aaron Boxer
5a2a1ea240 overlaycomposition: set sink pad to proxy allocation queries 2019-11-06 12:09:50 +00:00
Thibault Saunier
a724f9ddfb encodebin: Ensure that a single segment is pushed into encoders
Following the [design document] encodebin needs to handle sources that
output multiple streams, for that purpose and to make it simpler,
we ensure that a single segment is outputted to the encoders by using
an `identity single-segment=true` at the beginning of streams chains.

Added API to enable or disable the use of that new feature.
Added support for the encoding profile parser for that new property,
keeping backward compatibility

[design document]: https://gstreamer.freedesktop.org/documentation/additional/design/encoding.html?gi-language=c#rendering-timelines
2019-11-05 18:03:09 +00:00
Jochen Henneberg
33acf73334 audioconvert: Fixed changing mix-matrix at runtime
Setting the property again after it had already been set ran
g_value_unset() but did not initialize it again to g_value_copy() failed
afterwards. Removed the unset as cleanup is done implicitely from
g_value_copy().

Changing the mix-matrix property did not trigger reconfiguration of the
caps, this has been added.

If the matrix is set to an empty matrix, instead of copying this the
matrix is simply disabled by setting mix_matrix_is_set (formerly
mix_matrix_was_set) to FALSE so the mix-matrix is ignored from now on.
2019-11-05 08:49:07 +01:00
Sebastian Dröge
c363747251 videorate: Fix max-duplication-time handling
Previously this would've only set discont=TRUE and then for all future
buffers simply returned immediately.

Instead we also need to
  a) drain previous input until its buffer time
  b) update next_ts and base_ts accordingly for the gap
  c) actually store the new buffer after the gap so it can be used in
     the future and so the old buffer before the gap is gone

Also update the unit test accordingly so that it actually tests for this
behaviour. Previously it only tested that after the gap we got no output
at all.
2019-11-04 19:01:10 +00:00
Seungha Yang
dc274ea9ca compositor: Add support for VUYA format
Reversed order of AYUV format. Most of core methods are prepared
already.
2019-11-04 14:50:28 +00:00
Tim-Philipp Müller
289d8e53e2 Remove autotools build system 2019-10-13 14:15:43 +01:00
Edward Hervey
2409f4f360 base: Avoid usage of deprecated API
GTimeval and related functions are now deprecated in glib.
Replacement APIs have been present since 2.26
2019-10-11 06:17:39 +00:00
Charlie Turner
96c6f581ae streamsynchronizer: avoid pad destruction races.
Due to the use of {set/get}-element_private methods being used to store
the GstSyncStream in the src and sink pads, and the racey nature of pad
destruction, there are numerous ways we can be bitten by race conditions
in the stream synchronizer. Fix that by tying the pads toghether with
references.
2019-09-24 20:09:09 +00:00
Seungha Yang
41bad88d6d streamsplitter: Drop duplicated force-key-unit events
Forward force-key-unit event only once for the corresponding sequence number.
2019-09-05 22:48:23 +09:00
Seungha Yang
9af8516873 streamcombiner: Forward upstream force-key-unit events to all sinkpads
streamcombiner element forwards a upstream event only to one sinkpad.
When the streamcombiner is used with encodebin, the sinkpad
corresponding to pass-through path is configured before that of encoder,
and therefore streamcombiner forwards upstream events only to
the firstly configured one (i.e., pass-through path).
2019-09-05 22:47:13 +09:00
Thibault Saunier
909baa2360 Pass the code through codespell 2019-08-30 13:05:36 +00:00
Niels De Graef
0314b482f3 Don't pass default GLib marshallers for signals
By passing NULL to `g_signal_new` instead of a marshaller, GLib will
actually internally optimize the signal (if the marshaller is available
in GLib itself) by also setting the valist marshaller. This makes the
signal emission a bit more performant than the regular marshalling,
which still needs to box into `GValue` and call libffi in case of a
generic marshaller.

Note that for custom marshallers, one would use
`g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-08-27 07:31:57 +02:00
Sebastian Dröge
6cc32a39e7 typefindfunctions: Check for NULL return of gst_type_find_peek() instead of segfaulting in otio typefinder
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/329#note_194943
2019-07-23 13:54:24 +03:00
Thibault Saunier
0fe151dfde typefind: Add typefind functions for fcpxml, xmel and otio file formats 2019-07-22 14:24:14 +00:00
Thibault Saunier
6d49814932 Revert "typefind: Hold off making suggestions too early for MPEG based formats"
This reverts commit 36319169d0
2019-07-10 21:57:13 +00:00
Thomas Bluemel
36319169d0 typefind: Hold off making suggestions too early for MPEG based formats
By suggesting possible detection too early, it's possible that
the wrong format is detected. Hold off making suggestions until one
of the following conditions is met:
* Probability > GST_TYPE_FIND_LIKELY
* At least MPEG_MIN_PROBE_LENGTH bytes have been examined
* EOS, in which case the best guess wins

Fixes #628
2019-07-09 20:34:01 -06:00
Tim-Philipp Müller
ff0f659ca5 compositor: fix compiler warning due to c99-ism 2019-06-24 09:44:29 +00:00
Song Bing
3aa1437ae4 playsink: Set ts-offset to text sink.
Find right text sink to set the ts-offset.
2019-06-18 06:14:28 +00:00
Nirbheek Chauhan
abd80b6561 compositor: Copy frames as-is when possible
The blend functions for alpha formats need to do more work than just
doing a memcpy, so we can do a memcpy when we know that a blend is not
actually needed.

1080p AYUV ! compositor background=transparent ! fakesink - 56% faster

Specifically, when we don't draw the background and the first pad we
draw completely covers the output frame, we can just copy it as-is.
The rest of the pads (if any) will get composited on top normally.
2019-06-14 02:50:51 +05:30
Nirbheek Chauhan
bb1650cfda compositor: Sprinkle some const in prototypes
These helper functions don't edit the rectangles passed in.
2019-06-13 20:31:50 +05:30
Nirbheek Chauhan
ba4484c6a0 compositor: Skip background if transparent and obscured
If the background is transparent and obscured by a pad that may or may
not have alpha, we can still skip drawing it entirely

AYUV 1080p ! compositor background=transparent ! fakesink - 75% faster
2019-06-13 20:31:50 +05:30
Nirbheek Chauhan
ba20aec539 compositor: Skip the background when not visible
We don't need to waste time drawing the background when one of the
pads completely covers the output and there's no alpha on the pad or
in the video format. Speedups:

I420 1080p ! compositor ! fakesink - 72% faster
I420 1080p ! compositor background=black ! fakesink - 45% faster
2019-06-13 20:31:50 +05:30
Nirbheek Chauhan
65615a841d compositor: Don't log per-frame under GST_INFO 2019-06-13 20:31:50 +05:30
Nirbheek Chauhan
ecec30c1ca compositor: Factor-out rectangle-obscuring check
We're going to use this for checking if one of the pads obscures the
background.
2019-06-13 20:31:50 +05:30
Nirbheek Chauhan
a3462a2c6d compositor: Add some comments, remove outdated ones 2019-06-13 20:31:50 +05:30
Nirbheek Chauhan
cf3287dba4 compositor: Remove unused function argument 2019-06-13 20:31:50 +05:30
Mathieu Duponchelle
d98835fdef doc: remove xml from comments 2019-05-30 01:12:59 +02:00
Thibault Saunier
1d2994ce64 overlaycompositor: Show the full example instead of a stripped down version 2019-05-29 14:41:10 -04:00
Nicolas Dufresne
48124379d5 doc: Add gstoverlaycomposition to the plugins list 2019-05-29 11:11:12 +01:00
Mathieu Duponchelle
1c85065d16 doc: fix element section documentations
Element sections were not rendered anymore after the hotdoc
port, fixing this revealed a few incorrect links.
2019-05-25 16:55:57 +02:00
Sebastian Dröge
779704b885 compositor: Replace shift and conv opcodes by convh in BGRA SOURCE operator
Potentially speeds up processing a bit.
2019-05-24 15:56:56 +00:00
Sebastian Dröge
2933ef6336 compositor: Remove unneeded left shift for ARGB/AYUV SOURCE operator
The alpha value is already in the lower 8 bits from the beginning in
this case.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/610
2019-05-24 15:56:56 +00:00
Tim-Philipp Müller
b87f830700 uridecodebin, urisourcebin: fix buffering for ssh:// URIs
Protocols that are in the stream_uris list should always
be streams, no matter what they respond to the scheduling
query. The flag in the scheduling query is just another
way to declare something that needs buffering without the
whitelist, the absence of the flag shouldn't make us ignore
our known protocol list.

Also set is_stream always to a boolean and not a mask value.
2019-05-22 09:55:08 +01:00
Vivia Nikolaidou
843cf07564 audiotestsrc: Max audio frequency is half the rate, not 1/4
https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem
2019-05-17 16:35:40 +03:00
Thibault Saunier
287897e465 doc: Fix some gtk-doc comments 2019-05-13 11:34:08 -04:00
Thibault Saunier
27ba8d24ec doc: Port to hotdoc 2019-05-13 11:34:08 -04:00
Thibault Saunier
f9de1b9214 docs: Add some missing sections documentation 2019-05-13 10:19:22 -04:00
Antonio Ospite
1c454fdafc subparse: fix pushing WebVTT cue when last is not an empty line
If the last WebVTT cue does not have an empty line after it, or if it
does not end with a newline at all, it does not get pushed out and it
won't be displayed.

gst_sub_parse_sink_event() already handles the issue for other subtitle
formats, enable handling it for GST_SUB_PARSE_FORMAT_VTT too.

While at it also add a test for this case.
2019-05-06 13:28:02 +02:00
Seungha Yang
909b59dd55 typefindfunctions: Add support HEIF file format finding
A HEIF compatiable file (i.e., mif1 brand) needs special concern
since 'moov' atom is not mandatory for the file although HEIF is
a variant of ISOBMFF

See http://standards.iso.org/ittf/PubliclyAvailableStandards/c066067_ISO_IEC_23008-12_2017.zip
2019-05-02 22:13:39 +09:00
Thibault Saunier
9e004b56fe decodebin: Protect ->source with the object lock
As expected by the property getter.

Basically there are cases where we can be getting the source from
any thread and in another thread bring back the element from PAUSED
to READY, which leads to a critical warning (or worse).

The only place where we use `->source` outside the property getter is
the change_state function so the current way of setting/reading it
should be safe.
2019-04-09 17:20:01 +00:00
Víctor Manuel Jáquez Leal
aa30e8d373 urisourcebin: don't set watermarks when download
downloadbuffer element doesn't handle the properties low-watermark and
high-watermark, those are handled by queue2.

Currently hi and low watermarks are set regardless queue2 or
downloadbuffer are used. Thus, when the later is set, a warning is
raised.

This patch sets the watermark properties first, if no download.
2019-04-08 11:16:22 +00:00
Tim-Philipp Müller
4f73d3cf80 decodebin2: fix pad leak and problem with GWeakRef code
Follow-up to !160 and commit 6a99ad2c.

Firstly, don't leak the sinkpad. g_weak_ref_get() returns
a strong reference (unless it returns NULL), so that must
be unrefed, as detected by the playbin-complex and
discoverer unit tests.

Next, if we do that we get invalid memory access when the
final pad ref is dropped a few lines below after the
request pad is released. The reason for this is that
GWeakRefs are not movable once they're in use, because
their address will be stored inside the object. In this
case the GWeakRef was embedded inside the GstDemuxerPad
struct which in turn was embedded inside the GArray data
section, and when the GArray gets resized, the structs
move. Just KISS and use a list with individual allocations
for each DemuxerPad instead.
2019-03-24 21:55:43 +00:00
Thibault Saunier
6a99ad2c02 decodebin2: Make sure to remove probes when free GstDecodeGroup
Nothing guarantees that when we free a DecodeGroup the demuxer pads
have already been freed and thus the probes have been removed meaning
that in some case it is possible that the pad probes still get called
*after* the GstDecodeGroup is freed, leading to segfaults (as we use
the freed group in that function).

Sample stack trace when that happens:

  #0  sink_pad_query_probe (pad=pad@entry=0x7fe654027180, info=info@entry=0x7ffe433bf270, user_data=0x7fe668076f80) at ../subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3004
  3004          if (last_group->reqpads) {
  [Current thread is 1 (Thread 0x7fe69d8a0880 (LWP 24366))]
  Missing separate debuginfos, use: dnf debuginfo-install elfutils-libelf-0.176-1.fc29.x86_64 elfutils-libs-0.176-1.fc29.x86_64 libXcursor-1.1.15-4.fc29.x86_64 libXi-1.7.9-8.fc29.x86_64 libgpg-error-1.33-1.fc29.x86_64 libvpx-1.7.0-7.fc29.x86_64 soundtouch-2.1.1-1.fc29.x86_64
  (gdb) bt
  #0  0x00007fe68f7f3430 in sink_pad_query_probe (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], info=info@entry=0x7ffe433bf270, user_data=0x7fe668076f80) at ../subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3004
  #1  0x00007fe69e79815e in probe_hook_marshal (hook=0x7fe63003a840, data=0x7ffe433bf160) at ../subprojects/gstreamer/gst/gstpad.c:3565
  #2  0x00007fe69e5774cc in g_hook_list_marshal (hook_list=hook_list@entry=0x7fe654027218, may_recurse=may_recurse@entry=1, marshaller=marshaller@entry=0x7fe69e797d40 <probe_hook_marshal>, data=data@entry=0x7ffe433bf160) at ghook.c:672
  #3  0x00007fe69e797823 in do_probe_callbacks (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], info=info@entry=0x7ffe433bf270, defaultval=defaultval@entry=GST_FLOW_OK) at ../subprojects/gstreamer/gst/gstpad.c:3727
  #4  0x00007fe69e7a25fd in gst_pad_peer_query (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4194
  #5  0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe654027180 [GstMultiQueuePad], data=data@entry=0x7ffe433bf3c0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #6  0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6540273d0 [GstPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433bf3c0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #7  0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6540273d0 [GstPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #8  0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe6540273d0 [GstPad], parent=0x7fe61c035e00 [GstMultiQueue], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #9  0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6540273d0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #10 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe648019620 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #11 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe648019620 [GstPad], data=data@entry=0x7ffe433bf6f0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #12 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe62000a9b0 [GstPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433bf6f0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #13 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0x7fe62000a9b0 [GstPad], parent=<optimized out>, query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #14 0x00007fe69e0594d6 in gst_video_decoder_src_query_default (dec=0x7fe63001e290 [GstVP8Dec], query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:1684
  #15 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe62000a9b0 [GstPad], parent=0x7fe63001e290 [GstVP8Dec], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #16 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe62000a9b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #17 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe630054300 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #18 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe630054300 [GstProxyPad], data=data@entry=0x7ffe433bfa80) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #19 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe660047810 [GstDecodePad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433bfa80) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #20 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe660047810 [GstDecodePad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #21 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe660047810 [GstDecodePad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #22 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe654076cf0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #23 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe654076cf0 [GstProxyPad], data=data@entry=0x7ffe433bfce0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #24 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe668037720 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433bfce0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #25 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe668037720 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #26 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe668037720 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #27 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa762c0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #28 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa762c0 [GstPad], data=data@entry=0x7ffe433bff40) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #29 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa76510 [GstPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433bff40) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #30 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0xa76510 [GstPad], parent=parent@entry=0x7fe67002b240 [GstQueue], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #31 0x00007fe68f7bd321 in gst_queue_handle_src_query (pad=0xa76510 [GstPad], parent=0x7fe67002b240 [GstQueue], query=0x7fe67803f140) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1619
  #32 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa76510 [GstPad], parent=0x7fe67002b240 [GstQueue], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #33 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa76510 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #34 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa770a0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #35 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa6f4d0 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #36 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa772f0 [GstPad], parent=0xa6f4d0 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #37 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa772f0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #38 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa779e0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #39 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa779e0 [GstPad], data=data@entry=0x7ffe433c0550) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #40 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa77c30 [GstPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c0550) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #41 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0xa77c30 [GstPad], parent=parent@entry=0xa7f800 [GstDeinterlace], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #42 0x00007fe68c0449a7 in gst_deinterlace_src_query (pad=0xa77c30 [GstPad], parent=0xa7f800 [GstDeinterlace], query=0x7fe67803f140) at ../subprojects/gst-plugins-good/gst/deinterlace/gstdeinterlace.c:3265
  #43 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa77c30 [GstPad], parent=0xa7f800 [GstDeinterlace], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #44 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa77c30 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #45 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa76760 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #46 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa46860 [GstFramePositioner], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #47 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa769b0 [GstPad], parent=0xa46860 [GstFramePositioner], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #48 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa769b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #49 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa76c00 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #50 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa7eb20 [GstVideoScale], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #51 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa76e50 [GstPad], parent=0xa7eb20 [GstVideoScale], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #52 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa76e50 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #53 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa77540 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #54 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa6f980 [GstVideoRate], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #55 0x00007fe68f7369f0 in gst_video_rate_query (trans=0xa6f980 [GstVideoRate], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst/videorate/gstvideorate.c:1115
  #56 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa77790 [GstPad], parent=0xa6f980 [GstVideoRate], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #57 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa77790 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #58 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa82120 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #59 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa172a0 [GstCapsFilter], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #60 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa82370 [GstPad], parent=0xa172a0 [GstCapsFilter], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #61 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa82370 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #62 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa44c70 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #63 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa44c70 [GstProxyPad], data=data@entry=0x7ffe433c13a0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #64 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6700271e0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c13a0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #65 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6700271e0 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #66 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6700271e0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #67 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa447b0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #68 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa447b0 [GstProxyPad], data=data@entry=0x7ffe433c1600) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #69 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe670026f60 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c1600) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #70 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe670026f60 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #71 0x00007fe68f54bb18 in ghostpad_query_function (ghostpad=0x7fe670026f60 [GstGhostPad], parent=0xa2a870 [NleSource], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:556
  #72 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe670026f60 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #73 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe61c00ab30 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #74 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe61c00ab30 [GstGhostPad], data=data@entry=0x7ffe433c18c0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #75 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680ccab0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c18c0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #76 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680ccab0 [GstProxyPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #77 0x00007fe68f54b6a9 in internalpad_query_function (internal=0x7fe6680ccab0 [GstProxyPad], parent=0x7fe61c00ab30 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:448
  #78 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680ccab0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #79 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe66800e510 [GESSmartMixerPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #80 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe66800e510 [GESSmartMixerPad], data=data@entry=0x7ffe433c1b80) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #81 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680cc5f0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c1b80) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #82 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680cc5f0 [GstProxyPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #83 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680cc5f0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #84 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe66805ee60 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #85 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe66805ee60 [GstGhostPad], data=data@entry=0x7ffe433c1de0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #86 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe654077d90 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c1de0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #87 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe654077d90 [GstProxyPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #88 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe654077d90 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #89 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe654027ac0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #90 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe6680c71d0 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #91 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe654026a90 [GstPad], parent=0x7fe6680c71d0 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #92 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe654026a90 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #93 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6680cc850 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #94 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe6680cc850 [GstProxyPad], data=data@entry=0x7ffe433c22d0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #95 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680374a0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c22d0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #96 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680374a0 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #97 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680374a0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #98 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6680c7e20 [GstCompositorPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #99 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe6680c7e20 [GstCompositorPad], data=data@entry=0x7ffe433c2530) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #100 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa24170 [GstAggregatorPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c2530) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #101 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0xa24170 [GstAggregatorPad], parent=<optimized out>, query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #102 0x00007fe69e0e5512 in gst_aggregator_default_src_query (self=0xa21e90 [GstCompositor], query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstaggregator.c:1909
  #103 0x00007fe69e0547be in gst_video_aggregator_src_query (agg=0xa21e90 [GstCompositor], query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideoaggregator.c:2022
  #104 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa24170 [GstAggregatorPad], parent=0xa21e90 [GstCompositor], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #105 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa24170 [GstAggregatorPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #106 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x9aac10 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #107 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa28280 [GstIdentity], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #108 0x00007fe68f79dfc4 in gst_identity_query (base=0xa28280 [GstIdentity], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/plugins/elements/gstidentity.c:957
  #109 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x9aae60 [GstPad], parent=0xa28280 [GstIdentity], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #110 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aae60 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #111 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99cc40 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #112 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99cc40 [GstProxyPad], data=data@entry=0x7ffe433c2c00) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #113 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9aee40 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c2c00) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #114 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9aee40 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #115 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aee40 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #116 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99d100 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #117 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99d100 [GstProxyPad], data=data@entry=0x7ffe433c2e60) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #118 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9af0c0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c2e60) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #119 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9af0c0 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #120 0x00007fe68f54bb18 in ghostpad_query_function (ghostpad=0x9af0c0 [GstGhostPad], parent=0x99ce70 [NleOperation], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:556
  #121 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9af0c0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #122 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99c2c0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #123 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99c2c0 [GstProxyPad], data=data@entry=0x7ffe433c3120) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #124 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9ae1c0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c3120) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #125 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9ae1c0 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #126 0x00007fe68f54bb18 in ghostpad_query_function (ghostpad=0x9ae1c0 [GstGhostPad], parent=0xa16290 [NleComposition], query=0x7fe67803f140) at ../subprojects/gst-editing-services/plugins/nle/nleghostpad.c:556
  #127 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9ae1c0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #128 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x9aa080 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #129 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0xa165a0 [GstCapsFilter], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #130 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x9aa9c0 [GstPad], parent=0xa165a0 [GstCapsFilter], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #131 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aa9c0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #132 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99c9e0 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #133 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99c9e0 [GstProxyPad], data=data@entry=0x7ffe433c3670) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #134 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9aebc0 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c3670) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #135 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9aebc0 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #136 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9aebc0 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #137 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x99d820 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #138 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x99d820 [GstProxyPad], data=data@entry=0x7ffe433c38d0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #139 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x9af840 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c38d0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #140 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x9af840 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #141 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x9af840 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #142 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6780247d0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #143 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe6780247d0 [GstPad], data=data@entry=0x7ffe433c3b30) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #144 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe684032780 [GstTeePad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c3b30) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #145 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe684032780 [GstTeePad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #146 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe684032780 [GstTeePad], parent=0x7383f0 [GstTee], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #147 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe684032780 [GstTeePad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #148 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe670026060 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #149 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe670026060 [GstGhostPad], data=data@entry=0x7ffe433c3e60) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #150 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x99dce0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c3e60) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #151 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x99dce0 [GstProxyPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #152 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x99dce0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #153 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa8d6b0 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #154 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa8d6b0 [GstPad], data=data@entry=0x7ffe433c40c0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #155 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xa8d900 [GstPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c40c0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #156 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0xa8d900 [GstPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #157 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0xa8d900 [GstPad], parent=0x9f6060 [GstStreamSynchronizer], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #158 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xa8d900 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #159 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xad5a80 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #160 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xad5a80 [GstGhostPad], data=data@entry=0x7ffe433c43f0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #161 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680275b0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c43f0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #162 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680275b0 [GstProxyPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #163 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680275b0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #164 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa39580 [GstPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #165 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xa39580 [GstPad], data=data@entry=0x7ffe433c4650) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #166 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6780240e0 [GstPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c4650) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #167 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=pad@entry=0x7fe6780240e0 [GstPad], parent=parent@entry=0x7fe66800e7b0 [GstQueue], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #168 0x00007fe68f7bd321 in gst_queue_handle_src_query (pad=0x7fe6780240e0 [GstPad], parent=0x7fe66800e7b0 [GstQueue], query=0x7fe67803f140) at ../subprojects/gstreamer/plugins/elements/gstqueue.c:1619
  #169 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe6780240e0 [GstPad], parent=0x7fe66800e7b0 [GstQueue], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #170 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6780240e0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #171 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xad5580 [GstGhostPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #172 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0xad5580 [GstGhostPad], data=data@entry=0x7ffe433c49d0) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #173 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0x7fe6680270f0 [GstProxyPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c49d0) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #174 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0x7fe6680270f0 [GstProxyPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #175 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe6680270f0 [GstProxyPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #176 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe6780255b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #177 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe674032fa0 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #178 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678025a50 [GstPad], parent=0x7fe674032fa0 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #179 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678025a50 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #180 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe678025800 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #181 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe6740346d0 [GstVideoScale], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #182 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678025360 [GstPad], parent=0x7fe6740346d0 [GstVideoScale], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #183 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678025360 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #184 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe678024580 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #185 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe674011950 [GstVideoBalance], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #186 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678025110 [GstPad], parent=0x7fe674011950 [GstVideoBalance], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #187 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678025110 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #188 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0xa8d460 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #189 0x00007fe69e118c6b in gst_base_transform_default_query (trans=0x7fe674037330 [GstVideoConvert], direction=GST_PAD_SRC, query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasetransform.c:1557
  #190 0x00007fe69e6a60e9 in gst_validate_pad_monitor_query_func (pad=0x7fe678024ec0 [GstPad], parent=0x7fe674037330 [GstVideoConvert], query=0x7fe67803f140) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2378
  #191 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0x7fe678024ec0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #192 0x00007fe69e7a263b in gst_pad_peer_query (pad=pad@entry=0x7fe668027350 [GstProxyPad], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #193 0x00007fe69e7a2c2c in query_forward_func (pad=pad@entry=0x7fe668027350 [GstProxyPad], data=data@entry=0x7ffe433c5670) at ../subprojects/gstreamer/gst/gstpad.c:3376
  #194 0x00007fe69e7a0aae in gst_pad_forward (pad=pad@entry=0xad5800 [GstGhostPad], forward=forward@entry=0x7fe69e7a2b70 <query_forward_func>, user_data=user_data@entry=0x7ffe433c5670) at ../subprojects/gstreamer/gst/gstpad.c:3008
  #195 0x00007fe69e7a0ea2 in gst_pad_query_default (pad=0xad5800 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:3447
  #196 0x00007fe68f84ad95 in gst_play_sink_convert_bin_query (pad=0xad5800 [GstGhostPad], parent=<optimized out>, query=0x7fe67803f140) at ../subprojects/gst-plugins-base/gst/playback/gstplaysinkconvertbin.c:525
  #197 0x00007fe69e7a1ee0 in gst_pad_query (pad=pad@entry=0xad5800 [GstGhostPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4071
  #198 0x00007fe69e7a263b in gst_pad_peer_query (pad=0xa380b0 [GstPad], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstpad.c:4203
  #199 0x00007fe69e10564c in default_element_query (element=0xa369f0 [GstFakeSink], query=0x7fe67803f140) at ../subprojects/gstreamer/libs/gst/base/gstbasesink.c:5034
  #200 0x00007fe69e77f8f0 in gst_element_query (element=0xa369f0 [GstFakeSink], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959
  #201 0x00007fe69e7584f7 in bin_query_generic_fold (vitem=<optimized out>, ret=0x7ffe433c59d0, fold=0x7ffe433c5a60) at ../subprojects/gstreamer/gst/gstbin.c:4232
  #202 0x00007fe69e78ffcc in gst_iterator_fold (it=it@entry=0x744820, func=func@entry=0x7fe69e758460 <bin_query_generic_fold>, ret=ret@entry=0x7ffe433c59d0, user_data=user_data@entry=0x7ffe433c5a60) at ../subprojects/gstreamer/gst/gstiterator.c:617
  #203 0x00007fe69e758b82 in bin_iterate_fold (bin=bin@entry=0xa19d80 [GstBin], iter=iter@entry=0x744820, fold_init=fold_init@entry=0x0, fold_done=fold_done@entry=0x0, fold_func=fold_func@entry=0x7fe69e758460 <bin_query_generic_fold>, fold_data=fold_data@entry=0x7ffe433c5a60, default_return=0) at ../subprojects/gstreamer/gst/gstbin.c:4259
  #204 0x00007fe69e75e776 in gst_bin_query (element=0xa19d80 [GstBin], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstbin.c:4379
  #205 0x00007fe69e77f8f0 in gst_element_query (element=0xa19d80 [GstBin], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959
  #206 0x00007fe69e7584f7 in bin_query_generic_fold (vitem=<optimized out>, ret=0x7ffe433c5ba0, fold=0x7ffe433c5c30) at ../subprojects/gstreamer/gst/gstbin.c:4232
  #207 0x00007fe69e78ffcc in gst_iterator_fold (it=it@entry=0x744cf0, func=func@entry=0x7fe69e758460 <bin_query_generic_fold>, ret=ret@entry=0x7ffe433c5ba0, user_data=user_data@entry=0x7ffe433c5c30) at ../subprojects/gstreamer/gst/gstiterator.c:617
  #208 0x00007fe69e758b82 in bin_iterate_fold (bin=bin@entry=0x9f42e0 [GstPlaySink], iter=iter@entry=0x744cf0, fold_init=fold_init@entry=0x0, fold_done=fold_done@entry=0x0, fold_func=fold_func@entry=0x7fe69e758460 <bin_query_generic_fold>, fold_data=fold_data@entry=0x7ffe433c5c30, default_return=0) at ../subprojects/gstreamer/gst/gstbin.c:4259
  #209 0x00007fe69e75e776 in gst_bin_query (element=0x9f42e0 [GstPlaySink], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstbin.c:4379
  #210 0x00007fe69e77f8f0 in gst_element_query (element=0x9f42e0 [GstPlaySink], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959
  #211 0x00007fe69e7584f7 in bin_query_generic_fold (vitem=<optimized out>, ret=0x7ffe433c5d70, fold=0x7ffe433c5e00) at ../subprojects/gstreamer/gst/gstbin.c:4232
  #212 0x00007fe69e78ffcc in gst_iterator_fold (it=it@entry=0x7448d0, func=func@entry=0x7fe69e758460 <bin_query_generic_fold>, ret=ret@entry=0x7ffe433c5d70, user_data=user_data@entry=0x7ffe433c5e00) at ../subprojects/gstreamer/gst/gstiterator.c:617
  #213 0x00007fe69e758b82 in bin_iterate_fold (bin=bin@entry=0x9ee0a0 [GESPipeline], iter=iter@entry=0x7448d0, fold_init=fold_init@entry=0x0, fold_done=fold_done@entry=0x0, fold_func=fold_func@entry=0x7fe69e758460 <bin_query_generic_fold>, fold_data=fold_data@entry=0x7ffe433c5e00, default_return=0) at ../subprojects/gstreamer/gst/gstbin.c:4259
  #214 0x00007fe69e75e776 in gst_bin_query (element=0x9ee0a0 [GESPipeline], query=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstbin.c:4379
  #215 0x00007fe69e77f8f0 in gst_element_query (element=0x9ee0a0 [GESPipeline], query=query@entry=0x7fe67803f140) at ../subprojects/gstreamer/gst/gstelement.c:1959
  #216 0x00007fe69e6b5d01 in _check_position (rate=0x7ffe433c5ee0, position=0x7ffe433c5ee8, act=0xaa82a0, scenario=0x9fe250 [GstValidateScenario]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:1658
  #217 0x00007fe69e6b5d01 in execute_next_action (scenario=scenario@entry=0x9fe250 [GstValidateScenario]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-scenario.c:2107
  #218 0x00007fe69e587b31 in g_timeout_dispatch (source=0xaa7da0, callback=0x7fe69e6b5830 <execute_next_action>, user_data=0x9fe250) at gmain.c:4667
  #219 0x00007fe69e58706d in g_main_dispatch (context=0x71bc50) at gmain.c:3182
  #220 0x00007fe69e58706d in g_main_context_dispatch (context=context@entry=0x71bc50) at gmain.c:3847
  #221 0x00007fe69e587438 in g_main_context_iterate (context=context@entry=0x71bc50, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3920
  #222 0x00007fe69e5874d0 in g_main_context_iteration (context=context@entry=0x71bc50, may_block=may_block@entry=1) at gmain.c:3981
  #223 0x00007fe69e3dfd25 in g_application_run (application=0x71c1f0 [GESLauncher], argc=argc@entry=6, argv=argv@entry=0x7ffe433c61c8) at gapplication.c:2470
  #224 0x000000000040393c in main (argc=6, argv=0x7ffe433c61c8) at ../subprojects/gst-editing-services/tools/ges-launch.c:88
  (gdb) p last_group
  $1 = (GstDecodeGroup *) 0x52c
  (gdb) p group
  $2 = (GstDecodeGroup *) 0x7fe668076f80
  (gdb) p group->parent
  $3 = (GstDecodeChain *) 0x7fe6680774c0
  (gdb) p group->parent->next_group
  There is no member named next_group.
  (gdb) group->parent->next_groups
  Undefined command: "group->parent->next_groups".  Try "help".
  (gdb) p group->parent->next_groups
  $4 = 0x7fe660004280 = {0x528, 0x529, 0x52a, 0x52b, 0x52c}
  (gdb) p *group->parent->next_groups
  $5 = {data=0x528, next=0x7fe668077500, prev=0x7fe64c04ab80}
  (gdb) p *group
  $6 = {dbin = 0x52a, parent = 0x7fe6680774c0, multiqueue = 0x7fe668077500, overrunsig = 167503724544, overrun = 1, no_more_pads = 0, drained = 1745725152, children = 0xa19220 = {0x73d400, <error reading variable>
  (gdb)  Quit
  (gdb)
2019-03-18 11:37:43 +00:00
Vivia Nikolaidou
8ecc3b9730 videorate: Add max-duplication-time property
This will only duplicate buffers if the gap between two consecutive
buffers is up to fill-until nsec. If it's larger, it will only output
the new buffer and mark it as discont.
2019-02-21 15:50:55 +00:00
Thibault Saunier
1a5fb98e53 typefindfunctions: Add a function to typefind xges files 2019-01-29 15:56:12 +00:00
Jordan Petridis
5396ef6e45 subparse: do not assert when failing to parse subrip timestamp
If a badly formatted was passed into `parse_subrip_time` it would
assert instead of exiting gracefully. This is problematic since
the input is provided by the user, and will trigger a crash.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/532
2019-01-14 11:43:57 +00:00
Jan Alexander Steffens (heftig)
8cffa72356 videoscale: Round when fixating to nearest ints to reduce error 2019-01-14 10:18:21 +00:00
Jan Alexander Steffens (heftig)
89519e8809 videoscale: Choose the best dimensions for fixed PAR
We might not get an exact match for width or height if stepped ranges
are involved.
2019-01-14 10:18:21 +00:00
Tim-Philipp Müller
4d603b00d7 Fix some typos in code comments
And don't use gtk-doc chunk markers for internal functions.
2019-01-11 11:27:11 +00:00
Carlos Rafael Giani
c656cfb170 audiotestsrc: Improvements to the "ticks" wave
(Initially discussed in
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/305)

The ticks waveform can be useful for audio synchronization diagnostics
and other cases where the time offset between waveforms is important.
However, in its current form, it is too limited, and has problems with
discontinuities, which result in severe artifacts when this waveform
is output by a DAC.

This patch fixes some discontinuities and considerably expand the ticks
waveform's flexibility. They also introduce the notion of a "marker tick";
every Nth tick can have a different amplitude (usually one that is larger
than the others). This is useful for combining frequent oscilloscope
triggering with large time offset detection. For example, without marker
ticks, the tick intervals must not be too small, otherwise the maximum time
offset that can be unambiguously detected is quite small (for example, if
the interval is 50ms, then no time offset larger than 25ms can be
unambiguously recognized). If the tick intervals are too far apart, then
no sudden changes can be clearly observed, since the oscilloscope is not
updated quickly enough. But with marker ticks, this is not an issue: If
there's for example a tick every 100 ms, then the oscilloscope can be
triggered every 100 ms. And, if every 20th tick is a marker tick, then
time offsets of up to 1 second can be discovered, even though the time
between ticks is 100 ms.

The patch also applies some minor cleanup to the audiotestsrc documentation.
2019-01-10 16:15:47 +00:00
Tim-Philipp Müller
2972b673c0 compositor: add to build after move from -bad
This replaces videomixer.

Fixes #138
2018-12-28 12:16:18 +01:00
Tim-Philipp Müller
f11571f398 Move GstVideoAggregator, compositor and OpenGL mixers from -bad
Merge branch 'videoaggregator-compositor-glmixers-move'

Fixes #137 and #138.
2018-12-28 12:15:39 +01:00
Sebastian Dröge
493d47dca3 typefindfunctions: Extend MCC typefinder to also cover version 2.0
Both versions are basically the same, but version 2.0 also allows
60000/1001 as framerate and allows to specify the field and line number
for each payload.

Put the major version into the caps so that elements can limit via caps
negotiation which versions they can support.
2018-12-28 08:02:11 +00:00
Jordan Petridis
70bfb3885b
typefind: Add SCC and MCC files support 2018-12-26 11:47:08 +02:00
Mathieu Duponchelle
1edb2c4242 audio-converter: add API to determine passthrough mode
audioconvert's passthrough status can no longer be determined
strictly from input / output caps equality, as a mix-matrix can
now be specified.

We now call gst_base_transform_set_passthrough dynamically, based
on the return from the new gst_audio_converter_is_passthrough()
API, which takes the mix matrix into account.
2018-12-17 14:23:49 +00:00
Mathieu Duponchelle
98386927ee audioconvert: disable passthrough_on_same_caps
Now that audioconvert exposes a mix-matrix property, input and
output caps may be equal, but the mix-matrix still needs to be
applied.

Fixes #521
2018-12-17 14:23:49 +00:00
Jan Alexander Steffens (heftig)
29d6f1c698 typefind: Fix a maybe-uninitialized warning
Arch Linux, GCC 8.2.1+20181127, CFLAGS='-Og -g3'
2018-12-05 21:08:33 +00:00
Edward Hervey
23d1440a60 urisourcebin: Avoid potential unitialized/wrong bitrate value
Only calculate and set the bitrate if all conditions are met.
2018-11-09 12:22:31 +01:00
Edward Hervey
18942d7875 urisourcebin: Fix previous commit
rebase wasn't correct :)
2018-11-07 16:28:28 +01:00
Matthew Waters
af166b5b22 urisourcebin: add a statistics property for queueing
It contains the minimum/maximum/average byte and time levels of the
queues inside this urisourcebin

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters
81e00791bf uisourcebin: update forwarded properties on change
Allows changing queueing properties at runtime

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters
784e621b54 urisourcebin: add low/high-watermark properties
These are forwarded to the contained queues.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters
8b69b689c0 urisourcebin: limit the byte size of the queue based on the buffer-size
Use the bitrate advertised by queue2 to determine the limits to
set across possibly multiple queue2/downloadbuffer elements.  e.g.
with two queue2's and a max-bytes based on the ratio of the
bitrate/cumulative_bitrate multiplied by the buffer_size set on urisourcebin.

This allows finer grained control over the buffer used by all the queue
elements inside urisourcebin.  Instead of a maximum of
n_streams*buffer_size being used, only buffer_size will be used however
we will fallback to n_streams*buffer_size if one of the queue2's does
not have bitrate information.

https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60
2018-11-07 15:10:05 +00:00
Matthew Waters
a8e2f76731 urisourcebin: remove unused instance variable streams 2018-11-07 15:10:05 +00:00
Tim-Philipp Müller
fb8a503fd4 compositor: update disted orc backup files 2018-11-02 20:31:54 +00:00
Philippe Normand
610fa16784 playbin3: New text-offset property
This new property controls the synchronisation offset between the text and video
streams. Positive values make the text ahead of the video and negative values
make the text go behind the video.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand
dc5006fa25 playbin: New text-offset property
This new property controls the synchronisation offset between the text and video
streams. Positive values make the text ahead of the video and negative values
make the text go behind the video.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand
ea3b074ead playsink: Add text-offset property
When the playsink contains a text chain this property controls the
synchronisation of the subtitles and video by controlling the underlying
subtitleoverlay::subtitle-ts-offset property.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Philippe Normand
3cd38be94b subtitleoverlay: Add a subtitle-ts-offset property
This property controls the synchronisation offset between text and video in
nanoseconds, by updating the parser src pad offset.

https://bugzilla.gnome.org/show_bug.cgi?id=797134
2018-11-01 09:52:34 +00:00
Víctor Manuel Jáquez Leal
95436fa667 compositor: Fix enum type mismatch
The variable blend_mode is GstCompositorBlendMode but it is
assigned to a GstCompositorOperator enum value.
2018-10-31 19:22:35 +01:00
Johan Bjäreholt
4ab4db11ec compositor: fix undeclared functions 2018-10-30 13:32:33 +01:00
Johan Bjäreholt
f780c718e7 overlaycomposition: Fix implicit use of memset
https://bugzilla.gnome.org/show_bug.cgi?id=797353
2018-10-29 13:12:30 +00:00
Sebastian Dröge
e87fa73e60 compositor: Implement different operators via per-pad property
This removes the crossfade-ratio property and replaces it with an
operator property. Currently this implements the following operators:

- SOURCE: Copy over the source and don't look at the destination
- OVER: Default blending of the source over the destination
- ADD: Like OVER but simply adding the alpha instead

See the example for how to implement crossfading with this.

https://bugzilla.gnome.org/show_bug.cgi?id=797169
2018-10-28 17:13:26 +00:00
Sebastian Dröge
088b4c0c52 overlaycomposition: New element that allows applications to draw GstVideoOverlayComposition on a stream
https://bugzilla.gnome.org/show_bug.cgi?id=797234
2018-10-28 17:03:47 +00:00
Sebastian Dröge
596a4ee12f parsebin: Add missing locks/unlocks of the chain mutex
Before freeing pending pads it is required to hold the mutex, that's
what is protecting the list of pending pads in other places.

https://bugzilla.gnome.org/show_bug.cgi?id=796935
2018-10-28 17:03:47 +00:00
Sebastian Dröge
c41439d16f compositor: Remove extra header for the pad declaration
There's no reason for having this separate apart from making things less
discoverable.
2018-10-27 13:59:57 +01:00
Roland Jon
a15baf7976 decodebin3: fix eos event leak
https://bugzilla.gnome.org/show_bug.cgi?id=796860
2018-10-18 13:03:31 +01:00
Seungha Yang
5adec0db4f meson: Replace empty configuration_data() with copy keyword
Use 'copy' keyword to avoid meson warning message.
Note that 'copy' keyword in configure_file() is available
since meson 0.47.0

https://bugzilla.gnome.org/show_bug.cgi?id=797298
2018-10-17 14:08:47 +01:00
Seungha Yang
3499d9ea64 meson: Replace empty configuration_data() with copy keyword
Use 'copy' keyword to avoid meson warning message.
Note that 'copy' keyword in configure_file() is available
since meson 0.47.0

https://bugzilla.gnome.org/show_bug.cgi?id=797298
2018-10-17 13:48:47 +01:00
Matej Knopp
18f082a0d8 audioconvert: remove layout from structure when fixating caps
otherwise caps intersection always fails when converting non-interleaved to interleaved audio

https://bugzilla.gnome.org/show_bug.cgi?id=797225
2018-10-05 15:40:13 +03:00
Johan Bjäreholt
448ed0f244 Removed unused GST_CAT_PERFORMANCE
https://bugzilla.gnome.org/show_bug.cgi?id=797175
2018-09-19 15:06:19 +03:00
Philippe Normand
62e4e15245 playsink: audio visualization support fixes
The queue between the audiotee and the audio chain wasn't properly added to the
bin, leading to streamsynchronizer locks on EOS. Reconfiguration of the
visualization chain wasn't working as expected either. It is now possible to
dynamically enable/disable the audio visualization support.

https://bugzilla.gnome.org/show_bug.cgi?id=796553
2018-08-16 17:17:42 +01:00
Sebastian Dröge
5485a2b9ee compositor: Define crossfade-ratio to have range [0.0,1.0]
Previously negative values had the same effect as 0.0, which was
confusing.

https://bugzilla.gnome.org/show_bug.cgi?id=796845
2018-08-16 17:08:06 +03:00
Nirbheek Chauhan
eadedc68f8 meson: Add feature options for all plugins
GL dependency detection is still automagic.

https://bugzilla.gnome.org/show_bug.cgi?id=795107
2018-07-27 18:42:11 +05:30