# qtibatch
The qtibatch plugin uses frame aggregation techniques to group several audio/video frames into one buffer for preprocessing. Batching can be done on a single stream (in which case the batch size is 1) or in many parallel streams.
- The loaded model in the ML inferencing plugin downstream determines the batch size.
- [GstCaps](https://gstreamer.freedesktop.org/documentation/gstreamer/gstcaps.html) shared the batch size with upstream.
- When creating the pipeline, the input sources must be lower or equal to the batch size. Inputs above the batch size are ignored.
- The plugin places the buffers from each source as separate [GstMemory](https://gstreamer.freedesktop.org/documentation/gstreamer/gstmemory.html#GstMemory) blocks along with their corresponding batch index.
For example, source 0 at batch index 0 and source 1 at batch index 1.
**Figure : Gstbuffer workflow with qtibatch**
## Inheritance chain
[GObject](https://docs.gtk.org/gobject/) → [GstObject](https://gstreamer.freedesktop.org/documentation/gstreamer/gstobject.html?gi-language=c) → [GstElement](https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c) → GstBatch
## Pad configuration
| Pad Name | Capabilities |
| --- | --- |
|
SINK template: 'sink\_%u'
Availability: On request
Direction: sink
Availability: On request
Direction: sink
Availability: Always
Direction: source
Availability: Always
Direction: source
flags: readable, writable
String. Default: “batch0”
flags: readable, writable
Object of type “GstObject”