6static const int32_t Q25_MAX_VALUE = (1 << 25) - 1;
7static const int32_t Q25_MIN_VALUE = ~Q25_MAX_VALUE;
10 std::function<void(
const std::vector<uint8_t> &)> filtered_callback =
11 [
this, data_callback](
const std::vector<uint8_t> &data) {
21 data_callback(*output_samples);
29 this->mic_->get_audio_stream_info().get_sample_rate());
63 const size_t target_bytes_per_frame = target_bytes_per_sample * this->
channels_.count();
65 filtered_data.resize(target_bytes_per_frame * total_frames);
67 uint8_t *current_data = filtered_data.data();
69 for (uint32_t frame_index = 0; frame_index < total_frames; ++frame_index) {
70 for (uint32_t channel_index = 0; channel_index < source_channels; ++channel_index) {
71 if (this->
channels_.test(channel_index)) {
74 const uint32_t sample_index = frame_index * source_bytes_per_frame + channel_index * source_bytes_per_sample;
88 current_data = current_data + target_bytes_per_sample;
size_t frames_to_bytes(uint32_t frames) const
Converts frames to bytes.
size_t samples_to_bytes(uint32_t samples) const
Converts samples to bytes.
uint32_t bytes_to_frames(size_t bytes) const
Convert bytes to frames.
uint8_t get_channels() const
audio::AudioStreamInfo get_audio_stream_info()
void add_data_callback(std::function< void(const std::vector< uint8_t > &)> &&data_callback)
std::shared_ptr< std::vector< uint8_t > > processed_samples_
std::bitset< 8 > channels_
void add_data_callback(std::function< void(const std::vector< uint8_t > &)> &&data_callback)
audio::AudioStreamInfo get_audio_stream_info()
Gets the AudioStreamInfo of the data after processing.
void process_audio_(const std::vector< uint8_t > &data, std::vector< uint8_t > &filtered_data)
int32_t unpack_audio_sample_to_q31(const uint8_t *data, size_t bytes_per_sample)
Unpacks a quantized audio sample into a Q31 fixed-point number.
void pack_q31_as_audio_sample(int32_t sample, uint8_t *data, size_t bytes_per_sample)
Packs a Q31 fixed-point number as an audio sample with the specified number of bytes per sample.
Providing packet encoding functions for exchanging data with a remote host.
constexpr const T & clamp(const T &v, const T &lo, const T &hi, Compare comp)