#pragma once #include "RuntimeHost.h" #include #include #include class RuntimeSnapshotProvider; class RuntimeStore { public: RuntimeStore(); HealthTelemetry& GetHealthTelemetry(); const HealthTelemetry& GetHealthTelemetry() const; bool InitializeStore(std::string& error); std::string BuildPersistentStateJson() const; bool PollStoredFileChanges(bool& registryChanged, bool& reloadRequested, std::string& error); bool CreateStoredLayer(const std::string& shaderId, std::string& error); bool DeleteStoredLayer(const std::string& layerId, std::string& error); bool MoveStoredLayer(const std::string& layerId, int direction, std::string& error); bool MoveStoredLayerToIndex(const std::string& layerId, std::size_t targetIndex, std::string& error); bool SetStoredLayerBypassState(const std::string& layerId, bool bypassed, std::string& error); bool SetStoredLayerShaderSelection(const std::string& layerId, const std::string& shaderId, std::string& error); bool SetStoredParameterValue(const std::string& layerId, const std::string& parameterId, const ShaderParameterValue& value, bool persistState, std::string& error); bool ResetStoredLayerParameterValues(const std::string& layerId, std::string& error); bool SaveStackPresetSnapshot(const std::string& presetName, std::string& error) const; bool LoadStackPresetSnapshot(const std::string& presetName, std::string& error); const std::filesystem::path& GetRuntimeRepositoryRoot() const; const std::filesystem::path& GetRuntimeUiRoot() const; const std::filesystem::path& GetRuntimeDocsRoot() const; const std::filesystem::path& GetRuntimeDataRoot() const; unsigned short GetConfiguredControlServerPort() const; unsigned short GetConfiguredOscPort() const; const std::string& GetConfiguredOscBindAddress() const; double GetConfiguredOscSmoothing() const; unsigned GetConfiguredMaxTemporalHistoryFrames() const; unsigned GetConfiguredPreviewFps() const; bool IsExternalKeyingConfigured() const; const std::string& GetConfiguredInputVideoFormat() const; const std::string& GetConfiguredInputFrameRate() const; const std::string& GetConfiguredOutputVideoFormat() const; const std::string& GetConfiguredOutputFrameRate() const; void SetBoundControlServerPort(unsigned short port); void SetCompileStatus(bool succeeded, const std::string& message); void ClearReloadRequest(); private: friend class RuntimeCoordinator; friend class RuntimeSnapshotProvider; bool LoadConfig(std::string& error); bool LoadPersistentState(std::string& error); bool SavePersistentState(std::string& error) const; bool ScanShaderPackages(std::string& error); std::string ReadTextFile(const std::filesystem::path& path, std::string& error) const; bool WriteTextFile(const std::filesystem::path& path, const std::string& contents, std::string& error) const; bool ResolvePaths(std::string& error); std::vector GetStackPresetNamesLocked() const; std::string MakeSafePresetFileStem(const std::string& presetName) const; bool TryResolveStoredLayerAndParameterByControlKeyLocked(const std::string& layerKey, const std::string& parameterKey, RuntimeHost::LayerPersistentState*& matchedLayer, const ShaderPackage*& matchedPackage, std::vector::const_iterator& parameterIt, std::string& error) const; bool CopyShaderPackageForStoredLayer(const std::string& layerId, ShaderPackage& shaderPackage, std::string& error) const; void GetShaderCompilerInputs(std::filesystem::path& repoRoot, std::filesystem::path& wrapperPath, std::filesystem::path& generatedGlslPath, std::filesystem::path& patchedGlslPath, unsigned& maxTemporalHistoryFrames) const; uint64_t GetRenderStateVersion() const; uint64_t GetParameterStateVersion() const; void AdvanceFrameCounter(); void BuildLayerRenderStates(unsigned outputWidth, unsigned outputHeight, std::vector& states) const; bool TryBuildLayerRenderStates(unsigned outputWidth, unsigned outputHeight, std::vector& states) const; bool TryRefreshLayerParameters(std::vector& states) const; void RefreshDynamicRenderStateFields(std::vector& states) const; void BuildLayerRenderStatesLocked(unsigned outputWidth, unsigned outputHeight, std::vector& states) const; void RefreshLayerParametersLocked(std::vector& states) const; void RefreshDynamicRenderStateFieldsLocked(std::vector& states) const; JsonValue BuildRuntimeStateValue() const; JsonValue SerializeLayerStack() const; mutable RuntimeHost mRuntimeHost; };