3.4.2 JDK Reference Examples
基础示例
JDK 数据帧格式
JDK 模块间默认使用 JdkFrame 数据结构进行数据传递,定义如下:
class JdkFrame {
public:
JdkFrame(int dma_fd_, size_t size_, int w, int h);
~JdkFrame();
// 拷贝 DMA 缓冲区数据到主机内存并返回指针
unsigned char* toHost() const;
// 克隆数据至 vector
std::vector<unsigned char> Clone() const;
// 手动释放映射(如有必要)
// 保存为 YUV NV12 格式文件
bool saveToFile(const std::string& filename) const;
bool loadFromFile(const std::string& filename, size_t expected_size);
int getDMAFd() const;
size_t getSize() const { return size_; }
int getWidth() const { return width_; }
int getHeight() const { return height_; }
int MemCopy(const uint8_t* nalu, int nalu_size, int offset = 0);
private:
size_t size_; // 数据总大小,NV12格式宽高相关
int width_;
int height_;
JdkDma dma_;
std::shared_ptr<JdkDmaBuffer> data;
};
MIPI 摄像头采集
// 打开摄像节点
auto camera = JdkCamera::create("/device/video50", 1920, 1080, V4L2_PIX_FMT_NV12);
// 获取一帧数据
auto frame = camera->getFrame();

