Skip to content

Commit dbdba2a

Browse files
committed
drivers: video: controls: add the BASE and CAMERA controls
Add all the base controls present like they are in Linux into Zephyr, limited to those that can apply in the current system: - Buttons are left as integer for now. - Some description is modified to fit the Zephyr situation. - For the minimum number of buffer, Zephyr uses a different mechanism. - No audio support through the video subsystem. - Homogenize the wording Signed-off-by: Josuah Demangeon <me@josuah.net>
1 parent a7f4a6a commit dbdba2a

File tree

2 files changed

+594
-13
lines changed

2 files changed

+594
-13
lines changed

drivers/video/video_ctrls.c

Lines changed: 180 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,52 @@ LOG_MODULE_REGISTER(video_ctrls, CONFIG_VIDEO_LOG_LEVEL);
1717

1818
static inline const char *const *video_get_std_menu_ctrl(uint32_t id)
1919
{
20-
static const char *const camera_power_line_frequency[] = {"Disabled", "50 Hz", "60 Hz",
21-
"Auto", NULL};
22-
static const char *const camera_exposure_auto[] = {"Auto Mode", "Manual Mode",
23-
"Shutter Priority Mode",
24-
"Aperture Priority Mode", NULL};
25-
2620
switch (id) {
21+
/* User control menus */
2722
case VIDEO_CID_POWER_LINE_FREQUENCY:
28-
return camera_power_line_frequency;
23+
return (char const *const []){
24+
"Disabled", "50 Hz", "60 Hz", "Auto", NULL
25+
};
26+
27+
/* Camera control menus */
2928
case VIDEO_CID_EXPOSURE_AUTO:
30-
return camera_exposure_auto;
29+
return (char const *const []){
30+
"Auto Mode", "Manual Mode", "Shutter Priority Mode",
31+
"Aperture Priority Mode", NULL
32+
};
33+
case VIDEO_CID_AUTO_FOCUS_RANGE:
34+
return (char const *const []){
35+
"Auto", "Normal", "Macro", "Infinity", NULL
36+
};
37+
case VIDEO_CID_COLORFX:
38+
return (char const *const []){
39+
"None", "Black & White", "Sepia", "Negative", "Emboss", "Sketch",
40+
"Sky Blue", "Grass Green", "Skin Whiten", "Vivid", "Aqua", "Art Freeze",
41+
"Silhouette", "Solarization", "Antique", "Set Cb/Cr", NULL
42+
};
43+
case VIDEO_CID_AUTO_N_PRESET_WHITE_BALANCE:
44+
return (char const *const []){
45+
"Manual", "Auto", "Incandescent", "Fluorescent", "Fluorescent H", "Horizon",
46+
"Daylight", "Flash", "Cloudy", "Shade", "Greyworld", NULL
47+
};
48+
case VIDEO_CID_ISO_SENSITIVITY_AUTO:
49+
return (char const *const []){
50+
"Manual", "Auto", NULL
51+
};
52+
case VIDEO_CID_EXPOSURE_METERING:
53+
return (char const *const []){
54+
"Average", "Center Weighted", "Spot", "Matrix", NULL
55+
};
56+
case VIDEO_CID_SCENE_MODE:
57+
return (char const *const []){
58+
"None", "Backlight", "Beach/Snow", "Candle Light", "Dusk/Dawn",
59+
"Fall Colors", "Fireworks", "Landscape", "Night", "Party/Indoor",
60+
"Portrait", "Sports", "Sunset", "Text", NULL
61+
};
62+
case VIDEO_CID_CAMERA_ORIENTATION:
63+
return (char const *const []){
64+
"Front", "Back", "External", NULL
65+
};
3166
default:
3267
return NULL;
3368
}
@@ -69,12 +104,35 @@ static inline void set_type_flag(uint32_t id, enum video_ctrl_type *type, uint32
69104
*flags = 0;
70105

71106
switch (id) {
107+
case VIDEO_CID_AUTO_WHITE_BALANCE:
108+
case VIDEO_CID_AUTOGAIN:
72109
case VIDEO_CID_HFLIP:
73110
case VIDEO_CID_VFLIP:
111+
case VIDEO_CID_HUE_AUTO:
112+
case VIDEO_CID_CHROMA_AGC:
113+
case VIDEO_CID_COLOR_KILLER:
114+
case VIDEO_CID_AUTOBRIGHTNESS:
115+
case VIDEO_CID_ILLUMINATORS_1:
116+
case VIDEO_CID_ILLUMINATORS_2:
117+
case VIDEO_CID_EXPOSURE_AUTO_PRIORITY:
118+
case VIDEO_CID_FOCUS_AUTO:
119+
case VIDEO_CID_PRIVACY:
120+
case VIDEO_CID_WIDE_DYNAMIC_RANGE:
121+
case VIDEO_CID_IMAGE_STABILIZATION:
74122
*type = VIDEO_CTRL_TYPE_BOOLEAN;
75123
break;
124+
76125
case VIDEO_CID_POWER_LINE_FREQUENCY:
126+
case VIDEO_CID_EXPOSURE_AUTO:
127+
case VIDEO_CID_AUTO_FOCUS_RANGE:
128+
case VIDEO_CID_COLORFX:
129+
case VIDEO_CID_AUTO_N_PRESET_WHITE_BALANCE:
130+
case VIDEO_CID_ISO_SENSITIVITY_AUTO:
131+
case VIDEO_CID_EXPOSURE_METERING:
132+
case VIDEO_CID_SCENE_MODE:
77133
case VIDEO_CID_TEST_PATTERN:
134+
case VIDEO_CID_CAMERA_ORIENTATION:
135+
case VIDEO_CID_HDR_SENSOR_MODE:
78136
*type = VIDEO_CTRL_TYPE_MENU;
79137
break;
80138
case VIDEO_CID_PIXEL_RATE:
@@ -388,6 +446,16 @@ static inline const char *video_get_ctrl_name(uint32_t id)
388446
return "Saturation";
389447
case VIDEO_CID_HUE:
390448
return "Hue";
449+
case VIDEO_CID_AUTO_WHITE_BALANCE:
450+
return "White Balance, Automatic";
451+
case VIDEO_CID_DO_WHITE_BALANCE:
452+
return "Do White Balance";
453+
case VIDEO_CID_RED_BALANCE:
454+
return "Red Balance";
455+
case VIDEO_CID_BLUE_BALANCE:
456+
return "Blue Balance";
457+
case VIDEO_CID_GAMMA:
458+
return "Gamma";
391459
case VIDEO_CID_EXPOSURE:
392460
return "Exposure";
393461
case VIDEO_CID_AUTOGAIN:
@@ -402,10 +470,114 @@ static inline const char *video_get_ctrl_name(uint32_t id)
402470
return "Vertical Flip";
403471
case VIDEO_CID_POWER_LINE_FREQUENCY:
404472
return "Power Line Frequency";
473+
case VIDEO_CID_HUE_AUTO:
474+
return "Hue, Automatic";
475+
case VIDEO_CID_WHITE_BALANCE_TEMPERATURE:
476+
return "White Balance Temperature";
477+
case VIDEO_CID_SHARPNESS:
478+
return "Sharpness";
479+
case VIDEO_CID_BACKLIGHT_COMPENSATION:
480+
return "Backlight Compensation";
481+
case VIDEO_CID_CHROMA_AGC:
482+
return "Chroma AGC";
483+
case VIDEO_CID_COLOR_KILLER:
484+
return "Color Killer";
485+
case VIDEO_CID_COLORFX:
486+
return "Color Effects";
487+
case VIDEO_CID_AUTOBRIGHTNESS:
488+
return "Brightness, Automatic";
489+
case VIDEO_CID_BAND_STOP_FILTER:
490+
return "Band-Stop Filter";
491+
case VIDEO_CID_ROTATE:
492+
return "Rotate";
493+
case VIDEO_CID_BG_COLOR:
494+
return "Background Color";
495+
case VIDEO_CID_CHROMA_GAIN:
496+
return "Chroma Gain";
497+
case VIDEO_CID_ILLUMINATORS_1:
498+
return "Illuminator 1";
499+
case VIDEO_CID_ILLUMINATORS_2:
500+
return "Illuminator 2";
501+
case VIDEO_CID_ALPHA_COMPONENT:
502+
return "Alpha Component";
503+
case VIDEO_CID_COLORFX_CBCR:
504+
return "Color Effects, CbCr";
505+
case VIDEO_CID_COLORFX_RGB:
506+
return "Color Effects, RGB";
405507

406508
/* Camera controls */
509+
case VIDEO_CID_EXPOSURE_AUTO:
510+
return "Auto Exposure";
511+
case VIDEO_CID_EXPOSURE_ABSOLUTE:
512+
return "Exposure Time, Absolute";
513+
case VIDEO_CID_EXPOSURE_AUTO_PRIORITY:
514+
return "Exposure, Dynamic Framerate";
515+
case VIDEO_CID_PAN_RELATIVE:
516+
return "Pan, Relative";
517+
case VIDEO_CID_TILT_RELATIVE:
518+
return "Tilt, Relative";
519+
case VIDEO_CID_PAN_RESET:
520+
return "Pan, Reset";
521+
case VIDEO_CID_TILT_RESET:
522+
return "Tilt, Reset";
523+
case VIDEO_CID_PAN_ABSOLUTE:
524+
return "Pan, Absolute";
525+
case VIDEO_CID_TILT_ABSOLUTE:
526+
return "Tilt, Absolute";
527+
case VIDEO_CID_FOCUS_ABSOLUTE:
528+
return "Focus, Absolute";
529+
case VIDEO_CID_FOCUS_RELATIVE:
530+
return "Focus, Relative";
531+
case VIDEO_CID_FOCUS_AUTO:
532+
return "Focus, Automatic Continuous";
407533
case VIDEO_CID_ZOOM_ABSOLUTE:
408534
return "Zoom, Absolute";
535+
case VIDEO_CID_ZOOM_RELATIVE:
536+
return "Zoom, Relative";
537+
case VIDEO_CID_ZOOM_CONTINUOUS:
538+
return "Zoom, Continuous";
539+
case VIDEO_CID_PRIVACY:
540+
return "Privacy";
541+
case VIDEO_CID_IRIS_ABSOLUTE:
542+
return "Iris, Absolute";
543+
case VIDEO_CID_IRIS_RELATIVE:
544+
return "Iris, Relative";
545+
case VIDEO_CID_AUTO_EXPOSURE_BIAS:
546+
return "Auto Exposure, Bias";
547+
case VIDEO_CID_AUTO_N_PRESET_WHITE_BALANCE:
548+
return "White Balance, Auto & Preset";
549+
case VIDEO_CID_WIDE_DYNAMIC_RANGE:
550+
return "Wide Dynamic Range";
551+
case VIDEO_CID_IMAGE_STABILIZATION:
552+
return "Image Stabilization";
553+
case VIDEO_CID_ISO_SENSITIVITY:
554+
return "ISO Sensitivity";
555+
case VIDEO_CID_ISO_SENSITIVITY_AUTO:
556+
return "ISO Sensitivity, Auto";
557+
case VIDEO_CID_EXPOSURE_METERING:
558+
return "Exposure, Metering Mode";
559+
case VIDEO_CID_SCENE_MODE:
560+
return "Scene Mode";
561+
case VIDEO_CID_3A_LOCK:
562+
return "3A Lock";
563+
case VIDEO_CID_AUTO_FOCUS_START:
564+
return "Auto Focus, Start";
565+
case VIDEO_CID_AUTO_FOCUS_STOP:
566+
return "Auto Focus, Stop";
567+
case VIDEO_CID_AUTO_FOCUS_STATUS:
568+
return "Auto Focus, Status";
569+
case VIDEO_CID_AUTO_FOCUS_RANGE:
570+
return "Auto Focus, Range";
571+
case VIDEO_CID_PAN_SPEED:
572+
return "Pan, Speed";
573+
case VIDEO_CID_TILT_SPEED:
574+
return "Tilt, Speed";
575+
case VIDEO_CID_CAMERA_ORIENTATION:
576+
return "Camera Orientation";
577+
case VIDEO_CID_CAMERA_SENSOR_ROTATION:
578+
return "Camera Sensor Rotation";
579+
case VIDEO_CID_HDR_SENSOR_MODE:
580+
return "HDR Sensor Mode";
409581

410582
/* JPEG encoder controls */
411583
case VIDEO_CID_JPEG_COMPRESSION_QUALITY:

0 commit comments

Comments
 (0)