arduino-audio-tools
StdioStream.h
1 #pragma once
2 #include <unistd.h>
3 #include "AudioTools/AudioStreams.h"
4 
11 namespace audio_tools {
12 class StdioStream : public BaseStream {
13 public:
14  AudioInfo defaultConfig() {
15  AudioInfo def;
16  def.bits_per_sample = 16;
17  def.sample_rate = 44100;
18  def.channels = 2;
19  return def;
20  }
21 
22  bool begin() {
23  is_open = true;
24  return true;
25  }
26 
27 
28  int available() override { return DEFAULT_BUFFER_SIZE; }
29 
30  size_t readBytes(uint8_t* buffer, size_t len) override {
31  // read from stdin
32  return ::read(0, buffer, len);
33  }
34 
35  int availableForWrite() override { return DEFAULT_BUFFER_SIZE; }
36 
37  size_t write(const uint8_t *buffer, size_t len) override {
38  if (!is_open)
39  return 0;
40  // write to stdout
41  return ::write(1, buffer, len);
42  }
43 
44  void end() {
45  is_open = false;
46  }
47 
48 protected:
49  bool is_open = false;
50 };
51 
52 } // namespace audio_tools
Base class for all Streams. It relies on write(const uint8_t *buffer, size_t size) and readBytes(uint...
Definition: BaseStream.h:34
Definition: StdioStream.h:12
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition: AnalogAudio.h:10
Basic Audio information which drives e.g. I2S.
Definition: AudioTypes.h:50
sample_rate_t sample_rate
Sample Rate: e.g 44100.
Definition: AudioTypes.h:53
uint16_t channels
Number of channels: 2=stereo, 1=mono.
Definition: AudioTypes.h:55
uint8_t bits_per_sample
Number of bits per sample (int16_t = 16 bits)
Definition: AudioTypes.h:57