Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions tools/convert/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ find_package(Threads REQUIRED)

add_executable(${RS_TARGET} rs-convert.cpp
converter.hpp
converter.cpp
converters/converter-bin.hpp
converters/converter-csv.hpp
converters/converter-csv.cpp
converters/converter-ply.hpp
converters/converter-png.hpp
converters/converter-raw.hpp
Expand Down
77 changes: 77 additions & 0 deletions tools/convert/converter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
// License: Apache 2.0. See LICENSE file in root directory.
// Copyright(c) 2021 Intel Corporation. All Rights Reserved.

#include <fstream>
#include "converter.hpp"

using namespace rs2::tools::converter;

void rs2::tools::converter::metadata_to_txtfile(const rs2::frame& frm, const std::string& filename)
{
std::ofstream file;

file.open(filename);

file << "Stream: " << rs2_stream_to_string(frm.get_profile().stream_type()) << "\n";

// Record all the available metadata attributes
for (size_t i = 0; i < RS2_FRAME_METADATA_COUNT; i++)
{
rs2_frame_metadata_value metadata_val = (rs2_frame_metadata_value)i;
if (frm.supports_frame_metadata(metadata_val))
{
file << rs2_frame_metadata_to_string(metadata_val) << ": "
<< frm.get_frame_metadata(metadata_val) << "\n";
}
}

file.close();
}

bool converter_base::frames_map_get_and_set(rs2_stream streamType, frame_number_t frameNumber)
{
if (_framesMap.find(streamType) == _framesMap.end()) {
_framesMap.emplace(streamType, std::unordered_set<frame_number_t>());
}

auto& set = _framesMap[streamType];
bool result = (set.find(frameNumber) != set.end());

if (!result) {
set.emplace(frameNumber);
}

return result;
}

void converter_base::wait_sub_workers()
{
for_each(_subWorkers.begin(), _subWorkers.end(),
[](std::thread& t) {
t.join();
});

_subWorkers.clear();
}

void converter_base::wait()
{
_worker.join();
}

std::string converter_base::get_statistics()
{
std::stringstream result;
result << name() << '\n';

for (auto& i : _framesMap) {
result << '\t'
<< i.second.size() << ' '
<< (static_cast<rs2_stream>(i.first) != rs2_stream::RS2_STREAM_ANY ? rs2_stream_to_string(static_cast<rs2_stream>(i.first)) : "")
<< " frame(s) processed"
<< '\n';
}

return (result.str());
}

71 changes: 6 additions & 65 deletions tools/convert/converter.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <thread>
#include <string>
#include <sstream>
#include <algorithm>

#include "librealsense2/rs.hpp"

Expand All @@ -17,27 +18,7 @@ namespace rs2 {
namespace tools {
namespace converter {

void metadata_to_txtfile(const rs2::frame& frm, const std::string& filename)
{
std::ofstream file;

file.open(filename);

file << "Stream: " << rs2_stream_to_string(frm.get_profile().stream_type()) << "\n";

// Record all the available metadata attributes
for (size_t i = 0; i < RS2_FRAME_METADATA_COUNT; i++)
{
rs2_frame_metadata_value metadata_val = (rs2_frame_metadata_value)i;
if (frm.supports_frame_metadata(metadata_val))
{
file << rs2_frame_metadata_to_string(metadata_val) << ": "
<< frm.get_frame_metadata(metadata_val) << "\n";
}
}

file.close();
}
void metadata_to_txtfile(const rs2::frame& frm, const std::string& filename);

typedef unsigned long long frame_number_t;

Expand All @@ -48,21 +29,8 @@ namespace rs2 {
std::unordered_map<int, std::unordered_set<frame_number_t>> _framesMap;

protected:
bool frames_map_get_and_set(rs2_stream streamType, frame_number_t frameNumber)
{
if (_framesMap.find(streamType) == _framesMap.end()) {
_framesMap.emplace(streamType, std::unordered_set<frame_number_t>());
}

auto & set = _framesMap[streamType];
bool result = (set.find(frameNumber) != set.end());

if (!result) {
set.emplace(frameNumber);
}

return result;
}
bool frames_map_get_and_set(rs2_stream streamType, frame_number_t frameNumber);
void wait_sub_workers();

template <typename F> void start_worker(const F& f)
{
Expand All @@ -74,40 +42,13 @@ namespace rs2 {
_subWorkers.emplace_back(f);
}

void wait_sub_workers()
{
for_each(_subWorkers.begin(), _subWorkers.end(),
[] (std::thread& t) {
t.join();
});

_subWorkers.clear();
}

public:
virtual void convert(rs2::frame& frame) = 0;
virtual std::string name() const = 0;

virtual std::string get_statistics()
{
std::stringstream result;
result << name() << '\n';

for (auto& i : _framesMap) {
result << '\t'
<< i.second.size() << ' '
<< (static_cast<rs2_stream>(i.first) != rs2_stream::RS2_STREAM_ANY ? rs2_stream_to_string(static_cast<rs2_stream>(i.first)) : "")
<< " frame(s) processed"
<< '\n';
}

return (result.str());
}
virtual std::string get_statistics();

void wait()
{
_worker.join();
}
void wait();
};

}
Expand Down
Loading