From a71bc79d7c8f13ef3c3962262e15d8d957598c5a Mon Sep 17 00:00:00 2001 From: Georg Hagen Date: Mon, 19 May 2025 23:32:09 +0200 Subject: [PATCH] Update file name handling --- openVulkanoCpp/AR/ArRecorder.cpp | 38 ++++++++++++++++++++------------ openVulkanoCpp/AR/ArRecorder.hpp | 2 ++ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/openVulkanoCpp/AR/ArRecorder.cpp b/openVulkanoCpp/AR/ArRecorder.cpp index bc93e86..81b2f50 100644 --- a/openVulkanoCpp/AR/ArRecorder.cpp +++ b/openVulkanoCpp/AR/ArRecorder.cpp @@ -20,7 +20,6 @@ #include "Image/JpegWithTagsWriter.hpp" #include #include -#include #if __has_include("turbojpeg.h") #include #define TURBO_JPEG @@ -33,7 +32,7 @@ namespace OpenVulkano::AR constexpr int JPEG_QUALITY_DS = 90; constexpr int JPEG_QUALITY_FS = 100; - std::filesystem::path GeneratePath(const std::filesystem::path& baseDir, const std::string_view name) + std::filesystem::path GeneratePath(const std::filesystem::path& baseDir, const std::string_view& name) { std::stringstream ss; auto t = std::time(nullptr); @@ -90,8 +89,8 @@ namespace OpenVulkano::AR void ArRecorder::WriteColorImage(ArFrame* arFrame, IArchiveWriter* colorWriter, JpegWithTagsWriter* jpgWriter, bool highRes) const { //BlockProfiler profile("Save AR Frame - Image"); - std::string fileName = GetFileName(arFrame->GetFrameId(), "jpg"); #ifndef TURBO_JPEG + std::string fileName = GetFileName(arFrame->GetFrameId(), "jpg"); if (arFrame->GetCameraImageAsJpeg([&fileName, this](const char* data, size_t len){ m_colorWriter->AddFile(fileName.c_str(), data, len); })) return; //TODO stb??? @@ -135,11 +134,12 @@ namespace OpenVulkano::AR else [[likely]] { if (colorWriter) [[likely]] - colorWriter->AddFile(fileName.c_str(), outBuffer, size); - if (jpgWriter) [[unlikely]] { - jpgWriter->WriteImageData({ outBuffer, size }, false); // Keep open, lifetime is managed outside + std::string fileName = GetFileName(arFrame->GetFrameId(), "jpg"); + colorWriter->AddFile(fileName.c_str(), outBuffer, size); } + if (jpgWriter) [[unlikely]] + jpgWriter->WriteImageData({ outBuffer, size }, false); // Keep open, lifetime is managed outside } tjFree(outBuffer); tjDestroy(handle); @@ -147,6 +147,13 @@ namespace OpenVulkano::AR } void ArRecorder::WriteDepthImage(ArFrame* arFrame, IArchiveWriter* depthWriter, IArchiveWriter* confWriter) + { + std::string depthName = GetFileName(arFrame->GetFrameId(), "pfm"); + std::string confName = GetFileName(arFrame->GetFrameId(), "pgm"); + WriteDepthImage(arFrame, depthWriter, confWriter, depthName.c_str(), confName.c_str()); + } + + void ArRecorder::WriteDepthImage(ArFrame* arFrame, IArchiveWriter* depthWriter, IArchiveWriter* confWriter, const char* depthName, const char* confidenceName) { //BlockProfiler profile("Save AR Frame - Depth"); if (!depthWriter || !confWriter) return; @@ -161,8 +168,7 @@ namespace OpenVulkano::AR buffers[1].first = static_cast(depthImg.depth.data); buffers[1].second = depthImg.depth.resolution.x * depthImg.depth.resolution.y * sizeof(float); - const std::string fileName = GetFileName(arFrame->GetFrameId(), "pfm"); - depthWriter->AddFile(fileName.c_str(), buffers); + depthWriter->AddFile(depthName, buffers); } if (depthImg.confidence.resolution.x > 1 && depthImg.confidence.resolution.y > 1) @@ -175,17 +181,21 @@ namespace OpenVulkano::AR buffers[1].first = static_cast(static_cast(depthImg.confidence.data)); buffers[1].second = static_cast(depthImg.confidence.resolution.x * depthImg.confidence.resolution.y); - const std::string fileName = GetFileName(arFrame->GetFrameId(), "pgm"); - confWriter->AddFile(fileName.c_str(), buffers); + confWriter->AddFile(confidenceName, buffers); } } void ArRecorder::WriteMetadata(ArFrame* frame, IArchiveWriter* metaWriter) + { + std::string fileName = GetFileName(frame->GetFrameId(), "meta"); + WriteMetadata(frame, metaWriter, fileName.c_str()); + } + + void ArRecorder::WriteMetadata(ArFrame* frame, IArchiveWriter* metaWriter, const char* fileName) { //BlockProfiler profileMeta("Save AR Frame - Meta"); std::string metaContent = frame->GetFrameMetadata().ToYaml(); - std::string fileName = GetFileName(frame->GetFrameId(), "meta"); - metaWriter->AddFile(fileName.c_str(), metaContent.c_str(), metaContent.size()); + metaWriter->AddFile(fileName, metaContent.c_str(), metaContent.size()); } void ArRecorder::Write(ArFrame* frame, bool highRes) @@ -307,8 +317,8 @@ namespace OpenVulkano::AR if (includeAux) { ArchiveWriter writer(jpgWriter.GetFilePtr(), ArchiveConfiguration(ArchiveType::ZIP)); - WriteMetadata(frame.get(), &writer); - WriteDepthImage(frame.get(), &writer, &writer); + WriteMetadata(frame.get(), &writer, "metadata.yml"); + WriteDepthImage(frame.get(), &writer, &writer, "depth.pfm", "confidence.pgm"); } } diff --git a/openVulkanoCpp/AR/ArRecorder.hpp b/openVulkanoCpp/AR/ArRecorder.hpp index 96c61d7..f56ef6e 100644 --- a/openVulkanoCpp/AR/ArRecorder.hpp +++ b/openVulkanoCpp/AR/ArRecorder.hpp @@ -101,8 +101,10 @@ namespace OpenVulkano::AR void Write(ArFrame* frame, bool highRes = false); void WriteMetadata(ArFrame* frame, IArchiveWriter* metaWriter); + void WriteMetadata(ArFrame* frame, IArchiveWriter* metaWriter, const char* name); void WriteColorImage(ArFrame* arFrame, IArchiveWriter* colorWriter, JpegWithTagsWriter* jpgWriter, bool highRes) const; void WriteDepthImage(ArFrame *arFrame, IArchiveWriter* depthWriter, IArchiveWriter* confWriter); + void WriteDepthImage(ArFrame *arFrame, IArchiveWriter* depthWriter, IArchiveWriter* confWriter, const char* depthName, const char* confidenceName); void WriteToFile(const std::shared_ptr& frame, const std::filesystem::path& path, bool downsample, bool saveAux); void SplitWriters();