UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Compression.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Map.h"
7#include "CoreTypes.h"
10#include "Templates/Atomic.h"
11#include "UObject/NameTypes.h"
12
14template <typename T> class TAtomic;
15
16// Define global current platform default to current platform.
17// DEPRECATED, USE NAME_Zlib - was deprecated in 2018, leaving for grep until 5.6 or so.
18//#define COMPRESS_Default COMPRESS_ZLIB
19
24#define LOADING_COMPRESSION_CHUNK_SIZE_PRE_369 32768
25#define LOADING_COMPRESSION_CHUNK_SIZE 131072
26#define SAVING_COMPRESSION_CHUNK_SIZE LOADING_COMPRESSION_CHUNK_SIZE
27
29{
45
46
53 CORE_API static uint32 GetCompressorVersion(FName FormatName);
54
69
70 // Thunks to the 64 bit, prefer that as this can only Fatal on error!
72
87
88 // Thunks to the 64 bit version, prefer that as this can only Fatal on error!
89 UE_DEPRECATED(5.5, "Use the 64 bit version")
91
107 CORE_API static bool CompressMemory(FName FormatName, void* CompressedBuffer, int64& CompressedSize, const void* UncompressedBuffer, int64 UncompressedSize, ECompressionFlags Flags = COMPRESS_NoFlags, uintptr_t CompressionData = 0);
108
109 // Thunks to 64 bit CompressMemory, favor that.
110 CORE_API static bool CompressMemory(FName FormatName, void* CompressedBuffer, int32& CompressedSize, const void* UncompressedBuffer, int32 UncompressedSize, ECompressionFlags Flags = COMPRESS_NoFlags, int32 CompressionData = 0);
111
128
129 // 32 bit thunk. This legacy function doens't separate bOutWasCompressed vs general compress failure and will return false in both cases.
130 CORE_API static bool CompressMemoryIfWorthDecompressing(FName FormatName, int32 MinBytesSaved, int32 MinPercentSaved, void* CompressedBuffer, int32& CompressedSize, const void* UncompressedBuffer, int32 UncompressedSize, ECompressionFlags Flags = COMPRESS_NoFlags, int32 CompressionData = 0);
131
145 CORE_API static bool UncompressMemory(FName FormatName, void* UncompressedBuffer, int64 UncompressedSize, const void* CompressedBuffer, int64 CompressedSize, ECompressionFlags Flags=COMPRESS_NoFlags, uintptr_t CompressionData=0);
146
152
153
160 CORE_API static FString GetCompressorDDCSuffix(FName FormatName);
161
166 CORE_API static bool IsFormatValid(FName FormatName);
167
173
174 // deprecating this because we "should", but all internal references to these flags were deprecated in 4.21 so hopefully no one is using them anymore!
175 UE_DEPRECATED(5.5, "Use the direct FName instead e.g NAME_Oodle")
177
178private:
179
183 static struct ICompressionFormat* GetCompressionFormat(FName Method, bool bErrorOnFailure=true);
184
186 static TMap<FName, struct ICompressionFormat*> CompressionFormats;
187 static FCriticalSection CompressionFormatsCriticalSection;
188
189};
190
191
ECompressionFlags
Definition CompressionFlags.h:13
@ COMPRESS_NoFlags
Definition CompressionFlags.h:28
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
return true
Definition ExternalRpcRegistry.cpp:601
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition MemoryReadStream.h:14
Definition Atomic.h:538
Definition UnrealString.h.inl:34
Definition Compression.h:29
static CORE_API bool CompressMemory(FName FormatName, void *CompressedBuffer, int64 &CompressedSize, const void *UncompressedBuffer, int64 UncompressedSize, ECompressionFlags Flags=COMPRESS_NoFlags, uintptr_t CompressionData=0)
Definition Compression.cpp:828
static CORE_API FName GetCompressionFormatFromDeprecatedFlags(ECompressionFlags DeprecatedFlags)
Definition Compression.cpp:537
static CORE_API bool VerifyCompressionFlagsValid(int32 InCompressionFlags)
Definition Compression.cpp:1223
static CORE_API TAtomic< uint64 > CompressorTimeCycles
Definition Compression.h:40
static CORE_API bool CompressMemoryIfWorthDecompressing(FName FormatName, bool &bOutWasCompressed, int64 MinBytesSaved, int32 MinPercentSaved, void *CompressedBuffer, int64 &CompressedSize, const void *UncompressedBuffer, int64 UncompressedSize, ECompressionFlags Flags=COMPRESS_NoFlags, uintptr_t CompressionData=0)
Definition Compression.cpp:729
static CORE_API uint32 GetCompressorVersion(FName FormatName)
Definition Compression.cpp:467
static CORE_API TAtomic< uint64 > CompressorSrcBytes
Definition Compression.h:42
static CORE_API bool CompressMemoryBound(FName InFormatName, int64 &OutBufferSizeRequired, int64 InUncompressedSizeBytes, uintptr_t InCompressionData=0)
Definition Compression.cpp:599
static CORE_API bool IsFormatValid(FName FormatName)
Definition Compression.cpp:1208
static CORE_API FString GetCompressorDDCSuffix(FName FormatName)
Definition Compression.cpp:883
static CORE_API TAtomic< uint64 > CompressorDstBytes
Definition Compression.h:44
static CORE_API bool GetMaximumCompressedSize(FName InFormatName, int64 &OutMaxCompressedSize, int64 InUncompressedSizeBytes, uintptr_t InCompressionData=0)
Definition Compression.cpp:555
static CORE_API bool UncompressMemoryStream(FName FormatName, void *UncompressedBuffer, int64 UncompressedSize, IMemoryReadStream *Stream, int64 StreamOffset, int64 CompressedSize, ECompressionFlags Flags=COMPRESS_NoFlags, uintptr_t CompressionData=0)
Definition Compression.cpp:1008
static CORE_API bool UncompressMemory(FName FormatName, void *UncompressedBuffer, int64 UncompressedSize, const void *CompressedBuffer, int64 CompressedSize, ECompressionFlags Flags=COMPRESS_NoFlags, uintptr_t CompressionData=0)
Definition Compression.cpp:915
Definition ICompressionFormat.h:15