Phase 4 complete
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 2m39s
CI / Windows Release Package (push) Successful in 2m45s

This commit is contained in:
Aiden
2026-05-11 18:39:02 +10:00
parent f141d20026
commit 761df3b2d0
5 changed files with 68 additions and 97 deletions

View File

@@ -513,25 +513,6 @@ bool RenderEngine::QueueInputFrame(const VideoIOFrame& inputFrame, const VideoIO
return true;
}
bool RenderEngine::TryUploadInputFrame(const VideoIOFrame& inputFrame, const VideoIOState& videoState)
{
if (inputFrame.hasNoInputSource || inputFrame.bytes == nullptr)
return true;
if (mRenderThreadRunning)
{
return TryInvokeOnRenderThread("input-upload", [this, inputFrame, videoState]() {
mRenderCommandQueue.RequestInputUpload({ inputFrame, videoState });
RenderInputUploadRequest request;
return mRenderCommandQueue.TryTakeInputUpload(request) &&
UploadInputFrameOnRenderThread(request.inputFrame, request.videoState);
});
}
ReportRenderThreadRequestFailure("input-upload", "render thread is not running");
return false;
}
bool RenderEngine::UploadInputFrameOnRenderThread(const VideoIOFrame& inputFrame, const VideoIOState& videoState)
{
ReportWrongThreadRenderAccess("input-upload");
@@ -567,11 +548,6 @@ bool RenderEngine::RequestOutputFrame(const RenderPipelineFrameContext& context,
return false;
}
bool RenderEngine::RenderOutputFrame(const RenderPipelineFrameContext& context, VideoIOOutputFrame& outputFrame)
{
return RequestOutputFrame(context, outputFrame);
}
bool RenderEngine::RenderOutputFrameOnRenderThread(const RenderPipelineFrameContext& context, VideoIOOutputFrame& outputFrame)
{
ReportWrongThreadRenderAccess("output-render");
@@ -656,22 +632,6 @@ bool RenderEngine::ReadOutputFrameRgbaOnRenderThread(unsigned width, unsigned he
return true;
}
bool RenderEngine::CaptureOutputFrameRgbaTopDown(unsigned width, unsigned height, std::vector<unsigned char>& topDownPixels)
{
if (mRenderThreadRunning)
{
return TryInvokeOnRenderThread("screenshot-capture", [this, width, height, &topDownPixels]() {
mRenderCommandQueue.RequestScreenshotCapture({ width, height });
RenderScreenshotCaptureRequest request;
return mRenderCommandQueue.TryTakeScreenshotCapture(request) &&
CaptureOutputFrameRgbaTopDownOnRenderThread(request.width, request.height, topDownPixels);
});
}
ReportRenderThreadRequestFailure("screenshot-capture", "render thread is not running");
return false;
}
bool RenderEngine::CaptureOutputFrameRgbaTopDownOnRenderThread(unsigned width, unsigned height, std::vector<unsigned char>& topDownPixels)
{
std::vector<unsigned char> bottomUpPixels;

View File

@@ -102,15 +102,12 @@ public:
bool TryPresentPreview(bool force, unsigned previewFps, unsigned outputFrameWidth, unsigned outputFrameHeight);
bool RequestScreenshotCapture(unsigned width, unsigned height, ScreenshotCaptureCallback completion);
bool QueueInputFrame(const VideoIOFrame& inputFrame, const VideoIOState& videoState);
bool TryUploadInputFrame(const VideoIOFrame& inputFrame, const VideoIOState& videoState);
bool RequestOutputFrame(const RenderPipelineFrameContext& context, VideoIOOutputFrame& outputFrame);
bool RenderOutputFrame(const RenderPipelineFrameContext& context, VideoIOOutputFrame& outputFrame);
bool ResolveRenderFrameState(
const RenderFrameInput& input,
std::vector<OscOverlayCommitRequest>* commitRequests,
RenderFrameState& frameState);
void RenderPreparedFrame(const RenderFrameState& frameState);
bool CaptureOutputFrameRgbaTopDown(unsigned width, unsigned height, std::vector<unsigned char>& topDownPixels);
private:
static constexpr std::chrono::milliseconds kRenderThreadRequestTimeout{ 250 };