Vulkan Schnee 0.0.1 (22840dc8)
High-performance rendering engine
Loading...
Searching...
No Matches
AudioLoader.h
1#pragma once
2
3#include <cstdint>
4#include <filesystem>
5#include <vector>
6
7namespace Engine::Assets {
8
12 struct AudioData {
13 uint32_t sampleRate = 0;
14 uint32_t channels = 0;
15 uint64_t frameCount = 0;
16 std::vector<float> pcmData;
17
22 [[nodiscard]] float getDurationSeconds() const {
23 return sampleRate > 0 ? static_cast<float>(frameCount) / static_cast<float>(sampleRate) : 0.0f;
24 }
25 };
26
27 namespace Loaders
28 {
36 public:
42 static AudioData load(const std::filesystem::path& path);
43 };
44 }
45
46} // namespace EngineCore
Loader for audio files using miniaudio's built-in decoders.
Definition AudioLoader.h:35
static AudioData load(const std::filesystem::path &path)
Decode an audio file to PCM float data.
Decoded audio data ready for playback.
Definition AudioLoader.h:12
uint32_t sampleRate
Sample rate in Hz.
Definition AudioLoader.h:13
uint32_t channels
Number of interleaved output channels.
Definition AudioLoader.h:14
uint64_t frameCount
Number of decoded PCM frames per channel.
Definition AudioLoader.h:15
float getDurationSeconds() const
Gets the decoded duration in seconds.
Definition AudioLoader.h:22
std::vector< float > pcmData
Interleaved float samples.
Definition AudioLoader.h:16