diff options
| author | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2012-04-16 09:45:44 -0400 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-14 13:28:19 -0400 |
| commit | 0bf6b7dc5fd1e60e93657d4fe4b3d788216b9d5e (patch) | |
| tree | 7fc860e2ee33601d4e2c5a478e0327b8e49538a6 | |
| parent | cf072139c7952e267a2eff334f224a62c949ee96 (diff) | |
[media] V4L: Add camera scene mode control
Add control for the scene mode feature available in image sensor
with more advanced ISP firmware. The V4L2_CID_SCENE_MODE menu
control allows to select a set of parameters or a specific image
processing and capture control algorithm optimized for common
image capture conditions.
Signed-off-by: HeungJun Kim <riverful.kim@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | Documentation/DocBook/media/v4l/controls.xml | 117 | ||||
| -rw-r--r-- | drivers/media/video/v4l2-ctrls.c | 21 | ||||
| -rw-r--r-- | include/linux/videodev2.h | 18 |
3 files changed, 156 insertions, 0 deletions
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml index e8c63e04741f..ad0d53d3ffdd 100644 --- a/Documentation/DocBook/media/v4l/controls.xml +++ b/Documentation/DocBook/media/v4l/controls.xml | |||
| @@ -3184,6 +3184,123 @@ sensitivity adjustments.</entry> | |||
| 3184 | </row> | 3184 | </row> |
| 3185 | <row><entry></entry></row> | 3185 | <row><entry></entry></row> |
| 3186 | 3186 | ||
| 3187 | <row id="v4l2-scene-mode"> | ||
| 3188 | <entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant> </entry> | ||
| 3189 | <entry>enum v4l2_scene_mode</entry> | ||
| 3190 | </row><row><entry spanname="descr">This control allows to select | ||
| 3191 | scene programs as the camera automatic modes optimized for common shooting | ||
| 3192 | scenes. Within these modes the camera determines best exposure, aperture, | ||
| 3193 | focusing, light metering, white balance and equivalent sensitivity. The | ||
| 3194 | controls of those parameters are influenced by the scene mode control. | ||
| 3195 | An exact behavior in each mode is subject to the camera specification. | ||
| 3196 | |||
| 3197 | <para>When the scene mode feature is not used, this control should be set to | ||
| 3198 | <constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly | ||
| 3199 | related controls are accessible. The following scene programs are defined: | ||
| 3200 | </para> | ||
| 3201 | </entry> | ||
| 3202 | </row> | ||
| 3203 | <row> | ||
| 3204 | <entrytbl spanname="descr" cols="2"> | ||
| 3205 | <tbody valign="top"> | ||
| 3206 | <row> | ||
| 3207 | <entry><constant>V4L2_SCENE_MODE_NONE</constant> </entry> | ||
| 3208 | <entry>The scene mode feature is disabled.</entry> | ||
| 3209 | </row> | ||
| 3210 | <row> | ||
| 3211 | <entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant> </entry> | ||
| 3212 | <entry>Backlight. Compensates for dark shadows when light is | ||
| 3213 | coming from behind a subject, also by automatically turning | ||
| 3214 | on the flash.</entry> | ||
| 3215 | </row> | ||
| 3216 | <row> | ||
| 3217 | <entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant> </entry> | ||
| 3218 | <entry>Beach and snow. This mode compensates for all-white or | ||
| 3219 | bright scenes, which tend to look gray and low contrast, when camera's automatic | ||
| 3220 | exposure is based on an average scene brightness. To compensate, this mode | ||
| 3221 | automatically slightly overexposes the frames. The white balance may also be | ||
| 3222 | adjusted to compensate for the fact that reflected snow looks bluish rather | ||
| 3223 | than white.</entry> | ||
| 3224 | </row> | ||
| 3225 | <row> | ||
| 3226 | <entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant> </entry> | ||
| 3227 | <entry>Candle light. The camera generally raises the ISO | ||
| 3228 | sensitivity and lowers the shutter speed. This mode compensates for relatively | ||
| 3229 | close subject in the scene. The flash is disabled in order to preserve the | ||
| 3230 | ambiance of the light.</entry> | ||
| 3231 | </row> | ||
| 3232 | <row> | ||
| 3233 | <entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant> </entry> | ||
| 3234 | <entry>Dawn and dusk. Preserves the colors seen in low | ||
| 3235 | natural light before dusk and after down. The camera may turn off the flash, | ||
| 3236 | and automatically focus at infinity. It will usually boost saturation and | ||
| 3237 | lower the shutter speed.</entry> | ||
| 3238 | </row> | ||
| 3239 | <row> | ||
| 3240 | <entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant> </entry> | ||
| 3241 | <entry>Fall colors. Increases saturation and adjusts white | ||
| 3242 | balance for color enhancement. Pictures of autumn leaves get saturated reds | ||
| 3243 | and yellows.</entry> | ||
| 3244 | </row> | ||
| 3245 | <row> | ||
| 3246 | <entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant> </entry> | ||
| 3247 | <entry>Fireworks. Long exposure times are used to capture | ||
| 3248 | the expanding burst of light from a firework. The camera may invoke image | ||
| 3249 | stabilization.</entry> | ||
| 3250 | </row> | ||
| 3251 | <row> | ||
| 3252 | <entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant> </entry> | ||
| 3253 | <entry>Landscape. The camera may choose a small aperture to | ||
| 3254 | provide deep depth of field and long exposure duration to help capture detail | ||
| 3255 | in dim light conditions. The focus is fixed at infinity. Suitable for distant | ||
| 3256 | and wide scenery.</entry> | ||
| 3257 | </row> | ||
| 3258 | <row> | ||
| 3259 | <entry><constant>V4L2_SCENE_MODE_NIGHT</constant> </entry> | ||
| 3260 | <entry>Night, also known as Night Landscape. Designed for low | ||
| 3261 | light conditions, it preserves detail in the dark areas without blowing out bright | ||
| 3262 | objects. The camera generally sets itself to a medium-to-high ISO sensitivity, | ||
| 3263 | with a relatively long exposure time, and turns flash off. As such, there will be | ||
| 3264 | increased image noise and the possibility of blurred image.</entry> | ||
| 3265 | </row> | ||
| 3266 | <row> | ||
| 3267 | <entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant> </entry> | ||
| 3268 | <entry>Party and indoor. Designed to capture indoor scenes | ||
| 3269 | that are lit by indoor background lighting as well as the flash. The camera | ||
| 3270 | usually increases ISO sensitivity, and adjusts exposure for the low light | ||
| 3271 | conditions.</entry> | ||
| 3272 | </row> | ||
| 3273 | <row> | ||
| 3274 | <entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant> </entry> | ||
| 3275 | <entry>Portrait. The camera adjusts the aperture so that the | ||
| 3276 | depth of field is reduced, which helps to isolate the subject against a smooth | ||
| 3277 | background. Most cameras recognize the presence of faces in the scene and focus | ||
| 3278 | on them. The color hue is adjusted to enhance skin tones. The intensity of the | ||
| 3279 | flash is often reduced.</entry> | ||
| 3280 | </row> | ||
| 3281 | <row> | ||
| 3282 | <entry><constant>V4L2_SCENE_MODE_SPORTS</constant> </entry> | ||
| 3283 | <entry>Sports. Significantly increases ISO and uses a fast | ||
| 3284 | shutter speed to freeze motion of rapidly-moving subjects. Increased image | ||
| 3285 | noise may be seen in this mode.</entry> | ||
| 3286 | </row> | ||
| 3287 | <row> | ||
| 3288 | <entry><constant>V4L2_SCENE_MODE_SUNSET</constant> </entry> | ||
| 3289 | <entry>Sunset. Preserves deep hues seen in sunsets and | ||
| 3290 | sunrises. It bumps up the saturation.</entry> | ||
| 3291 | </row> | ||
| 3292 | <row> | ||
| 3293 | <entry><constant>V4L2_SCENE_MODE_TEXT</constant> </entry> | ||
| 3294 | <entry>Text. It applies extra contrast and sharpness, it is | ||
| 3295 | typically a black-and-white mode optimized for readability. Automatic focus | ||
| 3296 | may be switched to close-up mode and this setting may also involve some | ||
| 3297 | lens-distortion correction.</entry> | ||
| 3298 | </row> | ||
| 3299 | </tbody> | ||
| 3300 | </entrytbl> | ||
| 3301 | </row> | ||
| 3302 | <row><entry></entry></row> | ||
| 3303 | |||
| 3187 | </tbody> | 3304 | </tbody> |
| 3188 | </tgroup> | 3305 | </tgroup> |
| 3189 | </table> | 3306 | </table> |
diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c index 55dd813b7341..d4dc8ba7b755 100644 --- a/drivers/media/video/v4l2-ctrls.c +++ b/drivers/media/video/v4l2-ctrls.c | |||
| @@ -273,6 +273,23 @@ const char * const *v4l2_ctrl_get_menu(u32 id) | |||
| 273 | "Auto", | 273 | "Auto", |
| 274 | NULL | 274 | NULL |
| 275 | }; | 275 | }; |
| 276 | static const char * const scene_mode[] = { | ||
| 277 | "None", | ||
| 278 | "Backlight", | ||
| 279 | "Beach/Snow", | ||
| 280 | "Candle Light", | ||
| 281 | "Dusk/Dawn", | ||
| 282 | "Fall Colors", | ||
| 283 | "Fireworks", | ||
| 284 | "Landscape", | ||
| 285 | "Night", | ||
| 286 | "Party/Indoor", | ||
| 287 | "Portrait", | ||
| 288 | "Sports", | ||
| 289 | "Sunset", | ||
| 290 | "Text", | ||
| 291 | NULL | ||
| 292 | }; | ||
| 276 | static const char * const tune_preemphasis[] = { | 293 | static const char * const tune_preemphasis[] = { |
| 277 | "No Preemphasis", | 294 | "No Preemphasis", |
| 278 | "50 Microseconds", | 295 | "50 Microseconds", |
| @@ -448,6 +465,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) | |||
| 448 | return auto_n_preset_white_balance; | 465 | return auto_n_preset_white_balance; |
| 449 | case V4L2_CID_ISO_SENSITIVITY_AUTO: | 466 | case V4L2_CID_ISO_SENSITIVITY_AUTO: |
| 450 | return camera_iso_sensitivity_auto; | 467 | return camera_iso_sensitivity_auto; |
| 468 | case V4L2_CID_SCENE_MODE: | ||
| 469 | return scene_mode; | ||
| 451 | case V4L2_CID_TUNE_PREEMPHASIS: | 470 | case V4L2_CID_TUNE_PREEMPHASIS: |
| 452 | return tune_preemphasis; | 471 | return tune_preemphasis; |
| 453 | case V4L2_CID_FLASH_LED_MODE: | 472 | case V4L2_CID_FLASH_LED_MODE: |
| @@ -641,6 +660,7 @@ const char *v4l2_ctrl_get_name(u32 id) | |||
| 641 | case V4L2_CID_ISO_SENSITIVITY: return "ISO Sensitivity"; | 660 | case V4L2_CID_ISO_SENSITIVITY: return "ISO Sensitivity"; |
| 642 | case V4L2_CID_ISO_SENSITIVITY_AUTO: return "ISO Sensitivity, Auto"; | 661 | case V4L2_CID_ISO_SENSITIVITY_AUTO: return "ISO Sensitivity, Auto"; |
| 643 | case V4L2_CID_EXPOSURE_METERING: return "Exposure, Metering Mode"; | 662 | case V4L2_CID_EXPOSURE_METERING: return "Exposure, Metering Mode"; |
| 663 | case V4L2_CID_SCENE_MODE: return "Scene Mode"; | ||
| 644 | 664 | ||
| 645 | /* FM Radio Modulator control */ | 665 | /* FM Radio Modulator control */ |
| 646 | /* Keep the order of the 'case's the same as in videodev2.h! */ | 666 | /* Keep the order of the 'case's the same as in videodev2.h! */ |
| @@ -793,6 +813,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, | |||
| 793 | case V4L2_CID_JPEG_CHROMA_SUBSAMPLING: | 813 | case V4L2_CID_JPEG_CHROMA_SUBSAMPLING: |
| 794 | case V4L2_CID_ISO_SENSITIVITY_AUTO: | 814 | case V4L2_CID_ISO_SENSITIVITY_AUTO: |
| 795 | case V4L2_CID_EXPOSURE_METERING: | 815 | case V4L2_CID_EXPOSURE_METERING: |
| 816 | case V4L2_CID_SCENE_MODE: | ||
| 796 | *type = V4L2_CTRL_TYPE_MENU; | 817 | *type = V4L2_CTRL_TYPE_MENU; |
| 797 | break; | 818 | break; |
| 798 | case V4L2_CID_LINK_FREQ: | 819 | case V4L2_CID_LINK_FREQ: |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index a3e47ad60a6d..092bf5aaf348 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -1740,6 +1740,24 @@ enum v4l2_exposure_metering { | |||
| 1740 | V4L2_EXPOSURE_METERING_SPOT = 2, | 1740 | V4L2_EXPOSURE_METERING_SPOT = 2, |
| 1741 | }; | 1741 | }; |
| 1742 | 1742 | ||
| 1743 | #define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE+26) | ||
| 1744 | enum v4l2_scene_mode { | ||
| 1745 | V4L2_SCENE_MODE_NONE = 0, | ||
| 1746 | V4L2_SCENE_MODE_BACKLIGHT = 1, | ||
| 1747 | V4L2_SCENE_MODE_BEACH_SNOW = 2, | ||
| 1748 | V4L2_SCENE_MODE_CANDLE_LIGHT = 3, | ||
| 1749 | V4L2_SCENE_MODE_DAWN_DUSK = 4, | ||
| 1750 | V4L2_SCENE_MODE_FALL_COLORS = 5, | ||
| 1751 | V4L2_SCENE_MODE_FIREWORKS = 6, | ||
| 1752 | V4L2_SCENE_MODE_LANDSCAPE = 7, | ||
| 1753 | V4L2_SCENE_MODE_NIGHT = 8, | ||
| 1754 | V4L2_SCENE_MODE_PARTY_INDOOR = 9, | ||
| 1755 | V4L2_SCENE_MODE_PORTRAIT = 10, | ||
| 1756 | V4L2_SCENE_MODE_SPORTS = 11, | ||
| 1757 | V4L2_SCENE_MODE_SUNSET = 12, | ||
| 1758 | V4L2_SCENE_MODE_TEXT = 13, | ||
| 1759 | }; | ||
| 1760 | |||
| 1743 | /* FM Modulator class control IDs */ | 1761 | /* FM Modulator class control IDs */ |
| 1744 | #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) | 1762 | #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) |
| 1745 | #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1) | 1763 | #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1) |
