34 for (
auto &frame : msg.img_frames) {
35 if (frame.img.handle_type == modal_flow::ExternalType::ClMem && frame.img.external_handle != 0) {
36 cl_mem handle =
reinterpret_cast<cl_mem
>(
static_cast<uintptr_t
>(frame.img.external_handle));
37 cl_int err = clReleaseMemObject(handle);
38 if (err != CL_SUCCESS) {
39 fprintf(stderr,
"Failed to release Frame cl_mem, err=%d\n", err);
41 const_cast<modal_flow::ImageView &
>(frame.img).external_handle = 0;
51 vm.set_camera_processed_callback([](
const ov_core::CameraData &msg,
bool processed) ->
bool {
66 const auto &feats =
vio_manager->get_used_features_map_ref();
Housekeeping and data publishing for VOXL OpenVINS.
std::unique_ptr< ov_msckf::VioManager > vio_manager
Main VIO manager instance.
Global variable declarations and constants for VOXL OpenVINS server.
std::atomic< bool > is_resetting
VIO reset state flag.
std::atomic< uint32_t > vio_error_codes
VIO error codes.
static Publisher & getInstance()
Get singleton instance.
void publish(std::shared_ptr< ov_msckf::State > state, const std::map< double, std::vector< std::shared_ptr< ov_core::Feature > > > &used_features_map={})
Publish VIO data.
Main namespace for VOXL OpenVINS server components.
void register_vio_camera_callback(ov_msckf::VioManager &vm)
Install the per-frame hook on a VioManager (call once per instance, right after construction)
void release_frame_handles(const ov_core::CameraData &msg)
Release any external (cl_mem) image handles carried by this frame (idempotent per frame: handles are ...