diff options
author | LRN <lrn1986@gmail.com> | 2012-08-16 07:20:55 +0000 |
---|---|---|
committer | LRN <lrn1986@gmail.com> | 2012-08-16 07:20:55 +0000 |
commit | 804a999c4550f236f835f391871c70bf90ffec1a (patch) | |
tree | b6274fbf66dab9b97e9222f0ddbc3532c2dc2527 | |
parent | eabea63a7943baa3694bb30b42dea57c3b9165b9 (diff) | |
download | libextractor-804a999c4550f236f835f391871c70bf90ffec1a.tar.gz libextractor-804a999c4550f236f835f391871c70bf90ffec1a.zip |
Be more picky when serializing types for unknown vals
-rw-r--r-- | src/plugins/gstreamer_extractor.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/plugins/gstreamer_extractor.c b/src/plugins/gstreamer_extractor.c index 81f2d5b..2d6a2bb 100644 --- a/src/plugins/gstreamer_extractor.c +++ b/src/plugins/gstreamer_extractor.c | |||
@@ -847,7 +847,8 @@ send_structure_foreach (GQuark field_id, const GValue *value, | |||
847 | { | 847 | { |
848 | PrivStruct *ps = (PrivStruct *) user_data; | 848 | PrivStruct *ps = (PrivStruct *) user_data; |
849 | gchar *str; | 849 | gchar *str; |
850 | const char *field_name = g_quark_to_string (field_id); | 850 | const gchar *field_name = g_quark_to_string (field_id); |
851 | const gchar *type_name = g_type_name (G_VALUE_TYPE (value)); | ||
851 | 852 | ||
852 | /* TODO: check a list of known quarks, use specific EXTRACTOR_MetaType */ | 853 | /* TODO: check a list of known quarks, use specific EXTRACTOR_MetaType */ |
853 | switch (G_VALUE_TYPE (value)) | 854 | switch (G_VALUE_TYPE (value)) |
@@ -856,9 +857,17 @@ send_structure_foreach (GQuark field_id, const GValue *value, | |||
856 | str = g_value_dup_string (value); | 857 | str = g_value_dup_string (value); |
857 | break; | 858 | break; |
858 | case G_TYPE_UINT: | 859 | case G_TYPE_UINT: |
860 | case G_TYPE_INT: | ||
859 | case G_TYPE_DOUBLE: | 861 | case G_TYPE_DOUBLE: |
860 | default: | 862 | case G_TYPE_BOOLEAN: |
861 | str = gst_value_serialize (value); | 863 | str = gst_value_serialize (value); |
864 | break; | ||
865 | default: | ||
866 | /* This is a potential source of invalid characters */ | ||
867 | /* And it also might attempt to serialize binary data - such as images. */ | ||
868 | str = NULL; | ||
869 | g_print ("Will not try to serialize structure field %s (%s)\n", field_name, type_name); | ||
870 | break; | ||
862 | } | 871 | } |
863 | if (str != NULL) | 872 | if (str != NULL) |
864 | { | 873 | { |
@@ -1164,7 +1173,9 @@ send_tag_foreach (const GstTagList * tags, const gchar * tag, | |||
1164 | str = g_value_dup_string (&val); | 1173 | str = g_value_dup_string (&val); |
1165 | break; | 1174 | break; |
1166 | case G_TYPE_UINT: | 1175 | case G_TYPE_UINT: |
1176 | case G_TYPE_INT: | ||
1167 | case G_TYPE_DOUBLE: | 1177 | case G_TYPE_DOUBLE: |
1178 | case G_TYPE_BOOLEAN: | ||
1168 | str = gst_value_serialize (&val); | 1179 | str = gst_value_serialize (&val); |
1169 | break; | 1180 | break; |
1170 | default: | 1181 | default: |
@@ -1319,9 +1330,12 @@ send_toc_tags_foreach (const GstTagList * tags, const gchar * tag, | |||
1319 | PrivStruct *ps = (PrivStruct *) user_data; | 1330 | PrivStruct *ps = (PrivStruct *) user_data; |
1320 | GValue val = { 0, }; | 1331 | GValue val = { 0, }; |
1321 | gchar *topen, *str, *tclose; | 1332 | gchar *topen, *str, *tclose; |
1333 | const gchar *type_name; | ||
1322 | 1334 | ||
1323 | gst_tag_list_copy_value (&val, tags, tag); | 1335 | gst_tag_list_copy_value (&val, tags, tag); |
1324 | 1336 | ||
1337 | type_name = g_type_name (G_VALUE_TYPE (&val)); | ||
1338 | |||
1325 | switch (G_VALUE_TYPE (&val)) | 1339 | switch (G_VALUE_TYPE (&val)) |
1326 | { | 1340 | { |
1327 | case G_TYPE_STRING: | 1341 | case G_TYPE_STRING: |
@@ -1336,6 +1350,7 @@ send_toc_tags_foreach (const GstTagList * tags, const gchar * tag, | |||
1336 | /* This is a potential source of invalid characters */ | 1350 | /* This is a potential source of invalid characters */ |
1337 | /* And it also might attempt to serialize binary data - such as images. */ | 1351 | /* And it also might attempt to serialize binary data - such as images. */ |
1338 | str = NULL; | 1352 | str = NULL; |
1353 | g_print ("Will not try to serialize tag %s (%s)\n", tag, type_name); | ||
1339 | break; | 1354 | break; |
1340 | } | 1355 | } |
1341 | if (str != NULL) | 1356 | if (str != NULL) |