Example #1
0
int main(int argc, char *argv[]) {
    pa_queue *q;

    pa_assert_se(q = pa_queue_new());

    pa_assert(pa_queue_is_empty(q));

    pa_queue_push(q, (void*) "eins");
    pa_log("%s\n", (char*) pa_queue_pop(q));

    pa_assert(pa_queue_is_empty(q));

    pa_queue_push(q, (void*) "zwei");
    pa_queue_push(q, (void*) "drei");
    pa_queue_push(q, (void*) "vier");

    pa_log("%s\n", (char*) pa_queue_pop(q));
    pa_log("%s\n", (char*) pa_queue_pop(q));

    pa_queue_push(q, (void*) "fuenf");

    pa_log("%s\n", (char*) pa_queue_pop(q));
    pa_log("%s\n", (char*) pa_queue_pop(q));

    pa_assert(pa_queue_is_empty(q));

    pa_queue_push(q, (void*) "sechs");
    pa_queue_push(q, (void*) "sieben");

    pa_queue_free(q, NULL, NULL);

    return 0;
}
static void cmtspeech_dl_sideinfo_bogus(struct userdata *u) {
    unsigned int spc_flags = VOICE_SIDEINFO_FLAG_BAD|VOICE_SIDEINFO_FLAG_BOGUS;

    pa_assert(u);

    if (NULL == u->voice_sideinfoq)
        return;

    pa_queue_push(u->voice_sideinfoq, PA_UINT_TO_PTR(spc_flags));

    u->continuous_dl_stream = FALSE;
}
static void cmtspeech_dl_sideinfo_push(unsigned int cmt_spc_flags, int length, struct userdata *u) {
    unsigned int spc_flags;
    pa_assert(length % u->dl_frame_size == 0);
    pa_assert(u);

    if (NULL == u->voice_sideinfoq)
        return;

    spc_flags = cmtspeech_to_voice_spc_flags(cmt_spc_flags);
    spc_flags |= VOICE_SIDEINFO_FLAG_BOGUS;

    while (length) {
        pa_queue_push(u->local_sideinfoq, PA_UINT_TO_PTR(spc_flags));
        length -= u->dl_frame_size;
    }
}
static void cmtspeech_dl_sideinfo_forward(struct userdata *u) {
    unsigned int spc_flags = 0;

    pa_assert(u);

    if (NULL == u->voice_sideinfoq)
        return;

    spc_flags = PA_PTR_TO_UINT(pa_queue_pop(u->local_sideinfoq));

    if (spc_flags == 0) {
        pa_log_warn("Local sideinfo queue empty.");
        spc_flags = VOICE_SIDEINFO_FLAG_BAD|VOICE_SIDEINFO_FLAG_BOGUS;
    }
    else if (!u->continuous_dl_stream)
        spc_flags |= VOICE_SIDEINFO_FLAG_BAD;

    u->continuous_dl_stream = TRUE;

    pa_queue_push(u->voice_sideinfoq, PA_UINT_TO_PTR(spc_flags));
}