summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>2022-05-18 16:13:20 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-05-18 17:52:29 +0300
commita4964c5df1ee6e2475186fe4fc5c7f7c08df1082 (patch)
tree05d67d1c5e95ff3cbe5be446c7c4cabf669cd27f
parent1384cedf509e0b2038c974c44521fa1d659d574c (diff)
py: cam_kms: Support multiplanar formats
Support multiplanar formats in the kms renderer. Tested with RPi and NV12. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/py/cam/cam_kms.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/py/cam/cam_kms.py b/src/py/cam/cam_kms.py
index ae6be277..f1844717 100644
--- a/src/py/cam/cam_kms.py
+++ b/src/py/cam/cam_kms.py
@@ -10,6 +10,7 @@ FMT_MAP = {
'YUYV': pykms.PixelFormat.YUYV,
'ARGB8888': pykms.PixelFormat.ARGB8888,
'XRGB8888': pykms.PixelFormat.XRGB8888,
+ 'NV12': pykms.PixelFormat.NV12,
}
@@ -133,10 +134,16 @@ class KMSRenderer:
for fb in ctx['allocator'].buffers(stream):
w, h = cfg.size
- stride = cfg.stride
- fd = fb.fd(0)
+ fds = []
+ strides = []
+ offsets = []
+ for i in range(fb.num_planes):
+ fds.append(fb.fd(i))
+ strides.append(cfg.stride)
+ offsets.append(fb.offset(i))
+
drmfb = pykms.DmabufFramebuffer(self.card, w, h, fmt,
- [fd], [stride], [0])
+ fds, strides, offsets)
self.cam_2_drm[fb] = drmfb
idx += 1