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

36 lines
1.2 KiB
C++

#ifndef INCLUDED_AUDIOIO_NULL_H
#define INCLUDED_AUDIOIO_NULL_H
#include "audioio-buffered.h"
/**
* Audio object that endlessly consumes and produces audio data.
* And is incredibly fast. :)
*/
class NULLFILE : public AUDIO_IO_BUFFERED {
public:
virtual std::string name(void) const { return("Null audio object"); }
virtual void open(void) throw (AUDIO_IO::SETUP_ERROR &) { AUDIO_IO::open(); }
virtual void close(void) { AUDIO_IO::close(); }
virtual long int read_samples(void* target_buffer, long int samples) {
for(long int n = 0; n < static_cast<long int>(samples * frame_size()); n++) ((char*)target_buffer)[n] = 0;
return(samples);
}
virtual void write_samples(void* target_buffer, long int samples) { }
virtual bool finished(void) const { return false; }
virtual bool supports_seeking(void) const { return true; }
virtual bool finite_length_stream(void) const { return false; }
virtual SAMPLE_SPECS::sample_pos_t seek_position(SAMPLE_SPECS::sample_pos_t pos) { return pos; }
NULLFILE(const std::string& name = "null");
virtual ~NULLFILE(void);
NULLFILE* clone(void) const { return new NULLFILE(*this); }
NULLFILE* new_expr(void) const { return new NULLFILE(); }
};
#endif