pa_idxset_put(sd->idx_ducking_streams, (void *)i, NULL);
- pa_log_info("ducking: add volume_ramp factor, key[%s], set_vol[%u] to stream[idx:%u]",
+ pa_log_error("ducking: add volume_ramp factor, key[%s], set_vol[%u] to stream[idx:%u]",
sd->vol_key, sd->set_vol, i->index);
pa_cvolume_ramp_set(&vol_ramp, i->volume.channels,
pa_sink_input_add_volume_ramp_factor(i, sd->vol_key, &vol_ramp, true);
}
} else {
- pa_log_info("unducking: remove volume(ramp) factor, key[%s] from stream[idx:%u]",
+ pa_log_error("unducking: remove volume(ramp) factor, key[%s] from stream[idx:%u]",
sd->vol_key, i->index);
pa_sink_input_remove_volume_factor(i, sd->vol_key);
(!strlen(sd->target_role) && sd->is_ducked))
pa_hook_fire(&i->core->hooks[PA_CORE_HOOK_SINK_INPUT_RAMP_FINISH], i);
- pa_log_info("remove stream(idx:%u,%p) from idx_ducking_streams, trigger_index(%u)",
+ pa_log_error("remove stream(idx:%u,%p) from idx_ducking_streams, trigger_index(%u)",
i->index, i, sd->trigger_index);
pa_idxset_remove_by_data(sd->idx_ducking_streams, i, NULL);
if (!pa_safe_streq(sd->target_role, pa_proplist_gets(i->proplist, PA_PROP_MEDIA_ROLE)))
continue;
- pa_log_info("add stream(idx:%u,%p) to idx_ducking_streams, trigger_index(%u), volume(%u)",
+ pa_log_error("add stream(idx:%u,%p) to idx_ducking_streams, trigger_index(%u), volume(%u)",
i->index, i, sd->trigger_index, sd->set_vol);
pa_idxset_put(sd->idx_ducking_streams, (void *)i, NULL);
PA_IDXSET_FOREACH(stream, sd->idx_ducking_streams, ducking_idx) {
hal_ducking_activation_info ducking_activation_info;
+ /* Note: It is added temporarily to find missing index of idx_ducking_streams */
+ if (!pa_idxset_get_by_data(m->core->sink_inputs, stream, NULL)) {
+ pa_log_error("could not find stream(%p), skip it", stream);
+ continue;
+ }
pa_log_info(" -- remove volume ramp, key(%s) from remained stream(idx:%u)", sd->vol_key, stream->index);
pa_sink_input_remove_volume_factor(stream, sd->vol_key);