Esempio n. 1
0
/* 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;
}
Esempio n. 2
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();
}