# distutils: language = c++ #cython: language_level=3 from libcpp.string cimport string from libcpp.vector cimport vector from libcpp.set cimport set from libc.stdint cimport uint32_t, uint64_t from libcpp cimport bool, int cdef extern from "msgq/visionipc/visionbuf.h": struct _cl_device_id struct _cl_context struct _cl_mem ctypedef _cl_device_id * cl_device_id ctypedef _cl_context * cl_context ctypedef _cl_mem * cl_mem cdef enum VisionStreamType: pass cdef cppclass VisionBuf: void * addr size_t len size_t width size_t height size_t stride size_t uv_offset cl_mem buf_cl void set_frame_id(uint64_t id) cdef extern from "msgq/visionipc/visionipc.h": struct VisionIpcBufExtra: uint32_t frame_id uint64_t timestamp_sof uint64_t timestamp_eof bool valid cdef extern from "msgq/visionipc/visionipc_server.h": string get_endpoint_name(string, VisionStreamType) cdef cppclass VisionIpcServer: VisionIpcServer(string, void*, void*) void create_buffers(VisionStreamType, size_t, size_t, size_t) void create_buffers_with_sizes(VisionStreamType, size_t, size_t, size_t, size_t, size_t, size_t) VisionBuf * get_buffer(VisionStreamType) void send(VisionBuf *, VisionIpcBufExtra *, bool) void start_listener() cdef extern from "msgq/visionipc/visionipc_client.h": cdef cppclass VisionIpcClient: int num_buffers VisionBuf buffers[1] VisionIpcClient(string, VisionStreamType, bool, void*, void*) VisionBuf * recv(VisionIpcBufExtra *, int) bool connect(bool) bool is_connected() @staticmethod set[VisionStreamType] getAvailableStreams(string, bool)