~ubuntu-branches/ubuntu/wily/ecasound/wily-proposed

« back to all changes in this revision

Viewing changes to libecasound/audioio-flac.h

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghedini
  • Date: 2011-05-12 17:58:03 UTC
  • Revision ID: james.westby@ubuntu.com-20110512175803-zy3lodjecabt9r3v
Tags: upstream-2.8.0
ImportĀ upstreamĀ versionĀ 2.8.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef INCLUDED_AUDIOIO_FLAC_H
 
2
#define INCLUDED_AUDIOIO_FLAC_H
 
3
 
 
4
#include <string>
 
5
#include <cstdio>
 
6
#include "audioio-buffered.h"
 
7
#include "audioio-forked-stream.h"
 
8
 
 
9
/**
 
10
 * Interface to FLAC decoders and encoders using UNIX pipe i/o.
 
11
 *
 
12
 * @author Kai Vehmanen
 
13
 */
 
14
class FLAC_FORKED_INTERFACE : public AUDIO_IO_BUFFERED,
 
15
                              public AUDIO_IO_FORKED_STREAM {
 
16
 
 
17
 private:
 
18
  
 
19
  static std::string default_input_cmd;
 
20
  static std::string default_output_cmd;
 
21
 
 
22
 public:
 
23
 
 
24
  static void set_input_cmd(const std::string& value);
 
25
  static void set_output_cmd(const std::string& value);
 
26
 
 
27
 public:
 
28
 
 
29
  FLAC_FORKED_INTERFACE (const std::string& name = "");
 
30
  virtual ~FLAC_FORKED_INTERFACE(void);
 
31
    
 
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); }
 
34
 
 
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); }
 
39
 
 
40
  virtual int supported_io_modes(void) const { return(io_read | io_write); }
 
41
  virtual bool supports_seeking(void) const { return(false); }
 
42
 
 
43
  virtual void open(void) throw(AUDIO_IO::SETUP_ERROR &);
 
44
  virtual void close(void);
 
45
  
 
46
  virtual long int read_samples(void* target_buffer, long int samples);
 
47
  virtual void write_samples(void* target_buffer, long int samples);
 
48
 
 
49
  virtual bool finished(void) const { return(finished_rep); }
 
50
 
 
51
  virtual void set_parameter(int param, std::string value);
 
52
  virtual std::string get_parameter(int param) const;
 
53
 
 
54
  virtual void start_io(void);
 
55
  virtual void stop_io(void);
 
56
 
 
57
 protected:
 
58
 
 
59
  /* functions called by AUDIO_IO_FORKED_STREAM that require
 
60
   * the use of AUDIO_IO methods */
 
61
 
 
62
  virtual bool do_supports_seeking(void) const { return supports_seeking(); }
 
63
  virtual void do_set_position_in_samples(SAMPLE_SPECS::sample_pos_t pos) { set_position_in_samples(pos); }
 
64
  
 
65
 private:
 
66
 
 
67
  bool triggered_rep;
 
68
  bool finished_rep;
 
69
  long int bytes_rep;
 
70
  int filedes_rep;
 
71
  FILE* f1_rep;
 
72
  
 
73
  void fork_input_process(void);
 
74
  void fork_output_process(void);
 
75
};
 
76
 
 
77
#endif