/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #pragma once #include "AR/ArType.hpp" #include "AR/ArDepthFormat.hpp" #include "Math/Range.hpp" #include "Math/Math.hpp" namespace OpenVulkano::AR { struct ArSessionMetadata { ArType type; ArDepthFormat depthFormat; Math::Range confidenceRange; Math::Vector2ui imageResolution; float frameRate; uint32_t version; std::string device, os; bool playback = false; ArSessionMetadata(); ArSessionMetadata(ArType type, ArDepthFormat format, Math::Range confRange, Math::Vector2ui resolution, float frameRate); ArSessionMetadata(ArType type, ArDepthFormat format, Math::Range confRange, Math::Vector2ui resolution, float frameRate, const std::string& device, const std::string& os, uint32_t version = 2) : type(type), depthFormat(format), confidenceRange(confRange), imageResolution(resolution) , frameRate(frameRate), version(version), device(device), os(os) {} ArSessionMetadata(const std::string& dirPath); [[nodiscard]] std::string ToXML() const; [[nodiscard]] std::string ToYaml() const; [[nodiscard]] float GetConfidenceNormalisationFactor() const { return 1.0f / static_cast(confidenceRange.max); } static ArSessionMetadata FromXML(const std::string& filePath); static ArSessionMetadata FromYaml(const std::string& filePath); }; }