sintonia/library/ecasound-2.7.2/libecasound/audioio-loop.h

67 lines
1.6 KiB
C++

#ifndef INCLUDED_AUDIOIO_LOOP_DEVICE_H
#define INCLUDED_AUDIOIO_LOOP_DEVICE_H
#include <iostream>
#include <string>
#include "audioio.h"
#include "samplebuffer.h"
/**
* Audio object that routes data from inputs to outputs
*/
class LOOP_DEVICE : public AUDIO_IO {
public:
LOOP_DEVICE(std::string tag);
LOOP_DEVICE(void) { }
virtual ~LOOP_DEVICE(void);
virtual LOOP_DEVICE* clone(void) const;
virtual LOOP_DEVICE* new_expr(void) const { return new LOOP_DEVICE(); }
virtual std::string name(void) const { return("Internal loop device"); }
virtual std::string description(void) const { return("Loop device that routes data from output to input."); }
virtual void set_buffersize(long int samples) { };
virtual long int buffersize(void) const { return(0); };
virtual void read_buffer(SAMPLE_BUFFER* sbuf);
virtual void write_buffer(SAMPLE_BUFFER* sbuf);
virtual bool finished(void) const;
virtual SAMPLE_SPECS::sample_pos_t seek_position(SAMPLE_SPECS::sample_pos_t pos);
virtual std::string parameter_names(void) const { return("label,id_number"); }
virtual void set_parameter(int param, std::string value);
virtual std::string get_parameter(int param) const;
/**
* Register a new input client
*/
void register_input(void) { ++registered_inputs_rep; }
/**
* Register a new output client
*/
void register_output(void) { ++registered_outputs_rep; }
const std::string& tag(void) const { return(tag_rep); }
private:
std::string tag_rep;
int writes_rep;
int registered_inputs_rep;
int registered_outputs_rep;
int empty_rounds_rep;
bool finished_rep;
bool filled_rep;
SAMPLE_BUFFER sbuf;
};
#endif