diff options
Diffstat (limited to 'video-ps3eye/shm-layout.hpp')
-rw-r--r-- | video-ps3eye/shm-layout.hpp | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/video-ps3eye/shm-layout.hpp b/video-ps3eye/shm-layout.hpp index 7fa29115..65b0a4f1 100644 --- a/video-ps3eye/shm-layout.hpp +++ b/video-ps3eye/shm-layout.hpp @@ -3,37 +3,36 @@ namespace ps3eye { -struct shm_out { +static constexpr unsigned num_channels = 3; + +struct shm_in { enum class mode : uint8_t { qvga, vga, }; - enum class status : uint8_t { starting, running, fail, terminate, }; - uint8_t settings_updated; - uint16_t framerate; + uint32_t settings_updated; + uint8_t framerate, channels; mode resolution; - status status_; - uint8_t sharpness, contrast, brightness, hue, saturation; - uint8_t gain, exposure, auto_gain, awb, test_pattern; + //uint8_t sharpness, contrast, brightness hue, saturation; + uint8_t gain, exposure, auto_gain, test_pattern; + uint8_t do_exit; }; -struct shm_in { - uint8_t settings_updated_ack; - uint8_t timecode; +struct shm_out +{ + enum class status : uint8_t { starting, running, fail, terminate, }; + + uint32_t timecode; + uint32_t settings_updated_ack; + status status_; + char error_string[256]; union { - uint8_t data_320x240[320][240][3]; - uint8_t data_640x480[640][480][3]; + uint8_t data_320x240[320][240][num_channels]; + uint8_t data_640x480[640][480][num_channels]; }; }; -struct shm { - static constexpr unsigned _cacheline_len = 64; - static constexpr unsigned _padding_len = - (_cacheline_len - (sizeof(shm_in) & (_cacheline_len - 1))) & (_cacheline_len - 1); - - using resolution = shm_out::mode; - using status = shm_out::status; - +struct alignas(64) shm { shm_out out; - const char* _padding[_padding_len]; + [[maybe_unused]] const char _padding[128 - sizeof(shm_out) % 128]; // NOLINT shm_in in; }; |