59 lines
1.5 KiB
C++
59 lines
1.5 KiB
C++
#ifndef INCLUDED_AUDIOIO_BUFFERED_H
|
|
#define INCLUDED_AUDIOIO_BUFFERED_H
|
|
|
|
#include "audioio.h"
|
|
|
|
class SAMPLE_BUFFER;
|
|
|
|
/**
|
|
* A lower level interface for audio I/O objects. Derived classes
|
|
* must implement routines for reading and/or writing buffers of raw data.
|
|
*/
|
|
class AUDIO_IO_BUFFERED : public AUDIO_IO {
|
|
|
|
public:
|
|
|
|
virtual ~AUDIO_IO_BUFFERED(void);
|
|
AUDIO_IO_BUFFERED(void);
|
|
|
|
virtual void read_buffer(SAMPLE_BUFFER* sbuf);
|
|
virtual void write_buffer(SAMPLE_BUFFER* sbuf);
|
|
|
|
virtual void set_buffersize(long int samples);
|
|
virtual long int buffersize(void) const { return(buffersize_rep); }
|
|
|
|
/**
|
|
* Low-level routine for reading samples. Number of read sample
|
|
* frames is returned. This must be implemented by all subclasses.
|
|
*/
|
|
virtual long int read_samples(void* target_buffer, long int sample_frames) = 0;
|
|
|
|
/**
|
|
* Low-level routine for writing samples. This must be implemented
|
|
* by all subclasses.
|
|
*/
|
|
virtual void write_samples(void* target_buffer, long int sample_frames) = 0;
|
|
|
|
/** @name Reimplemented functions from ECA_AUDIO_FORMAT */
|
|
/*@{*/
|
|
|
|
virtual void set_channels(SAMPLE_SPECS::channel_t v);
|
|
virtual void set_sample_format(Sample_format v) throw(ECA_ERROR&);
|
|
|
|
/*@{*/
|
|
|
|
protected:
|
|
|
|
void reserve_buffer_space(long int bytes);
|
|
unsigned char* get_iobuf(void) const { return(iobuf_uchar_repp); }
|
|
size_t get_iobuf_size(void) const { return(iobuf_size_rep); }
|
|
|
|
private:
|
|
|
|
long int buffersize_rep;
|
|
unsigned char* iobuf_uchar_repp; // buffer for raw-I/O
|
|
size_t iobuf_size_rep;
|
|
};
|
|
|
|
#endif // INCLUDED_AUDIO_IO_BUFFERED
|