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.
}
#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); \
}