which is better to use in v4l2 framework, user pointer or mmap

After going through these links,

  1. https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/userp.html

  2. https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/mmap.html

I understood that there are two ways to create a buffer in v4l2 framework

  1. Userpointer buffer: buffer will be created in user space.

  2. Memory buffer: Buffer will be created in kernel space.

I have bit confused, which one to use while doing v4l2 driver development. I mean, which is better approach in terms of performance and handling buffer?

I will be using DMS-SG for data transfer in my hardware.