File stereo_frame.hpp
File List > data_format > stereo_frame.hpp
Go to the documentation of this file
#pragma once
#include "illixr/data_format/poses/pose_base.hpp"
#include "illixr/data_format/stereo_presentation.hpp"
#include "illixr/switchboard.hpp"
#include
#include
#include
#include
#include
#include
namespace ILLIXR::data_format {
enum class stereo_pixel_format : std::uint8_t {
rgba8_unorm,
};
enum class stereo_image_origin : std::uint8_t {
upper_left,
lower_left,
};
struct stereo_shared_image {
std::uint64_t byte_offset{0};
std::uint64_t byte_count{0};
std::uint32_t width{0};
std::uint32_t height{0};
std::uint32_t row_stride_bytes{0};
};
struct stereo_render_view : public pose::pose_base {
#ifdef USING_OPENXR
stereo_render_view() {
orientation.w = 1.0F;
}
#endif
float angle_left{0.0F};
float angle_right{0.0F};
float angle_up{0.0F};
float angle_down{0.0F};
#ifdef USING_OPENXR
bool valid{false};
#endif
};
struct stereo_overlay_command_range {
std::uint64_t byte_offset{0};
std::uint32_t command_count{0};
std::uint32_t command_stride_floats{0};
};
struct stereo_modal_overlay {
bool visible{false};
bool left_valid{false};
bool right_valid{false};
std::uint64_t byte_offset{0};
std::uint32_t width{0};
std::uint32_t height{0};
std::uint32_t source_row_stride_bytes{0};
std::array<Eigen::Vector2f, 4> left_quad_pixels{};
std::array<Eigen::Vector2f, 4> right_quad_pixels{};
float width_m{0.0F};
float height_m{0.0F};
};
struct stereo_frame : public switchboard::event {
std::uint64_t sequence{0};
time_point sample_time{};
std::uint64_t source_frame_id{0};
stereo_pixel_format format{stereo_pixel_format::rgba8_unorm};
stereo_image_origin origin{stereo_image_origin::upper_left};
stereo_presentation_mode presentation_mode{stereo_presentation_mode::stereo_fullscreen};
std::string pixel_buffer_path;
std::uint64_t pixel_generation_offset{0};
stereo_shared_image left;
stereo_shared_image right;
stereo_render_view left_render_view;
stereo_render_view right_render_view;
std::string overlay_buffer_path;
std::uint64_t overlay_generation_offset{0};
stereo_overlay_command_range left_overlay_commands;
stereo_overlay_command_range right_overlay_commands;
std::string modal_buffer_path;
std::uint64_t modal_generation_offset{0};
stereo_modal_overlay modal;
};
} // namespace ILLIXR::data_format