UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LiveLinkCompression.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "LiveLinkTypes.h"
6
7#include "LiveLinkCompression.generated.h"
8
9#define UE_API LIVELINKMESSAGEBUSFRAMEWORK_API
10
12USTRUCT()
14{
16
18 {
19 int32 Num = Bytes.Num();
20 Ar << Num;
21 if (Ar.IsLoading())
22 {
23 Bytes.AddUninitialized(Num);
24 }
25 Ar.Serialize(Bytes.GetData(), Num);
26 return true;
27 }
28
29 UPROPERTY()
31};
32
41
43UENUM()
45{
48
50 Oodle,
51
53 Zlib
54};
55
57UENUM()
59{
61 None,
62
64 Size,
65
67 Speed
68};
69
71{
72
75
78
80 template <typename SizeType>
81 inline bool ShouldCompress(SizeType DataSize)
82 {
83 static_assert(std::is_integral<SizeType>::value);
84 const int32 CompressionLimit = 32;
85 const int32 MinLimit = 512;
86 if (CompressionLimit <= 0)
87 {
88 return DataSize > MinLimit;
89 }
90 const SizeType MaxPackageDataSizeForCompression = static_cast<SizeType>(CompressionLimit) * 1024 * 1024;
92 }
93
96 {
98 if (CompressionAlgo == 1)
99 {
100 return NAME_Oodle;
101 }
102 return NAME_Zlib;
103 }
104
107 {
108 const int32 CompressionFlags = GetConsoleVariableCompressionFlags();
109 if (CompressionFlags == 0)
110 {
111 return COMPRESS_NoFlags;
112 }
113 if (CompressionFlags == 1)
114 {
115 return COMPRESS_BiasSize;
116 }
117 return COMPRESS_BiasSpeed;
118 }
119
122 {
123 return Method == ELiveLinkCompressionMethod::Oodle ? NAME_Oodle : NAME_Zlib;
124 }
125
139
142 {
144 {
146 }
147 else if (Flags == COMPRESS_BiasSpeed)
148 {
150 }
151 else
152 {
154 }
155 }
156
159 {
160 check(NamedMethod == NAME_Oodle || NamedMethod == NAME_Zlib);
161 if (NamedMethod == NAME_Oodle)
162 {
164 }
165 else
166 {
168 }
169 }
170}
171
173UENUM()
175{
176 // The data will be serialized using standard platform method.
177 Standard = 0,
178 // The data will be serialized using Cbor method.
179 Cbor,
180};
181
183UENUM()
185{
186 // The serialized data will not be compressed.
187 None = 0,
188 // The serialized data will be compressed based on struct size.
189 Heuristic,
190 // The serialized data will always be compressed.
191 Always
192};
193
195USTRUCT()
197{
199
201
206
210
211 template <typename T>
216
218 UE_API bool GetPayload(FStructOnScope& OutPayload) const;
219 UE_API bool GetPayload(const UScriptStruct* InPayloadType, void* InOutPayloadData) const;
220
221 UE_API bool IsTypeChildOf(const UScriptStruct* InPayloadType) const;
222
223 template<typename T>
224 bool IsTypeChildOf() const
225 {
226 return IsTypeChildOf(TBaseStructure<T>::Get());
227 }
228
229 template <typename T>
231 {
232 return GetPayload(TBaseStructure<T>::Get(), &OutPayloadData);
233 }
234
236 UPROPERTY(VisibleAnywhere, Category = "Payload")
237 FName PayloadTypeName;
238
240 UPROPERTY(VisibleAnywhere, Category = "Payload")
242
243 UPROPERTY(VisibleAnywhere, Category = "Payload")
245
246 UPROPERTY(VisibleAnywhere, Category = "Payload")
248
250 UPROPERTY(VisibleAnywhere, Category = "Payload")
251 int32 PayloadSize = 0;
252
254 UPROPERTY()
255 FLiveLinkByteArray PayloadBytes;
256};
257
258#undef UE_API
#define check(expr)
Definition AssertionMacros.h:314
ECompressionFlags
Definition CompressionFlags.h:13
@ COMPRESS_BiasSpeed
Definition CompressionFlags.h:33
@ COMPRESS_BiasSize
Definition CompressionFlags.h:31
@ COMPRESS_NoFlags
Definition CompressionFlags.h:28
@ COMPRESS_BiasMemory
Definition CompressionFlags.h:30
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
ELiveLinkCompressionMethod
Definition LiveLinkCompression.h:45
ELiveLinkCompressionBias
Definition LiveLinkCompression.h:59
#define UE_API
Definition LiveLinkCompression.h:9
ELiveLinkPayloadSerializationMethod
Definition LiveLinkCompression.h:175
ELiveLinkPayloadCompressionType
Definition LiveLinkCompression.h:185
@ Num
Definition MetalRHIPrivate.h:234
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition NameTypes.h:617
Definition StructOnScope.h:13
Definition Array.h:670
Definition Class.h:1720
Definition LiveLinkCompression.h:14
bool Serialize(FArchive &Ar)
Definition LiveLinkCompression.h:17
Definition LiveLinkCompression.h:197
bool SetTypedPayload(const T &InPayloadData, ELiveLinkPayloadCompressionType CompressType=ELiveLinkPayloadCompressionType::Heuristic)
Definition LiveLinkCompression.h:212
bool GetTypedPayload(T &OutPayloadData) const
Definition LiveLinkCompression.h:230
bool IsTypeChildOf() const
Definition LiveLinkCompression.h:224
Definition Class.h:5288
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46