+ case GST_MESSAGE_HAVE_CONTEXT:{
+ GstContext *context;
+ const gchar *context_type;
+ gchar *context_str;
+
+ gst_message_parse_have_context (message, &context);
+
+ context_type = gst_context_get_context_type (context);
+ context_str =
+ gst_structure_to_string (gst_context_get_structure (context));
+ PRINT (_("Got context from element '%s': %s=%s\n"),
+ GST_ELEMENT_NAME (GST_MESSAGE_SRC (message)), context_type,
+ context_str);
+ g_free (context_str);
+ gst_context_unref (context);
+ break;
+ }
+ case GST_MESSAGE_PROPERTY_NOTIFY:{
+ const GValue *val;
+ const gchar *name;
+ GstObject *obj;
+ gchar *val_str = NULL;
+ gchar **ex_prop, *obj_name;
+
+ if (quiet)
+ break;
+
+ gst_message_parse_property_notify (message, &obj, &name, &val);
+
+ /* Let's not print anything for excluded properties... */
+ ex_prop = exclude_args;
+ while (ex_prop != NULL && *ex_prop != NULL) {
+ if (strcmp (name, *ex_prop) == 0)
+ break;
+ ex_prop++;
+ }
+ if (ex_prop != NULL && *ex_prop != NULL)
+ break;
+
+ obj_name = gst_object_get_path_string (GST_OBJECT (obj));
+ if (val != NULL) {
+ if (G_VALUE_HOLDS_STRING (val))
+ val_str = g_value_dup_string (val);
+ else if (G_VALUE_TYPE (val) == GST_TYPE_CAPS)
+ val_str = gst_caps_to_string (g_value_get_boxed (val));
+ else if (G_VALUE_TYPE (val) == GST_TYPE_TAG_LIST)
+ val_str = gst_tag_list_to_string (g_value_get_boxed (val));
+ else if (G_VALUE_TYPE (val) == GST_TYPE_STRUCTURE)
+ val_str = gst_structure_to_string (g_value_get_boxed (val));
+ else
+ val_str = gst_value_serialize (val);
+ } else {
+ val_str = g_strdup ("(no value)");
+ }
+
+ g_print ("%s: %s = %s\n", obj_name, name, val_str);
+ g_free (obj_name);
+ g_free (val_str);
+ break;
+ }