http
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 2m54s
CI / Windows Release Package (push) Successful in 3m2s

This commit is contained in:
Aiden
2026-05-12 12:38:54 +10:00
parent 79f7ac6c86
commit 9938a6cc26
12 changed files with 1182 additions and 19 deletions

View File

@@ -1,4 +1,5 @@
#include "app/AppConfig.h"
#include "app/AppConfigProvider.h"
#include "app/RenderCadenceApp.h"
#include "frames/SystemFrameExchange.h"
#include "logging/Logger.h"
@@ -40,11 +41,23 @@ private:
int main(int argc, char** argv)
{
RenderCadenceCompositor::AppConfig appConfig = RenderCadenceCompositor::DefaultAppConfig();
RenderCadenceCompositor::AppConfigProvider configProvider;
std::string configError;
if (!configProvider.Load("config/runtime-host.json", configError))
{
RenderCadenceCompositor::Logger::Instance().Start(RenderCadenceCompositor::DefaultAppConfig().logging);
RenderCadenceCompositor::LogError("app", "Config load failed: " + configError);
RenderCadenceCompositor::Logger::Instance().Stop();
return 1;
}
configProvider.ApplyCommandLine(argc, argv);
RenderCadenceCompositor::AppConfig appConfig = configProvider.Config();
RenderCadenceCompositor::Logger::Instance().Start(appConfig.logging);
RenderCadenceCompositor::Log(
"app",
"RenderCadenceCompositor starting. Starts render cadence, system-memory exchange, DeckLink scheduled output, and telemetry. Press Enter to stop.");
RenderCadenceCompositor::Log("app", "Loaded config from " + configProvider.SourcePath().string());
ComInitGuard com;
if (!com.Initialize())
@@ -57,8 +70,10 @@ int main(int argc, char** argv)
}
SystemFrameExchangeConfig frameExchangeConfig;
frameExchangeConfig.width = 1920;
frameExchangeConfig.height = 1080;
RenderCadenceCompositor::VideoFormatDimensions(
appConfig.outputVideoFormat,
frameExchangeConfig.width,
frameExchangeConfig.height);
frameExchangeConfig.pixelFormat = VideoIOPixelFormat::Bgra8;
frameExchangeConfig.rowBytes = VideoIORowBytes(frameExchangeConfig.pixelFormat, frameExchangeConfig.width);
frameExchangeConfig.capacity = 12;
@@ -68,26 +83,11 @@ int main(int argc, char** argv)
RenderThread::Config renderConfig;
renderConfig.width = frameExchangeConfig.width;
renderConfig.height = frameExchangeConfig.height;
renderConfig.frameDurationMilliseconds = 1000.0 / 59.94;
renderConfig.frameDurationMilliseconds = RenderCadenceCompositor::FrameDurationMillisecondsFromRateString(appConfig.outputFrameRate);
renderConfig.pboDepth = 6;
RenderThread renderThread(frameExchange, renderConfig);
for (int index = 1; index < argc; ++index)
{
const std::string argument = argv[index];
if (argument == "--shader" && index + 1 < argc)
{
appConfig.runtimeShaderId = argv[++index];
continue;
}
if (argument == "--no-shader")
{
appConfig.runtimeShaderId.clear();
continue;
}
}
RenderCadenceCompositor::RenderCadenceApp<RenderThread, SystemFrameExchange> app(renderThread, frameExchange, appConfig);
std::string error;