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 hi::inline v1 {
15
17public:
26
33 void operator()(std::byte const *hi_restrict src, float *hi_restrict dst, std::size_t num_samples) const noexcept;
34
35private:
36 f32x4 _multiplier;
37 i8x16 _load_shuffle_indices;
38 i8x16 _concat_shuffle_indices;
39 std::size_t _num_chunks_per_quad;
40 std::size_t _stride;
41 std::size_t _chunk_stride;
42 audio_sample_format _format;
43 int _direction;
44 int _start_byte;
45 int _align_shift;
46
47 [[nodiscard]] std::size_t calculate_num_fast_samples(std::size_t num_samples) const noexcept;
48};
49
50} // namespace hi::inline v1
This file includes required definitions.
Functions and macros for handling architectural difference between compilers, CPUs and operating syst...
Audio sample format.
Definition audio_sample_format.hpp:29
Definition audio_sample_unpacker.hpp:16
void operator()(std::byte const *hi_restrict src, float *hi_restrict dst, std::size_t num_samples) const noexcept
Unpack samples.
audio_sample_unpacker(audio_sample_format format, std::size_t stride) noexcept
Audio sample unpacker One instance of this class can be used to unpack multiple buffers either from o...