/* fplay_open * * Prepare the ILDA player to play a given file. */ int fplay_open(const char * fname) { FRESULT res = f_open(&fplay_file, fname, FA_READ); if (res) { outputf("ild_play: no file: %d", res); return -1; } ilda_reset_file(); return 0; }
void playback_refill() { dac_point_t *ptr = 0; int i; int dlen = dac_request(&ptr); /* Have we underflowed? */ if (dlen < 0) { if (le_get_state() != LIGHTENGINE_READY) return; outputf("*U*"); dac_prepare(); return; } /* If we don't have any more room... */ if (dlen == 0) { if (dac_get_state() == DAC_PREPARED) dac_start(); return; } switch (playback_src) { case SRC_ILDAPLAYER: if (!(playback_source_flags & ILDA_PLAYER_PLAYING)) break; outputf("%d", dlen); i = ilda_read_points(dlen, ptr); if (i < 0) { outputf("err: %d", i); playback_source_flags &= ~ILDA_PLAYER_PLAYING; } else if (i == 0) { ilda_reset_file(); if (playback_source_flags & ILDA_PLAYER_REPEAT) { outputf("rep"); } else { outputf("done"); /* If the whole file didn't fit in the * buffer, we may have to start it now. */ dlen = 0; playback_source_flags &= ~ILDA_PLAYER_PLAYING; } } else { dac_advance(i); } break; default: panic("bad playback source"); } /* If the buffer is nearly full, start it up */ if (dlen < 100 && dac_get_state() == DAC_PREPARED) dac_start(); }