mirror of
https://jihulab.com/mr-one/openpilot.git
synced 2026-10-28 13:33:44 +08:00
f8e13417f2
date: 2026-08-15T14:20:10 master commit: d48cfa730bf21593b684efeaf3fd8940695e1dea
49 lines
1.0 KiB
C++
49 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include "msgq/visionipc/visionipc.h"
|
|
|
|
#define VISIONBUF_SYNC_FROM_DEVICE 0
|
|
#define VISIONBUF_SYNC_TO_DEVICE 1
|
|
|
|
// Stream ids are opaque to visionipc. Producers/consumers pick an id when
|
|
// creating a stream; the sentinel below is reserved to request the list of
|
|
// available streams from a server.
|
|
typedef uint32_t VisionStreamType;
|
|
constexpr VisionStreamType VISION_STREAM_LIST = 0xffffffff;
|
|
constexpr size_t VISIONIPC_MAX_STREAMS = 64;
|
|
|
|
class VisionBuf {
|
|
public:
|
|
size_t len = 0;
|
|
size_t mmap_len = 0;
|
|
void * addr = nullptr;
|
|
uint64_t *frame_id;
|
|
int fd = 0;
|
|
|
|
size_t width = 0;
|
|
size_t height = 0;
|
|
size_t stride = 0;
|
|
size_t uv_offset = 0;
|
|
|
|
// YUV
|
|
uint8_t * y = nullptr;
|
|
uint8_t * uv = nullptr;
|
|
|
|
// Visionipc
|
|
uint64_t server_id = 0;
|
|
size_t idx = 0;
|
|
VisionStreamType type;
|
|
|
|
// ion
|
|
int handle = 0;
|
|
|
|
void allocate(size_t len);
|
|
void import();
|
|
void init_yuv(size_t width, size_t height, size_t stride, size_t uv_offset);
|
|
int sync(int dir);
|
|
int free();
|
|
|
|
void set_frame_id(uint64_t id);
|
|
uint64_t get_frame_id();
|
|
};
|