UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IoChunkEncoding.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "IO/IoOffsetLength.h"
6#include "IO/IoStatus.h"
7#include "Memory/MemoryView.h"
10#include "UObject/NameTypes.h"
11
12class FIoBuffer;
13struct FIoHash;
14
16
19{
20 None = 0,
21 AES = (1 << 0)
22};
23
31
42
45{
46 None = 0,
48 WriteOnly = 1 << 0
49};
51
54{
55 Sha1
56};
57
66
73
80{
81public:
82 static constexpr uint32 ExpectedMagic = 0x2e696f; // .io
83 static constexpr uint32 DefaultBlockSize = (64 << 10);
84 static constexpr uint32 MaxBlockCount = (1 << 24);
85 static constexpr uint64 MaxSize = (uint64(1) << 40);
86
105
106 static_assert(sizeof(FHeader) == 16, "I/O chunk header size mismatch");
107
111 static CORE_API bool Decode(FMemoryView EncodedData, FName CompressionFormat, FMemoryView EncryptionKey, FMutableMemoryView OutRawData, uint64 Offset = 0);
125
126 static CORE_API TIoStatusOr<FIoOffsetAndLength> GetChunkRange(uint64 TotalRawSize, uint32 RawBlockSize, TConstArrayView<uint32> EncodedBlockSize, uint64 RawOffset, uint64 RawSize);
130};
131
137
147
150{
151public:
152 virtual ~IIoChunkBlockDecoder() = default;
154};
155
158{
159public:
160 CORE_API static void Set(IIoChunkBlockDecoder& Instance);
162 CORE_API static void Release();
163
164private:
165 static IIoChunkBlockDecoder* Instance;
166};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
EIoDecodeFlags
Definition IoChunkEncoding.h:45
EIoEncryptionMethod
Definition IoChunkEncoding.h:19
uint32 FIoBlockHash
Definition IoChunkEncoding.h:15
EIoSignatureHashFunction
Definition IoChunkEncoding.h:54
EIoErrorCode
Definition IoStatus.h:19
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IoBuffer.h:15
Definition IoChunkEncoding.h:158
static CORE_API IIoChunkBlockDecoder & Get()
Definition IoChunkEncoding.cpp:479
static CORE_API void Release()
Definition IoChunkEncoding.cpp:485
Definition IoChunkEncoding.h:80
static constexpr uint64 MaxSize
Definition IoChunkEncoding.h:85
static constexpr uint32 DefaultBlockSize
Definition IoChunkEncoding.h:83
static CORE_API TIoStatusOr< FIoOffsetAndLength > GetChunkRange(uint64 TotalRawSize, uint32 RawBlockSize, TConstArrayView< uint32 > EncodedBlockSize, uint64 RawOffset, uint64 RawSize)
Definition IoChunkEncoding.cpp:413
static CORE_API FIoBlockHash HashBlock(FMemoryView Block)
Definition IoChunkEncoding.cpp:464
static CORE_API bool Encode(const FIoChunkEncodingParams &Params, FMemoryView RawData, FIoBuffer &OutEncodedData)
Definition IoChunkEncoding.cpp:57
static CORE_API uint64 GetTotalEncodedSize(TConstArrayView< uint32 > EncodedBlockSize)
Definition IoChunkEncoding.cpp:453
static CORE_API bool Decode(const FIoChunkDecodingParams &Params, FMemoryView EncodedBlocks, FMutableMemoryView OutRawData, EIoDecodeFlags Flags=EIoDecodeFlags::None)
Definition IoChunkEncoding.cpp:233
static CORE_API FIoChunkBlockDecodeResult DecodeBlock(const FIoChunkBlockDecodingParams Params, FMutableMemoryView EncodedBlock, FMutableMemoryView OutDecodedBlock)
Definition IoChunkEncoding.cpp:355
static constexpr uint32 MaxBlockCount
Definition IoChunkEncoding.h:84
static constexpr uint32 ExpectedMagic
Definition IoChunkEncoding.h:82
Definition NameTypes.h:617
Definition IoChunkEncoding.h:150
virtual ~IIoChunkBlockDecoder()=default
virtual void Enqueue(FIoChunkBlockDecodeRequest &&DecodeRequest)=0
Definition IoStatus.h:101
Definition IoChunkEncoding.h:139
bool IsValid() const
Definition IoChunkEncoding.h:140
FMutableMemoryView DecodedBlock
Definition IoChunkEncoding.h:144
FIoBlockDecoded OnDecoded
Definition IoChunkEncoding.h:145
FMutableMemoryView EncodedBlock
Definition IoChunkEncoding.h:143
FIoChunkBlockDecodingParams Params
Definition IoChunkEncoding.h:142
Definition IoChunkEncoding.h:69
FMutableMemoryView DecodedBlock
Definition IoChunkEncoding.h:70
EIoErrorCode ErrorCode
Definition IoChunkEncoding.h:71
Definition IoChunkEncoding.h:60
EIoSignatureHashFunction HashFunction
Definition IoChunkEncoding.h:64
FMemoryView EncryptionKey
Definition IoChunkEncoding.h:61
FMemoryView BlockHash
Definition IoChunkEncoding.h:62
FName CompressionFormat
Definition IoChunkEncoding.h:63
Definition IoChunkEncoding.h:35
TConstArrayView< uint32 > EncodedBlockSize
Definition IoChunkEncoding.h:39
TConstArrayView< FIoBlockHash > BlockHash
Definition IoChunkEncoding.h:40
uint64 EncodedOffset
Definition IoChunkEncoding.h:38
uint64 TotalRawSize
Definition IoChunkEncoding.h:36
uint64 RawOffset
Definition IoChunkEncoding.h:37
Definition IoChunkEncoding.h:26
FName CompressionFormat
Definition IoChunkEncoding.h:27
FMemoryView EncryptionKey
Definition IoChunkEncoding.h:28
uint32 BlockSize
Definition IoChunkEncoding.h:29
Definition IoChunkEncoding.h:89
CORE_API uint32 GetBlockSize() const
Definition IoChunkEncoding.cpp:21
uint64 Pad
Definition IoChunkEncoding.h:95
CORE_API TConstArrayView< uint32 > GetBlocks() const
Definition IoChunkEncoding.cpp:32
CORE_API bool IsValid() const
Definition IoChunkEncoding.cpp:14
CORE_API uint32 GetBlockCount() const
Definition IoChunkEncoding.cpp:26
uint64 EncodedSize
Definition IoChunkEncoding.h:92
uint64 BlockSizeExponent
Definition IoChunkEncoding.h:93
uint64 RawSize
Definition IoChunkEncoding.h:91
uint64 Magic
Definition IoChunkEncoding.h:90
uint64 Flags
Definition IoChunkEncoding.h:94
CORE_API uint64 GetTotalHeaderSize() const
Definition IoChunkEncoding.cpp:39
static CORE_API const FHeader * Decode(FMemoryView HeaderData)
Definition IoChunkEncoding.cpp:45
Definition IoHash.h:33