56e874ab6d
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>
37 lines
945 B
C++
37 lines
945 B
C++
#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();
|
|
|
|
}
|