return false;
}
+bool pa_classify_ramping_stream(mir_node *node)
+{
+ static bool ramping[mir_application_class_end] = {
+ [ mir_player ] = true,
+ };
+
+ mir_node_type class;
+
+ pa_assert(node);
+
+ if (node->implement == mir_stream && node->direction == mir_input) {
+ class = node->type;
+
+ if (class > mir_application_class_begin &&
+ class < mir_application_class_end)
+ {
+ return ramping[class];
+ }
+ }
+
+ return false;
+}
+
const char *pa_classify_loopback_stream(mir_node *node)
{
const char *role[mir_device_class_end - mir_device_class_begin] = {
mir_node_type pa_classify_guess_application_class(mir_node *);
bool pa_classify_multiplex_stream(mir_node *);
+bool pa_classify_ramping_stream(mir_node *);
const char *pa_classify_loopback_stream(mir_node *);
pa_utils_set_stream_routing_properties(pl, type, data->sink);
}
+ memset(&fake, 0, sizeof(fake));
+ fake.direction = mir_input;
+ fake.implement = mir_stream;
+ fake.type = type;
+
if (!data->sink) {
- memset(&fake, 0, sizeof(fake));
- fake.direction = mir_input;
- fake.implement = mir_stream;
fake.channels = data->channel_map.channels;
- fake.type = type;
fake.zone = pa_utils_get_zone(data->proplist);
fake.visible = true;
fake.available = true;
return true;
}
- pa_log_debug("set sink-input ramp-muted");
- data->flags |= PA_SINK_INPUT_START_RAMP_MUTED;
+ if (pa_classify_ramping_stream(&fake)) {
+ pa_log_debug("set sink-input ramp-muted");
+ data->flags |= PA_SINK_INPUT_START_RAMP_MUTED;
+ }
return true;
}