概述
qtibatch 是一个 GStreamer 元素,它将多个视频或音频缓冲区聚合为单个批处理缓冲区,供下游处理使用。它适用于下游元素在分组输入上比在单个缓冲区上运行更高效的多媒体和 AI 流水线。
该元素支持两种批处理模式:
- 多流批处理——合并来自多个并行流的同时到达的缓冲区
- 顺序批处理——合并来自单个流的连续缓冲区
qtibatch 既适用于并行多流工作负载,也适用于需要将多个连续帧或采样作为单个输入单元的时序工作流。
批处理通常用于:
- 提高硬件利用率
- 提升下游推理或分析阶段的吞吐量
- 支持需要批量输入的模型
- 从连续帧构建时序或深度维度的输入张量
- 创建重叠批次以进行滑动窗口式处理
- 多流视频批处理——将来自多个视频源的帧聚合为单个批次进行并行处理
- 多流音频批处理——将来自多个源的音频缓冲区聚合为单个批次进行并行处理
- 深度批处理——将来自同一流的连续帧分组,以创建具有额外时间或深度维度的张量
- 重叠批次构建——为时序模型或基于窗口的分析构建相邻批次之间共享帧的批次
qtibatch 仅执行缓冲区聚合。它不会修改视频像素或音频采样,也不执行推理、预处理或后处理。它的唯一职责是将多个输入缓冲区打包为单个逻辑批次,以便下游高效消费。
层次结构
GObjectGstObject
GstElement
qtibatch
Pad 模板
sink
src
元素属性
内部架构详情
qtibatch 由三个功能组件构成:
Sink Pad
qtibatch 支持单个 sink pad 或多个 sink pad,具体取决于批处理模式:
- 单个 sink pad 用于对来自同一流的连续缓冲区进行顺序批处理
- 多个 sink pad 用于对来自多个输入流的缓冲区进行并行批处理
聚合逻辑
聚合逻辑收集传入的缓冲区,跟踪它们的到达状态,并确定批次何时可以生成。批次的形成由协商好的批处理配置和当前批处理模式驱动。Source Pad
单个 source pad 发出批处理后的输出缓冲区。输出缓冲区携带对聚合的输入缓冲区的引用,以及描述批次内容的批次元数据。处理流程
Caps 协商
在 caps 协商期间,qtibatch 会验证所有 sink pad 使用兼容的媒体(音频或视频)类型和格式。它还会推导出有效的批处理配置,包括批次大小以及下游处理所需的预期输入/输出张量或媒体特性。
缓冲区接收
传入的视频或音频缓冲区在 sink pad 上异步接收,并按 pad 分别在内部排队。同步
qtibatch 根据所选的批处理模式同步缓冲区:
- 对于并行流,元素等待所有活动 sink pad 上对应同一时间间隔的缓冲区
- 对于单个流,元素等待来自同一输入流的所需数量的连续缓冲区
批次形成
缓冲区根据所选的批处理策略分组为批次:- 来自单个流的连续缓冲区
- 来自多个流的时间对齐的缓冲区
元数据附加
qtibatch 将批次元数据附加到输出缓冲区。该元数据描述:
- 有效批次大小
- 聚合缓冲区的排序
- 并行流模式下缺失的任何输入
输出交付
批次完成后,批处理缓冲区被推送到下游进行进一步处理。批处理行为
qtibatch 中的批次形成由协商好的批次大小和当前批处理模式共同决定。
传入的缓冲区始终按 pad 分别在内部排队。批次完成逻辑取决于元素是聚合来自单个流还是来自多个并行流的缓冲区。
顺序批处理(单流)
在顺序模式下,qtibatch 聚合来自单个输入流的连续缓冲区,直到达到配置的批次大小。批次的形成基于计数。
该模式支持由 moving-window-size 属性控制的移动窗口机制:
- 值为 0 时生成不重叠的批次
- 值大于 0 时生成重叠的批次,在下一个批次中复用上一个批次中指定数量的缓冲区
并行批处理(多流)
在并行模式下,qtibatch 聚合来自多个 sink pad 的缓冲区。目标是从所有输入流中属于同一时间间隔的缓冲区形成批次。
如果在预期的同步窗口内某个 sink pad 上未收到缓冲区,则该输入在当前批次中被视为缺失。在这种情况下,批次元数据会记录缺失的输入,以便下游元素能够正确解读批次——这是通过插入 GAP 缓冲区来实现的。
同步窗口和超时行为由缓冲区持续时间推导得出,缓冲区持续时间根据协商好的输入帧率或音频时序信息计算。
内存与缓冲区管理
qtibatch 旨在集成到高性能和零拷贝的多媒体流水线中。
缓冲区处理
qtibatch 在构建批次时不复制媒体载荷。批处理后的输出缓冲区持有的是对原始输入缓冲区的引用。
分配与缓冲池行为
qtibatch 不需要自定义分配器、特定内存类型或专用缓冲池。缓冲区分配和内存布局仍由上游和下游元素控制。
这种设计使 qtibatch 可以适应各种流水线拓扑,而不会施加额外的内存管理约束。
用法
使用合成器的四源批处理目标检测
对 4 个源进行批处理的演示流水线。运行检测推理,并通过合成器将结果叠加显示在屏幕上。
1
下载所需文件
2
将文件复制到设备
3
连接到设备
4
设置环境变量
在设备上运行以下命令
5
运行流水线
Run the pipeline

