HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
audio_sample_unpacker.hpp
1// Copyright Take Vos 2021.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5#pragma once
6
7#include "audio_sample_format.hpp"
8#include "../required.hpp"
9#include "../architecture.hpp"
10#include "../rapid/numeric_array.hpp"
11#include <cstddef>
12#include <bit>
13
14namespace tt {
15
17public:
26
33 void operator()(std::byte const *tt_restrict src, float *tt_restrict dst, size_t num_samples) const noexcept;
34
35private:
36 f32x4 _multiplier;
37 i8x16 _load_shuffle_indices;
38 i8x16 _concat_shuffle_indices;
39 int _num_chunks_per_quad;
40 int _chunk_stride;
41 audio_sample_format _format;
42 int _direction;
43 int _start_byte;
44 int _align_shift;
45
46 [[nodiscard]] size_t calculate_num_fast_samples(size_t num_samples) const noexcept;
47};
48
49} // namespace tt
Audio sample format.
Definition audio_sample_format.hpp:29
Definition audio_sample_unpacker.hpp:16
void operator()(std::byte const *tt_restrict src, float *tt_restrict dst, size_t num_samples) const noexcept
Unpack samples.
audio_sample_unpacker(audio_sample_format format) noexcept
Audio sample unpacker One instance of this class can be used to unpack multiple buffers either from o...