feat(record): add depth RVL recording to MCAP

This commit is contained in:
2026-03-11 21:15:25 +08:00
parent 782af9481c
commit 59ff8b79d9
15 changed files with 826 additions and 35 deletions
+58 -6
View File
@@ -8,11 +8,13 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(Threads REQUIRED)
find_package(cppzmq QUIET)
set(CVMMAP_LOCAL_ROOT "${CMAKE_CURRENT_LIST_DIR}/../cv-mmap" CACHE PATH "Path to a local cv-mmap checkout")
set(CVMMAP_LOCAL_BUILD "${CVMMAP_LOCAL_ROOT}/build/core" CACHE PATH "Path to local cv-mmap build artifacts")
if (
NOT cvmmap-core_DIR
AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/../cv-mmap/build/core/cvmmap-coreConfig.cmake"
AND EXISTS "${CMAKE_CURRENT_LIST_DIR}/../cv-mmap/build/core/cvmmap-coreTargets.cmake")
set(cvmmap-core_DIR "${CMAKE_CURRENT_LIST_DIR}/../cv-mmap/build/core")
AND EXISTS "${CVMMAP_LOCAL_BUILD}/cvmmap-coreConfig.cmake"
AND EXISTS "${CVMMAP_LOCAL_BUILD}/cvmmap-coreTargets.cmake")
set(cvmmap-core_DIR "${CVMMAP_LOCAL_BUILD}")
endif()
if (cvmmap-core_DIR)
find_package(cvmmap-core CONFIG QUIET)
@@ -21,6 +23,7 @@ find_package(ZeroMQ QUIET)
find_package(spdlog REQUIRED)
find_package(Protobuf REQUIRED)
find_package(PkgConfig REQUIRED)
find_package(rvl CONFIG QUIET)
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/lib/CLI11/CMakeLists.txt")
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/lib/CLI11" "${CMAKE_CURRENT_BINARY_DIR}/vendor/cli11")
@@ -32,8 +35,6 @@ pkg_check_modules(ZSTD REQUIRED IMPORTED_TARGET libzstd)
pkg_check_modules(LZ4 REQUIRED IMPORTED_TARGET liblz4)
if (NOT TARGET cvmmap::client)
set(CVMMAP_LOCAL_ROOT "${CMAKE_CURRENT_LIST_DIR}/../cv-mmap")
set(CVMMAP_LOCAL_BUILD "${CVMMAP_LOCAL_ROOT}/build/core")
if (
EXISTS "${CVMMAP_LOCAL_ROOT}/core/include/cvmmap/client.hpp"
AND EXISTS "${CVMMAP_LOCAL_BUILD}/libcvmmap_client.a"
@@ -48,6 +49,21 @@ if (NOT TARGET cvmmap::client)
endif()
endif()
if (NOT TARGET rvl::rvl)
set(RVL_LOCAL_ROOT "/home/crosstyan/Code/rvl_impl")
set(RVL_LOCAL_BUILD "${RVL_LOCAL_ROOT}/build/core")
if (
EXISTS "${RVL_LOCAL_ROOT}/core/include/rvl/rvl.hpp"
AND EXISTS "${RVL_LOCAL_BUILD}/librvl_core.a")
add_library(rvl::rvl INTERFACE IMPORTED)
set_target_properties(rvl::rvl PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${RVL_LOCAL_ROOT}/core/include"
INTERFACE_LINK_LIBRARIES "${RVL_LOCAL_BUILD}/librvl_core.a")
else()
message(FATAL_ERROR "rvl::rvl target is unavailable and local rvl_impl build artifacts were not found")
endif()
endif()
set(CVMMAP_PROXY_INCLUDE_DIR "${CMAKE_CURRENT_LIST_DIR}/lib/proxy/include")
if (NOT EXISTS "${CVMMAP_PROXY_INCLUDE_DIR}/proxy/proxy.h")
message(FATAL_ERROR "proxy headers not found at ${CVMMAP_PROXY_INCLUDE_DIR}")
@@ -59,11 +75,21 @@ protobuf_generate(
LANGUAGE cpp
PROTOS "${CMAKE_CURRENT_LIST_DIR}/proto/foxglove/CompressedVideo.proto"
IMPORT_DIRS "${CMAKE_CURRENT_LIST_DIR}/proto")
add_library(cvmmap_streamer_depth_proto STATIC)
protobuf_generate(
TARGET cvmmap_streamer_depth_proto
LANGUAGE cpp
PROTOS "${CMAKE_CURRENT_LIST_DIR}/proto/cvmmap_streamer/DepthMap.proto"
IMPORT_DIRS "${CMAKE_CURRENT_LIST_DIR}/proto")
add_library(cvmmap_streamer_protobuf INTERFACE)
target_include_directories(cvmmap_streamer_foxglove_proto
PUBLIC
"${CMAKE_CURRENT_BINARY_DIR}"
${Protobuf_INCLUDE_DIRS})
target_include_directories(cvmmap_streamer_depth_proto
PUBLIC
"${CMAKE_CURRENT_BINARY_DIR}"
${Protobuf_INCLUDE_DIRS})
target_include_directories(cvmmap_streamer_protobuf
INTERFACE
${Protobuf_INCLUDE_DIRS})
@@ -78,6 +104,17 @@ if (TARGET PkgConfig::PROTOBUF_PKG)
target_link_libraries(cvmmap_streamer_protobuf INTERFACE PkgConfig::PROTOBUF_PKG)
endif()
target_link_libraries(cvmmap_streamer_foxglove_proto PUBLIC cvmmap_streamer_protobuf)
target_link_libraries(cvmmap_streamer_depth_proto PUBLIC cvmmap_streamer_protobuf)
add_library(cvmmap_streamer_mcap_runtime STATIC
src/record/mcap_runtime.cpp)
target_include_directories(cvmmap_streamer_mcap_runtime
PUBLIC
"${CMAKE_CURRENT_LIST_DIR}/lib/mcap/include")
target_link_libraries(cvmmap_streamer_mcap_runtime
PUBLIC
PkgConfig::ZSTD
PkgConfig::LZ4)
add_library(cvmmap_streamer_common STATIC
src/ipc/help.cpp
@@ -107,9 +144,12 @@ target_include_directories(cvmmap_streamer_common
set(CVMMAP_STREAMER_LINK_DEPS
Threads::Threads
cvmmap_streamer_foxglove_proto
cvmmap_streamer_depth_proto
cvmmap_streamer_mcap_runtime
PkgConfig::FFMPEG
PkgConfig::ZSTD
PkgConfig::LZ4
rvl::rvl
cvmmap::client)
if (TARGET cppzmq::cppzmq)
@@ -154,7 +194,9 @@ function(add_cvmmap_binary target source)
target_link_libraries(${target}
PRIVATE
cvmmap_streamer_common)
set_target_properties(${target} PROPERTIES OUTPUT_NAME "${target}")
set_target_properties(${target} PROPERTIES
OUTPUT_NAME "${target}"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
endfunction()
add_cvmmap_binary(cvmmap_streamer src/main_streamer.cpp)
@@ -163,6 +205,7 @@ add_cvmmap_binary(rtp_output_tester src/testers/rtp_output_tester.cpp)
add_cvmmap_binary(rtmp_stub_tester src/testers/rtmp_stub_tester.cpp)
add_cvmmap_binary(rtmp_output_tester src/testers/rtmp_output_tester.cpp)
add_cvmmap_binary(ipc_snapshot_tester src/testers/ipc_snapshot_tester.cpp)
add_cvmmap_binary(mcap_depth_record_tester src/testers/mcap_depth_record_tester.cpp)
add_executable(mcap_reader_tester src/testers/mcap_reader_tester.cpp)
target_include_directories(mcap_reader_tester
@@ -175,6 +218,8 @@ target_include_directories(mcap_reader_tester
target_link_libraries(mcap_reader_tester
PRIVATE
cvmmap_streamer_foxglove_proto
cvmmap_streamer_depth_proto
cvmmap_streamer_mcap_runtime
PkgConfig::ZSTD
PkgConfig::LZ4)
if (TARGET spdlog::spdlog)
@@ -189,6 +234,9 @@ target_link_libraries(mcap_reader_tester PRIVATE cvmmap_streamer_protobuf)
if (TARGET PkgConfig::PROTOBUF_PKG)
target_link_libraries(mcap_reader_tester PRIVATE PkgConfig::PROTOBUF_PKG)
endif()
set_target_properties(mcap_reader_tester PROPERTIES
OUTPUT_NAME "mcap_reader_tester"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
add_executable(mcap_replay_tester src/testers/mcap_replay_tester.cpp)
target_include_directories(mcap_replay_tester
@@ -202,6 +250,7 @@ target_link_libraries(mcap_replay_tester
PRIVATE
Threads::Threads
cvmmap_streamer_foxglove_proto
cvmmap_streamer_mcap_runtime
PkgConfig::ZSTD
PkgConfig::LZ4)
if (TARGET spdlog::spdlog)
@@ -216,3 +265,6 @@ target_link_libraries(mcap_replay_tester PRIVATE cvmmap_streamer_protobuf)
if (TARGET PkgConfig::PROTOBUF_PKG)
target_link_libraries(mcap_replay_tester PRIVATE PkgConfig::PROTOBUF_PKG)
endif()
set_target_properties(mcap_replay_tester PROPERTIES
OUTPUT_NAME "mcap_replay_tester"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")