mirror of
https://github.com/pikvm/ustreamer.git
synced 2026-02-26 19:56:33 +00:00
refactoring
This commit is contained in:
10
src/device.c
10
src/device.c
@@ -626,20 +626,20 @@ static void _device_apply_controls(struct device_t *dev) {
|
||||
}
|
||||
|
||||
# define CONTROL_MANUAL_CID(_cid, _field) { \
|
||||
if (dev->ctl._field.value_set) { \
|
||||
if (dev->ctl._field.mode == CTL_MODE_VALUE) { \
|
||||
SET_CID_VALUE(_cid, _field, dev->ctl._field.value, false); \
|
||||
} else if (dev->ctl._field.default_set) { \
|
||||
} else if (dev->ctl._field.mode == CTL_MODE_DEFAULT) { \
|
||||
SET_CID_DEFAULT(_cid, _field, false); \
|
||||
} \
|
||||
}
|
||||
|
||||
# define CONTROL_AUTO_CID(_cid_auto, _cid_manual, _field) { \
|
||||
if (dev->ctl._field.value_set) { \
|
||||
if (dev->ctl._field.mode == CTL_MODE_VALUE) { \
|
||||
SET_CID_VALUE(_cid_auto, _field##_auto, 0, true); \
|
||||
SET_CID_VALUE(_cid_manual, _field, dev->ctl._field.value, false); \
|
||||
} else if (dev->ctl._field.auto_set) { \
|
||||
} else if (dev->ctl._field.mode == CTL_MODE_AUTO) { \
|
||||
SET_CID_VALUE(_cid_auto, _field##_auto, 1, false); \
|
||||
} else if (dev->ctl._field.default_set) { \
|
||||
} else if (dev->ctl._field.mode == CTL_MODE_DEFAULT) { \
|
||||
SET_CID_VALUE(_cid_auto, _field##_auto, 0, true); /* Reset inactive flag */ \
|
||||
SET_CID_DEFAULT(_cid_manual, _field, false); \
|
||||
SET_CID_DEFAULT(_cid_auto, _field##_auto, false); \
|
||||
|
||||
13
src/device.h
13
src/device.h
@@ -64,11 +64,16 @@ struct device_runtime_t {
|
||||
bool capturing;
|
||||
};
|
||||
|
||||
enum control_mode_t {
|
||||
CTL_MODE_NONE = 0,
|
||||
CTL_MODE_VALUE,
|
||||
CTL_MODE_AUTO,
|
||||
CTL_MODE_DEFAULT,
|
||||
};
|
||||
|
||||
struct control_t {
|
||||
int value;
|
||||
bool value_set;
|
||||
bool auto_set;
|
||||
bool default_set;
|
||||
enum control_mode_t mode;
|
||||
int value;
|
||||
};
|
||||
|
||||
struct controls_t {
|
||||
|
||||
@@ -271,18 +271,14 @@ int options_parse(struct options_t *options, struct device_t *dev, struct encode
|
||||
}
|
||||
|
||||
# define OPT_CTL_DEFAULT_NOBREAK(_dest) { \
|
||||
dev->ctl._dest.value_set = false; \
|
||||
dev->ctl._dest.auto_set = false; \
|
||||
dev->ctl._dest.default_set = true; \
|
||||
dev->ctl._dest.mode = CTL_MODE_DEFAULT; \
|
||||
}
|
||||
|
||||
# define OPT_CTL_MANUAL(_dest) { \
|
||||
if (!strcasecmp(optarg, "default")) { \
|
||||
OPT_CTL_DEFAULT_NOBREAK(_dest); \
|
||||
} else { \
|
||||
dev->ctl._dest.value_set = true; \
|
||||
dev->ctl._dest.auto_set = false; \
|
||||
dev->ctl._dest.default_set = false; \
|
||||
dev->ctl._dest.mode = CTL_MODE_VALUE; \
|
||||
OPT_NUMBER("--"#_dest, dev->ctl._dest.value, INT_MIN, INT_MAX, 0); \
|
||||
} \
|
||||
break; \
|
||||
@@ -292,13 +288,9 @@ int options_parse(struct options_t *options, struct device_t *dev, struct encode
|
||||
if (!strcasecmp(optarg, "default")) { \
|
||||
OPT_CTL_DEFAULT_NOBREAK(_dest); \
|
||||
} else if (!strcasecmp(optarg, "auto")) { \
|
||||
dev->ctl._dest.value_set = false; \
|
||||
dev->ctl._dest.auto_set = true; \
|
||||
dev->ctl._dest.default_set = false; \
|
||||
dev->ctl._dest.mode = CTL_MODE_AUTO; \
|
||||
} else { \
|
||||
dev->ctl._dest.value_set = true; \
|
||||
dev->ctl._dest.auto_set = false; \
|
||||
dev->ctl._dest.default_set = false; \
|
||||
dev->ctl._dest.mode = CTL_MODE_VALUE; \
|
||||
OPT_NUMBER("--"#_dest, dev->ctl._dest.value, INT_MIN, INT_MAX, 0); \
|
||||
} \
|
||||
break; \
|
||||
|
||||
Reference in New Issue
Block a user