This commit is contained in:
2021-07-28 22:32:11 +02:00
parent d372ce7c07
commit 312ac14bef
3 changed files with 19 additions and 18 deletions

1
.gitignore vendored
View File

@@ -43,6 +43,7 @@
# *.ipr # *.ipr
# CMake # CMake
cmake-build/
cmake-build-*/ cmake-build-*/
# Mongo Explorer plugin # Mongo Explorer plugin

View File

@@ -51,8 +51,9 @@ namespace openVulkanoCpp::AR
ArRecorder::~ArRecorder() = default; 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"); std::string fileName = GetFileName(arFrame->GetFrameId(), "jpg");
#ifndef TURBO_JPEG #ifndef TURBO_JPEG
if (arFrame->GetCameraImageAsJpeg([&fileName, this](const char* data, size_t len){ m_colorWriter->AddFile(fileName.c_str(), data, len); })) 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) void ArRecorder::WriteDepthImage(ArFrame* arFrame, MultiPartArchiveWriter* depthWriter, MultiPartArchiveWriter* confWriter)
{ {
//BlockProfiler profile("Save AR Frame - Depth");
if (!m_depthWriter || !m_confidenceWriter) return; if (!m_depthWriter || !m_confidenceWriter) return;
auto depthImg = arFrame->GetDepthImage(); auto depthImg = arFrame->GetDepthImage();
std::vector<std::pair<const void*, size_t>> buffers(2); std::vector<std::pair<const void*, size_t>> buffers(2);
@@ -131,29 +133,26 @@ 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) void ArRecorder::Write(ArFrame* frame, bool highRes)
{ {
if (frame->IsSaved()) return; if (frame->IsSaved()) return;
frame->SetSaved(); frame->SetSaved();
bool useHighResWriter = highRes && m_settings.highResFramesInSeparateArchive; bool useHighResWriter = highRes && m_settings.highResFramesInSeparateArchive;
BlockProfiler profile("Save AR Frame"); BlockProfiler profile("Save AR Frame");
{ WriteMetadata(frame, useHighResWriter ? m_highResWriter.get() : m_metadataWriter.get());
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); WriteColorImage(frame, useHighResWriter ? m_highResWriter.get() : m_colorWriter.get(), highRes);
}
{
//BlockProfiler profile("Save AR Frame - Depth");
WriteDepthImage(frame, WriteDepthImage(frame,
useHighResWriter ? m_highResWriter.get() : m_depthWriter.get(), useHighResWriter ? m_highResWriter.get() : m_depthWriter.get(),
useHighResWriter ? m_highResWriter.get() : m_confidenceWriter.get()); useHighResWriter ? m_highResWriter.get() : m_confidenceWriter.get());
} }
}
void ArRecorder::Start() void ArRecorder::Start()
{ {

View File

@@ -80,7 +80,8 @@ namespace openVulkanoCpp::AR
AsyncProcessor m_asyncProcessor; AsyncProcessor m_asyncProcessor;
void Write(ArFrame* frame, bool highRes = false); 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); void WriteDepthImage(ArFrame *arFrame, MultiPartArchiveWriter* depthWriter, MultiPartArchiveWriter* confWriter);
public: public: