spa-node: parse bool properties

Add some more helpers to parse property values
This commit is contained in:
Wim Taymans 2017-10-18 10:02:55 +02:00
parent 5a9c4981d8
commit 5e21edd8d5
2 changed files with 20 additions and 4 deletions

View file

@ -181,21 +181,29 @@ setup_props(struct pw_core *core, struct spa_node *spa_node, struct pw_propertie
pw_log_info("configure prop %s", key); pw_log_info("configure prop %s", key);
switch(prop->body.value.type) { switch(prop->body.value.type) {
case SPA_POD_TYPE_BOOL:
SPA_POD_VALUE(struct spa_pod_bool, &prop->body.value) =
pw_properties_parse_bool(value);
break;
case SPA_POD_TYPE_ID: case SPA_POD_TYPE_ID:
SPA_POD_VALUE(struct spa_pod_id, &prop->body.value) = SPA_POD_VALUE(struct spa_pod_id, &prop->body.value) =
spa_type_map_get_id(t->map, value); spa_type_map_get_id(t->map, value);
break; break;
case SPA_POD_TYPE_INT: case SPA_POD_TYPE_INT:
SPA_POD_VALUE(struct spa_pod_int, &prop->body.value) = atoi(value); SPA_POD_VALUE(struct spa_pod_int, &prop->body.value) =
pw_properties_parse_int(value);
break; break;
case SPA_POD_TYPE_LONG: case SPA_POD_TYPE_LONG:
SPA_POD_VALUE(struct spa_pod_long, &prop->body.value) = atoi(value); SPA_POD_VALUE(struct spa_pod_long, &prop->body.value) =
pw_properties_parse_int64(value);
break; break;
case SPA_POD_TYPE_FLOAT: case SPA_POD_TYPE_FLOAT:
SPA_POD_VALUE(struct spa_pod_float, &prop->body.value) = atof(value); SPA_POD_VALUE(struct spa_pod_float, &prop->body.value) =
pw_properties_parse_float(value);
break; break;
case SPA_POD_TYPE_DOUBLE: case SPA_POD_TYPE_DOUBLE:
SPA_POD_VALUE(struct spa_pod_double, &prop->body.value) = atof(value); SPA_POD_VALUE(struct spa_pod_double, &prop->body.value) =
pw_properties_parse_double(value);
break; break;
case SPA_POD_TYPE_STRING: case SPA_POD_TYPE_STRING:
break; break;

View file

@ -83,6 +83,14 @@ static inline uint64_t pw_properties_parse_uint64(const char *value) {
return strtoull(value, NULL, 0); return strtoull(value, NULL, 0);
} }
static inline float pw_properties_parse_float(const char *value) {
return strtof(value, NULL);
}
static inline double pw_properties_parse_double(const char *value) {
return strtod(value, NULL);
}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif