From 46c5a547a90ed5e8149b8d0b9ef71fa978de92d4 Mon Sep 17 00:00:00 2001 From: Devaev Maxim Date: Mon, 17 Aug 2020 03:49:29 +0300 Subject: [PATCH] options to flip image --- src/device.c | 2 ++ src/device.h | 2 ++ src/options.c | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/src/device.c b/src/device.c index 2ca848d..ce0dd42 100644 --- a/src/device.c +++ b/src/device.c @@ -736,6 +736,8 @@ static void _device_apply_controls(struct device_t *dev) { CONTROL_MANUAL_CID ( V4L2_CID_BACKLIGHT_COMPENSATION, backlight_compensation); CONTROL_AUTO_CID (V4L2_CID_AUTO_WHITE_BALANCE, V4L2_CID_WHITE_BALANCE_TEMPERATURE, white_balance); CONTROL_AUTO_CID (V4L2_CID_AUTOGAIN, V4L2_CID_GAIN, gain); + CONTROL_MANUAL_CID ( V4L2_CID_VFLIP, flip_vertical); + CONTROL_MANUAL_CID ( V4L2_CID_HFLIP, flip_horizontal); # undef CONTROL_AUTO_CID # undef CONTROL_MANUAL_CID diff --git a/src/device.h b/src/device.h index bd0b4e2..6853d0d 100644 --- a/src/device.h +++ b/src/device.h @@ -90,6 +90,8 @@ struct controls_t { struct control_t backlight_compensation; struct control_t white_balance; struct control_t gain; + struct control_t flip_vertical; + struct control_t flip_horizontal; }; struct device_t { diff --git a/src/options.c b/src/options.c index 11f8141..389d6bf 100644 --- a/src/options.c +++ b/src/options.c @@ -92,6 +92,8 @@ enum _OPT_VALUES { _O_BACKLIGHT_COMPENSATION, _O_WHITE_BALANCE, _O_GAIN, + _O_FLIP_VERTICAL, + _O_FLIP_HORIZONTAL, _O_USER, _O_PASSWD, @@ -155,6 +157,8 @@ static const struct option _LONG_OPTS[] = { {"backlight-compensation", required_argument, NULL, _O_BACKLIGHT_COMPENSATION}, {"white-balance", required_argument, NULL, _O_WHITE_BALANCE}, {"gain", required_argument, NULL, _O_GAIN}, + {"flip-vertical", required_argument, NULL, _O_FLIP_VERTICAL}, + {"flip-horizontal", required_argument, NULL, _O_FLIP_HORIZONTAL}, {"host", required_argument, NULL, _O_HOST}, {"port", required_argument, NULL, _O_PORT}, @@ -360,6 +364,8 @@ int options_parse(struct options_t *options, struct device_t *dev, struct encode OPT_CTL_DEFAULT_NOBREAK(backlight_compensation); OPT_CTL_DEFAULT_NOBREAK(white_balance); OPT_CTL_DEFAULT_NOBREAK(gain); + OPT_CTL_DEFAULT_NOBREAK(flip_vertical); + OPT_CTL_DEFAULT_NOBREAK(flip_horizontal); break; case _O_BRIGHTNESS: OPT_CTL_AUTO(brightness); case _O_CONTRAST: OPT_CTL_MANUAL(contrast); @@ -370,6 +376,8 @@ int options_parse(struct options_t *options, struct device_t *dev, struct encode case _O_BACKLIGHT_COMPENSATION: OPT_CTL_MANUAL(backlight_compensation); case _O_WHITE_BALANCE: OPT_CTL_AUTO(white_balance); case _O_GAIN: OPT_CTL_AUTO(gain); + case _O_FLIP_VERTICAL: OPT_CTL_MANUAL(flip_vertical); + case _O_FLIP_HORIZONTAL: OPT_CTL_MANUAL(flip_horizontal); case _O_HOST: OPT_SET(server->host, optarg); case _O_PORT: OPT_NUMBER("--port", server->port, 1, 65535, 0); @@ -600,6 +608,8 @@ static void _help(struct device_t *dev, struct encoder_t *encoder, struct http_s printf(" --backlight-compensation ─ Set backlight compensation. Default: no change.\n\n"); printf(" --white-balance ───── Set white balance. Default: no change.\n\n"); printf(" --gain ────────────── Set gain. Default: no change.\n\n"); + printf(" --flip-vertical <1|0|default> ──────── Set vertical flip. Default: no change.\n\n"); + printf(" --flip-horizontal <1|0|default> ────── Set horizontal flip. Default: no change.\n\n"); printf(" Hint: use v4l2-ctl --list-ctrls-menus to query available controls of the device.\n\n"); printf("HTTP server options:\n"); printf("════════════════════\n");