Commit 7f84ad8b authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab

[media] V4L: Add camera ISO sensitivity controls

Add ISO sensitivity and ISO auto/manual controls. The sensitivity
values are related to level of amplification of the analog signal
between image sensor and ADC. These controls allow to support sensors
exposing an interface to accept the ISO values directly.
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 82b3056c
...@@ -197,4 +197,15 @@ in the frequency range from 87,5 to 108,0 MHz</title> ...@@ -197,4 +197,15 @@ in the frequency range from 87,5 to 108,0 MHz</title>
<title>NTSC-4: United States RBDS Standard</title> <title>NTSC-4: United States RBDS Standard</title>
</biblioentry> </biblioentry>
<biblioentry id="iso12232">
<abbrev>ISO&nbsp;12232:2006</abbrev>
<authorgroup>
<corpauthor>International Organization for Standardization
(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
</authorgroup>
<title>Photography &mdash; Digital still cameras &mdash; Determination
of exposure index, ISO speed ratings, standard output sensitivity, and
recommended exposure index</title>
</biblioentry>
</bibliography> </bibliography>
...@@ -3117,6 +3117,44 @@ control in the future, if more options are required.</para></footnote></entry> ...@@ -3117,6 +3117,44 @@ control in the future, if more options are required.</para></footnote></entry>
</row> </row>
<row><entry></entry></row> <row><entry></entry></row>
<row>
<entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant>&nbsp;</entry>
<entry>integer menu</entry>
</row><row><entry spanname="descr">Determines ISO equivalent of an
image sensor indicating the sensor's sensitivity to light. The numbers are
expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard,
where doubling the sensor sensitivity is represented by doubling the numerical
ISO value. Applications should interpret the values as standard ISO values
multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
usually support only a subset of standard ISO values. The effect of setting
this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>
control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL
</constant> is undefined, drivers should ignore such requests.</entry>
</row>
<row><entry></entry></row>
<row id="v4l2-iso-sensitivity-auto-type">
<entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
<entry>enum&nbsp;v4l2_iso_sensitivity_type</entry>
</row><row><entry spanname="descr">Enables or disables automatic ISO
sensitivity adjustments.</entry>
</row>
<row>
<entrytbl spanname="descr" cols="2">
<tbody valign="top">
<row>
<entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant>&nbsp;</entry>
<entry>Manual ISO sensitivity.</entry>
</row>
<row>
<entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
<entry>Automatic ISO sensitivity adjustments.</entry>
</row>
</tbody>
</entrytbl>
</row>
<row><entry></entry></row>
</tbody> </tbody>
</tgroup> </tgroup>
</table> </table>
......
...@@ -262,6 +262,11 @@ const char * const *v4l2_ctrl_get_menu(u32 id) ...@@ -262,6 +262,11 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
"Shade", "Shade",
NULL, NULL,
}; };
static const char * const camera_iso_sensitivity_auto[] = {
"Manual",
"Auto",
NULL
};
static const char * const tune_preemphasis[] = { static const char * const tune_preemphasis[] = {
"No Preemphasis", "No Preemphasis",
"50 Microseconds", "50 Microseconds",
...@@ -433,6 +438,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) ...@@ -433,6 +438,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
return colorfx; return colorfx;
case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE:
return auto_n_preset_white_balance; return auto_n_preset_white_balance;
case V4L2_CID_ISO_SENSITIVITY_AUTO:
return camera_iso_sensitivity_auto;
case V4L2_CID_TUNE_PREEMPHASIS: case V4L2_CID_TUNE_PREEMPHASIS:
return tune_preemphasis; return tune_preemphasis;
case V4L2_CID_FLASH_LED_MODE: case V4L2_CID_FLASH_LED_MODE:
...@@ -623,6 +630,8 @@ const char *v4l2_ctrl_get_name(u32 id) ...@@ -623,6 +630,8 @@ const char *v4l2_ctrl_get_name(u32 id)
case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: return "White Balance, Auto & Preset"; case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: return "White Balance, Auto & Preset";
case V4L2_CID_WIDE_DYNAMIC_RANGE: return "Wide Dynamic Range"; case V4L2_CID_WIDE_DYNAMIC_RANGE: return "Wide Dynamic Range";
case V4L2_CID_IMAGE_STABILIZATION: return "Image Stabilization"; 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";
/* FM Radio Modulator control */ /* FM Radio Modulator control */
/* Keep the order of the 'case's the same as in videodev2.h! */ /* Keep the order of the 'case's the same as in videodev2.h! */
...@@ -773,6 +782,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, ...@@ -773,6 +782,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL: case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:
case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE: case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:
case V4L2_CID_JPEG_CHROMA_SUBSAMPLING: case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
case V4L2_CID_ISO_SENSITIVITY_AUTO:
*type = V4L2_CTRL_TYPE_MENU; *type = V4L2_CTRL_TYPE_MENU;
break; break;
case V4L2_CID_LINK_FREQ: case V4L2_CID_LINK_FREQ:
...@@ -782,6 +792,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, ...@@ -782,6 +792,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
case V4L2_CID_RDS_TX_RADIO_TEXT: case V4L2_CID_RDS_TX_RADIO_TEXT:
*type = V4L2_CTRL_TYPE_STRING; *type = V4L2_CTRL_TYPE_STRING;
break; break;
case V4L2_CID_ISO_SENSITIVITY:
case V4L2_CID_AUTO_EXPOSURE_BIAS: case V4L2_CID_AUTO_EXPOSURE_BIAS:
*type = V4L2_CTRL_TYPE_INTEGER_MENU; *type = V4L2_CTRL_TYPE_INTEGER_MENU;
break; break;
......
...@@ -1726,6 +1726,13 @@ enum v4l2_auto_n_preset_white_balance { ...@@ -1726,6 +1726,13 @@ enum v4l2_auto_n_preset_white_balance {
#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21) #define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22) #define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22)
#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE+23)
#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE+24)
enum v4l2_iso_sensitivity_auto_type {
V4L2_ISO_SENSITIVITY_MANUAL = 0,
V4L2_ISO_SENSITIVITY_AUTO = 1,
};
/* FM Modulator class control IDs */ /* FM Modulator class control IDs */
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) #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) #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment