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);
133 if (byte_factor <= 0.0f) {
134 LOGE(
"Invalid byte factor: %f", byte_factor);
145 bool byte_factor_changed =
148 LOGD(
"setupBuffers: %d", (
int)len);
152 int size = (0.5f / byte_factor * len);
155 if (size <= 0) size = 4;
157 LOGI(
"read size: %d", size);
164 LOGI(
"buffer size: %d", rb_size);
176 LOGD(
"fillResultQueue: %d", (
int)len);
182 LOGE(
"fillResultQueue: result_queue_buffer too small: %d < %d. "
183 "Increase result_queue_factor or call resizeReadResultQueue().",
194 LOGE(
"fillResultQueue: result_queue full (%d) but target not reached "
195 "(%d/%d). Increase result_queue_factor or call "
196 "resizeReadResultQueue().",
202 LOGD(
"readBytes from source: %d -> %d", read_size,read_eff);
209 if (write_eff != read_eff) {
210 LOGE(
"TransformationReader::write %d -> %d", read_eff, write_eff);
288 LOGD(
"ReformatBaseStream::readBytes: %d", (
int)len);
289 return reader.readBytes(data, len);
293 return reader.available();
359 size_t write(
const uint8_t* data,
size_t len) {
388 size_t write(
const uint8_t* data,
size_t len)
override {
423 size_t write(
const uint8_t* data,
size_t len)
override {
500 for (
int j = 0; j <
vector.size(); j++) {
501 if (
vector[j].print == &print) {
509 for (
int j = 0; j <
vector.size(); j++) {
515 for (
int j = 0; j <
vector.size(); j++) {
516 if (
vector[j].info !=
nullptr) {
517 vector[j].info->setAudioInfo(info);
522 size_t write(
const uint8_t* data,
size_t len)
override {
523 for (
auto& rec :
vector) {
529 memcpy(copy, data, len);
531 int written = rec.print->write(copy + start, open);
540 for (
int j = 0; j <
vector.size(); j++) {
543 open -=
vector[j].print->write(ch);
559 for (
int j =
vector.size() - 1; j >= 0; j--) {
665 end_ms = endSeconds * 1000;
684 return (current_bytes < end_bytes && current_bytes >=
start_bytes);
724 size_t write(
const uint8_t* data,
size_t len)
override {
795 uint8_t buffer[1024];
797 int toread = min(1024, open);
807 if (bytes_per_second > 0) {
811 LOGE(
"AudioInfo not defined");
838 for (
auto& ch : out.channels) {
921 size_t write(
const uint8_t* data,
size_t len)
override {
923 LOGD(
"write %d", (
int)len);
926 return writeT<int16_t>(data, len);
928 return writeT<int24_t>(data, len);
930 return writeT<int32_t>(data, len);
940 auto p_notify = info.p_audio_info;
941 if (p_notify !=
nullptr) {
943 result.
channels = info.channels.size();
944 p_notify->setAudioInfo(result);
958 template <
typename T>
959 size_t writeT(
const uint8_t* buffer,
size_t size) {
961 int sample_count = size /
sizeof(T);
963 T* data = (T*)buffer;
965 for (
int i = 0; i < sample_count; i +=
cfg.
channels) {
968 T out_frame[out.channels.size()];
970 for (
auto& ch : out.channels) {
973 out_frame[ch_out++] = frame[channel];
976 size_t written = out.buffer.writeArray((
const uint8_t*)&out_frame,
979 if (out.buffer.availableForWrite() <
sizeof(out_frame)) {
980 out.p_out->write(out.buffer.data(), out.buffer.available());
995 if (channels_select.p_out == out)
return channels_select.channels.size();
997 return defaultChannels;
#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 size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140
virtual int available()
Definition Arduino.h:139