6 #include "AudioI2S/I2SConfig.h"
7 #include "AudioTools/AudioLogger.h"
40 LOGE(
"i2s_rxtx_begin failed");
47 void end() { i2s_end(); }
50 int available() {
return I2S_BUFFER_COUNT * I2S_BUFFER_SIZE; }
65 uint16_t frame_count = size_bytes / frame_size;
67 result = i2s_write_buffer((int16_t *)src, frame_count) * frame_size;
75 size_t writeExt(
const void *src,
size_t size_bytes) {
81 for (j = 0; j < size_bytes; j += cfg.
channels) {
82 int8_t *data = (int8_t *)src;
84 frame[0] = data[j] * 256;
86 frame[1] = data[j] * 256;
88 frame[1] = data[j + 1] * 256;
90 uint32_t *frame_ptr = (uint32_t *)frame;
91 if (i2s_write_sample(*frame_ptr)) {
98 for (j = 0; j < size_bytes / 2; j += cfg.
channels) {
99 int16_t *data = (int16_t *)src;
105 frame[1] = data[j + 1];
107 uint32_t *frame_ptr = (uint32_t *)frame;
108 if (i2s_write_sample(*frame_ptr)) {
115 for (j = 0; j < size_bytes / 3; j += cfg.
channels) {
118 int32_t value = data[j];
124 frame[1] = value / 256;
126 uint32_t *frame_ptr = (uint32_t *)frame;
127 if (i2s_write_sample(*frame_ptr)) {
134 for (j = 0; j < size_bytes / 4; j += cfg.
channels) {
135 int32_t *data = (int32_t *)src;
137 frame[0] = data[j] / 65538;
139 frame[1] = data[j] / 65538;
141 frame[1] = data[j + 1] / 65538;
143 uint32_t *frame_ptr = (uint32_t *)frame;
144 if (i2s_write_sample(*frame_ptr)) {
155 size_t result_bytes = 0;
157 size_t frames = size_bytes / frame_size;
158 int16_t *ptr = (int16_t *)dest;
160 for (
int j = 0; j < frames; j++) {
162 int16_t *right = ptr + 1;
163 bool ok = i2s_read_sample(
169 result_bytes += frame_size;
175 using I2SDriver = I2SDriverESP8266;
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition: AudioTypes.h:26