void *dspio_init(void) { struct dspio_state *state; state = malloc(sizeof(struct dspio_state)); if (!state) return NULL; memset(&state->dma, 0, sizeof(struct dspio_dma)); state->input_running = state->pcm_input_running = state->lin_input_running = state->mic_input_running = state->output_running = state->dac_running = state->speaker = 0; state->dma.dsp_fifo_enabled = 1; rng_init(&state->fifo_in, DSP_FIFO_SIZE, 2); rng_init(&state->fifo_out, DSP_FIFO_SIZE, 2); rng_init(&state->midi_fifo_in, MIDI_FIFO_SIZE, 1); rng_init(&state->midi_fifo_out, MIDI_FIFO_SIZE, 1); state->i_handle = pcm_register_player(&player, state); pcm_init(); pcm_set_volume_cb(dspio_get_volume); pcm_set_connected_cb(dspio_is_connected); state->dac_strm = pcm_allocate_stream(1, "SB DAC", (void*)MC_VOICE); pcm_set_flag(state->dac_strm, PCM_FLAG_RAW); state->dma_strm = pcm_allocate_stream(2, "SB DMA", (void*)MC_VOICE); pcm_set_flag(state->dma_strm, PCM_FLAG_SLTS); midi_init(); return state; }
CONSTRUCTOR(static void sdlsnd_init(void)) { params.handle = pcm_register_player(&player, NULL); }