Message ID | 20220517143325.71784-9-tomi.valkeinen@ideasonboard.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Quoting Tomi Valkeinen (2022-05-17 15:33:20) > 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> > --- > src/py/cam/cam_kms.py | 13 ++++++++++--- > 1 file 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 > -- > 2.34.1 >
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