mame/src/emu/streams.h
Aaron Giles e31f9a6313 Normalized function pointer typedefs: they are now all
suffixed with _func. Did this throughout the core and
drivers I was familiar with.

Fixed gcc compiler error with recent render.c changes.
gcc does not like explicit (int) casts on float or
double functions. This is fracking annoying and stupid,
but there you have it.
2008-03-03 01:51:31 +00:00

97 lines
3.0 KiB
C

/***************************************************************************
streams.h
Handle general purpose audio streams
Copyright Nicola Salmoria and the MAME Team.
Visit http://mamedev.org for licensing and usage restrictions.
***************************************************************************/
#ifndef STREAMS_H
#define STREAMS_H
#include "mamecore.h"
/***************************************************************************
TYPE DEFINITIONS
***************************************************************************/
typedef struct _sound_stream sound_stream;
typedef void (*stream_update_func)(void *param, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
/* ----- system-level management ----- */
/* initialize the streams engine */
void streams_init(running_machine *machine, attoseconds_t update_subseconds);
/* set the tag to be associated with all streams allocated from now on */
void streams_set_tag(running_machine *machine, void *streamtag);
/* update all the streams periodically */
void streams_update(running_machine *machine);
/* ----- stream configuration and setup ----- */
/* create a new stream */
sound_stream *stream_create(int inputs, int outputs, int sample_rate, void *param, stream_update_func callback);
/* configure a stream's input */
void stream_set_input(sound_stream *stream, int index, sound_stream *input_stream, int output_index, float gain);
/* force a stream to update to the current emulated time */
void stream_update(sound_stream *stream);
/* return a pointer to the output buffer and the number of samples since the last global update */
const stream_sample_t *stream_get_output_since_last_update(sound_stream *stream, int outputnum, int *numsamples);
/* ----- stream timing ----- */
/* return the currently set sample rate on a given stream */
int stream_get_sample_rate(sound_stream *stream);
/* set the sample rate on a given stream */
void stream_set_sample_rate(sound_stream *stream, int sample_rate);
/* return the emulation time of the next sample to be generated on the stream */
attotime stream_get_time(sound_stream *stream);
/* return the duration of a single sample for a stream */
attotime stream_get_sample_period(sound_stream *stream);
/* ----- stream information and control ----- */
/* find a stream using a tag and index */
sound_stream *stream_find_by_tag(void *streamtag, int streamindex);
/* return the number of inputs for a given stream */
int stream_get_inputs(sound_stream *stream);
/* return the number of outputs for a given stream */
int stream_get_outputs(sound_stream *stream);
/* set the input gain on a given stream */
void stream_set_input_gain(sound_stream *stream, int input, float gain);
/* set the output gain on a given stream */
void stream_set_output_gain(sound_stream *stream, int output, float gain);
#endif