Vulkan Schnee 0.0.1 (22840dc8)
High-performance rendering engine
Loading...
Searching...
No Matches
Engine::Ecs::AudioAssetPipeline Class Reference

Async pipeline for loading audio assets (WAV, FLAC, MP3) More...

#include <AudioAssetPipeline.h>

Collaboration diagram for Engine::Ecs::AudioAssetPipeline:

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

Detailed Description

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.

Constructor & Destructor Documentation

◆ AudioAssetPipeline()

Engine::Ecs::AudioAssetPipeline::AudioAssetPipeline ( Assets::AudioAssetManager * audioAssetManager,
NamedThreadPool * assetLoaderPool )

Create an audio asset loading pipeline.

Parameters
audioAssetManagerManager that owns audio asset records
assetLoaderPoolThread pool used for audio decoding work

Member Function Documentation

◆ discardPendingWork()

void Engine::Ecs::AudioAssetPipeline::discardPendingWork ( )

Clears all queued and in-flight audio loading work.

◆ getPendingCount()

size_t Engine::Ecs::AudioAssetPipeline::getPendingCount ( ) const
inlinenodiscard

Returns the number of audio assets still pending.

Returns
Count of queued assets and active decode jobs

Definition at line 73 of file AudioAssetPipeline.h.

References assetQueue_, and loadFutures_.

◆ retrieveDecodedAudio()

void Engine::Ecs::AudioAssetPipeline::retrieveDecodedAudio ( )
private

◆ setAudioEngine()

void Engine::Ecs::AudioAssetPipeline::setAudioEngine ( Core::AudioEngine * engine)
inline

Set the AudioEngine to notify when assets finish loading.

Parameters
enginePointer to the AudioEngine

Definition at line 67 of file AudioAssetPipeline.h.

References audioEngine_.

◆ submitAsset()

void Engine::Ecs::AudioAssetPipeline::submitAsset ( const std::filesystem::path & asset)

Submit an audio file for async loading.

Parameters
assetRelative path to the audio file

◆ submitDecodeJobs()

void Engine::Ecs::AudioAssetPipeline::submitDecodeJobs ( )
private

◆ tick()

void Engine::Ecs::AudioAssetPipeline::tick ( bool async = true)

Advances the pipeline state machine (call once per frame)

Parameters
asyncWhether to run asynchronously

Member Data Documentation

◆ assetLoaderPool_

NamedThreadPool* Engine::Ecs::AudioAssetPipeline::assetLoaderPool_ = nullptr
private

Definition at line 95 of file AudioAssetPipeline.h.

◆ assetQueue_

std::vector<std::filesystem::path> Engine::Ecs::AudioAssetPipeline::assetQueue_
private

Definition at line 97 of file AudioAssetPipeline.h.

Referenced by getPendingCount().

◆ audioAssetManager_

Assets::AudioAssetManager* Engine::Ecs::AudioAssetPipeline::audioAssetManager_
private

Definition at line 93 of file AudioAssetPipeline.h.

◆ audioEngine_

Core::AudioEngine* Engine::Ecs::AudioAssetPipeline::audioEngine_ = nullptr
private

Definition at line 94 of file AudioAssetPipeline.h.

Referenced by setAudioEngine().

◆ loadFutures_

std::vector<AudioLoadFuture> Engine::Ecs::AudioAssetPipeline::loadFutures_
private

Definition at line 98 of file AudioAssetPipeline.h.

Referenced by getPendingCount().

◆ maxLoadsPerFrame_

size_t Engine::Ecs::AudioAssetPipeline::maxLoadsPerFrame_ = Core::Audio::MAX_AUDIO_LOADS_PER_FRAME
private

Definition at line 100 of file AudioAssetPipeline.h.


The documentation for this class was generated from the following file: