Open 3D Engine Compression Gem API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
Compression::DecompressorRegistrarEntry Class Reference

#include <DecompressorStackEntry.h>

Inherits AZ::IO::StreamStackEntry.

Public Member Functions

 DecompressorRegistrarEntry (AZ::u32 maxNumReads, AZ::u32 maxNumTasks, AZ::u32 alignment)
 
void PrepareRequest (AZ::IO::FileRequest *request) override
 
void QueueRequest (AZ::IO::FileRequest *request) override
 
bool ExecuteRequests () override
 
void UpdateStatus (Status &status) const override
 
void UpdateCompletionEstimates (AZStd::chrono::steady_clock::time_point now, AZStd::vector< AZ::IO::FileRequest * > &internalPending, AZ::IO::StreamerContext::PreparedQueue::iterator pendingBegin, AZ::IO::StreamerContext::PreparedQueue::iterator pendingEnd) override
 
void CollectStatistics (AZStd::vector< AZ::IO::Statistic > &statistics) const override
 

Detailed Description

Decompression Entry in the streamer stack that is used to look up registered compression interfaces The decompression is performed in a temporary buffer on a separate thread using the Task system as single files and without equally distributed seek points. Because the target archive has compressed the entire file, it needs to be decompressed completely, so even if the file is partially read, it needs to be fully loaded. This also means that there's no upper limit to the memory so every decompression job will need to allocate memory as a temporary buffer (in-place decompression is not supported). Finally, the lack of an upper limit also means that the duration of the decompression job can vary largely so a dedicated job system is used to decompress on to avoid blocking the main job system from working.


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