/* * 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; bool playback = false; ArSessionMetadata() noexcept : ArSessionMetadata(ArType::UNKNOWN, ArDepthFormat::UNAVAILABLE, {0,0}, { 1920, 1440 }, 60) {} ArSessionMetadata(ArType type, ArDepthFormat format, Math::Range confRange, Math::Vector2ui resolution, float frameRate) noexcept : type(type), depthFormat(format), confidenceRange(confRange), imageResolution(resolution), frameRate(frameRate) {} 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); }; }