arduino-audio-tools
Loading...
Searching...
No Matches
ReedSolomonFEC.h
Go to the documentation of this file.
1#pragma once
2
3#include "AudioToolsConfig.h"
6
7namespace audio_tools {
8
16template <int bytecount, int additional_bytes>
17class ReedSolomonFEC : public BaseStream {
18 public:
19
21 p_stream = &stream;
22 p_print = &stream;
23 }
24
26 p_print = &print;
27 }
28
29 int availableForWrite() override {
30 return bytecount;
31 }
32
33 size_t write(const uint8_t* data, size_t len) override {
34 if (p_print==nullptr) return 0;
35 for (int j=0;j<len;j++){
36 raw.write(data[j]);
37 if(raw.availableForWrite()==0){
40 raw.reset();
41 }
42 }
43 return len;
44 }
45
46 int available()override {
47 return bytecount;
48 }
49
50 size_t readBytes(uint8_t* data, size_t len) override{
51 if (p_stream==nullptr) return 0;
52 if (encoded.isEmpty()){
56 }
57 return encoded.readArray(data, len);
58 }
59
60
61 protected:
65 Stream* p_stream = nullptr;
66 Print* p_print = nullptr;
67
68};
69
70}
Definition rs.hpp:28
void Encode(const void *src, void *dst)
Definition rs.hpp:120
virtual int readArray(T data[], int len)
reads multiple values
Definition Buffers.h:33
bool isEmpty()
Definition Buffers.h:86
Base class for all Streams. It relies on write(const uint8_t *buffer, size_t size) and readBytes(uint...
Definition BaseStream.h:36
Definition NoArduino.h:62
virtual size_t write(const uint8_t *data, size_t len)
Definition NoArduino.h:126
Forward error correction using Reed-Solomon: write is encoding and readBytes does the decoding.
Definition ReedSolomonFEC.h:17
ReedSolomonFEC(Print &print)
Definition ReedSolomonFEC.h:25
size_t readBytes(uint8_t *data, size_t len) override
Definition ReedSolomonFEC.h:50
SingleBuffer< uint8_t > encoded
Definition ReedSolomonFEC.h:63
int available() override
Definition ReedSolomonFEC.h:46
size_t write(const uint8_t *data, size_t len) override
Definition ReedSolomonFEC.h:33
Stream * p_stream
Definition ReedSolomonFEC.h:65
int availableForWrite() override
Definition ReedSolomonFEC.h:29
Print * p_print
Definition ReedSolomonFEC.h:66
ReedSolomonFEC(Stream &stream)
Definition ReedSolomonFEC.h:20
RS::ReedSolomon< bytecount, additional_bytes > rs
Definition ReedSolomonFEC.h:64
SingleBuffer< uint8_t > raw
Definition ReedSolomonFEC.h:62
A simple Buffer implementation which just uses a (dynamically sized) array.
Definition Buffers.h:172
size_t setAvailable(size_t available_size)
Definition Buffers.h:296
bool write(T sample) override
write add an entry to the buffer
Definition Buffers.h:206
int availableForWrite() override
provides the number of entries that are available to write
Definition Buffers.h:238
T * data()
Provides address of actual data.
Definition Buffers.h:284
void reset() override
clears the buffer
Definition Buffers.h:286
Definition NoArduino.h:142
virtual size_t readBytes(uint8_t *data, size_t len)
Definition NoArduino.h:147
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:512