11#define IS_I2S_IMPLEMENTED
44 LOGE(
"i2s_rxtx_begin failed");
51 void end() { i2s_end(); }
69 uint16_t frame_count = size_bytes / frame_size;
71 result = i2s_write_buffer((int16_t *)src, frame_count) * frame_size;
79 size_t writeExt(
const void *src,
size_t size_bytes) {
86 int8_t *data = (int8_t *)src;
88 frame[0] = data[j] * 256;
90 frame[1] = data[j] * 256;
92 frame[1] = data[j + 1] * 256;
94 uint32_t *frame_ptr = (uint32_t *)frame;
95 if (i2s_write_sample(*frame_ptr)) {
102 for (j = 0; j < size_bytes / 2; j +=
cfg.
channels) {
103 int16_t *data = (int16_t *)src;
109 frame[1] = data[j + 1];
111 uint32_t *frame_ptr = (uint32_t *)frame;
112 if (i2s_write_sample(*frame_ptr)) {
119 for (j = 0; j < size_bytes / 3; j +=
cfg.
channels) {
122 int32_t value = data[j];
128 frame[1] = value / 256;
130 uint32_t *frame_ptr = (uint32_t *)frame;
131 if (i2s_write_sample(*frame_ptr)) {
138 for (j = 0; j < size_bytes / 4; j +=
cfg.
channels) {
139 int32_t *data = (int32_t *)src;
141 frame[0] = data[j] / 65538;
143 frame[1] = data[j] / 65538;
145 frame[1] = data[j + 1] / 65538;
147 uint32_t *frame_ptr = (uint32_t *)frame;
148 if (i2s_write_sample(*frame_ptr)) {
159 size_t result_bytes = 0;
161 size_t frames = size_bytes / frame_size;
162 int16_t *ptr = (int16_t *)dest;
164 for (
int j = 0; j < frames; j++) {
166 int16_t *right = ptr + 1;
167 bool ok = i2s_read_sample(
173 result_bytes += frame_size;
#define LOGE(...)
Definition AudioLoggerIDF.h:30
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:26
@ TX_MODE
Definition AudioTypes.h:26
@ RX_MODE
Definition AudioTypes.h:26