[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH/RFC v3 09/14] V4L: Add camera 3A lock control



On Friday 27 April 2012 16:23:26 Sylwester Nawrocki wrote:
> The V4L2_CID_3A_LOCK bitmask control allows applications to pause
> or resume the automatic exposure, focus and wite balance adjustments.
> It can be used, for example, to lock the 3A adjustments right before
> a still image is captured, for pre-focus, etc.
> The applications can control each of the algorithms independently,
> through a corresponding control bit, if driver allows that.
> 
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@xxxxxxxxxxx>
> Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
> ---
>  Documentation/DocBook/media/v4l/controls.xml |   40 ++++++++++++++++++++++++++
>  drivers/media/video/v4l2-ctrls.c             |    2 ++
>  include/linux/videodev2.h                    |    5 ++++
>  3 files changed, 47 insertions(+)
> 
> diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
> index bf481d4..51509f4 100644
> --- a/Documentation/DocBook/media/v4l/controls.xml
> +++ b/Documentation/DocBook/media/v4l/controls.xml
> @@ -3253,6 +3253,46 @@ lens-distortion correction.</entry>
>  	  </row>
>  	  <row><entry></entry></row>
>  
> +	  <row>
> +	    <entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
> +	    <entry>bitmask</entry>
> +	  </row>
> +	  <row>
> +	    <entry spanname="descr">This control locks or unlocks the automatic
> +exposure, white balance and focus. The automatic adjustments can be paused
> +independently by setting the coresponding lock bit to 1. The camera then retains

Small typo: coresponding -> corresponding

> +the corresponding 3A settings, until the lock bit is cleared. The value of this
> +control may be changed by other, exposure, white balance or focus controls. The

The sentence 'The value ... focus controls' doesn't parse. I think 'other, ' needs
to be removed.

Regards,

	Hans

> +following control bits are defined :
> +</entry>
> +	  </row>
> +	  <row>
> +	    <entrytbl spanname="descr" cols="2">
> +	      <tbody valign="top">
> +		<row>
> +		  <entry><constant>V4L2_3A_LOCK_EXPOSURE</constant></entry>
> +		  <entry>Automatic exposure adjustments lock.</entry>
> +		</row>
> +		<row>
> +		  <entry><constant>V4L2_3A_LOCK_WHITE_BALANCE</constant></entry>
> +		  <entry>Automatic white balance adjustments lock.</entry>
> +		</row>
> +		<row>
> +		  <entry><constant>V4L2_3A_LOCK_FOCUS</constant></entry>
> +		  <entry>Automatic focus adjustments lock.</entry>
> +		</row>
> +	      </tbody>
> +	    </entrytbl>
> +	  </row>
> +	  <row><entry spanname="descr">
> +When a particular algorithm is not enabled, drivers should ignore requests
> +to lock it and should return no error. An example might be an application
> +setting bit <constant>V4L2_3A_LOCK_WHITE_BALANCE</constant> when the
> +<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
> +<constant>FALSE</constant>.</entry>
> +	  </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 8b48893..d45f00c 100644
> --- a/drivers/media/video/v4l2-ctrls.c
> +++ b/drivers/media/video/v4l2-ctrls.c
> @@ -671,6 +671,7 @@ const char *v4l2_ctrl_get_name(u32 id)
>  	case V4L2_CID_ISO_SENSITIVITY_AUTO:	return "ISO Sensitivity, Auto";
>  	case V4L2_CID_EXPOSURE_METERING:	return "Exposure, Metering Mode";
>  	case V4L2_CID_SCENE_MODE:		return "Scene Mode";
> +	case V4L2_CID_3A_LOCK:			return "3A Lock";
>  
>  	/* FM Radio Modulator control */
>  	/* Keep the order of the 'case's the same as in videodev2.h! */
> @@ -843,6 +844,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
>  		break;
>  	case V4L2_CID_FLASH_FAULT:
>  	case V4L2_CID_JPEG_ACTIVE_MARKER:
> +	case V4L2_CID_3A_LOCK:
>  		*type = V4L2_CTRL_TYPE_BITMASK;
>  		break;
>  	case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:
> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
> index 2c82fd9..7c30d54 100644
> --- a/include/linux/videodev2.h
> +++ b/include/linux/videodev2.h
> @@ -1752,6 +1752,11 @@ enum v4l2_scene_mode {
>  	V4L2_SCENE_MODE_TEXT			= 13,
>  };
>  
> +#define V4L2_CID_3A_LOCK			(V4L2_CID_CAMERA_CLASS_BASE+27)
> +#define V4L2_3A_LOCK_EXPOSURE			(1 << 0)
> +#define V4L2_3A_LOCK_WHITE_BALANCE		(1 << 1)
> +#define V4L2_3A_LOCK_FOCUS			(1 << 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)
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux Input]     [Video for Linux]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Photos]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Devices]     [Yosemite Backpacking]

Add to Google Powered by Linux