mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-28 14:52:24 +00:00
Add parsing of MAX, MIN, etc. Add support for ranges in _set. Remove g_prints.
Original commit message from CVS: Add parsing of MAX, MIN, etc. Add support for ranges in _set. Remove g_prints.
This commit is contained in:
parent
bb27826e6a
commit
a3b430b8cd
2 changed files with 49 additions and 23 deletions
|
@ -405,9 +405,21 @@ void gst_structure_set_valist(GstStructure *structure, const gchar *fieldname,
|
||||||
i = va_arg(varargs, int);
|
i = va_arg(varargs, int);
|
||||||
g_value_init(&field.value, GST_TYPE_FOURCC);
|
g_value_init(&field.value, GST_TYPE_FOURCC);
|
||||||
gst_value_set_fourcc(&field.value, i);
|
gst_value_set_fourcc(&field.value, i);
|
||||||
break;
|
} else if (type == GST_TYPE_INT_RANGE){
|
||||||
}else{
|
int min, max;
|
||||||
|
min = va_arg(varargs, int);
|
||||||
|
max = va_arg(varargs, int);
|
||||||
|
g_value_init(&field.value, GST_TYPE_INT_RANGE);
|
||||||
|
gst_value_set_int_range(&field.value, min, max);
|
||||||
|
} else if (type == GST_TYPE_DOUBLE_RANGE){
|
||||||
|
double min, max;
|
||||||
|
min = va_arg(varargs, double);
|
||||||
|
max = va_arg(varargs, double);
|
||||||
|
g_value_init(&field.value, GST_TYPE_DOUBLE_RANGE);
|
||||||
|
gst_value_set_double_range(&field.value, min, max);
|
||||||
|
} else {
|
||||||
g_critical("unimplemented vararg field type %d\n", (int)type);
|
g_critical("unimplemented vararg field type %d\n", (int)type);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1046,8 +1058,6 @@ gst_structure_to_string(const GstStructure *structure)
|
||||||
t = _gst_structure_wrap_string(g_strdup(g_value_get_string(&s_val)));
|
t = _gst_structure_wrap_string(g_strdup(g_value_get_string(&s_val)));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_print("appending: %s=(%s)%s\n", g_quark_to_string(field->name),
|
|
||||||
_gst_structure_to_abbr(type), t);
|
|
||||||
g_string_append_printf(s, ", %s=(%s)%s", g_quark_to_string(field->name),
|
g_string_append_printf(s, ", %s=(%s)%s", g_quark_to_string(field->name),
|
||||||
_gst_structure_to_abbr(type), t);
|
_gst_structure_to_abbr(type), t);
|
||||||
g_free(t);
|
g_free(t);
|
||||||
|
@ -1116,8 +1126,27 @@ gst_value_from_string (GValue *value, const char *s)
|
||||||
int x;
|
int x;
|
||||||
x = strtol (s, &end, 0);
|
x = strtol (s, &end, 0);
|
||||||
if (*end == 0) {
|
if (*end == 0) {
|
||||||
g_value_set_int (value, x);
|
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
} else {
|
||||||
|
if (g_ascii_strcasecmp (s, "little_endian") == 0) {
|
||||||
|
x = G_LITTLE_ENDIAN;
|
||||||
|
ret = TRUE;
|
||||||
|
} else if (g_ascii_strcasecmp (s, "big_endian") == 0) {
|
||||||
|
x = G_BIG_ENDIAN;
|
||||||
|
ret = TRUE;
|
||||||
|
} else if (g_ascii_strcasecmp (s, "byte_order") == 0) {
|
||||||
|
x = G_BYTE_ORDER;
|
||||||
|
ret = TRUE;
|
||||||
|
} else if (g_ascii_strcasecmp (s, "min") == 0) {
|
||||||
|
x = G_MININT;
|
||||||
|
ret = TRUE;
|
||||||
|
} else if (g_ascii_strcasecmp (s, "max") == 0) {
|
||||||
|
x = G_MAXINT;
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ret) {
|
||||||
|
g_value_set_int (value, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1136,8 +1165,18 @@ gst_value_from_string (GValue *value, const char *s)
|
||||||
double x;
|
double x;
|
||||||
x = g_ascii_strtod (s, &end);
|
x = g_ascii_strtod (s, &end);
|
||||||
if (*end == 0) {
|
if (*end == 0) {
|
||||||
g_value_set_double (value, x);
|
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
} else {
|
||||||
|
if (g_ascii_strcasecmp (s, "min") == 0) {
|
||||||
|
x = G_MINDOUBLE;
|
||||||
|
ret = TRUE;
|
||||||
|
} else if (g_ascii_strcasecmp (s, "max") == 0) {
|
||||||
|
x = G_MAXDOUBLE;
|
||||||
|
ret = TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ret) {
|
||||||
|
g_value_set_double (value, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1198,37 +1237,28 @@ _gst_structure_parse_range (gchar *s, gchar **after, GValue *value, GType type)
|
||||||
GType range_type;
|
GType range_type;
|
||||||
gboolean ret;
|
gboolean ret;
|
||||||
|
|
||||||
g_print("parse_range: \"%s\"\n", s);
|
|
||||||
|
|
||||||
g_print("%d \"%s\"\n", __LINE__, s);
|
|
||||||
if (*s != '[') return FALSE;
|
if (*s != '[') return FALSE;
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
g_print("%d \"%s\"\n", __LINE__, s);
|
|
||||||
ret = _gst_structure_parse_value(s, &s, &value1, type);
|
ret = _gst_structure_parse_value(s, &s, &value1, type);
|
||||||
if (ret == FALSE) return FALSE;
|
if (ret == FALSE) return FALSE;
|
||||||
|
|
||||||
while (g_ascii_isspace (*s)) s++;
|
while (g_ascii_isspace (*s)) s++;
|
||||||
|
|
||||||
g_print("%d \"%s\"\n", __LINE__, s);
|
|
||||||
if (*s != ',') return FALSE;
|
if (*s != ',') return FALSE;
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
while (g_ascii_isspace (*s)) s++;
|
while (g_ascii_isspace (*s)) s++;
|
||||||
|
|
||||||
g_print("%d \"%s\"\n", __LINE__, s);
|
|
||||||
ret = _gst_structure_parse_value(s, &s, &value2, type);
|
ret = _gst_structure_parse_value(s, &s, &value2, type);
|
||||||
if (ret == FALSE) return FALSE;
|
if (ret == FALSE) return FALSE;
|
||||||
|
|
||||||
while (g_ascii_isspace (*s)) s++;
|
while (g_ascii_isspace (*s)) s++;
|
||||||
|
|
||||||
g_print("%d \"%s\"\n", __LINE__, s);
|
|
||||||
if (*s != ']') return FALSE;
|
if (*s != ']') return FALSE;
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
g_print("type1 %s type2 %s\n", g_type_name(G_VALUE_TYPE(&value1)),
|
|
||||||
g_type_name(G_VALUE_TYPE(&value2)));
|
|
||||||
|
|
||||||
if (G_VALUE_TYPE (&value1) != G_VALUE_TYPE (&value2)) return FALSE;
|
if (G_VALUE_TYPE (&value1) != G_VALUE_TYPE (&value2)) return FALSE;
|
||||||
|
|
||||||
if (G_VALUE_TYPE (&value1) == G_TYPE_DOUBLE) {
|
if (G_VALUE_TYPE (&value1) == G_TYPE_DOUBLE) {
|
||||||
|
@ -1259,7 +1289,6 @@ _gst_structure_parse_list (gchar *s, gchar **after, GValue *value, GType type)
|
||||||
gboolean ret;
|
gboolean ret;
|
||||||
GArray *array;
|
GArray *array;
|
||||||
|
|
||||||
g_print("parse_list: \"%s\"\n", s);
|
|
||||||
g_value_init(value, GST_TYPE_LIST);
|
g_value_init(value, GST_TYPE_LIST);
|
||||||
array = g_value_peek_pointer (value);
|
array = g_value_peek_pointer (value);
|
||||||
|
|
||||||
|
@ -1322,7 +1351,6 @@ _gst_structure_parse_field (gchar *str, gchar **after, GstStructureField *field)
|
||||||
gchar *s;
|
gchar *s;
|
||||||
gchar c;
|
gchar c;
|
||||||
|
|
||||||
g_print("parse_field: \"%s\"\n", str);
|
|
||||||
s = str;
|
s = str;
|
||||||
|
|
||||||
while(g_ascii_isspace (*s)) s++;
|
while(g_ascii_isspace (*s)) s++;
|
||||||
|
@ -1360,7 +1388,6 @@ _gst_structure_parse_value (gchar *str, gchar **after, GValue *value,
|
||||||
int ret;
|
int ret;
|
||||||
GType type = default_type;
|
GType type = default_type;
|
||||||
|
|
||||||
g_print("parse_value: \"%s\"\n", str);
|
|
||||||
|
|
||||||
s = str;
|
s = str;
|
||||||
while(g_ascii_isspace (*s)) s++;
|
while(g_ascii_isspace (*s)) s++;
|
||||||
|
@ -1381,9 +1408,7 @@ g_print("parse_value: \"%s\"\n", str);
|
||||||
|
|
||||||
c = *type_end;
|
c = *type_end;
|
||||||
*type_end = 0;
|
*type_end = 0;
|
||||||
g_print("type name is \"%s\"\n",type_name);
|
|
||||||
type = _gst_structure_from_abbr(type_name);
|
type = _gst_structure_from_abbr(type_name);
|
||||||
g_print("type n is \"%s\"\n",g_type_name(type));
|
|
||||||
*type_end = c;
|
*type_end = c;
|
||||||
|
|
||||||
if (type == G_TYPE_INVALID) return FALSE;
|
if (type == G_TYPE_INVALID) return FALSE;
|
||||||
|
@ -1469,7 +1494,6 @@ gst_structure_from_string (const gchar *string, gchar **end)
|
||||||
|
|
||||||
memset(&field,0,sizeof(field));
|
memset(&field,0,sizeof(field));
|
||||||
res = _gst_structure_parse_field (r, &r, &field);
|
res = _gst_structure_parse_field (r, &r, &field);
|
||||||
g_print("returned %d \"%s\"\n", res, r);
|
|
||||||
if (!res) {
|
if (!res) {
|
||||||
gst_structure_free (structure);
|
gst_structure_free (structure);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -38,6 +38,8 @@ struct _GstStructure {
|
||||||
GArray *fields;
|
GArray *fields;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define GST_TYPE_STRUCTURE (gst_structure_get_type())
|
||||||
|
|
||||||
GType gst_structure_get_type(void);
|
GType gst_structure_get_type(void);
|
||||||
void _gst_structure_initialize(void);
|
void _gst_structure_initialize(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue