Hi Sylwester,
On Sunday 04 December 2011 16:16:14 Sylwester Nawrocki wrote:
> The V4L2_CID_METERING_MODE control allows to determine what method
> is used by the camera to measure the amount of light available for
> automatic exposure control.
>
> Signed-off-by: Sylwester Nawrocki <[email protected]>
> ---
> Documentation/DocBook/media/v4l/controls.xml | 31
> ++++++++++++++++++++++++++ drivers/media/video/v4l2-ctrls.c |
> 2 +
> include/linux/videodev2.h | 7 ++++++
> 3 files changed, 40 insertions(+), 0 deletions(-)
>
> diff --git a/Documentation/DocBook/media/v4l/controls.xml
> b/Documentation/DocBook/media/v4l/controls.xml index 5ccb0b0..53d7c08
> 100644
> --- a/Documentation/DocBook/media/v4l/controls.xml
> +++ b/Documentation/DocBook/media/v4l/controls.xml
> @@ -2893,6 +2893,7 @@ mechanical obturation of the sensor and firmware
> image processing, but the device is not restricted to these methods.
> Devices that implement the privacy control must support read access and
> may support write access.</entry> </row>
> + <row><entry></entry></row>
>
> <row>
> <entry
> spanname="id"><constant>V4L2_CID_BAND_STOP_FILTER</constant> </entry>
> @@ -2902,6 +2903,36 @@ camera sensor on or off, or specify its strength.
> Such band-stop filters can be used, for example, to filter out the
> fluorescent light component.</entry> </row>
> <row><entry></entry></row>
> +
> + <row id="v4l2-metering-mode">
> + <entry
> spanname="id"><constant>V4L2_CID_METERING_MODE</constant> </entry> +
> <entry>enum v4l2_metering_mode</entry>
> + </row><row><entry spanname="descr">Determines how the camera measures
> +the amount of light available to expose a frame. Possible values
> are:</entry> + </row>
> + <row>
> + <entrytbl spanname="descr" cols="2">
> + <tbody valign="top">
> + <row>
> +
> <entry><constant>V4L2_METERING_MODE_AVERAGE</constant> </entry>
> + <entry>Use the light information coming from the entire scene
> +and average giving no weighting to any particular portion of the metered
> area. + </entry>
> + </row>
> + <row>
> +
> <entry><constant>V4L2_METERING_MODE_CENTER_WEIGHTED</constant> </entr
> y> + <entry>Average the light information coming from the entire
> scene
> +giving priority to the center of the metered area.</entry>
> + </row>
> + <row>
> +
> <entry><constant>V4L2_METERING_MODE_SPOT</constant> </entry>
> + <entry>Measure only very small area at the cent-re of the
> scene.</entry> + </row>
> + </tbody>
For the last two cases, would it also make sense to specify the center of the
weighted area and the spot location ?
> + </entrytbl>
> + </row>
> + <row><entry></entry></row>
> +
> </tbody>
> </tgroup>
> </table>
> diff --git a/drivers/media/video/v4l2-ctrls.c
> b/drivers/media/video/v4l2-ctrls.c index 7d8862f..8d0cd0e 100644
> --- a/drivers/media/video/v4l2-ctrls.c
> +++ b/drivers/media/video/v4l2-ctrls.c
> @@ -577,6 +577,7 @@ const char *v4l2_ctrl_get_name(u32 id)
> case V4L2_CID_IRIS_ABSOLUTE: return "Iris, Absolute";
> case V4L2_CID_IRIS_RELATIVE: return "Iris, Relative";
> case V4L2_CID_DO_AUTO_FOCUS: return "Do Auto Focus";
> + case V4L2_CID_METERING_MODE: return "Metering Mode";
>
> /* FM Radio Modulator control */
> /* Keep the order of the 'case's the same as in videodev2.h! */
> @@ -703,6 +704,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum
> v4l2_ctrl_type *type, case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC:
> case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:
> case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:
> + case V4L2_CID_METERING_MODE:
> *type = V4L2_CTRL_TYPE_MENU;
> break;
> case V4L2_CID_RDS_TX_PS_NAME:
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index 9acb514..8956ed6 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -1626,6 +1626,13 @@ enum v4l2_focus_auto_type {
>
> #define V4L2_CID_DO_AUTO_FOCUS
> (V4L2_CID_CAMERA_CLASS_BASE+19)
>
> +#define V4L2_CID_METERING_MODE
> (V4L2_CID_CAMERA_CLASS_BASE+20)
> +enum v4l2_metering_mode {
> + V4L2_METERING_MODE_AVERAGE,
> + V4L2_METERING_MODE_CENTER_WEIGHTED,
> + V4L2_METERING_MODE_SPOT,
> +};
> +
> /* FM Modulator class control IDs */
> #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
> #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
--
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