void pulseaudio_toggle_mute(menu_info_item_t* mii) { g_debug("pulseaudio_toggle_mute(%s)", mii->name); pa_operation* o = NULL; int mute = (mii->mute) ? 0 : 1; switch(mii->menu_info->type) { case MENU_SERVER: case MENU_MODULE: /* nothing to do here */ break; case MENU_SINK: o = pa_context_set_sink_mute_by_index(context, mii->index, mute, pulseaudio_toggle_mute_success_cb, mii); break; case MENU_SOURCE: o = pa_context_set_source_mute_by_index(context, mii->index, mute, pulseaudio_toggle_mute_success_cb, mii); break; case MENU_INPUT: o = pa_context_set_sink_input_mute(context, mii->index, mute, pulseaudio_toggle_mute_success_cb, mii); break; case MENU_OUTPUT: o = pa_context_set_source_output_mute(context, mii->index, mute, pulseaudio_toggle_mute_success_cb, mii); break; } if(o) pa_operation_unref(o); }
static int qpa_ctl_in (HWVoiceIn *hw, int cmd, ...) { PAVoiceIn *pa = (PAVoiceIn *) hw; pa_operation *op; pa_cvolume v; paaudio *g = pa->g; #ifdef PA_CHECK_VERSION pa_cvolume_init (&v); #endif switch (cmd) { case VOICE_VOLUME: { SWVoiceIn *sw; va_list ap; va_start (ap, cmd); sw = va_arg (ap, SWVoiceIn *); va_end (ap); v.channels = 2; v.values[0] = ((PA_VOLUME_NORM - PA_VOLUME_MUTED) * sw->vol.l) / UINT32_MAX; v.values[1] = ((PA_VOLUME_NORM - PA_VOLUME_MUTED) * sw->vol.r) / UINT32_MAX; pa_threaded_mainloop_lock (g->mainloop); op = pa_context_set_source_output_volume (g->context, pa_stream_get_index (pa->stream), &v, NULL, NULL); if (!op) { qpa_logerr (pa_context_errno (g->context), "set_source_output_volume() failed\n"); } else { pa_operation_unref(op); } op = pa_context_set_source_output_mute (g->context, pa_stream_get_index (pa->stream), sw->vol.mute, NULL, NULL); if (!op) { qpa_logerr (pa_context_errno (g->context), "set_source_output_mute() failed\n"); } else { pa_operation_unref (op); } pa_threaded_mainloop_unlock (g->mainloop); } } return 0; }
static void gst_pulsesrc_set_stream_mute (GstPulseSrc * pulsesrc, gboolean mute) { pa_operation *o = NULL; if (!pulsesrc->mainloop) goto no_mainloop; if (!pulsesrc->source_output_idx) goto no_index; pa_threaded_mainloop_lock (pulsesrc->mainloop); GST_DEBUG_OBJECT (pulsesrc, "setting mute state to %d", mute); if (!(o = pa_context_set_source_output_mute (pulsesrc->context, pulsesrc->source_output_idx, mute, NULL, NULL))) goto mute_failed; /* We don't really care about the result of this call */ unlock: if (o) pa_operation_unref (o); pa_threaded_mainloop_unlock (pulsesrc->mainloop); return; /* ERRORS */ no_mainloop: { pulsesrc->mute = mute; pulsesrc->mute_set = TRUE; GST_DEBUG_OBJECT (pulsesrc, "we have no mainloop"); return; } no_index: { pulsesrc->mute = mute; pulsesrc->mute_set = TRUE; GST_DEBUG_OBJECT (pulsesrc, "we don't have a stream index"); return; } mute_failed: { GST_ELEMENT_ERROR (pulsesrc, RESOURCE, FAILED, ("pa_stream_set_source_output_mute() failed: %s", pa_strerror (pa_context_errno (pulsesrc->context))), (NULL)); goto unlock; } }
void backend_mute_set(context_t *c, backend_entry_type type, uint32_t idx, int v) { switch(type) { case SINK: pa_context_set_sink_mute_by_index(c->context, idx, v, NULL, NULL); break; case SINK_INPUT: pa_context_set_sink_input_mute(c->context, idx, v, NULL, NULL); break; case SOURCE: pa_context_set_source_mute_by_index(c->context, idx, v, NULL, NULL); break; case SOURCE_OUTPUT: pa_context_set_source_output_mute(c->context, idx, v, NULL, NULL); break; default: break; } }