6#ifndef MAX_ZERO_READ_COUNT
7#define MAX_ZERO_READ_COUNT 3
10#ifndef CHANNEL_SELECT_BUFFER_SIZE
11#define CHANNEL_SELECT_BUFFER_SIZE 256
37 if (transform ==
nullptr) {
38 LOGE(
"transform is NULL");
42 LOGE(
"p_stream is NULL");
48 LOGD(
"TransformationReader::readBytes: %d", (
int)len);
54 LOGE(
"p_stream is NULL");
66 LOGD(
"TransformationReader::readBytes: %d -> %d", (
int)len, result_len);
79 LOGD(
"TransformationReader::available: %d", available_bytes);
145 if (byte_factor <= 0.0f) {
146 LOGE(
"Invalid byte factor: %f", byte_factor);
157 bool byte_factor_changed =
160 LOGD(
"setupBuffers: %d", (
int)len);
164 int size = (0.5f / byte_factor * len);
167 if (size <= 0) size = 4;
169 LOGI(
"read size: %d", size);
176 LOGI(
"buffer size: %d", rb_size);
188 LOGD(
"fillResultQueue: %d", (
int)len);
194 LOGE(
"fillResultQueue: result_queue_buffer too small: %d < %d. "
195 "Increase result_queue_factor or call resizeReadResultQueue().",
206 LOGE(
"fillResultQueue: result_queue full (%d) but target not reached "
207 "(%d/%d). Increase result_queue_factor or call "
208 "resizeReadResultQueue().",
214 LOGD(
"readBytes from source: %d -> %d", read_size,read_eff);
221 if (write_eff != read_eff) {
222 LOGE(
"TransformationReader::write %d -> %d", read_eff, write_eff);
300 LOGD(
"ReformatBaseStream::readBytes: %d", (
int)len);
301 return reader.readBytes(data, len);
305 return reader.available();
371 size_t write(
const uint8_t* data,
size_t len) {
404 size_t write(
const uint8_t* data,
size_t len)
override {
447 size_t write(
const uint8_t* data,
size_t len)
override {
526 for (
int j = 0; j <
vector.size(); j++) {
527 if (
vector[j].print == &print) {
535 for (
int j = 0; j <
vector.size(); j++) {
541 for (
int j = 0; j <
vector.size(); j++) {
542 if (
vector[j].info !=
nullptr) {
543 vector[j].info->setAudioInfo(info);
548 size_t write(
const uint8_t* data,
size_t len)
override {
549 for (
auto& rec :
vector) {
555 memcpy(copy, data, len);
557 int written = rec.print->write(copy + start, open);
566 for (
int j = 0; j <
vector.size(); j++) {
569 open -=
vector[j].print->write(ch);
585 for (
int j =
vector.size() - 1; j >= 0; j--) {
691 end_ms = endSeconds * 1000;
710 return (current_bytes < end_bytes && current_bytes >=
start_bytes);
732 if (
p_io ==
nullptr)
return 0;
750 size_t write(
const uint8_t* data,
size_t len)
override {
759 if (
p_io ==
nullptr)
return 0;
825 uint8_t buffer[1024];
827 int toread = min(1024, open);
837 if (bytes_per_second > 0) {
841 LOGE(
"AudioInfo not defined");
868 for (
auto& ch : out.channels) {
951 size_t write(
const uint8_t* data,
size_t len)
override {
953 LOGD(
"write %d", (
int)len);
956 return writeT<int16_t>(data, len);
958 return writeT<int24_t>(data, len);
960 return writeT<int32_t>(data, len);
970 auto p_notify = info.p_audio_info;
971 if (p_notify !=
nullptr) {
973 result.
channels = info.channels.size();
974 p_notify->setAudioInfo(result);
988 template <
typename T>
989 size_t writeT(
const uint8_t* buffer,
size_t size) {
991 int sample_count = size /
sizeof(T);
993 T* data = (T*)buffer;
995 for (
int i = 0; i < sample_count; i +=
cfg.
channels) {
998 T out_frame[out.channels.size()];
1000 for (
auto& ch : out.channels) {
1003 out_frame[ch_out++] = frame[channel];
1006 size_t written = out.buffer.writeArray((
const uint8_t*)&out_frame,
1009 if (out.buffer.availableForWrite() <
sizeof(out_frame)) {
1010 out.p_out->write(out.buffer.data(), out.buffer.available());
1025 if (channels_select.p_out == out)
return channels_select.channels.size();
1027 return defaultChannels;
1079 size_t write(
const uint8_t* data,
size_t len)
override {
1140 if (bytes_per_second == 0)
return;
1141 uint32_t added_ms = (uint32_t)(((uint64_t)bytes * 1000) / bytes_per_second);
#define CHANNEL_SELECT_BUFFER_SIZE
Definition AudioIO.h:11
#define MAX_ZERO_READ_COUNT
Definition AudioIO.h:7
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define DEFAULT_BUFFER_SIZE
Definition avr.h:20
virtual int availableForWrite()
Definition Arduino.h:128
virtual size_t write(const uint8_t *data, size_t len)
Definition Arduino.h:120
virtual void flush()
Definition Arduino.h:130
virtual size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140
virtual int available()
Definition Arduino.h:139