Hi, On 01/07/2013 01:10 PM, Hans Verkuil wrote: > On Mon January 7 2013 11:46:38 Andrzej Hajda wrote: [...] >> Currently V4L2 controls can have only single value (of type int, int64, >> string). Some hardware controls require more than single int parameter, >> for example to set auto-focus (AF) rectangle four coordinates should be >> passed, to set auto-focus spot two coordinates should be passed. >> >> Current solution >> >> In case of AF rectangle we can reuse selection API as in "[PATCH RFC >> 0/2] V4L: Add auto focus area control and selection" post. >> Pros: >> - reuse existing API, >> Cons: >> - two IOCTL's to perform one action, >> - non-atomic operation, >> - fits well only for rectangles and spots (but with unused fields width, >> height), in case of other parameters we should find a different way. >> >> Proposed solution >> >> The solution takes an advantage of the fact VIDIOC_(G/S/TRY)_EXT_CTRLS >> ioctls can be called with multiple controls per call. >> >> I will present it using AF area control example. >> >> There could be added four pseudo-controls, lets call them for short: >> LEFT, TOP, WIDTH, HEIGHT. >> Those controls could be passed together with V4L2_AUTO_FOCUS_AREA_RECTANGLE >> control in one ioctl as a kind of parameters. >> >> For example setting auto-focus spot would require calling VIDIOC_S_EXT_CTRLS >> with the following controls: >> - V4L2_CID_AUTO_FOCUS_AREA = V4L2_AUTO_FOCUS_AREA_RECTANGLE >> - LEFT = ... >> - RIGHT = ... >> >> Setting AF rectangle: >> - V4L2_CID_AUTO_FOCUS_AREA = V4L2_AUTO_FOCUS_AREA_RECTANGLE >> - LEFT = ... >> - TOP = ... >> - WIDTH = ... >> - HEIGHT = ... >> >> Setting AF object detection (no parameters required): >> - V4L2_CID_AUTO_FOCUS_AREA = V4L2_AUTO_FOCUS_AREA_OBJECT_DETECTION > > If you want to do this, then you have to make LEFT/TOP/WIDTH/HEIGHT real > controls. There is no such thing as a pseudo control. So you need five > new controls in total: > > V4L2_CID_AUTO_FOCUS_AREA > V4L2_CID_AUTO_FOCUS_LEFT > V4L2_CID_AUTO_FOCUS_RIGHT > V4L2_CID_AUTO_FOCUS_WIDTH > V4L2_CID_AUTO_FOCUS_HEIGHT > > I have no problem with this from the point of view of the control API, but > whether this is the best solution for implementing auto-focus is a different > issue and input from sensor specialists is needed as well (added Laurent and > Sakari to the CC list). > > The primary concern I have is that this does not scale to multiple focus > rectangles. This might not be relevant to auto focus, though. I think for more advanced hardware/configurations there is a need to associate more information with the rectangles anyway. So the selections API seems too limited. Probably a new IOCTL would be needed for that, either standard or private. We've discussed it here with Andrzej and using such 4 controls to specify the AF rectangle looks sufficient from our POV. I would just probably rename LEFT/RIGHT to POS_X/POS_Y or something, as these 2 controls could be used in a focus mode where only spot position needs to be specified. -- Thanks, 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