Hi guys,
Please help explain why the int_value of the pa_json_object structure needs to be declared as int64_t.
./src/pulsecore/json.c:
struct pa_json_object {
pa_json_type type;
union {
int64_t int_value;
double double_value;
bool bool_value;
char *string_value;
pa_hashmap *object_values; /* name -> object */
pa_idxset *array_values; /* objects */
};
};
Can I change "int64_t int_value;" to "int int_value;"?
In the ./src/pulse/format.c file, the function pa_json_object_get_int
is called multiple times, converting int64_t to int.
./src/pulse/format.c:
int pa_format_info_get_prop_int(const pa_format_info *f, const char *key, int *v) {
const char *str;
pa_json_object *o;
pa_assert(f);
pa_assert(key);
pa_assert(v);
str = pa_proplist_gets(f->plist, key);
if (!str)
return -PA_ERR_NOENTITY;
o = pa_json_parse(str);
if (!o) {
pa_log_debug("Failed to parse format info property '%s'.", key);
return -PA_ERR_INVALID;
}
if (pa_json_object_get_type(o) != PA_JSON_TYPE_INT) {
pa_log_debug("Format info property '%s' type is not int.", key);
pa_json_object_free(o);
return -PA_ERR_INVALID;
}
*v = pa_json_object_get_int(o);
pa_json_object_free(o);
return 0;
}
Thanks,
Chengyi