summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--video-ps3eye/module.hpp2
-rw-r--r--video-ps3eye/shm-layout.hpp6
-rw-r--r--video-ps3eye/wrapper.cxx8
3 files changed, 11 insertions, 5 deletions
diff --git a/video-ps3eye/module.hpp b/video-ps3eye/module.hpp
index 595d446a..26cfad60 100644
--- a/video-ps3eye/module.hpp
+++ b/video-ps3eye/module.hpp
@@ -57,7 +57,7 @@ struct ps3eye_camera final : video::impl::camera
settings s;
frame fr;
Timer t;
- unsigned char data[640 * 480 * 3] = {};
+ unsigned char data[640 * 480 * ps3eye::num_channels] = {};
int framerate = 30, sleep_ms = 1;
bool open = false;
unsigned timecode = 0;
diff --git a/video-ps3eye/shm-layout.hpp b/video-ps3eye/shm-layout.hpp
index 3ae406c5..d7905109 100644
--- a/video-ps3eye/shm-layout.hpp
+++ b/video-ps3eye/shm-layout.hpp
@@ -3,6 +3,8 @@
namespace ps3eye {
+static constexpr unsigned num_channels = 1;
+
struct shm_in {
enum class mode : uint8_t { qvga, vga, };
@@ -23,8 +25,8 @@ struct shm_out
status status_;
char error_string[256];
union {
- uint8_t data_320x240[320][240][1];
- uint8_t data_640x480[640][480][1];
+ uint8_t data_320x240[320][240][num_channels];
+ uint8_t data_640x480[640][480][num_channels];
};
};
diff --git a/video-ps3eye/wrapper.cxx b/video-ps3eye/wrapper.cxx
index 2ebdc2e1..0f9344eb 100644
--- a/video-ps3eye/wrapper.cxx
+++ b/video-ps3eye/wrapper.cxx
@@ -65,12 +65,16 @@ int main(int argc, char** argv)
auto* frame = (uint8_t*)out.data_640x480;
decltype(out.timecode) timecode = 0;
+ constexpr auto fmt = ps3eye::num_channels == 1
+ ? ps3eye::format::Gray
+ : ps3eye::format::BGR;
+
{
int framerate = in.framerate;
if (framerate <= 0)
framerate = 60;
- if (!camera->init(get_mode(in.resolution), framerate, ps3eye::format::Gray))
+ if (!camera->init(get_mode(in.resolution), framerate, fmt))
error(out, "camera init failed: %s", camera->error_string());
update_settings(*camera, in);
@@ -94,7 +98,7 @@ int main(int argc, char** argv)
int framerate = in.framerate;
if (framerate <= 0)
framerate = 60;
- if (!camera->init(get_mode(in.resolution), framerate, ps3eye::format::Gray))
+ if (!camera->init(get_mode(in.resolution), framerate, fmt))
error(out, "camera init failed: %s", camera->error_string());
if (!camera->start())
error(out, "can't start camera: %s", camera->error_string());