Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf072139 authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab
Browse files

[media] V4L: Add camera exposure metering control



The V4L2_CID_EXPOSURE_METERING control allows to determine
a method used by the camera for measuring the amount of light
available for automatic exposure.

Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 7f84ad8b
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -2864,6 +2864,35 @@ exposure time and/or aperture.</para></entry>
	  </row>
	  <row><entry></entry></row>

	  <row id="v4l2-exposure-metering">
	    <entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant>&nbsp;</entry>
	    <entry>enum&nbsp;v4l2_exposure_metering</entry>
	  </row><row><entry spanname="descr">Determines how the camera measures
the amount of light available for the frame exposure. Possible values are:</entry>
	  </row>
	  <row>
	    <entrytbl spanname="descr" cols="2">
	      <tbody valign="top">
		<row>
		  <entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant>&nbsp;</entry>
		  <entry>Use the light information coming from the entire frame
and average giving no weighting to any particular portion of the metered area.
		  </entry>
		</row>
		<row>
		  <entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant>&nbsp;</entry>
		  <entry>Average the light information coming from the entire frame
giving priority to the center of the metered area.</entry>
		</row>
		<row>
		  <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry>
		  <entry>Measure only very small area at the center of the frame.</entry>
		</row>
	      </tbody>
	    </entrytbl>
	  </row>
	  <row><entry></entry></row>

	  <row>
	    <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry>
	    <entry>integer</entry>
+10 −0
Original line number Diff line number Diff line
@@ -230,6 +230,12 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
		"Aperture Priority Mode",
		NULL
	};
	static const char * const camera_exposure_metering[] = {
		"Average",
		"Center Weighted",
		"Spot",
		NULL
	};
	static const char * const colorfx[] = {
		"None",
		"Black & White",
@@ -434,6 +440,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
		return camera_power_line_frequency;
	case V4L2_CID_EXPOSURE_AUTO:
		return camera_exposure_auto;
	case V4L2_CID_EXPOSURE_METERING:
		return camera_exposure_metering;
	case V4L2_CID_COLORFX:
		return colorfx;
	case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE:
@@ -632,6 +640,7 @@ const char *v4l2_ctrl_get_name(u32 id)
	case V4L2_CID_IMAGE_STABILIZATION:	return "Image Stabilization";
	case V4L2_CID_ISO_SENSITIVITY:		return "ISO Sensitivity";
	case V4L2_CID_ISO_SENSITIVITY_AUTO:	return "ISO Sensitivity, Auto";
	case V4L2_CID_EXPOSURE_METERING:	return "Exposure, Metering Mode";

	/* FM Radio Modulator control */
	/* Keep the order of the 'case's the same as in videodev2.h! */
@@ -783,6 +792,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
	case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:
	case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
	case V4L2_CID_ISO_SENSITIVITY_AUTO:
	case V4L2_CID_EXPOSURE_METERING:
		*type = V4L2_CTRL_TYPE_MENU;
		break;
	case V4L2_CID_LINK_FREQ:
+7 −0
Original line number Diff line number Diff line
@@ -1733,6 +1733,13 @@ enum v4l2_iso_sensitivity_auto_type {
	V4L2_ISO_SENSITIVITY_AUTO		= 1,
};

#define V4L2_CID_EXPOSURE_METERING		(V4L2_CID_CAMERA_CLASS_BASE+25)
enum v4l2_exposure_metering {
	V4L2_EXPOSURE_METERING_AVERAGE		= 0,
	V4L2_EXPOSURE_METERING_CENTER_WEIGHTED	= 1,
	V4L2_EXPOSURE_METERING_SPOT		= 2,
};

/* 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)