5#pragma push_macro("abs")
13#pragma pop_macro("abs")
15#include "AudioLogger.h"
70 LOGW(
"setVolume %f channel: %d", vol, channel);
71 if (channel >=
volume_.size())
return false;
80 bool isMute(uint8_t channel = 0)
const {
81 return (channel <
mute_.size()) ?
mute_[channel] :
false;
88 bool setMute(
bool m, uint8_t channel = 0) {
89 LOGW(
"setMute %s channel: %d", m ?
"true" :
"false", channel);
90 if (channel >=
mute_.size())
return false;
140 size_t write(
const uint8_t* data,
size_t len) {
155 while (written < len) {
179 if (start_fill > 0 &&
bufferRx().levelPercent() < start_fill)
return 0;
260 mute_.assign(vol_sz,
false);
267 processVolume<int8_t>((int8_t*)data, len);
270 processVolume<int16_t>((int16_t*)data, len / 2);
276 processVolume<int32_t>((int32_t*)data, len / 4);
287 if (
volume_.empty())
return 1.0f;
288 if (
mute_[0])
return 0.0f;
290 if (channel >=
volume_.size())
return master;
291 if (
mute_[channel])
return 0.0f;
292 return master *
volume_[channel];
295 template <
typename T>
298 for (
size_t i = 0; i < sample_count; i++) {
299 uint8_t ch = (uint8_t)(i % ch_count) + 1;
301 data[i] = (T)(data[i] * vol);
312 if (vol <= 0.0f)
return (int16_t)0x8000;
313 if (vol >= 1.0f)
return 0;
320 if (v == (int16_t)0x8000)
return 0.0f;
321 if (v >= 0)
return 1.0f;
327 return bps == 16 || bps == 24 || bps == 32;
#define LOGW(...)
Definition AudioLoggerIDF.h:29