1
#ifndef INCLUDED_AUDIOIO_FLAC_H
2
#define INCLUDED_AUDIOIO_FLAC_H
6
#include "audioio-buffered.h"
7
#include "audioio-forked-stream.h"
10
* Interface to FLAC decoders and encoders using UNIX pipe i/o.
12
* @author Kai Vehmanen
14
class FLAC_FORKED_INTERFACE : public AUDIO_IO_BUFFERED,
15
protected AUDIO_IO_FORKED_STREAM {
19
static std::string default_input_cmd;
20
static std::string default_output_cmd;
24
static void set_input_cmd(const std::string& value);
25
static void set_output_cmd(const std::string& value);
29
FLAC_FORKED_INTERFACE (const std::string& name = "");
30
virtual ~FLAC_FORKED_INTERFACE(void);
32
virtual FLAC_FORKED_INTERFACE* clone(void) const { return new FLAC_FORKED_INTERFACE(*this); }
33
virtual FLAC_FORKED_INTERFACE* new_expr(void) const { return new FLAC_FORKED_INTERFACE(*this); }
35
virtual std::string name(void) const { return("FLAC stream"); }
36
virtual std::string description(void) const { return("Interface to FLAC decoders and encoders using UNIX pipe i/o."); }
37
virtual std::string parameter_names(void) const { return("label"); }
38
virtual bool locked_audio_format(void) const { return(true); }
40
virtual int supported_io_modes(void) const { return(io_read | io_write); }
41
virtual bool supports_seeking(void) const { return(false); }
43
virtual void open(void) throw(AUDIO_IO::SETUP_ERROR &);
44
virtual void close(void);
46
virtual long int read_samples(void* target_buffer, long int samples);
47
virtual void write_samples(void* target_buffer, long int samples);
49
virtual bool finished(void) const { return(finished_rep); }
50
virtual void seek_position(void);
52
virtual void set_parameter(int param, std::string value);
53
virtual std::string get_parameter(int param) const;
56
// Realtime related functions
67
void fork_input_process(void);
68
void fork_output_process(void);