All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] snapshot mode, flash capabilities and control
@ 2011-02-24 12:18 Guennadi Liakhovetski
  2011-02-24 12:40 ` Hans Verkuil
  2011-03-03  7:09 ` Kim, HeungJun
  0 siblings, 2 replies; 50+ messages in thread
From: Guennadi Liakhovetski @ 2011-02-24 12:18 UTC (permalink / raw)
  To: Linux Media Mailing List

Agenda.
=======

In a recent RFC [1] I proposed V4L2 API extensions to support fast switching
between multiple capture modes or data formats. However, this is not sufficient
to efficiently leverage snapshot capabilities of existing hardware - sensors and
SoCs, and to satisfy user-space needs, a few more functions have to be
implemented.

Snapshot and strobe / flash capabilities vary significantly between sensors.
Some of them only capture a single image upon trigger activation, some can
capture several images, readout and exposure capabilities vary too. Not all
sensors support a strobe signal, and those, that support it, also offer very
different options to select strobe beginning and duration. This proposal is
trying to select a minimum API, that can be reasonably supported by many
systems and provide a reasonable functionality set to the user.

Proposed implementation.
========================

1. Switch the interface into the snapshot mode. This is required in addition to
simply configuring the interface with a different format to activate hardware-
specific support for triggered single image capture. It is proposed to use the
VIDIOC_S_PARM ioctl() with a new V4L2_MODE_SNAPSHOT value for the
struct v4l2_captureparm::capturemode and ::capability fields. Further
hardware-specific details can be passed in ::extendedmode, ::readbuffers can be
used to specify the exact number of frames to be captured. Similarly,
VIDIOC_G_PARM shall return supported and current capture modes.

Many sensors provide the ability to trigger snapshot capture either from an
external source or from a control register. Usually, however, there is no
possibility to select the trigger source, either of them can be used at any
time.

2. Specify a flash mode. Define new capture capabilities to be used with
struct v4l2_captureparm::capturemode:

V4L2_MODE_FLASH_SYNC	/* synchronise flash with image capture */
V4L2_MODE_FLASH_ON	/* turn on - "torch-mode" */
V4L2_MODE_FLASH_OFF	/* turn off */

Obviously, the above synchronous operation does not exactly define beginning and
duration of the strobe signal. It is proposed to leave the specific flash timing
configuration to the driver itself and, possibly, to driver-specific extended
mode flags.

3. Add a sensor-subdev operation

	int (*snapshot_trigger)(struct v4l2_subdev *sd)

to start capturing the next frame in the snapshot mode.

References.
===========

[1] http://thread.gmane.org/gmane.linux.drivers.video-input-infrastructure/29357

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2011-03-06  9:52 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-24 12:18 [RFC] snapshot mode, flash capabilities and control Guennadi Liakhovetski
2011-02-24 12:40 ` Hans Verkuil
2011-02-24 16:07   ` Guennadi Liakhovetski
2011-02-24 17:57     ` Kim HeungJun
2011-02-25 10:05       ` Laurent Pinchart
2011-02-25 13:53         ` Sakari Ailus
2011-02-25 17:08           ` Guennadi Liakhovetski
2011-02-25 18:55             ` Sakari Ailus
2011-02-25 20:56               ` Guennadi Liakhovetski
2011-02-28 11:57                 ` Guennadi Liakhovetski
2011-03-06  9:53                 ` Sakari Ailus
2011-02-26 12:31             ` Hans Verkuil
2011-02-26 13:03               ` Guennadi Liakhovetski
2011-02-26 13:39                 ` Sylwester Nawrocki
2011-02-26 13:56                   ` Hans Verkuil
2011-02-26 15:42                     ` Sylwester Nawrocki
2011-02-28 10:28                     ` Laurent Pinchart
2011-02-28 10:40                       ` Hans Verkuil
2011-02-28 10:47                         ` Laurent Pinchart
2011-02-28 11:02                         ` Guennadi Liakhovetski
2011-02-28 11:07                           ` Laurent Pinchart
2011-02-28 11:17                             ` Hans Verkuil
2011-02-28 11:19                               ` Laurent Pinchart
2011-02-28 11:54                               ` Guennadi Liakhovetski
2011-02-28 22:41                                 ` Guennadi Liakhovetski
2011-03-02 17:51                                   ` Guennadi Liakhovetski
2011-03-02 18:19                                     ` Hans Verkuil
2011-03-03  1:05                                       ` Andy Walls
2011-03-03 11:50                                         ` Laurent Pinchart
2011-03-03 13:56                                           ` Andy Walls
2011-03-03 14:04                                             ` Laurent Pinchart
2011-03-03 14:55                                               ` Andy Walls
2011-03-03 14:29                                             ` Sakari Ailus
2011-03-03  8:02                                       ` Guennadi Liakhovetski
2011-03-03  9:25                                         ` Hans Verkuil
2011-02-28 13:33                               ` Andy Walls
2011-02-28 13:37                                 ` Andy Walls
2011-02-28 11:37                             ` Guennadi Liakhovetski
2011-02-28 12:03                               ` Sakari Ailus
2011-02-28 12:44                                 ` Guennadi Liakhovetski
2011-02-28 15:07                                   ` Sakari Ailus
2011-02-28 10:24                 ` Laurent Pinchart
2011-02-25 16:58         ` Guennadi Liakhovetski
2011-02-25 18:49           ` Sakari Ailus
2011-02-25 20:33             ` Guennadi Liakhovetski
2011-02-27 21:00               ` Sakari Ailus
2011-02-28 11:20                 ` Guennadi Liakhovetski
2011-02-28 13:44                   ` Sakari Ailus
2011-03-03  7:09 ` Kim, HeungJun
2011-03-03  7:30   ` Guennadi Liakhovetski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.