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:
25 audio_sample_unpacker(audio_sample_format format, size_t stride) noexcept;
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 size_t _num_chunks_per_quad;
40 size_t _stride;
41 size_t _chunk_stride;
42 audio_sample_format _format;
43 int _direction;
44 int _start_byte;
45 int _align_shift;
46
47 [[nodiscard]] size_t calculate_num_fast_samples(size_t num_samples) const noexcept;
48};
49
50} // namespace tt
Audio sample format.
Definition audio_sample_format.hpp:29
Definition audio_sample_unpacker.hpp:16
audio_sample_unpacker(audio_sample_format format, size_t stride) noexcept
Audio sample unpacker One instance of this class can be used to unpack multiple buffers either from o...
void operator()(std::byte const *tt_restrict src, float *tt_restrict dst, size_t num_samples) const noexcept
Unpack samples.