Reflow the code to move error handling to the end of the functions. Initialize
gvalue like we do in the setter. Add a unit-test module with two simple tests
the catche this bug.
We don't need the hold the proxy mutex locked for getting the internal pad and
for linking the new target pad when we retarget. So take the lock a little later
and release it earlier.
Fixes#596366
Guard against a hostile child process that sends bogus data
due to memory corruption by adding a magic number to each packet,
and limit the maximum size of any message to 32MB
When trying to find a function plugin-scanner, include a check on the
version of the binary registry chunks it sends, to make sure it's
what we understand.
Add a simple version check when starting the plugin-scanner so we can
verify we're talking to one that talks the same language.
First try a plugin-scanner in the installed path, then try one via the
GST_PLUGIN_SCANNER env var if that doesn't work.
Update the uninstalled script.
Install the plugin-scanner to the libexec dir
When updating the registry, we don't need to re-read the registry cache
and waste time replacing all our existing, hopefully identical, plugins
and features that we're about to re-scan anyway.
phase 2 - make the plugin loader receive the list of plugins to load and
send back the results asynchronously, so we don't context switch back
and forth so much.
The structure_change message was originally emitted on source pads and
then recently changed to be sink pads. This causes a failure in the
gst-python testsuite. Disable the restriction so that the published
behaviour is still allowed.
Also parse the nano of the version and assume that X.Y.Z-1.1 >= X.Y.Z
With this change we can also check development versions against the version of
the upcomming release.
This is available in newer gcc releases and it should only exist
on platforms that provide some native 128bit integer arithmetic
instructions.
The x86-64 assembly for this is still kept for non-gcc compilers
that don't provide __uint128_t magic.
Post the structure change messages on the sinkpads of the elements. This allows
us to catch unlinked pads earlier without ending up with inconsistent element
degrees.
When we detect a pad unlink in progress, we will not be updating the degree of
the parent element. This can cause false loop detected warnings because the
degree counter is invalid. Handle this case by marking the iterator as 'dirty'
when we detect a pad unlink and avoid emiting the warning in this case. We have
to continue our state change as good as we can, we will eventually resync when
the pad unlink completed.
When an element is added to the bin, only set the index if we have a
cached index, rather than setting a NULL index on elements that might
have a default index object of their own.
elementfactory field is filled in by gst_element_base_class_init,
but it needs some info set on the element's type, so have it
available prior to class structure creation spinning up.
This affects elements that have a well-known/public type (e.g. pipeline)
and can be created by other means than gst_element_factory_make
(which will also fill in the element's factory).
Cache the last index that was set with _set_index() and return this in the
_get_index() call.
Set the cached index on newly added elements.
Fixes#566881