Hi Sakari,
On Tuesday 05 April 2011 13:21:03 Sakari Ailus wrote:
> Laurent Pinchart wrote:
> > On Tuesday 05 April 2011 12:23:51 Sakari Ailus wrote:
> >> Sakari Ailus wrote:
> >>> Laurent Pinchart wrote:
> >>>> On Wednesday 30 March 2011 13:05:54 Sakari Ailus wrote:
> >>>>> Laurent Pinchart wrote:
> >>>>>> On Monday 28 March 2011 14:55:40 Sakari Ailus wrote:
> >>>>>>
> >>>>>> [snip]
> >>>>>>
> >>>>>>> V4L2_CID_FLASH_STROBE_MODE (menu; LED)
> >>>>>>>
> >>>>>>> Use hardware or software strobe. If hardware strobe is selected,
> >>>>>>> the flash controller is a slave in the system where the sensor
> >>>>>>> produces the strobe signal to the flash.
> >>>>>>>
> >>>>>>> In this case the flash controller setup is limited to programming
> >>>>>>> strobe timeout and power (LED flash) and the sensor controls the
> >>>>>>> timing and length of the strobe.
> >>>>>>>
> >>>>>>> enum v4l2_flash_strobe_mode {
> >>>>>>>
> >>>>>>> V4L2_FLASH_STROBE_MODE_SOFTWARE,
> >>>>>>> V4L2_FLASH_STROBE_MODE_EXT_STROBE,
> >>>>>>>
> >>>>>>> };
> >>>>>>
> >>>>>> [snip]
> >>>>>>
> >>>>>>> V4L2_CID_FLASH_LED_MODE (menu; LED)
> >>>>>>>
> >>>>>>> enum v4l2_flash_led_mode {
> >>>>>>>
> >>>>>>> V4L2_FLASH_LED_MODE_FLASH = 1,
> >>>>>>> V4L2_FLASH_LED_MODE_TORCH,
> >>>>>>>
> >>>>>>> };
> >>>>>>
> >>>>>> Thinking about this some more, shouldn't we combine the two controls
> >>>>>> ? They are basically used to configure how the flash LED is
> >>>>>> controlled: manually (torch mode), automatically by the flash
> >>>>>> controller (software strobe mode) or automatically by an external
> >>>>>> component (external strobe mode).
> >>>>>
> >>>>> That's a good question.
> >>>>>
> >>>>> The adp1653 supports also additional control (not implemented in the
> >>>>> driver, though) that affect hardware strobe length. Based on register
> >>>>> setting, the led will be on after strobe either until the timeout
> >>>>> expires, or until the strobe signal is high.
> >>>>>
> >>>>> Should this be also part of the same control, or a different one?
> >>>>
> >>>> That can be controlled by a duration control. If the duration is 0,
> >>>> the flash is lit for the duration of the external strobe, otherwise
> >>>> it's lit for the programmed duration.
> >>>
> >>> Sounds good to me.
> >>
> >> Thinking about this again; there won't be a separate duration control
> >
> > Why not ? I think we need two timeouts, a watchdog timeout to prevent
> > flash fire or meltdown, and a normal timeout to lit the flash for a
> > user-selected duration.
>
> Let's assume that an application wants to expose a frame using flash
> with software strobe.
>
> 1. strobe flash
> 2. qbuf
> 3. streamon
> 4. dqbuf
> 5. streamoff
> 6. ...
>
> How does an application know how long is the time between 1 -- 4? I'd
> guess that in 6 the application would like to switch off the flash
> instead of specifying a timeout for it.
That's a valid use case, and we need to support it. It requires a way to lit
the flash with no timeout other than the watchdog timeout, and a way to turn
it off.
However, I'm not sure we should rule out the usefulness of a duration-based
software flash strobe. Can't the two APIs coexist ? Or do you think a
duration-based API is useless ?
--
Regards,
Laurent Pinchart
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html