Hi, On 09/14/2012 05:00 PM, Nicolas THERY wrote: > Hello, > > I'm studying how to support cropping and scaling (binning, skipping, digital > scaling if any) for different models for camera sensor drivers. There seems to > be (at least) two kinds of sensor drivers: > > 1) The smiapp driver has 2 or 3 subdevs: pixel array -> binning (-> scaling). > It gives clients full control over the various ways of cropping and scaling > thanks to the selection API. > > 2) The mt9p031 driver (and maybe others) has a single subdev. Clients use the > obsolete SUBDEV_S_CROP ioctl for selecting a region of interest in the pixel > array and SUBDEV_S_FMT for setting the source pad mbus size. If the mbus size > differs from the cropping rectangle size, scaling is enabled and the driver > decides internally how to combine skipping and binning to achieve the requested > scaling factors. > > As SUBDEV_S_CROP is obsolete, I wonder whether it is okay to support cropping > and scaling in a mono-subdev sensor driver by (a) setting the cropping > rectangle with SUBDEV_S_SELECTION on the source pad, and (b) setting the > scaling factors via the source pad mbus size as in the mt9p031 driver? Cc: Sakari, Laurent AFAICT in a single subdev with one pad configuration your steps as above are valid, i.e. crop rectangle can be set with VIDIOC_SUBDEV_S_SELECTION(V4L2_SEL_TGT_CROP) and the sensor's output resolution with VIDIOC_SUBDEV_S_FMT. I guess documentation [1] wasn't clear enough about that ? The subdev crop ioctls are deprecated in favour of the selection API, so now VIDIOC_SUBDEV_G/S_SELECTION ioctls and corresponding subdev ops needs to be used anywhere you would have used SUBDEV_G/S_CROP before. This reminds me there are still a few drivers that need to be converted to use set/get_selection subdev pad level ops, rather than set/get_crop. [1] http://linuxtv.org/downloads/v4l-dvb-apis/subdev.html -- Regards, Sylwester -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html