module-allow-passthrough has a (necessary) hack to replicate the default
sink selection and format negotiation from sink-input.c. One thing that
got missed in this replication is the possibility that the sink input is
not compatible with the default sink. When this happen, we now exit
gracefully.
if (!new_data->format && new_data->nego_formats && !pa_idxset_isempty(new_data->nego_formats))
new_data->format = pa_format_info_copy(pa_idxset_first(new_data->nego_formats, NULL));
+ if (!new_data->format) {
+ /* Sink doesn't support any requested format */
+ pa_log_debug("Default sink does not match sink input requested formats");
+ return PA_HOOK_OK;
+ }
+
if (pa_sink_input_new_data_is_passthrough(new_data))
return new_passthrough_stream(u, core, new_data->sink, NULL);