From a4474e95a447060c313c31c4bc6540ce8821e3da Mon Sep 17 00:00:00 2001 From: "Julien \"_FrnchFrgg_\" RIVAUD" Date: Wed, 1 Aug 2018 14:24:40 +0200 Subject: [PATCH] Make the configuration penalty subtler about inputs Instead of uniformly demote configurations with a non-matching audio input count (using a penalty offset of 1000), also grade the impreciseness of the configuration so that those with the nearest input count are preferred. As for outputs, give a slightly higher handicap to configuration with too many inputs with regard to the actual audio inputs that can be fed to the plugin. POLICY CHANGE: when only imprecise configurations are found the actually selected one can be different (better) than before this commit. --- libs/ardour/audio_unit.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 67938d2de9..c8c546c30d 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -1381,11 +1381,11 @@ AUPlugin::can_support_io_configuration (const ChanCount& in, ChanCount& out, Cha } #define FOUNDCFG_IMPRECISE(in, out) { \ - float p = fabsf ((float)(out) - preferred_out); \ - if (in != audio_in) { \ - p += 1000; \ - } \ - if ((out) > preferred_out) { p *= 1.1; } \ + const float p = \ + fabsf ((float)(out) - preferred_out) * \ + (((out) > preferred_out) ? 1.1 : 1) \ + + fabsf ((float)(in) - audio_in) * \ + (((in) > audio_in) ? 275 : 250); \ FOUNDCFG_PENALTY(in, out, p); \ } @@ -1483,8 +1483,6 @@ AUPlugin::can_support_io_configuration (const ChanCount& in, ChanCount& out, Cha * Really imprecise only if desired_in != audio_in */ FOUNDCFG_IMPRECISE (desired_in, possible_out); } - // ideally we'll also find the closest, best matching - // input configuration with minimal output penalty... } }