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

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

#include <FrameProcessing.h>

Collaboration diagram for Engine::Ecs::AudioAssetPipeline:

Classes

struct  AudioLoadFuture

Public Member Functions

 AudioAssetPipeline (Assets::AudioAssetManager *audioAssetManager, NamedThreadPool *assetLoaderPool)
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 ()

Private Member Functions

void submitDecodeJobs ()
void retrieveDecodedAudio ()

Private Attributes

Assets::AudioAssetManageraudioAssetManager_
Core::AudioEngineaudioEngine_ = nullptr
NamedThreadPoolassetLoaderPool_ = nullptr
std::vector< std::filesystem::path > assetQueue_
std::vector< AudioLoadFutureloadFutures_
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 219 of file FrameProcessing.h.

Constructor & Destructor Documentation

◆ AudioAssetPipeline()

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

Member Function Documentation

◆ discardPendingWork()

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

◆ getPendingCount()

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

Returns the number of audio assets still pending.

Definition at line 249 of file FrameProcessing.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 244 of file FrameProcessing.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 268 of file FrameProcessing.h.

◆ assetQueue_

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

Definition at line 270 of file FrameProcessing.h.

Referenced by getPendingCount().

◆ audioAssetManager_

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

Definition at line 266 of file FrameProcessing.h.

◆ audioEngine_

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

Definition at line 267 of file FrameProcessing.h.

Referenced by setAudioEngine().

◆ loadFutures_

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

Definition at line 271 of file FrameProcessing.h.

Referenced by getPendingCount().

◆ maxLoadsPerFrame_

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

Definition at line 273 of file FrameProcessing.h.


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