-/** State of a service.
-
- Note that a service may be dormant even though it's fully connected,
- providing or consuming.
-*/
-
-typedef enum
-{
- mlt_state_unknown = 0,
- mlt_state_dormant = 1,
- mlt_state_connected = 2,
- mlt_state_providing = 4,
- mlt_state_consuming = 8
-}
-mlt_service_state;
-
-/** The interface definition for all services.
-*/
+/** \brief Service abstract base class
+ *
+ * \extends mlt_properties
+ * The service is the base class for all of the interesting classes and
+ * plugins for MLT. A service can have multiple inputs connections to
+ * other services called its "producers" but only a single output to another
+ * service called its "consumer." A service that has both producer and
+ * consumer connections is called a filter. Any service can have zero or more
+ * filters "attached" to it. We call any collection of services and their
+ * connections a "service network," which is similar to what DirectShow calls
+ * a filter graph or what gstreamer calls an element pipeline.
+ *
+ * \event \em service-changed a filter was attached or detached or a transition was connected or disconnected
+ * \event \em property-changed
+ * \properties \em mlt_type identifies the subclass
+ * \properties \em _mlt_service_hidden a flag that indicates whether to hide the mlt_service
+ * \properties \em mlt_service is the name of the implementation of the service
+ * \properties \em resource is either the stream identifier or grandchild-class
+ * \properties \em in when to start, what is started is service-specific
+ * \properties \em out when to stop
+ * \properties \em _filter_private Set this on a service to ensure that attached filters are handled privately.
+ * See modules/core/filter_region.c and modules/core/filter_watermark.c for examples.
+ * \properties \em disable Set this on a filter to disable it while keeping it in the object model.
+ * \properties \em _profile stores the mlt_profile for a service
+ * \properties \em _unique_id is a unique identifier
+ * \properties \em _need_previous_next boolean that instructs producers to get
+ * preceding and following frames inside of \p mlt_service_get_frame
+ */