A pipeline framework for developing video and image processing applications. Supports multiple GPUs and Machine Learning toolkits.
Design
- Reusable Modules
- Easy to Test
- Memory Management
- Thread Management
- Parallel Processing
Stack
Libraries
- Boost C++
- Nvidia
- CudaToolkit
- NPPI
- NvJPEG
- NvENC
- Jetson MultiMedia API
- Intel Media SDK
- OpenCV
- Live555
Core Concepts
Module
Module
Base class
Pins
Two modules are connected using pins
Queue
Blocking, NonBlocking
FrameMetadata
Properties of a pin. Width, Height, MemType, FrameType
FrameFactory
Responsible for reusing memory
Frame
Data is transported using frame
FrameContainer
Has multiple frames
ModuleProps
fps, Queue Strategy
Module Functions
- addOutputPin
- validateOuputPins
- setNext
- validateInputPins
- init
- term
- processSOS
- processEOS
- produce
- process
- send
PipeLine
Responsible for lifecycle events
- appendModule
- init
- run_all_threaded
- stop
- term
- wait_for_all
Unit Tests
BOOST Tests
Basic Modules
Sample Cuda Modules