feat(downstream): add cvmmap downstream runtime implementation

This commit introduces the full downstream runtime implementation needed to ingest, transform, and publish streams.

It preserves the original upstream request boundary by packaging the entire cvmmap-streamer module (build config, public API, protocol and IPC glue, and simulator/tester entrypoints) in one coherent core unit.

Keeping this group isolated enables reviewers to validate runtime behavior and correctness without mixing test evidence or process documentation changes.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-03-05 20:31:58 +08:00
commit 56e874ab6d
27 changed files with 8483 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
#pragma once
#include <cstdint>
#include <expected>
#include <optional>
#include <string>
#include "cvmmap_streamer/ipc/contracts.hpp"
namespace cvmmap_streamer::sim {
struct RuntimeConfig {
std::uint32_t frames{360};
std::uint32_t fps{60};
std::uint16_t width{64};
std::uint16_t height{48};
std::optional<std::uint32_t> emit_reset_at{};
std::optional<std::uint32_t> emit_reset_every{};
std::optional<std::uint32_t> switch_format_at{};
std::optional<std::uint16_t> switch_width{};
std::optional<std::uint16_t> switch_height{};
std::string label{"sim"};
std::string shm_name{"cvmmap_sim"};
std::string zmq_endpoint{"ipc:///tmp/cvmmap_sim"};
std::uint8_t channels{3};
ipc::Depth depth{ipc::Depth::U8};
ipc::PixelFormat pixel_format{ipc::PixelFormat::BGR};
[[nodiscard]]
std::uint32_t payload_size_bytes() const;
};
std::expected<RuntimeConfig, std::string> parse_runtime_config(int argc, char **argv);
void print_help();
}