Ejemplo n.º 1
0
static int
oss_setformat (ddb_waveformat_t *fmt) {
    trace ("oss_setformat\n");
    if (!fd) {
        memcpy (&plugin.fmt, fmt, sizeof (ddb_waveformat_t));
    }
    if (!memcmp (fmt, &plugin.fmt, sizeof (ddb_waveformat_t))) {
        return 0;
    }

    int _state = state;
    int v4workaround = deadbeef->conf_get_int ("oss.v4workaround", 0);

    deadbeef->mutex_lock (mutex);

    if (v4workaround) {
        if (fd) {
            close (fd);
            fd = 0;
        }
        fd = open (oss_device, O_WRONLY);
        memcpy (&plugin.fmt, fmt, sizeof (ddb_waveformat_t));
    }
    if (0 != oss_set_hwparams (fmt)) {
        deadbeef->mutex_unlock (mutex);
        return -1;
    }

    deadbeef->mutex_unlock (mutex);

    switch (_state) {
    case OUTPUT_STATE_STOPPED:
        return oss_stop ();
    case OUTPUT_STATE_PLAYING:
        return oss_play ();
    case OUTPUT_STATE_PAUSED:
        if (0 != oss_play ()) {
            return -1;
        }
        if (0 != oss_pause ()) {
            return -1;
        }
        break;
    }
    return 0;
}
Ejemplo n.º 2
0
static void
oss_check_fds(fd_set * rfds, fd_set * wfds)
{
	if (FD_ISSET(dsp_fd, wfds))
		oss_play();
	if (FD_ISSET(dsp_fd, rfds))
		oss_record();
}
static void oss_resume(void)
{
	int fillcnt;
	oss_reset();
	fillcnt = oss_get_space() - prepause_space;
	if(fillcnt > 0){
		void *silence = calloc(fillcnt, 1);
      		oss_play(silence, fillcnt);
      		free(silence);
	}
}
Ejemplo n.º 4
0
static int
oss_unpause (void) {
    oss_play ();
    return 0;
}