Пример #1
0
static int pulse_setformat (ddb_waveformat_t *fmt)
{
    memcpy (&requested_fmt, fmt, sizeof (ddb_waveformat_t));
    if (!s) {
        return -1;
    }
    if (!memcmp (fmt, &plugin.fmt, sizeof (ddb_waveformat_t))) {
        trace ("pulse_setformat ignored\n");
        return 0;
    }
    trace ("pulse_setformat %dbit %s %dch %dHz channelmask=%X\n", fmt->bps, fmt->is_float ? "float" : "int", fmt->channels, fmt->samplerate, fmt->channelmask);

    int prev_state = state;
    pulse_stop ();
    deadbeef->mutex_lock(mutex);
    pulse_set_spec(fmt);
    deadbeef->mutex_unlock(mutex);
    trace ("new format %dbit %s %dch %dHz channelmask=%X\n", plugin.fmt.bps, plugin.fmt.is_float ? "float" : "int", plugin.fmt.channels, plugin.fmt.samplerate, plugin.fmt.channelmask);

    switch (prev_state) {
    case OUTPUT_STATE_STOPPED:
        return pulse_stop ();
    case OUTPUT_STATE_PLAYING:
        return pulse_play ();
    case OUTPUT_STATE_PAUSED:
        if (0 != pulse_play ()) {
            return -1;
        }
        if (0 != pulse_pause ()) {
            return -1;
        }
        break;
    }
    return 0;
}
Пример #2
0
static int pulse_setformat (ddb_waveformat_t *fmt)
{
    int st = state;
    memcpy (&requested_fmt, fmt, sizeof (ddb_waveformat_t));
    if (!s
        || !memcmp (fmt, &plugin.fmt, sizeof (ddb_waveformat_t))) {
        return 0;
    }

    pulse_free ();
    pulse_init ();
    int res = 0;
    if (st == OUTPUT_STATE_PLAYING) {
        res = pulse_play ();
    }
    else if (st == OUTPUT_STATE_PAUSED) {
        res = pulse_pause ();
    }

    return res;
}
Пример #3
0
void *playback_func(void *arg)
{
	PacketList *list=(PacketList *)arg;
	pulse_play(list);
	return NULL;
}