mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 11:11:08 +00:00
fd90d7bdee
There were two main issues: The mix matrix was not protected with the object lock The code was mistakenly assuming that after updating the mix matrix a reconfigure event sent upstream would be enough to cause upstream to send caps again, and the converter was only reconstructed in ->set_caps. That was not actually enough, as if the new matrix didn't affect the number of input / output channels there was no reason for upstream to do anything after getting the unchanged caps. The fix for this was to have ->transform also recreate the converter when needed, with the added subtlety that depending on the mix matrix the element could be set to passthrough. This means that when setting the mix matrix the converter also had to be recreated immediately to check if the element had to be switched back to non-passthrough. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7363> |
||
---|---|---|
.. | ||
gstaudioconvert.c | ||
gstaudioconvert.h | ||
meson.build | ||
plugin.c |