34 #include <sys/ioctl.h> 35 #include <linux/usb/video.h> 36 #include <linux/uvcvideo.h> 37 #include <linux/videodev2.h> 42 #pragma GCC diagnostic ignored "-Wpedantic" 43 #include "../third-party/libusb/libusb/libusb.h" 44 #pragma GCC diagnostic pop 53 named_mutex(
const std::string& device_path,
unsigned timeout);
69 void create_named_mutex(
const std::string& cam_id);
71 void destroy_named_mutex();
73 std::string _device_path;
78 static int xioctl(
int fh,
int request,
void *arg);
83 buffer(
int fd,
bool use_memory_map,
int index);
85 void prepare_for_streaming(
int fd);
89 void attach_buffer(
const v4l2_buffer& buf);
93 void request_next_frame(
int fd);
103 size_t _original_length;
104 bool _use_memory_map;
108 bool _must_enqueue =
false;
118 static void foreach_usb_device(libusb_context* usb_context, std::function<
void(
120 libusb_device*)> action);
122 std::vector<uint8_t> send_receive(
123 const std::vector<uint8_t>& data,
124 int timeout_ms = 5000,
125 bool require_response =
true)
override;
128 libusb_context* _usb_context;
129 libusb_device* _usb_device =
nullptr;
136 static void foreach_uvc_device(
138 const std::string&)> action);
146 void stream_on(std::function<
void(
const notification& n)> error_handler)
override;
148 void start_callbacks()
override;
150 void stop_callbacks()
override;
154 std::string fourcc_to_string(uint32_t
id)
const;
164 bool set_xu(
const extension_unit& xu, uint8_t control,
const uint8_t* data,
int size)
override;
165 bool get_xu(
const extension_unit& xu, uint8_t control, uint8_t* data,
int size)
const override;
170 bool set_pu(
rs2_option opt, int32_t value)
override;
174 std::vector<stream_profile> get_profiles()
const override;
176 void lock()
const override;
177 void unlock()
const override;
190 std::string _name =
"";
191 std::string _device_path =
"";
195 int _stop_pipe_fd[2];
197 std::vector<std::shared_ptr<buffer>> _buffers;
200 std::atomic<bool> _is_capturing;
201 std::atomic<bool> _is_alive;
202 std::atomic<bool> _is_started;
203 std::unique_ptr<std::thread> _thread;
204 std::unique_ptr<named_mutex> _named_mtx;
205 bool _use_memory_map;
220 std::shared_ptr<time_service> create_time_service()
const override;
221 std::shared_ptr<device_watcher> create_device_watcher()
const;
rs2_option
Defines general configuration controls. These can generally be mapped to camera UVC controls...
Definition: rs_option.h:22