Files
UnrealEngineUWP/Engine/Source/Runtime/MovieSceneCapture/Private/FrameGrabberProtocol.cpp
ryan durand 0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00

53 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Protocols/FrameGrabberProtocol.h"
#include "Templates/Casts.h"
bool UFrameGrabberProtocol::HasFinishedProcessingImpl() const
{
return FrameGrabber.IsValid() && !FrameGrabber->HasOutstandingFrames();
}
bool UFrameGrabberProtocol::SetupImpl()
{
// We'll use our own grabber to capture the entire viewport
FrameGrabber.Reset(new FFrameGrabber(InitSettings->SceneViewport.ToSharedRef(), InitSettings->DesiredSize, DesiredPixelFormat, RingBufferSize));
FrameGrabber->StartCapturingFrames();
return true;
}
void UFrameGrabberProtocol::BeginFinalizeImpl()
{
FrameGrabber->StopCapturingFrames();
}
void UFrameGrabberProtocol::CaptureFrameImpl(const FFrameMetrics& FrameMetrics)
{
if (FrameGrabber.IsValid())
{
FrameGrabber->CaptureThisFrame(GetFramePayload(FrameMetrics));
}
}
void UFrameGrabberProtocol::TickImpl()
{
if (FrameGrabber.IsValid())
{
TArray<FCapturedFrameData> CapturedFrames = FrameGrabber->GetCapturedFrames();
for (FCapturedFrameData& Frame : CapturedFrames)
{
ProcessFrame(MoveTemp(Frame));
}
}
}
void UFrameGrabberProtocol::FinalizeImpl()
{
if (FrameGrabber.IsValid())
{
FrameGrabber->Shutdown();
FrameGrabber.Reset();
}
}