v4l2-ctrls: change the boolean type of V4L2_CID_FOCUS_AUTO to menu type
RFC PATCH 1/2 v4l2-ctrls: change the boolean type of V4L2_CID_FOCUS_AUTO to menu type
For support more modes of autofocus, it changes the type of V4L2_CID_FOCUS_AUTO from boolean to menu. And it includes 4 kinds of enumeration types:
V4L2_FOCUS_AUTO, V4L2_FOCUS_MANUAL, V4L2_FOCUS_MACRO, V4L2_FOCUS_CONTINUOUS
--- drivers/media/video/v4l2-ctrls.c | 11 ++++++++++- include/linux/videodev2.h | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletions(-)
drivers/media/video/v4l2-ctrls.c +10 -1
@@ -197,6 +197,13 @@ const char * const *v4l2_ctrl_get_menu(u32 id)"Aperture Priority Mode" ,NULL }; +static const char *const camera_focus_auto[] = { +"Auto Mode" , +"Manual Mode" , +"Macro Mode" , +"Continuous Mode" , +NULL + };static const char *const colorfx[] = {"None" , "Black & White",
@@ -252,6 +259,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_FOCUS_AUTO : +return camera_focus_auto;case V4L2_CID_COLORFX :return colorfx;case V4L2_CID_TUNE_PREEMPHASIS :
@@ -416,7 +425,6 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE :case V4L2_CID_MPEG_VIDEO_PULLDOWN :case V4L2_CID_EXPOSURE_AUTO_PRIORITY : -case V4L2_CID_FOCUS_AUTO :case V4L2_CID_PRIVACY :case V4L2_CID_AUDIO_LIMITER_ENABLED :case V4L2_CID_AUDIO_COMPRESSION_ENABLED :
@@ -450,6 +458,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,case V4L2_CID_MPEG_STREAM_TYPE :case V4L2_CID_MPEG_STREAM_VBI_FMT :case V4L2_CID_EXPOSURE_AUTO : +case V4L2_CID_FOCUS_AUTO :case V4L2_CID_COLORFX :case V4L2_CID_TUNE_PREEMPHASIS : *type =V4L2_CTRL_TYPE_MENU ;
include/linux/videodev2.h +6 -0
@@ -1374,6 +1374,12 @@ enum v4l2_exposure_auto_type {#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12) +enum v4l2_focus_auto_type { +V4L2_FOCUS_AUTO =0 , +V4L2_FOCUS_MANUAL =1 , +V4L2_FOCUS_MACRO =2 , +V4L2_FOCUS_CONTINUOUS =3 +};#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
Signature · 1 line
1.7.0.4
Quoted 60 lines · HeungJun
For support more modes of autofocus, it changes the type of
V4L2_CID_FOCUS_AUTOfrom boolean to menu. And it includes 4 kinds of enumeration types:
V4L2_FOCUS_AUTO,V4L2_FOCUS_MANUAL,V4L2_FOCUS_MACRO,V4L2_FOCUS_CONTINUOUSSigned-off-by Heungjun Kim <[email protected]>Signed-off-by Kyungmin Park <[email protected]>--- drivers/media/video/v4l2-ctrls.c | 11 ++++++++++- include/linux/videodev2.h | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletions(-)drivers/media/video/v4l2-ctrls.c +10
-1@@ -197,6 +197,13 @@ const char * const *v4l2_ctrl_get_menu(u32 id)"Aperture Priority Mode" ,NULL }; +static const char *const camera_focus_auto[] = { +"Auto Mode" , +"Manual Mode" , +"Macro Mode" , +"Continuous Mode" , +NULL + };static const char *const colorfx[] = {"None" , "Black & White",@@ -252,6 +259,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_FOCUS_AUTO : +return camera_focus_auto;case V4L2_CID_COLORFX :return colorfx;case V4L2_CID_TUNE_PREEMPHASIS :@@ -416,7 +425,6 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE :case V4L2_CID_MPEG_VIDEO_PULLDOWN :case V4L2_CID_EXPOSURE_AUTO_PRIORITY : -case V4L2_CID_FOCUS_AUTO :case V4L2_CID_PRIVACY :case V4L2_CID_AUDIO_LIMITER_ENABLED :case V4L2_CID_AUDIO_COMPRESSION_ENABLED :@@ -450,6 +458,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,case V4L2_CID_MPEG_STREAM_TYPE :case V4L2_CID_MPEG_STREAM_VBI_FMT :case V4L2_CID_EXPOSURE_AUTO : +case V4L2_CID_FOCUS_AUTO :case V4L2_CID_COLORFX :case V4L2_CID_TUNE_PREEMPHASIS : *type =V4L2_CTRL_TYPE_MENU ;include/linux/videodev2.h +0
-0
include/linux/videodev2.h enum v4l2_exposure_auto_type { · line 1379
Quoted 6 lines
include/linux/videodev2.h +3
-0@@ -1374,6 +1374,12 @@ enum v4l2_exposure_auto_type {#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12) +enum v4l2_focus_auto_type { +V4L2_FOCUS_AUTO =0 , +V4L2_FOCUS_MANUAL =1 ,
Currently this is a boolean, so 0 means manual and 1 means auto. Let's keep that order. So FOCUS_AUTO should be 1 and FOCUS_MANUAL should be 0.
The documentation of this control must also be updated in the V4L2 DocBook.
Regards,
Hans
Quoted 7 lines
include/linux/videodev2.h +3
-0+V4L2_FOCUS_MACRO =2 , + V4L2_FOCUS_CONTINUOUS = 3 +};#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
Signature · 1 line
Hans Verkuil - video4linux developer - sponsored by Cisco
Hi Hans,
Thanks for reviewing, and I'll send another version including Docbook documents.
Regards,
Heungjun Kim
2011-02-24 오후 7:59, Hans Verkuil 쓴 글:
Quoted 85 lines · HeungJun
Quoted 60 lines
For support more modes of autofocus, it changes the type of
V4L2_CID_FOCUS_AUTOfrom boolean to menu. And it includes 4 kinds of enumeration types:
V4L2_FOCUS_AUTO,V4L2_FOCUS_MANUAL,V4L2_FOCUS_MACRO,V4L2_FOCUS_CONTINUOUSSigned-off-by Heungjun Kim <[email protected]>Signed-off-by Kyungmin Park <[email protected]>--- drivers/media/video/v4l2-ctrls.c | 11 ++++++++++- include/linux/videodev2.h | 6 ++++++ 2 files changed, 16 insertions(+), 1 deletions(-)drivers/media/video/v4l2-ctrls.c +10
-1@@ -197,6 +197,13 @@ const char * const *v4l2_ctrl_get_menu(u32 id)"Aperture Priority Mode" ,NULL }; +static const char *const camera_focus_auto[] = { +"Auto Mode" , +"Manual Mode" , +"Macro Mode" , +"Continuous Mode" , +NULL + };static const char *const colorfx[] = {"None" , "Black & White",@@ -252,6 +259,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_FOCUS_AUTO : +return camera_focus_auto;case V4L2_CID_COLORFX :return colorfx;case V4L2_CID_TUNE_PREEMPHASIS :@@ -416,7 +425,6 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE :case V4L2_CID_MPEG_VIDEO_PULLDOWN :case V4L2_CID_EXPOSURE_AUTO_PRIORITY : -case V4L2_CID_FOCUS_AUTO :case V4L2_CID_PRIVACY :case V4L2_CID_AUDIO_LIMITER_ENABLED :case V4L2_CID_AUDIO_COMPRESSION_ENABLED :@@ -450,6 +458,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,case V4L2_CID_MPEG_STREAM_TYPE :case V4L2_CID_MPEG_STREAM_VBI_FMT :case V4L2_CID_EXPOSURE_AUTO : +case V4L2_CID_FOCUS_AUTO :case V4L2_CID_COLORFX :case V4L2_CID_TUNE_PREEMPHASIS : *type =V4L2_CTRL_TYPE_MENU ;include/linux/videodev2.h +0
-0include/linux/videodev2.h enum v4l2_exposure_auto_type { · line 1379
Quoted 6 lines
include/linux/videodev2.h +3
-0@@ -1374,6 +1374,12 @@ enum v4l2_exposure_auto_type {#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12) +enum v4l2_focus_auto_type { +V4L2_FOCUS_AUTO =0 , +V4L2_FOCUS_MANUAL =1 ,Currently this is a boolean, so 0 means manual and 1 means auto. Let's keep that order. So
FOCUS_AUTOshould be 1 andFOCUS_MANUALshould be 0.The documentation of this control must also be updated in the V4L2 DocBook.
Regards,
Hans
Quoted 7 lines
include/linux/videodev2.h +3
-0+V4L2_FOCUS_MACRO =2 , + V4L2_FOCUS_CONTINUOUS = 3 +};#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)