UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AVIWriter.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 AVIWriter.h: Helper class for creating AVI files.
5=============================================================================*/
6
7#pragma once
8
9#include "Async/Future.h"
10#include "Containers/Array.h"
12#include "CoreMinimal.h"
13#include "Delegates/Delegate.h"
14#include "HAL/CriticalSection.h"
15#include "HAL/Platform.h"
16#include "HAL/PlatformCrt.h"
17#include "HAL/ThreadSafeBool.h"
18#include "Logging/LogMacros.h"
19#include "Math/Color.h"
20#include "Misc/Optional.h"
21#include "Misc/Paths.h"
22#include "Templates/UniquePtr.h"
24
25class FEvent;
26template <typename ResultType> class TFuture;
27
29
30DECLARE_DELEGATE_RetVal_TwoParams(FString, FResolveFileFormat, const FString&, const FString&);
31
66
92
95{
99
102
105
108
109private:
110
112 void ArchiveFrame(FCapturedFrame Frame);
113
115 TOptional<FCapturedFrame> UnArchiveFrame(uint32 FrameIndex) const;
116
118 void StartUnArchiving();
119
121 FString ArchiveDirectory;
122
124 mutable FCriticalSection ArchiveFrameMutex;
126 TArray<uint32> ArchivedFrames;
127
129 uint32 TotalArchivedFrames;
130
132 FEvent* FrameReady;
133
135 mutable FCriticalSection InMemoryFrameMutex;
137 TArray<FCapturedFrame> InMemoryFrames;
138
140 int32 MaxInMemoryFrames;
141
143 TOptional<TFuture<void>> UnarchiveTask;
144};
145
148{
149protected:
157
160
163
166
167public:
168
170 AVIWRITER_API virtual ~FAVIWriter();
171
174
177
183
189
191 {
192 return Options.Width;
193 }
194
196 {
197 return Options.Height;
198 }
199
201 {
202 return FrameNumber;
203 }
204
205 bool IsCapturing() const
206 {
207 return bCapturing;
208 }
209
210 AVIWRITER_API void Update(double FrameTimeSeconds, TArray<FColor> FrameData);
211
212 virtual void Initialize() = 0;
213 virtual void Finalize() = 0;
214
216};
#define TEXT(x)
Definition Platform.h:1272
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
#define DECLARE_DELEGATE_RetVal_TwoParams(ReturnValueType, DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:63
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AVIWriter.h:148
static AVIWRITER_API FAVIWriter * CreateInstance(const FAVIWriterOptions &InOptions)
Definition AVIWriter.cpp:840
virtual AVIWRITER_API ~FAVIWriter()
Definition AVIWriter.cpp:809
virtual void Initialize()=0
FAVIWriter(const FAVIWriterOptions &InOptions)
Definition AVIWriter.h:151
TUniquePtr< FCapturedFrames > CapturedFrames
Definition AVIWriter.h:165
int32 FrameNumber
Definition AVIWriter.h:162
uint32 GetHeight() const
Definition AVIWriter.h:195
FAVIWriterOptions Options
Definition AVIWriter.h:173
bool IsCapturing() const
Definition AVIWriter.h:205
int32 GetFrameNumber() const
Definition AVIWriter.h:200
virtual void DropFrames(int32 NumFramesToDrop)=0
uint32 GetWidth() const
Definition AVIWriter.h:190
virtual void Finalize()=0
FThreadSafeBool bCapturing
Definition AVIWriter.h:159
TArray< FCapturedFrame > GetFrameData(uint32 WaitTimeMs) const
Definition AVIWriter.h:179
int32 GetNumOutstandingFrames() const
Definition AVIWriter.h:185
Definition Event.h:21
Definition Paths.h:36
Definition ThreadSafeBool.h:17
Definition Array.h:670
Definition Future.h:393
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
@ false
Definition radaudio_common.h:23
Definition AVIWriter.h:34
FString OutputFilename
Definition AVIWriter.h:45
uint32 Height
Definition AVIWriter.h:64
FAVIWriterOptions()
Definition AVIWriter.h:35
uint32 Width
Definition AVIWriter.h:62
FString CodecName
Definition AVIWriter.h:57
bool bSynchronizeFrames
Definition AVIWriter.h:60
int32 CaptureFramerateDenominator
Definition AVIWriter.h:51
TOptional< float > CompressionQuality
Definition AVIWriter.h:54
int32 CaptureFramerateNumerator
Definition AVIWriter.h:48
Definition AVIWriter.h:69
double StartTimeSeconds
Definition AVIWriter.h:82
TArray< FColor > FrameData
Definition AVIWriter.h:88
uint32 FrameIndex
Definition AVIWriter.h:86
FEvent * FrameProcessedEvent
Definition AVIWriter.h:90
FCapturedFrame()
Definition AVIWriter.h:70
FCapturedFrame & operator=(FCapturedFrame &&In)
Definition AVIWriter.h:79
FCapturedFrame(FCapturedFrame &&In)
Definition AVIWriter.h:78
~FCapturedFrame()
Definition AVIWriter.cpp:625
double EndTimeSeconds
Definition AVIWriter.h:84
Definition AVIWriter.h:95
TArray< FCapturedFrame > ReadFrames(uint32 WaitTimeMs)
Definition AVIWriter.cpp:769
int32 GetNumOutstandingFrames() const
Definition AVIWriter.cpp:793
~FCapturedFrames()
Definition AVIWriter.cpp:643
Definition Optional.h:131