-
Notifications
You must be signed in to change notification settings - Fork 1
Utils_Types
SweerItTer edited this page Feb 21, 2026
·
4 revisions
Types 是 utilsCore Utils 模块的核心头文件,提供项目常用的类型定义。
- 定义 FramePtr 智能指针类型
- 定义 FrameQueue 队列类型
- 所有使用 Frame 的模块
- 所有使用 FrameQueue 的模块
- 依赖: concurrentqueue.h, v4l2/frame.h
- 被依赖: VisionPipeline, RecordPipeline 等所有模块
using FramePtr = std::shared_ptr<Frame>;说明: Frame 的共享指针类型,用于跨线程传递帧数据
使用例程:
#include "types.h"
// 创建 FramePtr
FramePtr frame = std::make_shared<Frame>();
// 传递 FramePtr
void process_frame(FramePtr frame) {
// 处理帧
}using FrameQueue = moodycamel::ConcurrentQueue<FramePtr>;说明: 基于 moodycamel::ConcurrentQueue 的帧队列,支持无锁并发操作
使用例程:
#include "types.h"
// 创建帧队列
FrameQueue frame_queue;
// 入队
FramePtr frame = std::make_shared<Frame>();
frame_queue.enqueue(frame);
// 出队
FramePtr frame_out;
if (frame_queue.try_dequeue(frame_out)) {
// 处理帧
}#ifndef TYPES_H
#define TYPES_H
#include "concurrentqueue.h"
#include "v4l2/frame.h"
using FramePtr = std::shared_ptr<Frame>;
using FrameQueue = moodycamel::ConcurrentQueue<FramePtr>;
#endif // TYPES_H代码说明:
- 第10行:
// #include "safeQueue.h", 第15行:// using FrameQueue = SafeQueue<FramePtr>;- 注释掉的备用定义,当前使用moodycamel::ConcurrentQueue<FramePtr> - 这些注释掉的代码行显示了历史演变和备用选项,实际使用的是第11行的
concurrentqueue.h和第16行的moodycamel::ConcurrentQueue<FramePtr>
#include "types.h"
// CameraController 回调
camera.setFrameCallback([](FramePtr frame) {
printf("Frame: %dx%d\n", frame->meta.w, frame->meta.h);
// 传递给其他模块
process_frame(frame);
});#include "types.h"
// 创建帧队列
FrameQueue frame_queue;
// 生产者:采集帧
std::thread producer([&]() {
while (running) {
FramePtr frame = capture_frame();
frame_queue.enqueue(frame);
}
});
// 消费者:处理帧
std::thread consumer([&]() {
while (running) {
FramePtr frame;
if (frame_queue.try_dequeue(frame)) {
process_frame(frame);
}
}
});#include "types.h"
class VisionPipeline {
private:
FrameQueue input_queue_;
FrameQueue output_queue_;
public:
void pushFrame(FramePtr frame) {
input_queue_.enqueue(frame);
}
FramePtr popFrame() {
FramePtr frame;
if (output_queue_.try_dequeue(frame)) {
return frame;
}
return nullptr;
}
};- 智能指针: FramePtr 使用 std::shared_ptr,自动管理生命周期
- 无锁队列: FrameQueue 使用 moodycamel::ConcurrentQueue,支持高并发
- 线程安全: FrameQueue 是线程安全的,可以多生产者多消费者
- 性能: ConcurrentQueue 比带锁的队列性能更好
- 包含头文件: 使用 FramePtr 和 FrameQueue 需要包含 types.h
- Frame - 帧数据接口
- ConcurrentQueue - 并发队列
- Utils 模块总览
主页
API 文档
DMA 模块
DRM 模块
- DRM 模块总览
- DeviceController - DRM 设备控制器
- DrmLayer - DRM 图层管理
- PlanesCompositor - DRM 平面合成器
- DrmBpp - DRM 格式定义
NET 模块
- NET 模块总览
- TcpServer - TCP 服务器
- SocketConnection - Socket 连接管理
- CommandHandler - 命令处理器
- DataPacket - 数据包
V4L2 模块
- V4L2 模块总览
- CameraController - V4L2 摄像头控制器
- Frame - V4L2 帧数据结构
- FormatTool - V4L2 格式工具
- Exception - V4L2 异常类
V4L2Param 模块
- V4L2Param 模块总览
- ParamControl - 参数控制
- ParamLogger - 参数日志
- ParamProcessor - 参数处理器
RGA 模块
- RGA 模块总览
- RgaConverter - RGA 转换器
- RgaProcessor - RGA 处理器
- FormatTool - RGA 格式工具
MPP 模块
- MPP 模块总览
- EncoderContext - 编码器上下文
- EncoderCore - 编码器核心
- JpegEncoder - JPEG 编码器
- StreamWriter - 流写入器
- MppResourceGuard - MPP 资源守护
- FileTools - 文件工具
- FormatTool - 格式工具
Sys 模块
- Sys 模块总览
- CpuMonitor - CPU 监控器
- MemoryMonitor - 内存监控器
- Base - 基础类
Mouse 模块
- Mouse 模块总览
- Watcher - 鼠标监视器
Utils 模块
- Utils 模块总览
- AsyncThreadPool - 异步线程池
- ConcurrentQueue - 并发队列
- FdWrapper - 文件描述符包装器
- FenceWatcher - 围栏监视器
- FixedSizePool - 固定大小对象池
- Logger - 日志记录器
- ObjectsPool - 对象池
- OrderedQueue - 有序队列
- ProgressBar - 进度条
- SafeQueue - 安全队列
- SharedBufferState - 共享缓冲区状态
- SimpleVariant - 简单变体类型
- ThreadPauser - 线程暂停器
- ThreadUtils - 线程工具
- Types - 类型定义
- UdevMonitor - Udev 监视器