File 0004-spa-group-the-spa-headers-into-doxygen-modules.patch of Package pipewire.30045

From 07533cb708f92efe85c5c7c84b36cbe4155ff15f Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer@who-t.net>
Date: Fri, 21 May 2021 14:03:07 +1000
Subject: [PATCH] spa: group the spa headers into doxygen modules

Subdirectories buffer, control, debug, monitor, pod, support and utils, others
are still missing. Headers are grouped either per subdirectory (e.g. buffer/
gets added to group spa_buffer) or per-file (e.g. spa_json is a separate
group), whatever seemed like the most sensible approach.
---
 spa/include/spa/buffer/alloc.h              | 20 ++++++++++++++------
 spa/include/spa/buffer/buffer.h             | 11 ++++++++++-
 spa/include/spa/buffer/meta.h               | 11 ++++++++---
 spa/include/spa/buffer/type-info.h          |  9 +++++++++
 spa/include/spa/control/control.h           | 11 ++++++++++-
 spa/include/spa/control/type-info.h         |  9 +++++++++
 spa/include/spa/debug/buffer.h              | 13 +++++++++++++
 spa/include/spa/debug/dict.h                |  9 +++++++++
 spa/include/spa/debug/format.h              |  9 +++++++++
 spa/include/spa/debug/mem.h                 |  9 +++++++++
 spa/include/spa/debug/node.h                |  9 +++++++++
 spa/include/spa/debug/pod.h                 | 10 ++++++++++
 spa/include/spa/debug/types.h               |  9 +++++++++
 spa/include/spa/graph/graph.h               | 12 ++++++++++++
 spa/include/spa/monitor/device.h            | 10 +++++++++-
 spa/include/spa/node/command.h              |  9 +++++++++
 spa/include/spa/node/event.h                |  9 +++++++++
 spa/include/spa/node/io.h                   |  9 +++++++++
 spa/include/spa/node/keys.h                 |  9 +++++++++
 spa/include/spa/node/node.h                 | 16 +++++++++++++---
 spa/include/spa/node/type-info.h            |  9 +++++++++
 spa/include/spa/node/utils.h                |  9 +++++++++
 spa/include/spa/param/audio/format-utils.h  |  8 ++++++++
 spa/include/spa/param/audio/format.h        |  9 +++++++++
 spa/include/spa/param/audio/layout.h        |  8 ++++++++
 spa/include/spa/param/audio/raw.h           |  9 +++++++++
 spa/include/spa/param/audio/type-info.h     |  9 +++++++++
 spa/include/spa/param/bluetooth/audio.h     |  8 ++++++++
 spa/include/spa/param/bluetooth/type-info.h |  9 +++++++++
 spa/include/spa/param/format-utils.h        |  9 +++++++++
 spa/include/spa/param/format.h              |  9 +++++++++
 spa/include/spa/param/param.h               | 12 ++++++++++++
 spa/include/spa/param/profiler.h            |  9 +++++++++
 spa/include/spa/param/props.h               |  9 +++++++++
 spa/include/spa/param/type-info.h           |  9 +++++++++
 spa/include/spa/param/video/chroma.h        |  9 +++++++++
 spa/include/spa/param/video/color.h         |  9 +++++++++
 spa/include/spa/param/video/encoded.h       |  9 +++++++++
 spa/include/spa/param/video/format-utils.h  |  8 ++++++++
 spa/include/spa/param/video/format.h        |  9 +++++++++
 spa/include/spa/param/video/multiview.h     |  9 +++++++++
 spa/include/spa/param/video/raw.h           |  9 +++++++++
 spa/include/spa/param/video/type-info.h     |  8 ++++++++
 spa/include/spa/pod/builder.h               | 12 ++++++++++++
 spa/include/spa/pod/command.h               |  8 ++++++++
 spa/include/spa/pod/compare.h               |  9 +++++++++
 spa/include/spa/pod/event.h                 |  9 +++++++++
 spa/include/spa/pod/filter.h                |  9 +++++++++
 spa/include/spa/pod/iter.h                  |  9 +++++++++
 spa/include/spa/pod/parser.h                |  9 +++++++++
 spa/include/spa/pod/pod.h                   |  8 ++++++++
 spa/include/spa/pod/vararg.h                |  9 +++++++++
 spa/include/spa/support/cpu.h               | 13 +++++++++++++
 spa/include/spa/support/dbus.h              |  9 +++++++++
 spa/include/spa/support/i18n.h              |  9 +++++++++
 spa/include/spa/support/log-impl.h          |  9 +++++++++
 spa/include/spa/support/log.h               | 12 ++++++++++++
 spa/include/spa/support/loop.h              |  9 +++++++++
 spa/include/spa/support/plugin.h            | 13 +++++++++++++
 spa/include/spa/support/system.h            |  9 +++++++++
 spa/include/spa/utils/defs.h                | 12 ++++++++++++
 spa/include/spa/utils/dict.h                |  9 +++++++++
 spa/include/spa/utils/hook.h                | 18 ++++++++++++++----
 spa/include/spa/utils/json.h                | 12 ++++++++++++
 spa/include/spa/utils/keys.h                | 12 ++++++++++++
 spa/include/spa/utils/list.h                |  9 +++++++++
 spa/include/spa/utils/names.h               | 12 ++++++++++++
 spa/include/spa/utils/result.h              |  9 +++++++++
 spa/include/spa/utils/ringbuffer.h          | 13 +++++++++++--
 spa/include/spa/utils/string.h              | 11 +++++++++++
 spa/include/spa/utils/type-info.h           |  9 +++++++++
 spa/include/spa/utils/type.h                | 12 ++++++++++++
 72 files changed, 700 insertions(+), 21 deletions(-)

#diff --git a/spa/include/spa/buffer/alloc.h b/spa/include/spa/buffer/alloc.h
#index d75fbc533f..6417073838 100644
#--- a/spa/include/spa/buffer/alloc.h
#+++ b/spa/include/spa/buffer/alloc.h
#@@ -29,6 +29,11 @@ extern "C" {
# 
# #include <spa/buffer/buffer.h>
# 
#+/**
#+ * \addtogroup spa_buffer
#+ * \{
#+ */
#+
# /** information about the buffer layout */
# struct spa_buffer_alloc_info {
# #define SPA_BUFFER_ALLOC_FLAG_INLINE_META	(1<<0)	/**< add metadata data in the skeleton */
#@@ -178,7 +183,7 @@ static inline int spa_buffer_alloc_fill_info(struct spa_buffer_alloc_info *info,
# /**
#  * Fill skeleton and data according to the allocation info
#  *
#- * Use the allocation info to create a \ref struct spa_buffer into
#+ * Use the allocation info to create a struct \ref spa_buffer into
#  * \a skel_mem and \a data_mem.
#  *
#  * Depending on the flags given when calling \ref
#@@ -186,10 +191,10 @@ static inline int spa_buffer_alloc_fill_info(struct spa_buffer_alloc_info *info,
#  * will be referenced in either skel_mem or data_mem.
#  *
#  * \param info an allocation info
#- * \param skel_mem memory to hold the \ref struct spa_buffer and the
#+ * \param skel_mem memory to hold the struct \ref spa_buffer and the
#  *  pointers to meta, chunk and memory.
#  * \param data_mem memory to hold the meta, chunk and memory
#- * \return a \ref struct spa_buffer in \a skel_mem
#+ * \return a struct \ref spa_buffer in \a skel_mem
#  */
# static inline struct spa_buffer *
# spa_buffer_alloc_layout(struct spa_buffer_alloc_info *info,
#@@ -262,8 +267,8 @@ spa_buffer_alloc_layout(struct spa_buffer_alloc_info *info,
#  *
#  * \param info the allocation info for one buffer
#  * \param n_buffers the number of buffers to create
#- * \param buffer a array with space to hold \a n_buffers pointers to buffers
#- * \param skel_mem memory for the \ref struct spa_buffer
#+ * \param buffers a array with space to hold \a n_buffers pointers to buffers
#+ * \param skel_mem memory for the struct \ref spa_buffer
#  * \param data_mem memory for the meta, chunk, memory of the buffer if not
#  *		inlined in the skeleton.
#  * \return 0 on success.
#@@ -299,7 +304,7 @@ spa_buffer_alloc_layout_array(struct spa_buffer_alloc_info *info,
#  * \param n_datas number of datas
#  * \param datas \a n_datas memory specification
#  * \param data_aligns \a n_datas alignment specifications
#- * \returns an array of \a n_buffers pointers to \ref struct spa_buffer
#+ * \returns an array of \a n_buffers pointers to struct \ref spa_buffer
#  *     with the given metadata, data and alignment or NULL when
#  *     allocation failed.
#  *
#@@ -330,6 +335,9 @@ spa_buffer_alloc_array(uint32_t n_buffers, uint32_t flags,
# 	return buffers;
# }
# 
#+/**
#+ * \}
#+ */
# 
# #ifdef __cplusplus
# }  /* extern "C" */
#diff --git a/spa/include/spa/buffer/buffer.h b/spa/include/spa/buffer/buffer.h
#index 0c15e6a6dd..22ae2f6092 100644
#--- a/spa/include/spa/buffer/buffer.h
#+++ b/spa/include/spa/buffer/buffer.h
#@@ -31,12 +31,17 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/buffer/meta.h>
# 
#-/** \page page_buffer Buffers
#+/** \defgroup spa_buffer SPA Buffers
#  *
#  * Buffers describe the data and metadata that is exchanged between
#  * ports of a node.
#  */
# 
#+/**
#+ * \addtogroup spa_buffer
#+ * \{
#+ */
#+
# enum spa_data_type {
# 	SPA_DATA_Invalid,
# 	SPA_DATA_MemPtr,		/**< pointer to memory, the data field in
#@@ -112,6 +117,10 @@ static inline void *spa_buffer_find_meta_data(const struct spa_buffer *b, uint32
# 	return NULL;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/buffer/meta.h b/spa/include/spa/buffer/meta.h
#index 9f4648d2d5..1c10896339 100644
#--- a/spa/include/spa/buffer/meta.h
#+++ b/spa/include/spa/buffer/meta.h
#@@ -32,10 +32,11 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/pod/pod.h>
# 
#-/** \page page_meta Metadata
#- *
#- * Metadata contains extra information on a buffer.
#+/**
#+ * \addtogroup spa_buffer
#+ * \{
#  */
#+
# enum spa_meta_type {
# 	SPA_META_Invalid,
# 	SPA_META_Header,	/**< struct spa_meta_header */
#@@ -151,6 +152,10 @@ struct spa_meta_busy {
# 	uint32_t count;			/**< number of users busy with the buffer */
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/buffer/type-info.h b/spa/include/spa/buffer/type-info.h
#index 3a1001f459..50f436b864 100644
#--- a/spa/include/spa/buffer/type-info.h
#+++ b/spa/include/spa/buffer/type-info.h
#@@ -25,6 +25,11 @@
# #ifndef SPA_BUFFER_TYPES_H
# #define SPA_BUFFER_TYPES_H
# 
#+/**
#+ * \addtogroup spa_buffer
#+ * \{
#+ */
#+
# #ifdef __cplusplus
# extern "C" {
# #endif
#@@ -77,6 +82,10 @@ static const struct spa_type_info spa_type_meta_type[] = {
# 	{ 0, 0, NULL, NULL },
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/control/control.h b/spa/include/spa/control/control.h
#index ca71438819..c94e109b79 100644
#--- a/spa/include/spa/control/control.h
#+++ b/spa/include/spa/control/control.h
#@@ -32,10 +32,15 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/pod/pod.h>
# 
#-/** Controls
#+/** \defgroup spa_control SPA Controls
#  *
#  */
# 
#+/**
#+ * \addtogroup spa_control
#+ * \{
#+ */
#+
# /** Different Control types */
# enum spa_control_type {
# 	SPA_CONTROL_Invalid,
#@@ -46,6 +51,10 @@ enum spa_control_type {
# 	_SPA_CONTROL_LAST,		/**< not part of ABI */
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/control/type-info.h b/spa/include/spa/control/type-info.h
#index ae3f149bfc..d703783714 100644
#--- a/spa/include/spa/control/type-info.h
#+++ b/spa/include/spa/control/type-info.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_control
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/utils/type-info.h>
# #include <spa/control/control.h>
#@@ -45,6 +50,10 @@ static const struct spa_type_info spa_type_control[] = {
# 	{ 0, 0, NULL, NULL },
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/debug/buffer.h b/spa/include/spa/debug/buffer.h
#index 8a64ea1cc5..f35873e236 100644
#--- a/spa/include/spa/debug/buffer.h
#+++ b/spa/include/spa/debug/buffer.h
#@@ -29,6 +29,15 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_debug SPA Debug
#+ *
#+ */
#+
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/debug/mem.h>
# #include <spa/debug/types.h>
# #include <spa/buffer/type-info.h>
#@@ -112,6 +121,10 @@ static inline int spa_debug_buffer(int indent, const struct spa_buffer *buffer)
# 	return 0;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/debug/dict.h b/spa/include/spa/debug/dict.h
#index 028ef04387..3e74dd72be 100644
#--- a/spa/include/spa/debug/dict.h
#+++ b/spa/include/spa/debug/dict.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/utils/dict.h>
# 
# #ifndef spa_debug
#@@ -45,6 +50,10 @@ static inline int spa_debug_dict(int indent, const struct spa_dict *dict)
# 	return 0;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/debug/format.h b/spa/include/spa/debug/format.h
#index 07ba95c1ae..559dd3d2bf 100644
#--- a/spa/include/spa/debug/format.h
#+++ b/spa/include/spa/debug/format.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/pod/parser.h>
# #include <spa/debug/types.h>
# #include <spa/param/type-info.h>
#@@ -195,6 +200,10 @@ static inline int spa_debug_format(int indent,
# 	return 0;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/debug/mem.h b/spa/include/spa/debug/mem.h
#index dfc5b73cb5..bd248aa151 100644
#--- a/spa/include/spa/debug/mem.h
#+++ b/spa/include/spa/debug/mem.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/utils/dict.h>
# 
# #ifndef spa_debug
#@@ -53,6 +58,10 @@ static inline int spa_debug_mem(int indent, const void *data, size_t size)
# 	return 0;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/debug/node.h b/spa/include/spa/debug/node.h
#index a4e5c2ac92..e8648e435c 100644
#--- a/spa/include/spa/debug/node.h
#+++ b/spa/include/spa/debug/node.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/node/node.h>
# #include <spa/debug/dict.h>
# 
#@@ -49,6 +54,10 @@ static inline int spa_debug_port_info(int indent, const struct spa_port_info *in
#         return 0;
# }
# 
#+/**
#+ * \}
#+ */
#+
# 
# #ifdef __cplusplus
# }  /* extern "C" */
#diff --git a/spa/include/spa/debug/pod.h b/spa/include/spa/debug/pod.h
#index 5c0f1cfcd0..1de32c6a6f 100644
#--- a/spa/include/spa/debug/pod.h
#+++ b/spa/include/spa/debug/pod.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/debug/mem.h>
# #include <spa/debug/types.h>
# #include <spa/pod/pod.h>
#@@ -201,6 +206,11 @@ static inline int spa_debug_pod(int indent,
# 			SPA_POD_BODY_SIZE(pod));
# }
# 
#+/**
#+ * \}
#+ */
#+
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/debug/types.h b/spa/include/spa/debug/types.h
#index 8b75d2c7f0..3bd43c308a 100644
#--- a/spa/include/spa/debug/types.h
#+++ b/spa/include/spa/debug/types.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_debug
#+ * \{
#+ */
#+
# #include <spa/utils/type-info.h>
# 
# #include <string.h>
#@@ -91,6 +96,10 @@ static inline uint32_t spa_debug_type_find_type(const struct spa_type_info *info
# 	return SPA_ID_INVALID;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/graph/graph.h b/spa/include/spa/graph/graph.h
#index cf3f528cf1..99a96b864e 100644
#--- a/spa/include/spa/graph/graph.h
#+++ b/spa/include/spa/graph/graph.h
#@@ -29,6 +29,14 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_graph SPA Graph
#+ */
#+
#+/**
#+ * \addtogroup spa_graph
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/utils/list.h>
# #include <spa/utils/hook.h>
#@@ -345,6 +353,10 @@ static const struct spa_graph_node_callbacks spa_graph_node_impl_default = {
# 	.reuse_buffer = spa_graph_node_impl_reuse_buffer,
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/monitor/device.h b/spa/include/spa/monitor/device.h
#index 17ff13370d..65c784d995 100644
#--- a/spa/include/spa/monitor/device.h
#+++ b/spa/include/spa/monitor/device.h
#@@ -35,13 +35,18 @@ extern "C" {
# #include <spa/pod/event.h>
# 
# /**
#- * spa_device:
#+ * \defgroup spa_device SPA Device
#  *
#  * The device interface can be used to monitor all kinds of devices
#  * and create objects as a result. Objects a typically other
#  * Devices or Nodes.
#  *
#  */
#+
#+/**
#+ * \addtogroup spa_device
#+ * \{
#+ */
# #define SPA_TYPE_INTERFACE_Device	SPA_TYPE_INFO_INTERFACE_BASE "Device"
# 
# #define SPA_VERSION_DEVICE		0
#@@ -291,6 +296,9 @@ struct spa_device_methods {
# #define SPA_KEY_DEVICE_STRING		"device.string"		/**< device string in the underlying
# 								  *  layer's format. E.g. "surround51:0" */
# 
#+/**
#+ * \}
#+ */
# 
# #ifdef __cplusplus
# }  /* extern "C" */
#diff --git a/spa/include/spa/node/command.h b/spa/include/spa/node/command.h
#index 3addce55f9..bf0ee1ba4e 100644
#--- a/spa/include/spa/node/command.h
#+++ b/spa/include/spa/node/command.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# #include <spa/pod/command.h>
# 
# /* object id of SPA_TYPE_COMMAND_Node */
#@@ -55,6 +60,10 @@ enum spa_node_command {
# #define SPA_NODE_COMMAND_INIT(id)	SPA_COMMAND_INIT(SPA_TYPE_COMMAND_Node, id)
# 
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/node/event.h b/spa/include/spa/node/event.h
#index ffc25e335d..35ea678d40 100644
#--- a/spa/include/spa/node/event.h
#+++ b/spa/include/spa/node/event.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# #include <spa/pod/event.h>
# 
# /* object id of SPA_TYPE_EVENT_Node */
#@@ -41,6 +46,10 @@ enum spa_node_event {
# #define SPA_NODE_EVENT_ID(ev)	SPA_EVENT_ID(ev, SPA_TYPE_EVENT_Node)
# #define SPA_NODE_EVENT_INIT(id) SPA_EVENT_INIT(SPA_TYPE_EVENT_Node, id)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/node/io.h b/spa/include/spa/node/io.h
#index 1da22adffd..74635c79a5 100644
#--- a/spa/include/spa/node/io.h
#+++ b/spa/include/spa/node/io.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/pod/pod.h>
# 
#@@ -288,6 +293,10 @@ struct spa_io_rate_match {
# 	uint32_t padding[7];
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/node/keys.h b/spa/include/spa/node/keys.h
#index 926cbdef57..94a02852de 100644
#--- a/spa/include/spa/node/keys.h
#+++ b/spa/include/spa/node/keys.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# /** node keys */
# #define SPA_KEY_NODE_NAME		"node.name"		/**< a node name */
# #define SPA_KEY_NODE_LATENCY		"node.latency"		/**< the requested node latency */
#@@ -48,6 +53,10 @@ extern "C" {
# #define SPA_KEY_PORT_MONITOR		"port.monitor"		/**< this port is a monitor port */
# 
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/node/node.h b/spa/include/spa/node/node.h
#index 05ee1543bd..8f58cfc0e9 100644
#--- a/spa/include/spa/node/node.h
#+++ b/spa/include/spa/node/node.h
#@@ -29,6 +29,15 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_node SPA Nodes
#+ * A spa_node is a component that can consume and produce buffers.
#+ */
#+
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/utils/type.h>
# #include <spa/utils/hook.h>
#@@ -37,9 +46,6 @@ extern "C" {
# #include <spa/node/command.h>
# 
# 
#-/**
#- * A spa_node is a component that can consume and produce buffers.
#- */
# #define SPA_TYPE_INTERFACE_Node		SPA_TYPE_INFO_INTERFACE_BASE "Node"
# 
# #define SPA_VERSION_NODE		0
#@@ -655,6 +661,10 @@ struct spa_node_methods {
# #define spa_node_port_reuse_buffer(n,...)	spa_node_method(n, port_reuse_buffer, 0, __VA_ARGS__)
# #define spa_node_process(n)			spa_node_method(n, process, 0)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/node/type-info.h b/spa/include/spa/node/type-info.h
#index 60db9f664f..84c86bf66f 100644
#--- a/spa/include/spa/node/type-info.h
#+++ b/spa/include/spa/node/type-info.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# #include <spa/utils/type-info.h>
# 
# #include <spa/node/command.h>
#@@ -89,6 +94,10 @@ static const struct spa_type_info spa_type_node_command[] = {
# 	{ 0, 0, NULL, NULL },
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/node/utils.h b/spa/include/spa/node/utils.h
#index 944dc86baf..b0ad1779d4 100644
#--- a/spa/include/spa/node/utils.h
#+++ b/spa/include/spa/node/utils.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_node
#+ * \{
#+ */
#+
# #include <spa/pod/builder.h>
# 
# #include <spa/node/node.h>
#@@ -137,6 +142,10 @@ static inline int spa_node_port_enum_params_sync(struct spa_node *node,
# #define spa_node_call_reuse_buffer(hook,...)	spa_node_call(hook, reuse_buffer, 0, __VA_ARGS__)
# #define spa_node_call_xrun(hook,...)		spa_node_call(hook, xrun, 0, __VA_ARGS__)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/audio/format-utils.h b/spa/include/spa/param/audio/format-utils.h
#index dc7a2b9f59..557a319301 100644
#--- a/spa/include/spa/param/audio/format-utils.h
#+++ b/spa/include/spa/param/audio/format-utils.h
#@@ -29,6 +29,10 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
# 
# #include <spa/pod/parser.h>
# #include <spa/pod/builder.h>
#@@ -106,6 +110,10 @@ spa_format_audio_dsp_build(struct spa_pod_builder *builder, uint32_t id, struct
# 	return (struct spa_pod*)spa_pod_builder_pop(builder, &f);
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/audio/format.h b/spa/include/spa/param/audio/format.h
#index 507a7453db..57a707cba4 100644
#--- a/spa/include/spa/param/audio/format.h
#+++ b/spa/include/spa/param/audio/format.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/format.h>
# #include <spa/param/audio/raw.h>
# 
#@@ -41,6 +46,10 @@ struct spa_audio_info {
# 	} info;
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/audio/layout.h b/spa/include/spa/param/audio/layout.h
#index 3218e00f46..dc69705b7b 100644
#--- a/spa/include/spa/param/audio/layout.h
#+++ b/spa/include/spa/param/audio/layout.h
#@@ -33,6 +33,10 @@ extern "C" {
# #include <endian.h>
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
# #include <spa/param/audio/raw.h>
# 
# struct spa_audio_layout_info {
#@@ -177,6 +181,10 @@ struct spa_audio_layout_info {
# 					     SPA_AUDIO_CHANNEL_RL, SPA_AUDIO_CHANNEL_RR, \
# 					     SPA_AUDIO_CHANNEL_FLC, SPA_AUDIO_CHANNEL_FRC, }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/audio/raw.h b/spa/include/spa/param/audio/raw.h
#index 7689811ae6..725721e687 100644
#--- a/spa/include/spa/param/audio/raw.h
#+++ b/spa/include/spa/param/audio/raw.h
#@@ -35,6 +35,11 @@ extern "C" {
# #include <endian.h>
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #define SPA_AUDIO_MAX_CHANNELS	64u
# 
# enum spa_audio_format {
#@@ -235,6 +240,10 @@ struct spa_audio_info_dsp {
# 
# #define SPA_AUDIO_INFO_DSP_INIT(...)		(struct spa_audio_info_dsp) { __VA_ARGS__ }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/audio/type-info.h b/spa/include/spa/param/audio/type-info.h
#index 7d1987f45e..b43516429c 100644
#--- a/spa/include/spa/param/audio/type-info.h
#+++ b/spa/include/spa/param/audio/type-info.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/audio/raw.h>
# 
# #define SPA_TYPE_INFO_AudioFormat		SPA_TYPE_INFO_ENUM_BASE "AudioFormat"
#@@ -193,6 +198,10 @@ static const struct spa_type_info spa_type_audio_channel[] = {
# 	{ 0, 0, NULL, NULL },
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/bluetooth/audio.h b/spa/include/spa/param/bluetooth/audio.h
#index 137e6b67c0..8b9a8c0b3e 100644
#--- a/spa/include/spa/param/bluetooth/audio.h
#+++ b/spa/include/spa/param/bluetooth/audio.h
#@@ -29,6 +29,10 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
# enum spa_bluetooth_audio_codec {
# 	SPA_BLUETOOTH_AUDIO_CODEC_START,
# 
#@@ -46,6 +50,10 @@ enum spa_bluetooth_audio_codec {
# 	SPA_BLUETOOTH_AUDIO_CODEC_MSBC,
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/bluetooth/type-info.h b/spa/include/spa/param/bluetooth/type-info.h
#index 01ddf2f88f..37ec9974cd 100644
#--- a/spa/include/spa/param/bluetooth/type-info.h
#+++ b/spa/include/spa/param/bluetooth/type-info.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/bluetooth/audio.h>
# 
# #define SPA_TYPE_INFO_BluetoothAudioCodec		SPA_TYPE_INFO_ENUM_BASE "BluetoothAudioCodec"
#@@ -50,6 +55,10 @@ static const struct spa_type_info spa_type_bluetooth_audio_codec[] = {
# 	{ 0, 0, NULL, NULL },
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/format-utils.h b/spa/include/spa/param/format-utils.h
#index 8e11bab508..e2c83e2af7 100644
#--- a/spa/include/spa/param/format-utils.h
#+++ b/spa/include/spa/param/format-utils.h
#@@ -30,6 +30,11 @@ extern "C" {
# #endif
# 
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/pod/parser.h>
# #include <spa/param/format.h>
# 
#@@ -42,6 +47,10 @@ spa_format_parse(const struct spa_pod *format, uint32_t *media_type, uint32_t *m
# 		SPA_FORMAT_mediaSubtype, SPA_POD_Id(media_subtype));
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/format.h b/spa/include/spa/param/format.h
#index 1550cc1a0d..66e91b428e 100644
#--- a/spa/include/spa/param/format.h
#+++ b/spa/include/spa/param/format.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/param.h>
# 
# /** media type for SPA_TYPE_OBJECT_Format */
#@@ -140,6 +145,10 @@ enum spa_format {
# #define SPA_KEY_FORMAT_DSP		"format.dsp"		/**< a predefined DSP format,
# 								  *  Ex. "32 bit float mono audio" */
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/param.h b/spa/include/spa/param/param.h
#index 79093224d5..dbd3d28db3 100644
#--- a/spa/include/spa/param/param.h
#+++ b/spa/include/spa/param/param.h
#@@ -29,6 +29,14 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_param SPA Parameters
#+ */
#+
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# 
# /** different parameter types that can be queried */
#@@ -164,6 +172,10 @@ enum spa_param_route {
# };
# 
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/profiler.h b/spa/include/spa/param/profiler.h
#index 8bb4635ba2..44b5688ac1 100644
#--- a/spa/include/spa/param/profiler.h
#+++ b/spa/include/spa/param/profiler.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/param.h>
# 
# /** properties for SPA_TYPE_OBJECT_Profiler */
#@@ -81,6 +86,10 @@ enum spa_profiler {
# 	SPA_PROFILER_START_CUSTOM	= 0x1000000,
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/props.h b/spa/include/spa/param/props.h
#index 344f5f9b52..50bf0e8eb0 100644
#--- a/spa/include/spa/param/props.h
#+++ b/spa/include/spa/param/props.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/param.h>
# 
# /** properties of SPA_TYPE_OBJECT_PropInfo */
#@@ -111,6 +116,10 @@ enum spa_prop {
# 	SPA_PROP_START_CUSTOM	= 0x1000000,
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/type-info.h b/spa/include/spa/param/type-info.h
#index 0d305ef7d9..e32eb34459 100644
#--- a/spa/include/spa/param/type-info.h
#+++ b/spa/include/spa/param/type-info.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/param/props.h>
# #include <spa/param/format.h>
#@@ -379,6 +384,10 @@ static const struct spa_type_info spa_type_profiler[] = {
# };
# 
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/chroma.h b/spa/include/spa/param/video/chroma.h
#index 7e73c6d902..0ad207218a 100644
#--- a/spa/include/spa/param/video/chroma.h
#+++ b/spa/include/spa/param/video/chroma.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# /** Various Chroma settings.
#  */
# enum spa_video_chroma_site {
#@@ -48,6 +53,10 @@ enum spa_video_chroma_site {
# 	SPA_VIDEO_CHROMA_SITE_DV = (SPA_VIDEO_CHROMA_SITE_COSITED | SPA_VIDEO_CHROMA_SITE_ALT_LINE),
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/color.h b/spa/include/spa/param/video/color.h
#index 3fe9f1834b..028239cf89 100644
#--- a/spa/include/spa/param/video/color.h
#+++ b/spa/include/spa/param/video/color.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# /**
#  * Possible color range values. These constants are defined for 8 bit color
#  * values and can be scaled for other bit depths.
#@@ -109,6 +114,10 @@ struct spa_video_colorimetry {
# 						   *   and CIE XYZ */
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/encoded.h b/spa/include/spa/param/video/encoded.h
#index 5eb9844471..782f500231 100644
#--- a/spa/include/spa/param/video/encoded.h
#+++ b/spa/include/spa/param/video/encoded.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/format.h>
# 
# enum spa_h264_stream_format {
#@@ -58,6 +63,10 @@ struct spa_video_info_mjpg {
# 	struct spa_fraction max_framerate;
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/format-utils.h b/spa/include/spa/param/video/format-utils.h
#index 321ff5a2ff..11b86405f2 100644
#--- a/spa/include/spa/param/video/format-utils.h
#+++ b/spa/include/spa/param/video/format-utils.h
#@@ -29,6 +29,10 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
# #include <spa/pod/parser.h>
# #include <spa/pod/builder.h>
# #include <spa/param/video/format.h>
#@@ -168,6 +172,10 @@ spa_format_video_mjpg_parse(const struct spa_pod *format,
# 			SPA_FORMAT_VIDEO_maxFramerate,	SPA_POD_OPT_Fraction(&info->max_framerate));
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/format.h b/spa/include/spa/param/video/format.h
#index f1edb749f7..d0111fb96a 100644
#--- a/spa/include/spa/param/video/format.h
#+++ b/spa/include/spa/param/video/format.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/param/video/raw.h>
# #include <spa/param/video/encoded.h>
# 
#@@ -43,6 +48,10 @@ struct spa_video_info {
# 	} info;
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/multiview.h b/spa/include/spa/param/video/multiview.h
#index ef2bbe671c..ea16da8a8a 100644
#--- a/spa/include/spa/param/video/multiview.h
#+++ b/spa/include/spa/param/video/multiview.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# /**
#  * All possible stereoscopic 3D and multiview representations.
#  * In conjunction with \ref spa_video_multiview_flags, describes how
#@@ -118,6 +123,10 @@ enum spa_video_multiview_flags {
# };
# 
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/raw.h b/spa/include/spa/param/video/raw.h
#index 833f9a3307..f1088f3bd3 100644
#--- a/spa/include/spa/param/video/raw.h
#+++ b/spa/include/spa/param/video/raw.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/param/video/chroma.h>
# #include <spa/param/video/color.h>
#@@ -189,6 +194,10 @@ struct spa_video_info_dsp {
# 
# #define SPA_VIDEO_INFO_DSP_INIT(...)	(struct spa_video_info_dsp) { __VA_ARGS__ }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/param/video/type-info.h b/spa/include/spa/param/video/type-info.h
#index f0648a9bd0..9fb7cd1b60 100644
#--- a/spa/include/spa/param/video/type-info.h
#+++ b/spa/include/spa/param/video/type-info.h
#@@ -29,6 +29,10 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_param
#+ * \{
#+ */
# #include <spa/param/video/raw.h>
# 
# #define SPA_TYPE_INFO_VideoFormat		SPA_TYPE_INFO_ENUM_BASE "VideoFormat"
#@@ -117,6 +121,10 @@ static const struct spa_type_info spa_type_video_format[] = {
# 	{ 0, 0, NULL, NULL },
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/pod/builder.h b/spa/include/spa/pod/builder.h
#index 807eddab32..8bb58676e7 100644
#--- a/spa/include/spa/pod/builder.h
#+++ b/spa/include/spa/pod/builder.h
#@@ -29,6 +29,14 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_pod SPA POD
#+ */
#+
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# #include <stdarg.h>
# 
# #include <spa/utils/hook.h>
#@@ -676,6 +684,10 @@ spa_pod_copy(const struct spa_pod *pod)
# 	return (struct spa_pod *) memcpy(c, pod, size);
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/pod/command.h b/spa/include/spa/pod/command.h
#index 1b4458f0e2..0c292eeae5 100644
#--- a/spa/include/spa/pod/command.h
#+++ b/spa/include/spa/pod/command.h
#@@ -32,6 +32,11 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/pod/pod.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# struct spa_command_body {
# 	struct spa_pod_object_body body;
# };
#@@ -53,6 +58,9 @@ struct spa_command {
# 	SPA_COMMAND_INIT_FULL(struct spa_command,			\
# 			sizeof(struct spa_command_body), type, id)
# 
#+/**
#+ * \}
#+ */
# 
# #ifdef __cplusplus
# }  /* extern "C" */
#diff --git a/spa/include/spa/pod/compare.h b/spa/include/spa/pod/compare.h
#index fdb02f8ed0..3fd9d00a5b 100644
#--- a/spa/include/spa/pod/compare.h
#+++ b/spa/include/spa/pod/compare.h
#@@ -40,6 +40,11 @@ extern "C" {
# #include <spa/pod/iter.h>
# #include <spa/pod/builder.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# static inline int spa_pod_compare_value(uint32_t type, const void *r1, const void *r2, uint32_t size)
# {
# 	switch (type) {
#@@ -174,6 +179,10 @@ static inline int spa_pod_compare(const struct spa_pod *pod1,
# 	return res;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }
# #endif
#diff --git a/spa/include/spa/pod/event.h b/spa/include/spa/pod/event.h
#index 6af5b88d27..2ecfb0eabb 100644
#--- a/spa/include/spa/pod/event.h
#+++ b/spa/include/spa/pod/event.h
#@@ -31,6 +31,11 @@ extern "C" {
# 
# #include <spa/pod/pod.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# struct spa_event_body {
# 	struct spa_pod_object_body body;
# };
#@@ -52,6 +57,10 @@ struct spa_event {
# 	SPA_EVENT_INIT_FULL(struct spa_event,				\
# 			sizeof(struct spa_event_body), type, id)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/pod/filter.h b/spa/include/spa/pod/filter.h
#index 05df983403..4ad1708920 100644
#--- a/spa/include/spa/pod/filter.h
#+++ b/spa/include/spa/pod/filter.h
#@@ -33,6 +33,11 @@
# #include <spa/pod/builder.h>
# #include <spa/pod/compare.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# static inline int spa_pod_choice_fix_default(struct spa_pod_choice *choice)
# {
# 	void *val, *alt;
#@@ -398,3 +403,7 @@ spa_pod_filter(struct spa_pod_builder *b,
# 	}
# 	return res;
# }
#+
#+/**
#+ * \}
#+ */
#diff --git a/spa/include/spa/pod/iter.h b/spa/include/spa/pod/iter.h
#index 4334522c70..5d7727da76 100644
#--- a/spa/include/spa/pod/iter.h
#+++ b/spa/include/spa/pod/iter.h
#@@ -34,6 +34,11 @@ extern "C" {
# 
# #include <spa/pod/pod.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# struct spa_pod_frame {
# 	struct spa_pod pod;
# 	struct spa_pod_frame *parent;
#@@ -440,6 +445,10 @@ static inline int spa_pod_fixate(struct spa_pod *pod)
# 	return spa_pod_object_fixate((struct spa_pod_object *)pod);
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/pod/parser.h b/spa/include/spa/pod/parser.h
#index dd7ac70180..b6a36e6f58 100644
#--- a/spa/include/spa/pod/parser.h
#+++ b/spa/include/spa/pod/parser.h
#@@ -35,6 +35,11 @@ extern "C" {
# #include <spa/pod/iter.h>
# #include <spa/pod/vararg.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# struct spa_pod_parser_state {
# 	uint32_t offset;
# 	uint32_t flags;
#@@ -566,6 +571,10 @@ static inline int spa_pod_parser_get(struct spa_pod_parser *parser, ...)
# 	spa_pod_parser_get_struct(&_p,##__VA_ARGS__);		\
# })
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/pod/pod.h b/spa/include/spa/pod/pod.h
#index 6519145713..af72515b04 100644
#--- a/spa/include/spa/pod/pod.h
#+++ b/spa/include/spa/pod/pod.h
#@@ -32,6 +32,11 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/utils/type.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# #define SPA_POD_BODY_SIZE(pod)			(((struct spa_pod*)(pod))->size)
# #define SPA_POD_TYPE(pod)			(((struct spa_pod*)(pod))->type)
# #define SPA_POD_SIZE(pod)			(sizeof(struct spa_pod) + SPA_POD_BODY_SIZE(pod))
#@@ -229,6 +234,9 @@ struct spa_pod_sequence {
# 	struct spa_pod_sequence_body body;
# };
# 
#+/**
#+ * \}
#+ */
# 
# #ifdef __cplusplus
# }  /* extern "C" */
#diff --git a/spa/include/spa/pod/vararg.h b/spa/include/spa/pod/vararg.h
#index b6dcdc7b7c..53dc654047 100644
#--- a/spa/include/spa/pod/vararg.h
#+++ b/spa/include/spa/pod/vararg.h
#@@ -33,6 +33,11 @@ extern "C" {
# 
# #include <spa/pod/pod.h>
# 
#+/**
#+ * \addtogroup spa_pod
#+ * \{
#+ */
#+
# #define SPA_POD_Prop(key,...)				\
# 	key, ##__VA_ARGS__
# 
#@@ -97,6 +102,10 @@ extern "C" {
# #define SPA_POD_PodStruct(val)				"T", val
# #define SPA_POD_PodChoice(val)				"V", val
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/cpu.h b/spa/include/spa/support/cpu.h
#index af3d0223d1..ce3883c65d 100644
#--- a/spa/include/spa/support/cpu.h
#+++ b/spa/include/spa/support/cpu.h
#@@ -34,6 +34,15 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/utils/hook.h>
# 
#+/** \defgroup spa_support SPA Support Features
#+ *
#+ */
#+
#+/**
#+ * \addtogroup spa_support
#+ * \{
#+ */
#+
# /**
#  * The CPU features interface
#  */
#@@ -142,6 +151,10 @@ struct spa_cpu_methods {
# #define SPA_KEY_CPU_FORCE		"cpu.force"		/**< force cpu flags */
# #define SPA_KEY_CPU_VM_TYPE		"cpu.vm.type"		/**< force a VM type */
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/dbus.h b/spa/include/spa/support/dbus.h
#index 652aa5bc14..d3438c6d62 100644
#--- a/spa/include/spa/support/dbus.h
#+++ b/spa/include/spa/support/dbus.h
#@@ -31,6 +31,11 @@ extern "C" {
# 
# #include <spa/support/loop.h>
# 
#+/**
#+ * \addtogroup spa_support
#+ * \{
#+ */
#+
# #define SPA_TYPE_INTERFACE_DBus		SPA_TYPE_INFO_INTERFACE_BASE "DBus"
# 
# #define SPA_VERSION_DBUS		0
#@@ -133,6 +138,10 @@ spa_dbus_get_connection(struct spa_dbus *dbus, enum spa_dbus_type type)
# 	return res;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/i18n.h b/spa/include/spa/support/i18n.h
#index 37e1c6af28..bca5eb6e23 100644
#--- a/spa/include/spa/support/i18n.h
#+++ b/spa/include/spa/support/i18n.h
#@@ -32,6 +32,11 @@ extern "C" {
# #include <spa/utils/hook.h>
# #include <spa/utils/defs.h>
# 
#+/**
#+ * \addtogroup spa_support
#+ * \{
#+ */
#+
# #define SPA_TYPE_INTERFACE_I18N		SPA_TYPE_INFO_INTERFACE_BASE "I18N"
# 
# #define SPA_VERSION_I18N		0
#@@ -86,6 +91,10 @@ spa_i18n_ntext(struct spa_i18n *i18n, const char *msgid,
# 	return res;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/log-impl.h b/spa/include/spa/support/log-impl.h
#index 86552af8bc..00f5a9d020 100644
#--- a/spa/include/spa/support/log-impl.h
#+++ b/spa/include/spa/support/log-impl.h
#@@ -34,6 +34,11 @@ extern "C" {
# #include <spa/utils/type.h>
# #include <spa/support/log.h>
# 
#+/**
#+ * \addtogroup spa_log
#+ * \{
#+ */
#+
# static inline SPA_PRINTF_FUNC(6, 0) void spa_log_impl_logv(void *object,
# 				     enum spa_log_level level,
# 				     const char *file,
#@@ -87,6 +92,10 @@ struct {					\
# #define SPA_LOG_IMPL(name)			\
#         SPA_LOG_IMPL_DEFINE(name) = SPA_LOG_IMPL_INIT(name)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/log.h b/spa/include/spa/support/log.h
#index 51b3e741c7..674629fa75 100644
#--- a/spa/include/spa/support/log.h
#+++ b/spa/include/spa/support/log.h
#@@ -34,6 +34,14 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/utils/hook.h>
# 
#+/** \defgroup spa_log SPA Logging
#+ */
#+
#+/**
#+ * \addtogroup spa_log
#+ * \{
#+ */
#+
# enum spa_log_level {
# 	SPA_LOG_LEVEL_NONE = 0,
# 	SPA_LOG_LEVEL_ERROR,
#@@ -173,6 +181,10 @@ static inline void spa_log_trace_fp (struct spa_log *l, const char *format, ...)
# #define SPA_KEY_LOG_TIMESTAMP		"log.timestamp"		/**< log timestamps */
# #define SPA_KEY_LOG_LINE		"log.line"		/**< log file and line numbers */
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/loop.h b/spa/include/spa/support/loop.h
#index 34ddaa89e5..be0ca357c9 100644
#--- a/spa/include/spa/support/loop.h
#+++ b/spa/include/spa/support/loop.h
#@@ -33,6 +33,11 @@ extern "C" {
# #include <spa/utils/hook.h>
# #include <spa/support/system.h>
# 
#+/**
#+ * \addtogroup spa_support
#+ * \{
#+ */
#+
# #define SPA_TYPE_INTERFACE_Loop		SPA_TYPE_INFO_INTERFACE_BASE "Loop"
# #define SPA_TYPE_INTERFACE_DataLoop	SPA_TYPE_INFO_INTERFACE_BASE "DataLoop"
# #define SPA_VERSION_LOOP		0
#@@ -305,6 +310,10 @@ struct spa_loop_utils_methods {
# #define spa_loop_utils_add_signal(l,...)	spa_loop_utils_method_s(l,add_signal,0,__VA_ARGS__)
# #define spa_loop_utils_destroy_source(l,...)	spa_loop_utils_method_v(l,destroy_source,0,__VA_ARGS__)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/plugin.h b/spa/include/spa/support/plugin.h
#index ea4fc2255d..e1a2a680eb 100644
#--- a/spa/include/spa/support/plugin.h
#+++ b/spa/include/spa/support/plugin.h
#@@ -32,6 +32,15 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/utils/dict.h>
# 
#+/**
#+ * \defgroup spa_handle SPA Plugin Handles
#+ */
#+
#+/**
#+ * \addtogroup spa_handle
#+ * \{
#+ */
#+
# struct spa_handle {
# 	/** Version of this struct */
# #define SPA_VERSION_HANDLE	0
#@@ -208,6 +217,10 @@ int spa_handle_factory_enum(const struct spa_handle_factory **factory, uint32_t
# 								  *  the filename of the plugin without the
# 								  *  path or the plugin extension. */
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/support/system.h b/spa/include/spa/support/system.h
#index fb867dc5f3..f125c476e2 100644
#--- a/spa/include/spa/support/system.h
#+++ b/spa/include/spa/support/system.h
#@@ -37,6 +37,11 @@ struct itimerspec;
# #include <spa/utils/defs.h>
# #include <spa/utils/hook.h>
# 
#+/**
#+ * \addtogroup spa_support
#+ * \{
#+ */
#+
# /**
#  * a collection of core system functions
#  */
#@@ -145,6 +150,10 @@ struct spa_system_methods {
# #define spa_system_signalfd_create(s,...)	spa_system_method_r(s,signalfd_create,0,__VA_ARGS__)
# #define spa_system_signalfd_read(s,...)		spa_system_method_r(s,signalfd_read,0,__VA_ARGS__)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/defs.h b/spa/include/spa/utils/defs.h
#index e2ae576406..b154c897dd 100644
#--- a/spa/include/spa/utils/defs.h
#+++ b/spa/include/spa/utils/defs.h
#@@ -36,6 +36,14 @@ extern "C" {
# #include <stddef.h>
# #include <stdio.h>
# 
#+/** \defgroup spa_utils SPA Utils
#+ */
#+
#+/**
#+ * \addtogroup spa_utils
#+ * \{
#+ */
#+
# /**
#  * SPA_FALLTHROUGH is an annotation to suppress compiler warnings about switch
#  * cases that fall through without a break or return statement. SPA_FALLTHROUGH
#@@ -293,6 +301,10 @@ struct spa_fraction {
# 	_strp;								\
# })
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/dict.h b/spa/include/spa/utils/dict.h
#index 272420ec3d..bb401aaf04 100644
#--- a/spa/include/spa/utils/dict.h
#+++ b/spa/include/spa/utils/dict.h
#@@ -33,6 +33,11 @@ extern "C" {
# 
# #include <spa/utils/defs.h>
# 
#+/**
#+ * \addtogroup spa_utils
#+ * \{
#+ */
#+
# struct spa_dict_item {
# 	const char *key;
# 	const char *value;
#@@ -97,6 +102,10 @@ static inline const char *spa_dict_lookup(const struct spa_dict *dict, const cha
# 	return item ? item->value : NULL;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/hook.h b/spa/include/spa/utils/hook.h
#index 27fb33c39d..362c1831fd 100644
#--- a/spa/include/spa/utils/hook.h
#+++ b/spa/include/spa/utils/hook.h
#@@ -32,12 +32,18 @@ extern "C" {
# #include <spa/utils/defs.h>
# #include <spa/utils/list.h>
# 
#-/** \class spa_hook
#+/** \defgroup spa_hook SPA Hooks
#  *
#  * \brief a list of hooks
#  *
#  * The hook list provides a way to keep track of hooks.
#  */
#+
#+/**
#+ * \addtogroup spa_hook
#+ * \{
#+ */
#+
# /** A list of hooks */
# struct spa_hook_list {
# 	struct spa_list list;
#@@ -87,7 +93,7 @@ static inline bool spa_hook_list_is_empty(struct spa_hook_list *list)
# 	return spa_list_is_empty(&list->list);
# }
# 
#-/** Append a hook \memberof spa_hook. */
#+/** Append a hook. */
# static inline void spa_hook_list_append(struct spa_hook_list *list,
# 					struct spa_hook *hook,
# 					const void *funcs, void *data)
#@@ -97,7 +103,7 @@ static inline void spa_hook_list_append(struct spa_hook_list *list,
# 	spa_list_append(&list->list, &hook->link);
# }
# 
#-/** Prepend a hook \memberof spa_hook */
#+/** Prepend a hook */
# static inline void spa_hook_list_prepend(struct spa_hook_list *list,
# 					 struct spa_hook *hook,
# 					 const void *funcs, void *data)
#@@ -107,7 +113,7 @@ static inline void spa_hook_list_prepend(struct spa_hook_list *list,
# 	spa_list_prepend(&list->list, &hook->link);
# }
# 
#-/** Remove a hook \memberof spa_hook */
#+/** Remove a hook */
# static inline void spa_hook_remove(struct spa_hook *hook)
# {
#         spa_list_remove(&hook->link);
#@@ -201,6 +207,10 @@ spa_hook_list_join(struct spa_hook_list *list,
# #define spa_hook_list_call_start(l,s,t,m,v,...)		spa_hook_list_do_call(l,s,t,m,v,false,##__VA_ARGS__)
# #define spa_hook_list_call_once_start(l,s,t,m,v,...)	spa_hook_list_do_call(l,s,t,m,v,true,##__VA_ARGS__)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }
# #endif
#diff --git a/spa/include/spa/utils/json.h b/spa/include/spa/utils/json.h
#index 650ce56efd..b3e69eaa7c 100644
#--- a/spa/include/spa/utils/json.h
#+++ b/spa/include/spa/utils/json.h
#@@ -37,6 +37,14 @@ extern "C" {
# 
# #include <spa/utils/defs.h>
# 
#+/** \defgroup spa_json SPA JSON Parser
#+ */
#+
#+/**
#+ * \addtogroup spa_json
#+ * \{
#+ */
#+
# /* a simple JSON compatible tokenizer */
# struct spa_json {
# 	const char *cur;
#@@ -401,6 +409,10 @@ static inline int spa_json_encode_string(char *str, int size, const char *val)
# 	return len-1;
# }
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/keys.h b/spa/include/spa/utils/keys.h
#index ae1830dfa0..b20df9c4e3 100644
#--- a/spa/include/spa/utils/keys.h
#+++ b/spa/include/spa/utils/keys.h
#@@ -29,6 +29,14 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_keys  SPA Key Names
#+ */
#+
#+/**
#+ * \addtogroup spa_keys
#+ * \{
#+ */
#+
# /** for objects */
# #define SPA_KEY_OBJECT_PATH		"object.path"			/**< a unique path to
# 									  *  identity the object */
#@@ -121,6 +129,10 @@ extern "C" {
# #define SPA_KEY_API_JACK_SERVER		"api.jack.server"		/**< a jack server name */
# #define SPA_KEY_API_JACK_CLIENT		"api.jack.client"		/**< an internal jack client */
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/list.h b/spa/include/spa/utils/list.h
#index f9dd37ccb0..b22de67b4a 100644
#--- a/spa/include/spa/utils/list.h
#+++ b/spa/include/spa/utils/list.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_utils
#+ * \{
#+ */
#+
# struct spa_list {
# 	struct spa_list *next;
# 	struct spa_list *prev;
#@@ -140,6 +145,10 @@ static inline void spa_list_remove(struct spa_list *elem)
# #define spa_list_cursor_end(cursor, member)                             \
#         spa_list_remove(&(cursor).member)
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/names.h b/spa/include/spa/utils/names.h
#index e69c34a06c..e3c5ba88d7 100644
#--- a/spa/include/spa/utils/names.h
#+++ b/spa/include/spa/utils/names.h
#@@ -29,6 +29,14 @@
# extern "C" {
# #endif
# 
#+/** \defgroup spa_names SPA Factory Names
#+ */
#+
#+/**
#+ * \addtogroup spa_names
#+ * \{
#+ */
#+
# /** for factory names */
# #define SPA_NAME_SUPPORT_CPU		"support.cpu"			/**< A CPU interface */
# #define SPA_NAME_SUPPORT_DBUS		"support.dbus"			/**< A DBUS interface */
#@@ -130,6 +138,10 @@ extern "C" {
# #define SPA_NAME_API_VULKAN_COMPUTE_SOURCE	\
# 					"api.vulkan.compute.source"	/**< a vulkan compute source. */
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/result.h b/spa/include/spa/utils/result.h
#index d54d1a916c..6138bb7fab 100644
#--- a/spa/include/spa/utils/result.h
#+++ b/spa/include/spa/utils/result.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_utils
#+ * \{
#+ */
#+
# #include <spa/utils/defs.h>
# #include <spa/utils/list.h>
# 
#@@ -51,6 +56,10 @@ extern "C" {
# 	strerror(_err);			\
# })
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# } /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/ringbuffer.h b/spa/include/spa/utils/ringbuffer.h
#index a0e2030aaf..4bde3347ad 100644
#--- a/spa/include/spa/utils/ringbuffer.h
#+++ b/spa/include/spa/utils/ringbuffer.h
#@@ -29,6 +29,11 @@
# extern "C" {
# #endif
# 
#+/**
#+ * \addtogroup spa_utils
#+ * \{
#+ */
#+
# struct spa_ringbuffer;
# 
# #include <string.h>
#@@ -49,7 +54,6 @@ struct spa_ringbuffer {
#  * Initialize a spa_ringbuffer with \a size.
#  *
#  * \param rbuf a spa_ringbuffer
#- * \param size the number of elements in the ringbuffer
#  */
# static inline void spa_ringbuffer_init(struct spa_ringbuffer *rbuf)
# {
#@@ -60,6 +64,7 @@ static inline void spa_ringbuffer_init(struct spa_ringbuffer *rbuf)
#  * Sets the pointers so that the ringbuffer contains \a size bytes.
#  *
#  * \param rbuf a spa_ringbuffer
#+ * \param size the target size of \a rbuf
#  */
# static inline void spa_ringbuffer_set_avail(struct spa_ringbuffer *rbuf, uint32_t size)
# {
#@@ -87,7 +92,7 @@ static inline int32_t spa_ringbuffer_get_read_index(struct spa_ringbuffer *rbuf,
#  * Read \a len bytes from \a rbuf starting \a offset. \a offset must be taken
#  * modulo \a size and len should be smaller than \a size.
#  *
#- * \param rbuf a #struct spa_ringbuffer
#+ * \param rbuf a struct \ref spa_ringbuffer
#  * \param buffer memory to read from
#  * \param size the size of \a buffer
#  * \param offset offset in \a buffer to read from
#@@ -166,6 +171,10 @@ static inline void spa_ringbuffer_write_update(struct spa_ringbuffer *rbuf, int3
# 	__atomic_store_n(&rbuf->writeindex, index, __ATOMIC_RELEASE);
# }
# 
#+/**
#+ * \}
#+ */
#+
# 
# #ifdef __cplusplus
# }  /* extern "C" */
diff --git a/spa/include/spa/utils/string.h b/spa/include/spa/utils/string.h
index 3c7ec94c1d..30fc5ceb81 100644
--- a/spa/include/spa/utils/string.h
+++ b/spa/include/spa/utils/string.h
@@ -34,10 +34,17 @@ extern "C" {
 
 #include <spa/utils/defs.h>
 
+/**
+ * \addtogroup spa_utils
+ * \{
+ */
+
 /**
  * \return true if the two strings are equal, false otherwise
  *
  * If both \a a and \a b are NULL, the two are considered equal.
+ *
+ * \ingroup spa
  */
 static inline bool spa_streq(const char *s1, const char *s2)
 {
@@ -93,6 +100,10 @@ static inline bool spa_atob(const char *str)
 	return spa_streq(str, "true") || spa_streq(str, "1");
 }
 
+/**
+ * \}
+ */
+
 #ifdef __cplusplus
 }  /* extern "C" */
 #endif
#diff --git a/spa/include/spa/utils/type-info.h b/spa/include/spa/utils/type-info.h
#index 61aa790276..f863ea2325 100644
#--- a/spa/include/spa/utils/type-info.h
#+++ b/spa/include/spa/utils/type-info.h
#@@ -31,6 +31,11 @@ extern "C" {
# 
# #include <spa/utils/defs.h>
# 
#+/**
#+ * \addtogroup spa_types
#+ * \{
#+ */
#+
# #ifndef SPA_TYPE_ROOT
# #define SPA_TYPE_ROOT	spa_types
# #endif
#@@ -122,6 +127,10 @@ static const struct spa_type_info spa_types[] = {
# 	{ 0, 0, NULL, NULL }
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
#diff --git a/spa/include/spa/utils/type.h b/spa/include/spa/utils/type.h
#index 58db87078d..50b49acd17 100644
#--- a/spa/include/spa/utils/type.h
#+++ b/spa/include/spa/utils/type.h
#@@ -31,6 +31,14 @@ extern "C" {
# 
# #include <spa/utils/defs.h>
# 
#+/** \defgroup spa_types SPA Types
#+ */
#+
#+/**
#+ * \addtogroup spa_types
#+ * \{
#+ */
#+
# enum {
# 	/* Basic types */
# 	SPA_TYPE_START = 0x00000,
#@@ -131,6 +139,10 @@ struct spa_type_info {
# 	const struct spa_type_info *values;
# };
# 
#+/**
#+ * \}
#+ */
#+
# #ifdef __cplusplus
# }  /* extern "C" */
# #endif
-- 
GitLab

openSUSE Build Service is sponsored by