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. == Requirements == * 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. == Details == * Can GEM be used for non-DRM clients?