[Scummvm-cvs-logs] SF.net SVN: scummvm:[38499] scummvm/trunk/engines/sci/sfx/mixer

aquadran at users.sourceforge.net aquadran at users.sourceforge.net
Wed Feb 18 20:35:35 CET 2009


Revision: 38499
          http://scummvm.svn.sourceforge.net/scummvm/?rev=38499&view=rev
Author:   aquadran
Date:     2009-02-18 19:35:35 +0000 (Wed, 18 Feb 2009)

Log Message:
-----------
remove dreamcast mixer platform code - no use for scummvm

Modified Paths:
--------------
    scummvm/trunk/engines/sci/sfx/mixer/mixers.cpp

Removed Paths:
-------------
    scummvm/trunk/engines/sci/sfx/mixer/dc.cpp

Deleted: scummvm/trunk/engines/sci/sfx/mixer/dc.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/mixer/dc.cpp	2009-02-18 19:19:29 UTC (rev 38498)
+++ scummvm/trunk/engines/sci/sfx/mixer/dc.cpp	2009-02-18 19:35:35 UTC (rev 38499)
@@ -1,314 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#include "../mixer.h"
-#include <sci_memory.h>
-#include <dc/sound/sound.h>
-#include <stream.h>
-#include <sys/queue.h>
-
-#define FEED_MODE_ALIVE 0
-#define FEED_MODE_IDLE 1
-#define FEED_MODE_DIEING 2
-#define FEED_MODE_DEAD 3
-#define FEED_MODE_RESTART 4
-
-typedef struct feed_state {
-	/* Queue entry. */
-	TAILQ_ENTRY(feed_state) entry;
-
-	/* Whether feed is alive or dead. */
-	int mode;
-
-	/* Blank gap in frames. */
-	int gap;
-
-	/* Stream handle. */
-	snd_stream_hnd_t handle;
-
-	/* Feed. */
-	sfx_pcm_feed_t *feed;
-
-	/* Timestamp of next frame requested by stream driver. */
-	sfx_timestamp_t time;
-} feed_state_t;
-
-TAILQ_HEAD(feed_list, feed_state) feeds;
-
-/* Buffer size in samples. */
-#define BUF_SIZE 0x4000
-
-static char buf[BUF_SIZE * 2];
-
-static feed_state_t *
-find_feed_state(snd_stream_hnd_t hnd) {
-	feed_state_t *state;
-	TAILQ_FOREACH(state, &feeds, entry) {
-		if (state->handle == hnd)
-			return state;
-	}
-
-	return NULL;
-}
-
-static void
-query_timestamp(feed_state_t *state) {
-	sfx_pcm_feed_t *feed = state->feed;
-
-	if (feed->get_timestamp) {
-		sfx_timestamp_t stamp;
-		int val = feed->get_timestamp(feed, &stamp);
-
-		switch (val) {
-		case PCM_FEED_TIMESTAMP:
-			state->gap = sfx_timestamp_frame_diff(stamp, state->time);
-
-			if (state->gap >= 0)
-				state->mode = FEED_MODE_ALIVE;
-			else {
-				long secs, usecs;
-
-				state->mode = FEED_MODE_RESTART;
-				sci_gettime(&secs, &usecs);
-				state->time = sfx_new_timestamp(secs, usecs, feed->conf.rate);
-				state->gap = sfx_timestamp_frame_diff(stamp, state->time);
-
-				if (state->gap < 0)
-					state->gap = 0;
-			}
-			break;
-		case PCM_FEED_IDLE:
-			state->mode = FEED_MODE_IDLE;
-			break;
-		case PCM_FEED_EMPTY:
-			state->mode = FEED_MODE_DIEING;
-			state->gap = BUF_SIZE;
-		}
-	} else {
-		state->mode = FEED_MODE_DIEING;
-		state->gap = BUF_SIZE;
-	}
-}
-
-void
-U8_to_S16(char *buf, int frames, int stereo) {
-	int samples = frames * (stereo ? 2 : 1);
-	int i;
-
-	for (i = samples - 1; i >= 0; i--) {
-		buf[i * 2 + 1] = (unsigned char) buf[i] - 128;
-		buf[i * 2] = 0;
-	}
-}
-
-static void *
-callback(snd_stream_hnd_t hnd, sfx_timestamp_t timestamp, int bytes_req, int *bytes_recv) {
-	feed_state_t *state = find_feed_state(hnd);
-	sfx_pcm_feed_t *feed;
-	int channels, frames_req;
-	int frames_recv = 0;
-
-	assert(state);
-
-	state->time = timestamp;
-	feed = state->feed;
-	channels = feed->conf.stereo == SFX_PCM_MONO ? 1 : 2;
-	frames_req = bytes_req / 2 / channels;
-
-	while (frames_req != frames_recv) {
-		int frames_left = frames_req - frames_recv;
-		char *buf_pos = buf + frames_recv * channels * 2;
-
-		if (state->mode == FEED_MODE_IDLE)
-			query_timestamp(state);
-
-		if (state->mode == FEED_MODE_IDLE) {
-			memset(buf_pos, 0, frames_left * channels * 2);
-
-			state->time = sfx_timestamp_add(state->time, frames_left);
-			break;
-		}
-
-		if (state->gap) {
-			int frames = state->gap;
-
-			if (frames > frames_left)
-				frames = frames_left;
-
-			memset(buf_pos, 0, frames * channels * 2);
-
-			state->gap -= frames;
-			frames_recv += frames;
-			state->time = sfx_timestamp_add(state->time, frames);
-			if (!state->gap && state->mode == FEED_MODE_DIEING) {
-				state->mode = FEED_MODE_DEAD;
-				break;
-			}
-		} else {
-			int frames = feed->poll(feed, buf_pos, frames_left);
-
-			if (feed->conf.format == SFX_PCM_FORMAT_U8)
-				U8_to_S16(buf_pos, frames, feed->conf.stereo != SFX_PCM_MONO);
-
-			frames_recv += frames;
-			state->time = sfx_timestamp_add(state->time, frames);
-
-			if (frames < frames_left)
-				query_timestamp(state);
-		}
-	}
-
-	*bytes_recv = bytes_req;
-	return buf;
-}
-
-static int
-mix_init(sfx_pcm_mixer_t *self, sfx_pcm_device_t *device) {
-	if (snd_stream_init() < 0) {
-		fprintf(stderr, "[dc-mixer] Failed to initialize streaming sound driver\n");
-		return SFX_ERROR;
-	}
-
-	TAILQ_INIT(&feeds);
-
-	return SFX_OK;
-}
-
-static void
-mix_subscribe(sfx_pcm_mixer_t *self, sfx_pcm_feed_t *feed) {
-	feed_state_t *state = sci_malloc(sizeof(feed_state_t));
-	long secs, usecs;
-
-	if ((feed->conf.format != SFX_PCM_FORMAT_S16_LE) &&
-	        (feed->conf.format != SFX_PCM_FORMAT_U8)) {
-		fprintf(stderr, "[dc-mixer] Unsupported feed format\n");
-		feed->destroy(feed);
-		return;
-	}
-
-	state->handle = snd_stream_alloc(callback, BUF_SIZE);
-
-	if (state->handle == SND_STREAM_INVALID) {
-		fprintf(stderr, "[dc-mixer] Failed to allocate stream handle\n");
-		feed->destroy(feed);
-		return;
-	}
-
-	feed->frame_size = SFX_PCM_FRAME_SIZE(feed->conf);
-	state->mode = FEED_MODE_ALIVE;
-	state->feed = feed;
-	state->gap = 0;
-
-	TAILQ_INSERT_TAIL(&feeds, state, entry);
-
-	sci_gettime(&secs, &usecs);
-	state->time = sfx_new_timestamp(secs, usecs, feed->conf.rate);
-	snd_stream_start(state->handle, feed->conf.rate,
-	                 feed->conf.stereo != SFX_PCM_MONO);
-}
-
-static void
-mix_exit(sfx_pcm_mixer_t *self) {
-	snd_stream_shutdown();
-}
-
-static int
-mix_process(sfx_pcm_mixer_t *self) {
-	feed_state_t *state, *state_next;
-
-	TAILQ_FOREACH(state, &feeds, entry) {
-		snd_stream_poll(state->handle);
-	}
-
-	state = TAILQ_FIRST(&feeds);
-	while (state) {
-		state_next = TAILQ_NEXT(state, entry);
-		if (state->mode == FEED_MODE_DEAD) {
-			snd_stream_stop(state->handle);
-			snd_stream_destroy(state->handle);
-			state->feed->destroy(state->feed);
-			TAILQ_REMOVE(&feeds, state, entry);
-		} else if (state->mode == FEED_MODE_RESTART) {
-			snd_stream_stop(state->handle);
-			snd_stream_start(state->handle, state->feed->conf.rate,
-			                 state->feed->conf.stereo != SFX_PCM_MONO);
-			state->mode = FEED_MODE_ALIVE;
-		}
-		state = state_next;
-	}
-
-	return SFX_OK;
-}
-
-static void
-mix_pause(sfx_pcm_mixer_t *self) {
-}
-
-static void
-mix_resume(sfx_pcm_mixer_t *self) {
-}
-
-static int
-pcm_init(sfx_pcm_device_t *self) {
-	return SFX_OK;
-}
-
-static void
-pcm_exit(sfx_pcm_device_t *self) {
-}
-
-sfx_pcm_device_t sfx_pcm_driver_dc = {
-	"dc",
-	"0.1",
-
-	pcm_init,
-	pcm_exit,
-	NULL,
-	NULL,
-	NULL,
-
-	{0, 0, 0},
-	0,
-	NULL,
-	NULL
-};
-
-sfx_pcm_mixer_t sfx_pcm_mixer_dc = {
-	"dc",
-	"0.1",
-
-	mix_init,
-	mix_exit,
-	mix_subscribe,
-	mix_pause,
-	mix_resume,
-	mix_process,
-
-	0,
-	0,
-	NULL,
-	NULL,
-	NULL
-};

Modified: scummvm/trunk/engines/sci/sfx/mixer/mixers.cpp
===================================================================
--- scummvm/trunk/engines/sci/sfx/mixer/mixers.cpp	2009-02-18 19:19:29 UTC (rev 38498)
+++ scummvm/trunk/engines/sci/sfx/mixer/mixers.cpp	2009-02-18 19:35:35 UTC (rev 38499)
@@ -28,14 +28,7 @@
 
 extern sfx_pcm_mixer_t sfx_pcm_mixer_soft_linear;
 
-#ifdef __DC__
-extern sfx_pcm_mixer_t sfx_pcm_mixer_dc;
-#endif
-
 static sfx_pcm_mixer_t *mixers[] = {
-#ifdef __DC__
-	&sfx_pcm_mixer_dc,
-#endif
 	&sfx_pcm_mixer_soft_linear,
 	NULL
 };


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list