Example #1
0
ObjectNodeInfo GstUtils::parse_caps(const RefPtr<Caps>& caps)
{
	Glib::ustring caps_str;

	bool finish = true;

	if (!caps || caps->empty())
		caps_str = "EMPTY";
	else if (caps->is_any())
		caps_str = "ANY";
	else finish = false;

	if (finish)
		return ObjectNodeInfo(caps_str);

	ObjectNodeInfo ret;

	for (guint i = 0; i < caps->size(); i++)
	{
		Structure structure = caps->get_structure(i);
		ObjectNodeInfo obj;

		for (int j = 0; j < structure.size(); j++)
		{
			Glib::ustring field_name = structure.get_nth_field_name(j);
			Glib::ValueBase base;

			structure.get_field(field_name, base);
			obj.insert(field_name, ObjectNodeInfo(gst_value_serialize(base.gobj())));
		}
		ret.insert(structure.get_name(), obj);
	}


	return ret;
}