/* Called from main context */
static int raw_sink_set_state(pa_sink *s, pa_sink_state_t state) {
    struct userdata *u;

    pa_sink_assert_ref(s);
    pa_assert_se(u = s->userdata);

    int  ret = voice_sink_set_state(s, u->voip_sink, state);
    pa_log_debug("(%p) called with %d", (void *)s, state);
    return ret;
}
/* Called from main context */
static int voip_sink_set_state(pa_sink *s, pa_sink_state_t state) {
    struct userdata *u;
    int ret = 0;
    ENTER();

    pa_sink_assert_ref(s);
    pa_assert_se(u = s->userdata);

    ret = voice_sink_set_state(s, u->raw_sink, state);

    /* TODO: Check if we still need to fiddle with PROP_MIXER_TUNING_MODE */
    if (s->state != PA_SINK_RUNNING && state == PA_SINK_RUNNING) {
        voice_aep_ear_ref_loop_reset(u);
        meego_algorithm_hook_fire(u->hooks[HOOK_CALL_BEGIN], s);
    }
    else if (s->state == PA_SINK_RUNNING && state != PA_SINK_RUNNING)
        meego_algorithm_hook_fire(u->hooks[HOOK_CALL_END], s);

    pa_log_debug("(%p): called with %d", (void *)s, state);
    return ret;
}