Kernel Managed Buffers are areas of memory that are managed by the kernel, have some sort of token that can be passed among libraries, drivers, frameworks, and applications, and all of these users are able to communicate and use these memory areas without copying.
- Although KMBs are primarily meant for video images, they should be generic with enough metadata capability to describe a video image.
- (nice to have) ability to allocate contiguous RAM
- reference counting, with automatic cleanup at process exit
Use Case: Simple
Pipeline: v4l2src ! xvimagesink
On a desktop machine, the v4l2 driver should capture video directly into a provided KMB that is physically in RAM or directly into video card memory.
Xv needs to be extended to take a KMB instead of shared memory region. (Blessed by keithp).
Use Case: shmem replacement
Applications can share memory by creating a KMB, passing the token to the other process, and the other process mapping the same region.
Use Case: complex
Pipeline: v4l2src ! colorspace ! overlay ! tee ! openglfilter ! xvimagesink tee. ! hwencoder ! filesink
In this pipeline,
Use Case: transparent output switching
Pipeline: videotestsrc ! xvimagesink switched to ... ! openglsink and back.
* Can GEM be used for non-DRM clients?