22template <
typename T = u
int8_t>
31 virtual bool read(T &result) = 0;
35 if (data ==
nullptr) {
40 for (
int j = 0; j < lenResult; j++) {
43 LOGD(
"readArray %d -> %d", len, lenResult);
61 for (
int j = 0; j < len; j++) {
62 if (!
write(data[j])) {
68 LOGD(
"writeArray %d -> %d", len, result);
82 virtual bool peek(T &result) = 0;
116 if (
size() == 0)
return 0.0f;
117 return 100.0f *
static_cast<float>(
available()) /
118 static_cast<float>(
size());
128 LOGE(
"resize not implemented for this buffer");
143template <
typename T = u
int8_t>
152 for (
int j = 0; j < result; j++) {
162 template <
int rows,
int channels>
165 for (
int j = 0; j < lenResult; j++) {
168 for (
int i = 0; i < channels; i++) {
188template <
typename T = u
int8_t>
232 bool read(T &result)
override {
233 bool success =
false;
241 bool peek(T &result)
override {
242 bool success =
false;
252 return max(result, 0);
261 if (len > len_available) {
273 return len_available;
276 len_available -= len;
314 size_t result = min(available_size, (
size_t)
buffer.size());
357template <
typename T = u
int8_t>
365 bool read(T &result)
override {
378 bool peek(T &result)
override {
392 for (
int j = 0; j < n; j++) {
397 if (count == 0)
break;
408 if (data ==
nullptr) {
413 if (to_read <= 0)
return 0;
416 int second = to_read - first;
418 memcpy(data + first,
_aucBuffer.data(), second *
sizeof(T));
428 if (data ==
nullptr) {
433 if (to_write <= 0)
return 0;
436 int second = to_write - first;
438 memcpy(
_aucBuffer.data(), data + first, second *
sizeof(T));
451 virtual bool write(T data)
override {
480 LOGI(
"resize: %d", len);
500 return (uint32_t)(index + 1) %
max_size; }
511template <
class File,
typename T>
528 LOGE(
"file is not valid");
538 if (
p_file ==
nullptr)
return 0;
539 int read_count = min(count,
available());
544 if (offset.
len1 > 0) {
552 for (
int i = 0; i < count; i++) {
553 LOGI(
"read #%d value %d", offset.
pos, (
int)data[i]);
561 bool peek(T &result)
override {
573 if (
p_file ==
nullptr)
return 0;
574 int read_count = min(count,
available());
579 if (offset.
len1 > 0) {
592 if (
p_file ==
nullptr)
return 0;
593 for (
int i = 0; i < len; i++) {
602 if (offset.
len1 > 0) {
662 int overflow = (pos + len) -
max_size;
669 result.
len = len - overflow;
670 result.
len1 = overflow;
677 int file_pos = pos *
sizeof(T);
679 LOGD(
"file_seek: %d", pos);
681 LOGE(
"seek %d", file_pos);
690 LOGD(
"file_write: %d", count);
691 if (
p_file ==
nullptr)
return 0;
692 int to_write_bytes =
sizeof(T) * count;
693 int bytes_written =
p_file->
write((
const uint8_t *)data, to_write_bytes);
695 int elements_written = bytes_written /
sizeof(T);
696 if (bytes_written != to_write_bytes) {
697 LOGE(
"write: %d -> %d bytes", to_write_bytes, bytes_written);
699 return elements_written;
704 LOGD(
"file_read: %d", count);
705 int read_bytes = count *
sizeof(T);
707 int result_count = result_bytes /
sizeof(T);
708 if (result_count != count) {
709 LOGE(
"readBytes: %d -> %d", read_bytes, result_bytes);
722template <
typename T = u
int8_t>
730 bool read(T &result)
override {
740 while (count < len) {
749 bool peek(T &result)
override {
841 return run_time == 0 ? 0 :
sample_count * 1000 / run_time;
872 for (
int j = 0; j < count; j++) {
874 LOGD(
"new buffer %p", buffer);
909 while (ptr !=
nullptr) {
910 LOGD(
"deleting %p", ptr);
916 while (ptr !=
nullptr) {
917 LOGD(
"deleting %p", ptr);
961template <
typename T = u
int8_t>
988 if (sbuffer->
id ==
id) {
1015template <
class File,
typename T>
1036 if (!file)
return false;
1067 bool result =
read(data);
1085 return result /
sizeof(T);
1152 int len = strlen(file.
name());
1153 char file_name[len + 1];
1154 strncpy(file_name, file.
name(), len);
1169template <
typename T = u
int8_t>
1173 LOGI(
"BufferedArray(%d)", len);
1179 LOGD(
"getValues(%d,%d) - max %d", offset, length,
array.size());
1197 return &
array[offset];
#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 assert(T)
Definition avr.h:10
virtual size_t readBytes(uint8_t *data, size_t len)
Definition Arduino.h:140