// Copyright Epic Games, Inc. All Rights Reserved. #include "EpicRtcVideoCapturer.h" #include "EpicRtcVideoBufferMultiFormat.h" #include "PixelStreaming2PluginSettings.h" namespace UE::PixelStreaming2 { TSharedPtr FEpicRtcVideoCapturer::Create(TSharedPtr InVideoProducer, bool bInIsSRGB) { TSharedPtr VideoCapturer = TSharedPtr(new FEpicRtcVideoCapturer(InVideoProducer, bInIsSRGB)); if (InVideoProducer) { VideoCapturer->FramePushedHandle = InVideoProducer->OnFramePushed.AddSP(VideoCapturer.ToSharedRef(), &FEpicRtcVideoCapturer::OnFrame); } if (UPixelStreaming2PluginSettings::FDelegates* Delegates = UPixelStreaming2PluginSettings::Delegates()) { Delegates->OnSimulcastEnabledChanged.AddSP(VideoCapturer.ToSharedRef(), &FEpicRtcVideoCapturer::OnSimulcastEnabledChanged); Delegates->OnCaptureUseFenceChanged.AddSP(VideoCapturer.ToSharedRef(), &FEpicRtcVideoCapturer::OnCaptureUseFenceChanged); Delegates->OnUseMediaCaptureChanged.AddSP(VideoCapturer.ToSharedRef(), &FEpicRtcVideoCapturer::OnUseMediaCaptureChanged); } return VideoCapturer; } FEpicRtcVideoCapturer::FEpicRtcVideoCapturer(TSharedPtr VideoProducer, bool bIsSRGB) : FVideoCapturer(VideoProducer, bIsSRGB) { CreateFrameCapturer(); } TRefCountPtr FEpicRtcVideoCapturer::GetFrameBuffer() { return new FEpicRtcVideoBufferMultiFormatLayered(FrameCapturer, { LastFrameWidth, LastFrameHeight }); } } // namespace UE::PixelStreaming2