On Fri, Feb 14, 2025 at 07:08:31AM +0000, Sakari Ailus wrote: > On Fri, Feb 14, 2025 at 12:19:23PM +0800, Zhaoxuan Zhai wrote: > > Hi all, > > > > Sorry I made a mistake. It should be VIDIOC_ENUM_FRAMESIZES instead of > > VIDIOC_ENUM_FMT. I'm sorry for the mistake. > > > > 在 2025/2/14 12:08, Zhaoxuan Zhai 写道: > > > Hi all, > > > > > > We are working on a camera driver. We plan to use v4l2 interface to send > > > image data to users. We have a question we'd like to ask. > > > > > > The situation we are facing is as follows. > > > > > > We have an image processing unit that can process raw data collected by > > > the sensor into the V4L2_PIX_FMT_NV12M format and send it to the user. > > > > > > However, due to the requirements of the V4L2_PIX_FMT_NV12M format, the > > > width and height of the image must be divisible by 16. I assume this is a requirement of your hardware (can you tell what hardware you're running on ?) when outputting NV12. The NV12 format itself doesn't require a 16 pixels alignment. > > > For example, when the sensor provides an image size of 2104x1560, after > > > NV12M encoding, it should be pading to 2112x1566. But the additional 8 > > > rows and 8 columns are padded with 0s and contain no actual content. > > > > > > So, we would like to ask, in this case, what size should we list in > > > VIDIOC_ENUM_FMT? Should it be the actual image size with content, > > > 2104x1560, or the padded size, 2112x1566?" > > I'd say the actual image size (i.e. where you have pixel data). The > sizeimage field needs to reflect the padding and the user needs to be aware > how the data is laid out in memory. And of course the bytesperline field should report the total line stride, including the padding. -- Regards, Laurent Pinchart