Mathieu Duponchelle [Thu, 30 May 2019 16:43:14 +0000 (18:43 +0200)]
compositor: remove invalid test
With https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/159,
a single flush start on an aggregator sinkpad will start the flushing
process if the aggregator isn't already flushing.
The behaviour that this test was checking for is thus no longer correct
Daniel Klamt [Tue, 28 May 2019 15:04:51 +0000 (17:04 +0200)]
Added GI annotation for gstvideoaffinetransformationmeta apply_matrix
The problem is that Gobject Introspections does not understand the const
gfloat matrix[16] as an matrix but as an array of gfloasts but as just
one gfloat.
To fix this i added the annotation to the parameter
descriptions.
Mathieu Duponchelle [Fri, 31 May 2019 23:00:06 +0000 (01:00 +0200)]
docs: unprefix subproject paths
special case for app, renamed to applib to not conflict
with the plugin
Mathieu Duponchelle [Wed, 29 May 2019 23:12:59 +0000 (01:12 +0200)]
doc: remove xml from comments
Thibault Saunier [Wed, 29 May 2019 18:41:10 +0000 (14:41 -0400)]
overlaycompositor: Show the full example instead of a stripped down version
Tim-Philipp Müller [Wed, 29 May 2019 10:14:05 +0000 (11:14 +0100)]
docs: update plugin docs cache
Nicolas Dufresne [Tue, 14 May 2019 01:11:12 +0000 (21:11 -0400)]
doc: Add gstoverlaycomposition to the plugins list
Mathieu Duponchelle [Sat, 25 May 2019 17:43:33 +0000 (19:43 +0200)]
Update plugin cache
Mathieu Duponchelle [Sat, 25 May 2019 15:26:52 +0000 (17:26 +0200)]
gstglfiltershader: don't try to link to "version" in doc
Mathieu Duponchelle [Sat, 25 May 2019 14:54:39 +0000 (16:54 +0200)]
doc: fix element section documentations
Element sections were not rendered anymore after the hotdoc
port, fixing this revealed a few incorrect links.
Sebastian Dröge [Fri, 24 May 2019 13:54:50 +0000 (15:54 +0200)]
compositor: Replace shift and conv opcodes by convh in BGRA SOURCE operator
Potentially speeds up processing a bit.
Sebastian Dröge [Fri, 24 May 2019 13:53:55 +0000 (15:53 +0200)]
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
Arun Raghavan [Fri, 24 May 2019 13:22:58 +0000 (15:22 +0200)]
video-color: Deal with NULL colorimetry while converting from string
This came up in the case where v4l2 sets caps with colorimetry=NULL, and
then tries to parse back the colorimetry, causing a crash in
gst_video_get_colorimetry() because of g_str_equal(). We fix this by
making sure the only caller of the function never calls it with a null
colorimetry string.
Arun Raghavan [Fri, 24 May 2019 14:35:08 +0000 (16:35 +0200)]
video-color: Fix unknown colorimetry checking
Also drop some deadcode #defines.
Seungha Yang [Sun, 5 May 2019 12:02:46 +0000 (21:02 +0900)]
tests: video: Enable PQ and HLG transfer en/decode tests
Seungha Yang [Sun, 5 May 2019 12:02:55 +0000 (21:02 +0900)]
video-color: Add ARIB STD-B67 transfer chracteristic function
It's known also as Rec. ITU-R BT.2100-1 hybrid log-gamma (HLG) used for
both SDR and HDR rendering.
Seungha Yang [Sun, 5 May 2019 10:22:13 +0000 (19:22 +0900)]
video-color: Add SMPTE ST 2084 support and BT 2100 colorimetry
SMPTE ST 2084 transfer characteristics (a.k.a ITU-R BT.2100-1 perceptual quantization, PQ)
is used for various HDR standard.
With ST 2084, we can represent BT 2100 (Rec. 2100). BT 2100 defines
various aspect of HDR such as resolution, transfer functions, matrix, primaries
and etc. It uses BT2020 color space (primaries and matrix) with PQ or HLG
transfer functions.
Seungha Yang [Sun, 5 May 2019 10:08:55 +0000 (19:08 +0900)]
video-color: Define bt2020-10 transfer characteristics for clarity
bt707, bt2020-10, and bt2020-12 transfer characteristics are functionally
identical but have their own unique values by specification.
Tim-Philipp Müller [Thu, 16 May 2019 07:53:51 +0000 (08:53 +0100)]
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.
Matthew Waters [Mon, 20 May 2019 01:14:27 +0000 (11:14 +1000)]
gl/docs: add to new docs system
Georg Lippitsch [Mon, 26 Feb 2018 13:25:40 +0000 (14:25 +0100)]
alsasrc: Don't use driver timestamp if it's zero
Some alsa interfaces don't provide timestamps and thus always set the timestamp to zero.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/453
Vivia Nikolaidou [Fri, 17 May 2019 13:35:40 +0000 (16:35 +0300)]
audiotestsrc: Max audio frequency is half the rate, not 1/4
https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem
Tim-Philipp Müller [Fri, 17 May 2019 11:26:40 +0000 (12:26 +0100)]
docs: don't build plugins doc cache by default
https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36
Thibault Saunier [Tue, 14 May 2019 02:53:24 +0000 (22:53 -0400)]
docs: Update plugins documentation cache
Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36
Mathieu Duponchelle [Mon, 13 May 2019 23:56:58 +0000 (01:56 +0200)]
gstaudioaggregator: expose output-buffer-duration-fraction
The code for this is mostly lifted from audiobuffersplit, it
allows use cases such as keeping the buffers output by compositor
on one branch and audiomixer on another perfectly aligned, by
requiring the compositor to output a n/d frame rate, and setting
output-buffer-duration to d/n on the audiomixer.
The old output-buffer-duration property now simply maps to its
fractional counterpart, the last set property wins.
Guillaume Desmottes [Tue, 14 May 2019 11:34:13 +0000 (13:34 +0200)]
gloverlaycompositor: fix crash if buffer doesn't have video meta
Fix #501
Seungha Yang [Sun, 12 May 2019 09:33:32 +0000 (18:33 +0900)]
meson: Don't try to find gio-unix on Windows
Thibault Saunier [Tue, 23 Apr 2019 21:51:25 +0000 (17:51 -0400)]
video:doc: Remove duplicated gstvideoutils SECTION
Thibault Saunier [Sun, 11 Nov 2018 22:03:33 +0000 (19:03 -0300)]
Mark some properties as DOC_SHOW_DEFAULT
Thibault Saunier [Fri, 21 Sep 2018 16:54:39 +0000 (13:54 -0300)]
doc: Fix some gtk-doc comments
Thibault Saunier [Mon, 22 Oct 2018 06:17:24 +0000 (08:17 +0200)]
doc: Port to hotdoc
Thibault Saunier [Fri, 14 Sep 2018 12:33:35 +0000 (09:33 -0300)]
doc: Remove gtk-doc support
Thibault Saunier [Mon, 22 Oct 2018 09:44:37 +0000 (11:44 +0200)]
meson: Add variables for gir files
And flatten list of sources for dependencies
Thibault Saunier [Mon, 22 Oct 2018 09:37:44 +0000 (11:37 +0200)]
docs: Add some missing sections documentation
Thibault Saunier [Mon, 22 Oct 2018 09:37:41 +0000 (11:37 +0200)]
docs: Enhance GstEncodingProfile and GstEncodingTarget doc
Matthew Waters [Tue, 7 May 2019 08:36:01 +0000 (18:36 +1000)]
glshader: fix default external-oes shaders
In glsl, #extension directives need to before other non-preprocesser
directives. We were placing the precision qualifier before that. Fix
by moving the #extension to the first line in the shader.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/601
Antonio Ospite [Mon, 6 May 2019 11:23:22 +0000 (13:23 +0200)]
test: add subparse test for SRT subtitles with no newline at the end
Add a test to verify that SRT subtitles work even if the last chunk does
not have an empty line after it.
Antonio Ospite [Mon, 6 May 2019 10:48:49 +0000 (12:48 +0200)]
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.
Seungha Yang [Sat, 4 May 2019 14:48:27 +0000 (23:48 +0900)]
video: Add RGB10A2_LE pixel format
Packed 10 bits per each R, G and B channel with MSB 2bits alpha channel.
This format is mapped to Windows' DXGI_FORMAT_R10G10B10A2_UNORM format which is
required for 10bits HDR rendering.
Note that this RGB10A2_LE format is R - B channel swapped version of BGR10A2_LE
Xavier Claessens [Fri, 3 May 2019 18:31:03 +0000 (14:31 -0400)]
Missing "android" choice in gl_winsys
Thibault Saunier [Wed, 1 May 2019 21:22:46 +0000 (17:22 -0400)]
video: Generate GTypes for videotimecode enums
Thibault Saunier [Wed, 1 May 2019 21:22:24 +0000 (17:22 -0400)]
videotimecode: Mark latest_daily_jame as allow-none in init\()
A. Wilcox [Wed, 1 May 2019 16:25:31 +0000 (11:25 -0500)]
video test: Keep BE test inline with LE test
Aaron Boxer [Tue, 30 Apr 2019 21:21:38 +0000 (17:21 -0400)]
video-anc: add AFD/Bar support
Aaron Boxer [Wed, 1 May 2019 19:44:44 +0000 (15:44 -0400)]
video-frame: update docs
mention closed caption caps as valid caps for video buffer flags
Seungha Yang [Fri, 12 Apr 2019 03:09:31 +0000 (12:09 +0900)]
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
Seungha Yang [Thu, 2 May 2019 05:24:27 +0000 (14:24 +0900)]
videoencoder: Forward upstream HDR information to downstream
... if subclass didn't update values. Note that the mastering-display-info
and content-light-level might be updated by user defined value (e.g., encoding option).
Seungha Yang [Sat, 27 Apr 2019 13:29:25 +0000 (22:29 +0900)]
videodecoder: Forward upstream HDR information to downstream
The HDR related information is not part of GstVideoInfo but should be passed
to downstream.
Seungha Yang [Mon, 18 Feb 2019 10:54:35 +0000 (19:54 +0900)]
tests: video: Add test for video-hdr
Seungha Yang [Mon, 18 Feb 2019 04:20:33 +0000 (13:20 +0900)]
video: Add new APIs for HDR information representation
Introduce HDR signalling methods
* GstVideoMasteringDisplayInfo: Representing display color volume info.
Defined by SMPTE ST 2086
* GstVideoContentLightLevel: Representing content light level specified in
CEA-861.3, Appendix A.
Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/400
Robert Rosengren [Mon, 29 Apr 2019 09:25:02 +0000 (11:25 +0200)]
alsasrc: driver timestamps only to be considered if system clock
The system clock check when considering to use driver timestamp
should not include sub-classes of system clock (such as the net clocks).
Danny Smith [Fri, 8 Jun 2018 09:03:03 +0000 (11:03 +0200)]
alsasrc: added option for chosing timestamps
Added an option for chosing if driver or pipeline timestamps shall be
used.
Sebastian Dröge [Fri, 26 Apr 2019 06:44:07 +0000 (09:44 +0300)]
id3tag: Correctly validate the year from v1 tags before passing to GstDateTime
By using strtoul(), invalid values will get mapped to MAXULONG and we
would have to check errno. They won't get mapped to 0.
To solve this, use the signed g_ascii_strtoll(). This will map errors to
0 or G_MAXINT64 or G_MININT64, and the valid range for GstDateTime is >
0 and <= 9999 so we can directly check for this here.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/384
Niels De Graef [Wed, 24 Apr 2019 08:41:24 +0000 (10:41 +0200)]
gl/wayland: Don't prefix wl_shell struct field
As part of commit
808e7127, we prefixed the `GstWlWindow`'s `shell`
field with wl_, to differentiate it from the other types of shells a
Wayland compositor might support. However, this is apparently a struct
that we expose to our users, so changing it means we have an API break.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/592
Sebastian Dröge [Tue, 23 Apr 2019 14:10:47 +0000 (17:10 +0300)]
eglimage: Add compatibility define for DRM_FORMAT_NV24
Sebastian Dröge [Tue, 23 Apr 2019 12:05:43 +0000 (15:05 +0300)]
libs: Fix various Since markers
Sebastian Dröge [Tue, 23 Apr 2019 11:52:28 +0000 (14:52 +0300)]
audioaggregator: Add Since: 1.14 markers to all public structs
Sebastian Dröge [Tue, 23 Apr 2019 11:42:17 +0000 (14:42 +0300)]
video-anc: Add Since: 1.16 marker
Sebastian Dröge [Tue, 23 Apr 2019 11:42:03 +0000 (14:42 +0300)]
videoaggregator: Add Since: 1.16 markers to all public structs
Sebastian Dröge [Tue, 23 Apr 2019 11:31:45 +0000 (14:31 +0300)]
gl: Add various missing Since: 1.16 markers
And add some missing function documentation.
Sebastian Dröge [Mon, 22 Apr 2019 15:33:20 +0000 (18:33 +0300)]
video-anc: Add DID16 value for SMPTE 2016-3 AFD/Bar data
Sebastian Dröge [Mon, 22 Apr 2019 14:06:09 +0000 (17:06 +0300)]
video-anc: Handle SD formats correctly
VANC is stored linearly in SD formats instead of separating the Y and YV
components from each other and having first all Y and then all UV
values.
Kristofer Bjorkstrom [Wed, 27 Mar 2019 11:30:00 +0000 (12:30 +0100)]
rtspconnection: add Content-Length limit
Add the possible to limit the Content-Length
Define an appropriate request size limit and reject requests exceeding
the limit (413 Request Entity Too Large)
Tim-Philipp Müller [Fri, 19 Apr 2019 09:24:36 +0000 (10:24 +0100)]
Back to development
Tim-Philipp Müller [Thu, 18 Apr 2019 23:19:55 +0000 (00:19 +0100)]
Release 1.16.0
Tim-Philipp Müller [Thu, 18 Apr 2019 23:19:55 +0000 (00:19 +0100)]
Update docs
Tim-Philipp Müller [Thu, 18 Apr 2019 23:19:53 +0000 (00:19 +0100)]
Update translations
Michael Tretter [Wed, 23 Jan 2019 11:50:40 +0000 (12:50 +0100)]
glupload: prevent segfault when updating caps
When the glupload element renegotiates the caps, set_caps will reset the
method_impl to NULL, but the method will be kept. transform_caps tries
to use the method_impl to transform the caps, because a method is set,
but will segfault.
Tim-Philipp Müller [Wed, 10 Apr 2019 23:23:25 +0000 (00:23 +0100)]
Release 1.15.90
Tim-Philipp Müller [Wed, 10 Apr 2019 23:23:24 +0000 (00:23 +0100)]
Update docs
Aaron Boxer [Wed, 10 Apr 2019 20:09:19 +0000 (16:09 -0400)]
video-anc: revert "add support for Bar and AFD meta-data"
This reverts commit
8759c368515464193b0b1e119667f64c214d2c49.
GstMeta may not be the appropriate vehicle for this information
Nicolas Dufresne [Wed, 10 Apr 2019 19:08:02 +0000 (15:08 -0400)]
sdp: mikey: Add missing Since marker
Two new enums value where added without a since mark, adding it.
@GST_MIKEY_ENC_AES_GCM_128
@GST_MIKEY_SP_SRTP_AEAD_AUTH_TAG_LEN
Kristofer Bjorkstrom [Wed, 10 Apr 2019 06:45:53 +0000 (08:45 +0200)]
rtspconnection: CSeq initial value set to 0
RFC 7826: "it is RECOMMENDED to start at 0.
Kristofer Bjorkstrom [Tue, 2 Apr 2019 08:01:47 +0000 (10:01 +0200)]
rtspconnection: CSeq validation
Make rtspconnection a little more strict to RFC2326.
Make sure that CSeq is in every RTSP message and that CSeq is valid.
Also break the build_next loop if any parsing fails, By acting on
the builder->status code.
Ulf Olsson [Wed, 3 Apr 2019 06:51:16 +0000 (08:51 +0200)]
mikey: Add support for GCM (RFC 7714)
The MIKEY details can be found in RFC 7714 section "14.3. MIKEY"
Thibault Saunier [Tue, 26 Mar 2019 13:12:55 +0000 (10:12 -0300)]
encoding-target: Lower down some debugging
We do try to load target with 'random' string internally to load EncodingProfiles
Thibault Saunier [Mon, 25 Mar 2019 22:11:54 +0000 (19:11 -0300)]
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.
Guillaume Desmottes [Mon, 25 Mar 2019 12:49:39 +0000 (13:49 +0100)]
video-info: explain in logs why colorimetry are rejected
It wasn't clear from the logs why some colorimetry format were rejected.
Mathieu Duponchelle [Mon, 8 Apr 2019 19:52:52 +0000 (21:52 +0200)]
gstvideometa: fix annotation
Víctor Manuel Jáquez Leal [Wed, 3 Apr 2019 16:52:50 +0000 (18:52 +0200)]
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.
Tim-Philipp Müller [Sun, 7 Apr 2019 21:08:37 +0000 (22:08 +0100)]
video-anc: fix g-i complaints
video-anc.h:100: Error: GstVideo: identifier not found on the first line:
* Active Format Description (AFD) support
^
video-anc.h:207: Error: GstVideo: identifier not found on the first line:
* Bar data support
^
video-anc.h:228: Warning: GstVideo: "@top_bar_flag" parameter unexpected at this location:
* @top_bar_flag : flag indicating presence of top bar field
^
Aaron Boxer [Sun, 7 Apr 2019 17:29:15 +0000 (13:29 -0400)]
video-anc: add support for Bar and AFD meta-data
Mathieu Duponchelle [Mon, 19 Nov 2018 22:42:14 +0000 (23:42 +0100)]
basepayload: Expose onvif-no-rate-control property
The ONVIF spec mandates that when Rate-Control=no, the RTP timestamps
match the original sampling times, as opposed to the intended playback
time.
Mathieu Duponchelle [Mon, 19 Nov 2018 22:40:14 +0000 (23:40 +0100)]
rtspdefs: Add Onvif Rate-Control header
Mathieu Duponchelle [Mon, 12 Nov 2018 19:11:59 +0000 (20:11 +0100)]
rtspdefs: Add Onvif Frames header
Matthew Waters [Thu, 4 Apr 2019 12:15:50 +0000 (23:15 +1100)]
examples/gl/sdl: only build on glx/wgl systems
The code will not work anywhere else.
FIxes https://gitlab.freedesktop.org/gstreamer/gst-build/issues/22
Haihao Xiang [Fri, 15 Mar 2019 05:06:53 +0000 (13:06 +0800)]
video: add BGR10A2_LE pixel format
This pixel format is a packed 4:4:4 RGB with alpha channel (B-G-R-A),
R/G/B channel has 10 bits and alpha channel is the MSB 2 bits.
Mathieu Duponchelle [Wed, 3 Apr 2019 15:34:00 +0000 (17:34 +0200)]
gstvideometa: do not emit criticals when adding timecode metas
This is inconsistent with other add_meta methods such as
gst_buffer_add_video_meta , which will return NULL without
logging when gst_video_info_set_format fails.
It is up to the caller to check the return value of the
function, and log if appropriate.
Aaron Boxer [Mon, 1 Apr 2019 16:06:02 +0000 (12:06 -0400)]
discoverer: set 30 second for long-running tests
Aaron Boxer [Mon, 1 Apr 2019 15:10:21 +0000 (11:10 -0400)]
discoverer: async_timeout_cb: don't clean up timeout_source
discoverer_collect() already does this. So, the second
unref triggers an assert.
Aaron Boxer [Mon, 1 Apr 2019 13:53:19 +0000 (09:53 -0400)]
discoverer: fix a race bug in disco test
Jimmy Ohn [Mon, 1 Apr 2019 13:34:28 +0000 (22:34 +0900)]
tests: rtpmeta: Avoid C99 declaration in 'for' loop
Avoid C99 declaration in for loop
Seungha Yang [Sun, 31 Mar 2019 08:39:07 +0000 (17:39 +0900)]
tools: gst-play: Update man page
Add some missing option descriptions including the newly introduced one by
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/185
Seungha Yang [Fri, 29 Mar 2019 04:17:55 +0000 (13:17 +0900)]
gst-play: Add wait-on-eos option for image file playback
Since gst-play is stopping playback on EOS message, image file playback
is almost impossible until now. Not only for image file, this option
seems to helpful if an user wants to see the last frame.
Seungha Yang [Fri, 29 Mar 2019 03:42:45 +0000 (12:42 +0900)]
gluploadelement: Fix caps leak
gst_event_new_caps() does not take ownership of the caps
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/885
Haihao Xiang [Mon, 25 Mar 2019 07:05:48 +0000 (15:05 +0800)]
video: fix unpack_Y410
It should handle data starting from x
Haihao Xiang [Mon, 25 Mar 2019 06:07:08 +0000 (14:07 +0800)]
video: fix unpack_Y210
It should handle data starting from x and width may be an odd
Guillaume Desmottes [Tue, 11 Dec 2018 10:37:36 +0000 (11:37 +0100)]
video-info: check if alternate caps has the feature as well
It's invalid to have a 'interlace-mode=alternate' without the Interlaced caps
feature as well.
Modify gst_video_info_from_caps() to reject such case so we can easily
spot them in bugged elements.
Guillaume Desmottes [Thu, 22 Nov 2018 11:13:06 +0000 (12:13 +0100)]
video-info: handle 'field-order' in alternate mode
The alternate interlace mode may also use the 'field-order' field in caps.
Tim-Philipp Müller [Sun, 24 Mar 2019 20:45:03 +0000 (20:45 +0000)]
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.