|
Vulkan Schnee 0.0.1 (22840dc8)
High-performance rendering engine
|
Async pipeline for loading audio assets (WAV, FLAC, MP3) More...
#include <AudioAssetPipeline.h>
Classes | |
| struct | AudioLoadFuture |
Public Member Functions | |
| AudioAssetPipeline (Assets::AudioAssetManager *audioAssetManager, NamedThreadPool *assetLoaderPool) | |
| Create an audio asset loading pipeline. | |
| void | submitAsset (const std::filesystem::path &asset) |
| Submit an audio file for async loading. | |
| void | tick (bool async=true) |
| Advances the pipeline state machine (call once per frame) | |
| void | setAudioEngine (Core::AudioEngine *engine) |
| Set the AudioEngine to notify when assets finish loading. | |
| size_t | getPendingCount () const |
| Returns the number of audio assets still pending. | |
| void | discardPendingWork () |
| Clears all queued and in-flight audio loading work. | |
Private Member Functions | |
| void | submitDecodeJobs () |
| void | retrieveDecodedAudio () |
Private Attributes | |
| Assets::AudioAssetManager * | audioAssetManager_ |
| Core::AudioEngine * | audioEngine_ = nullptr |
| NamedThreadPool * | assetLoaderPool_ = nullptr |
| std::vector< std::filesystem::path > | assetQueue_ |
| std::vector< AudioLoadFuture > | loadFutures_ |
| size_t | maxLoadsPerFrame_ = Core::Audio::MAX_AUDIO_LOADS_PER_FRAME |
Async pipeline for loading audio assets (WAV, FLAC, MP3)
2-stage state machine following the TextureAssetPipeline pattern: Stage 1: Submit decode tasks to thread pool Stage 2: Poll futures, register loaded assets with AudioEngine
Definition at line 37 of file AudioAssetPipeline.h.
| Engine::Ecs::AudioAssetPipeline::AudioAssetPipeline | ( | Assets::AudioAssetManager * | audioAssetManager, |
| NamedThreadPool * | assetLoaderPool ) |
Create an audio asset loading pipeline.
| audioAssetManager | Manager that owns audio asset records |
| assetLoaderPool | Thread pool used for audio decoding work |
| void Engine::Ecs::AudioAssetPipeline::discardPendingWork | ( | ) |
Clears all queued and in-flight audio loading work.
|
inlinenodiscard |
Returns the number of audio assets still pending.
Definition at line 73 of file AudioAssetPipeline.h.
References assetQueue_, and loadFutures_.
|
private |
|
inline |
Set the AudioEngine to notify when assets finish loading.
| engine | Pointer to the AudioEngine |
Definition at line 67 of file AudioAssetPipeline.h.
References audioEngine_.
| void Engine::Ecs::AudioAssetPipeline::submitAsset | ( | const std::filesystem::path & | asset | ) |
Submit an audio file for async loading.
| asset | Relative path to the audio file |
|
private |
| void Engine::Ecs::AudioAssetPipeline::tick | ( | bool | async = true | ) |
Advances the pipeline state machine (call once per frame)
| async | Whether to run asynchronously |
|
private |
Definition at line 95 of file AudioAssetPipeline.h.
|
private |
Definition at line 97 of file AudioAssetPipeline.h.
Referenced by getPendingCount().
|
private |
Definition at line 93 of file AudioAssetPipeline.h.
|
private |
Definition at line 94 of file AudioAssetPipeline.h.
Referenced by setAudioEngine().
|
private |
Definition at line 98 of file AudioAssetPipeline.h.
Referenced by getPendingCount().
|
private |
Definition at line 100 of file AudioAssetPipeline.h.