Add internal types
This commit is contained in:
parent
2df1ab635a
commit
a5bdeaf41f
|
@ -10,6 +10,8 @@
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
||||||
#include "mynteye/mynteye.h"
|
#include "mynteye/mynteye.h"
|
||||||
|
|
||||||
|
#include "internal/types.h"
|
||||||
#include "uvc/uvc.h"
|
#include "uvc/uvc.h"
|
||||||
|
|
||||||
struct glog_init {
|
struct glog_init {
|
||||||
|
@ -66,13 +68,14 @@ int main(int argc, char *argv[]) {
|
||||||
size_t n = mynteye_devices.size();
|
size_t n = mynteye_devices.size();
|
||||||
LOG_IF(FATAL, n <= 0) << "No MYNT EYE devices :(";
|
LOG_IF(FATAL, n <= 0) << "No MYNT EYE devices :(";
|
||||||
|
|
||||||
|
LOG(INFO) << "MYNT EYE devices: ";
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
auto device = mynteye_devices[i];
|
auto device = mynteye_devices[i];
|
||||||
auto name = uvc::get_video_name(*device);
|
auto name = uvc::get_video_name(*device);
|
||||||
auto vid = uvc::get_vendor_id(*device);
|
auto vid = uvc::get_vendor_id(*device);
|
||||||
auto pid = uvc::get_product_id(*device);
|
auto pid = uvc::get_product_id(*device);
|
||||||
LOG(INFO) << "index: " << i << ", name: " << name << ", vid: " << vid
|
LOG(INFO) << " index: " << i << ", name: " << name << ", vid: 0x"
|
||||||
<< ", pid: " << pid;
|
<< std::hex << vid << ", pid: 0x" << std::hex << pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<uvc::device> device = nullptr;
|
std::shared_ptr<uvc::device> device = nullptr;
|
||||||
|
@ -101,7 +104,7 @@ int main(int argc, char *argv[]) {
|
||||||
const auto frame_empty = [&frames]() { return frames.empty(); };
|
const auto frame_empty = [&frames]() { return frames.empty(); };
|
||||||
|
|
||||||
uvc::set_device_mode(
|
uvc::set_device_mode(
|
||||||
*device, 752, 480, 0, 25,
|
*device, 752, 480, static_cast<int>(Format::YUYV), 25,
|
||||||
[&mtx, &cv, &frames, &frame_ready](const void *data) {
|
[&mtx, &cv, &frames, &frame_ready](const void *data) {
|
||||||
// reinterpret_cast<const std::uint8_t *>(data);
|
// reinterpret_cast<const std::uint8_t *>(data);
|
||||||
std::unique_lock<std::mutex> lock(mtx);
|
std::unique_lock<std::mutex> lock(mtx);
|
||||||
|
|
25
src/internal/types.h
Normal file
25
src/internal/types.h
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef MYNTEYE_INTERNAL_TYPES_H_ // NOLINT
|
||||||
|
#define MYNTEYE_INTERNAL_TYPES_H_
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#include "mynteye/mynteye.h"
|
||||||
|
|
||||||
|
#define FOURCC(a, b, c, d) \
|
||||||
|
((std::uint32_t)(a) | ((std::uint32_t)(b) << 8) | \
|
||||||
|
((std::uint32_t)(c) << 16) | ((std::uint32_t)(d) << 24)) // NOLINT
|
||||||
|
|
||||||
|
MYNTEYE_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ingroup enumerations
|
||||||
|
* @brief Formats define how each stream can be encoded.
|
||||||
|
*/
|
||||||
|
enum class Format : std::uint32_t {
|
||||||
|
YUYV = FOURCC('Y', 'U', 'Y', 'V'),
|
||||||
|
};
|
||||||
|
|
||||||
|
MYNTEYE_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif // MYNTEYE_INTERNAL_TYPES_H_ NOLINT
|
26
src/types.h
26
src/types.h
|
@ -1,26 +0,0 @@
|
||||||
#ifndef MYNTEYE_TYPES_H_ // NOLINT
|
|
||||||
#define MYNTEYE_TYPES_H_
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "mynteye/mynteye.h"
|
|
||||||
|
|
||||||
MYNTEYE_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
template <class T>
|
|
||||||
class big_endian {
|
|
||||||
T be_value;
|
|
||||||
|
|
||||||
public:
|
|
||||||
operator T() const { // convert to T from big to little endian
|
|
||||||
T le_value = 0;
|
|
||||||
for (unsigned int i = 0; i < sizeof(T); ++i) {
|
|
||||||
reinterpret_cast<char *>(&le_value)[i] =
|
|
||||||
reinterpret_cast<const char *>(&be_value)[sizeof(T) - i - 1];
|
|
||||||
}
|
|
||||||
return le_value;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
MYNTEYE_END_NAMESPACE
|
|
||||||
|
|
||||||
#endif // MYNTEYE_TYPES_H_ NOLINT
|
|
|
@ -19,8 +19,6 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
#include "types.h" // NOLINT
|
|
||||||
|
|
||||||
MYNTEYE_BEGIN_NAMESPACE
|
MYNTEYE_BEGIN_NAMESPACE
|
||||||
|
|
||||||
namespace uvc {
|
namespace uvc {
|
||||||
|
@ -231,8 +229,7 @@ struct device {
|
||||||
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||||
fmt.fmt.pix.width = width;
|
fmt.fmt.pix.width = width;
|
||||||
fmt.fmt.pix.height = height;
|
fmt.fmt.pix.height = height;
|
||||||
// fmt.fmt.pix.pixelformat = format;
|
fmt.fmt.pix.pixelformat = format;
|
||||||
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
|
|
||||||
fmt.fmt.pix.field = V4L2_FIELD_NONE;
|
fmt.fmt.pix.field = V4L2_FIELD_NONE;
|
||||||
// fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
|
// fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
|
||||||
if (xioctl(fd, VIDIOC_S_FMT, &fmt) < 0)
|
if (xioctl(fd, VIDIOC_S_FMT, &fmt) < 0)
|
||||||
|
@ -451,10 +448,9 @@ void set_control(
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_device_mode(
|
void set_device_mode(
|
||||||
device &device, int width, int height, uint32_t fourcc, int fps, // NOLINT
|
device &device, int width, int height, int fourcc, int fps, // NOLINT
|
||||||
video_channel_callback callback) {
|
video_channel_callback callback) {
|
||||||
device.set_format(
|
device.set_format(width, height, fourcc, fps, callback);
|
||||||
width, height, (const big_endian<int> &)fourcc, fps, callback);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void start_streaming(device &device, int /*num_transfer_bufs*/) { // NOLINT
|
void start_streaming(device &device, int /*num_transfer_bufs*/) { // NOLINT
|
||||||
|
|
|
@ -47,7 +47,7 @@ void set_control(
|
||||||
typedef std::function<void(const void *frame)> video_channel_callback;
|
typedef std::function<void(const void *frame)> video_channel_callback;
|
||||||
|
|
||||||
void set_device_mode(
|
void set_device_mode(
|
||||||
device &device, int width, int height, uint32_t fourcc, int fps, // NOLINT
|
device &device, int width, int height, int fourcc, int fps, // NOLINT
|
||||||
video_channel_callback callback);
|
video_channel_callback callback);
|
||||||
void start_streaming(device &device, int num_transfer_bufs); // NOLINT
|
void start_streaming(device &device, int num_transfer_bufs); // NOLINT
|
||||||
void stop_streaming(device &device); // NOLINT
|
void stop_streaming(device &device); // NOLINT
|
||||||
|
|
Loading…
Reference in New Issue
Block a user