rem: g_return_if_fail (bvw != NULL); g_return_if_fail (BACON_IS_VIDEO_WIDGET(bvw)); g_return_if_fail (GST_IS_PLAY(bvw->priv->play)); g_return_if_fail (object != NULL);  GValue value = { 0, }; GstCaps *metadata; GstProps *props; GList *p;  if (strcmp (param->name, "metadata") == 0) { g_message ("got metadata"); g_value_init (&value, param->value_type); g_object_get_property (G_OBJECT (object), param->name, &value); metadata = g_value_peek_pointer (&value); props = gst_caps_get_props (metadata); p = props->properties; while (p) { const gchar *name; const gchar *val; GstPropsEntry *entry = (GstPropsEntry *) p->data; name = gst_props_entry_get_name (entry); gst_props_entry_get_string (entry, &val); g_hash_table_replace (	bvw->priv->metadata_hash, g_ascii_strdown(name, -1), (char *) val); p = g_list_next (p); } g_signal_emit (G_OBJECT (bvw), bvw_table_signals[GOT_METADATA], 0, NULL);
add: g_return_if_fail (bvw != NULL); g_return_if_fail (BACON_IS_VIDEO_WIDGET (bvw)); g_return_if_fail (GST_IS_PLAY (bvw->priv->play)); g_return_if_fail (object != NULL);  GValue value = { 0, }; GstCaps *metadata; GstProps *props; GList *p;  if (strcmp (param->name, "metadata") == 0) { g_message ("got metadata"); g_value_init (&value, param->value_type); g_object_get_property (G_OBJECT (object), param->name, &value); metadata = g_value_peek_pointer (&value); props = gst_caps_get_props (metadata); p = props->properties; while (p) { const gchar *name; const gchar *val; GstPropsEntry *entry = (GstPropsEntry *) p->data; name = gst_props_entry_get_name (entry); gst_props_entry_get_string (entry, &val); g_hash_table_replace (bvw->priv->metadata_hash, g_ascii_strdown (name, -1), (char *) val); p = g_list_next (p);
context: bacon_video_widget_information (GstPlay *play,								GstObject* object,								GParamSpec *param,								BaconVideoWidget *bvw){	g_return_if_fail (bvw != NULL);	g_return_if_fail (BACON_IS_VIDEO_WIDGET(bvw));	g_return_if_fail (GST_IS_PLAY(bvw->priv->play));	g_return_if_fail (object != NULL);		GValue value = { 0, };	GstCaps *metadata;	GstProps *props;	GList *p;		if (strcmp (param->name, "metadata") == 0) {		g_message ("got metadata");		g_value_init (&value, param->value_type);		g_object_get_property (G_OBJECT (object), param->name, &value);		metadata = g_value_peek_pointer (&value);		props = gst_caps_get_props (metadata);		p = props->properties;		while (p) {			const gchar *name;			const gchar *val;			GstPropsEntry *entry = (GstPropsEntry *) p->data;			name = gst_props_entry_get_name (entry);			gst_props_entry_get_string (entry, &val);			g_hash_table_replace (	bvw->priv->metadata_hash,									g_ascii_strdown(name, -1), (char *) val);			p = g_list_next (p);		}		g_signal_emit (G_OBJECT (bvw), bvw_table_signals[GOT_METADATA], 0, NULL);	}}