diff --git a/.gitignore b/.gitignore index 9a49fa8..904ee1e 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,7 @@ # *.ipr # CMake +cmake-build/ cmake-build-*/ # Mongo Explorer plugin diff --git a/openVulkanoCpp/AR/ArRecorder.cpp b/openVulkanoCpp/AR/ArRecorder.cpp index 1d33491..5ed4752 100644 --- a/openVulkanoCpp/AR/ArRecorder.cpp +++ b/openVulkanoCpp/AR/ArRecorder.cpp @@ -51,8 +51,9 @@ namespace openVulkanoCpp::AR ArRecorder::~ArRecorder() = default; - void ArRecorder::WriteColorImage(ArFrame* arFrame, MultiPartArchiveWriter* colorWriter, bool highRes) + void ArRecorder::WriteColorImage(ArFrame* arFrame, MultiPartArchiveWriter* colorWriter, bool highRes) const { + BlockProfiler profile("Save AR Frame - Image"); std::string fileName = GetFileName(arFrame->GetFrameId(), "jpg"); #ifndef TURBO_JPEG if (arFrame->GetCameraImageAsJpeg([&fileName, this](const char* data, size_t len){ m_colorWriter->AddFile(fileName.c_str(), data, len); })) @@ -101,6 +102,7 @@ namespace openVulkanoCpp::AR void ArRecorder::WriteDepthImage(ArFrame* arFrame, MultiPartArchiveWriter* depthWriter, MultiPartArchiveWriter* confWriter) { + //BlockProfiler profile("Save AR Frame - Depth"); if (!m_depthWriter || !m_confidenceWriter) return; auto depthImg = arFrame->GetDepthImage(); std::vector> buffers(2); @@ -131,28 +133,25 @@ namespace openVulkanoCpp::AR } } + void ArRecorder::WriteMetadata(ArFrame* frame, MultiPartArchiveWriter* metaWriter) + { + BlockProfiler profileMeta("Save AR Frame - Meta"); + std::string metaContent = frame->GetFrameMetadata().ToXML(); + std::string fileName = GetFileName(frame->GetFrameId(), "meta"); + metaWriter->AddFile(fileName.c_str(), metaContent.c_str(), metaContent.size()); + } + void ArRecorder::Write(ArFrame* frame, bool highRes) { if (frame->IsSaved()) return; frame->SetSaved(); bool useHighResWriter = highRes && m_settings.highResFramesInSeparateArchive; BlockProfiler profile("Save AR Frame"); - { - BlockProfiler profileMeta("Save AR Frame - Meta"); - std::string metaContent = frame->GetFrameMetadata().ToXML(); - std::string fileName = GetFileName(frame->GetFrameId(), "meta"); - (useHighResWriter ? m_highResWriter : m_metadataWriter)->AddFile(fileName.c_str(), metaContent.c_str(), metaContent.size()); - } - { - BlockProfiler profile("Save AR Frame - Image"); - WriteColorImage(frame, useHighResWriter ? m_highResWriter.get() : m_colorWriter.get(), highRes); - } - { - //BlockProfiler profile("Save AR Frame - Depth"); - WriteDepthImage(frame, - useHighResWriter ? m_highResWriter.get() : m_depthWriter.get(), - useHighResWriter ? m_highResWriter.get() : m_confidenceWriter.get()); - } + WriteMetadata(frame, useHighResWriter ? m_highResWriter.get() : m_metadataWriter.get()); + WriteColorImage(frame, useHighResWriter ? m_highResWriter.get() : m_colorWriter.get(), highRes); + WriteDepthImage(frame, + useHighResWriter ? m_highResWriter.get() : m_depthWriter.get(), + useHighResWriter ? m_highResWriter.get() : m_confidenceWriter.get()); } void ArRecorder::Start() diff --git a/openVulkanoCpp/AR/ArRecorder.hpp b/openVulkanoCpp/AR/ArRecorder.hpp index c98fc78..0cc3b7e 100644 --- a/openVulkanoCpp/AR/ArRecorder.hpp +++ b/openVulkanoCpp/AR/ArRecorder.hpp @@ -80,7 +80,8 @@ namespace openVulkanoCpp::AR AsyncProcessor m_asyncProcessor; void Write(ArFrame* frame, bool highRes = false); - void WriteColorImage(ArFrame* arFrame, MultiPartArchiveWriter* colorWriter, bool highRes); + void WriteMetadata(ArFrame* frame, MultiPartArchiveWriter* metaWriter); + void WriteColorImage(ArFrame* arFrame, MultiPartArchiveWriter* colorWriter, bool highRes) const; void WriteDepthImage(ArFrame *arFrame, MultiPartArchiveWriter* depthWriter, MultiPartArchiveWriter* confWriter); public: