docs: Implement media engines: Add text.
authorMurray Cumming <murrayc@murrayc.com>
Tue, 18 Dec 2012 08:42:58 +0000 (09:42 +0100)
committerMurray Cumming <murrayc@murrayc.com>
Tue, 18 Dec 2012 08:42:58 +0000 (09:42 +0100)
Though this is mostly a duplicate of the RygelMediaEngine API docs.
Still, it seems helpful to have it here.

doc/reference/librygel-server/gtkdoc/implementing-media-engines.xml
src/librygel-server/rygel-media-engine.vala
src/media-engines/simple/rygel-simple-data-source.vala
src/media-engines/simple/rygel-simple-media-engine.vala

index cafabb2..c10b597 100644 (file)
@@ -9,6 +9,26 @@
 <para>
 This library may be used to create Rygel media engines by 
 implementing the <link linkend="RygelMediaEngine">RygelMediaEngine</link> class.
+Rygel media engines contain knowledge about the streaming and (optionally) the 
+transcoding and seeking capabilites of the media library in use.</para>
+
+<para>The actual media engine used by Rygel at runtime is specified
+by the media-engine configuration key. For instance, in <literal>rygel.conf</literal>:
+<code>media-engine=librygel-media-engine-gst.so</code>
+</para>
+
+<para>Media engines should derive their own <link linkend="RygelDataSource">RygelDataSource</link>,
+returning an instance of it from create_data_source().</para>
+
+<para>Rygel itself provides two media engines:
 </para>
+<para>
+<orderedlist>
+<listitem><para><ulink url="http://git.gnome.org/browse/rygel/tree/src/media-engines/gstreamer">gstreamer</ulink>: A media engine that uses GStreamer for transcoding and seeking.</para></listitem>
+<listitem><para><ulink url="http://git.gnome.org/browse/rygel/tree/src/media-engines/simple">simple</ulink>: A media engine that uses no multimedia framework, and therefore offers no transcoding or time-based seeking.</para></listitem>
+</orderedlist>
+</para>
+
+<para>In addition, the external <ulink url="http://git.gnome.org/browse/rygel-gst-0-10-media-engine">rygel-gst-0-10-media-engine</ulink> project provides a Rygel media engine that uses an older GStreamer version.</para>
 
 </section>
index cc7f885..59fd79f 100644 (file)
@@ -37,9 +37,9 @@ public errordomain Rygel.MediaEngineError {
  * For instance, in rygel.conf:
  * media-engine=librygel-media-engine-gst.so
  *
- * Media engines should also derive their own Rygel.DataSource,
+ * Media engines should also derive their own RygelDataSource,
  * returning an instance of it from create_data_source().
- **
+ *
  * See the
  * <link linkend="implementing-media-engines">Implementing Media Engines</link> section.
  */
index 9ab1bdb..d0ccbd4 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
+/**
+ * A simple data source for use with the simple media engine (RygelSimpleMediaEngine).
+ *
+ * This does not support time-base seeking with 
+ * rygel_data_source_start() because it does not
+ * use any multimedia framework. Therefore, calling start() with
+ * RYGEL_HTTP_SEEK_TYPE_TIME will fail with a 
+ * RYGEL_DATA_SOURCE_ERROR_SEEK_FAILED GError code,
+ */
 internal class Rygel.SimpleDataSource : DataSource, Object {
     private string uri;
     private Thread<void*> thread;
index 00cba01..512a9f2 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
+/**
+ * The simple media engine does not use GStreamer or any other
+ * multimedia framework. Therefore its capabilities are limited.
+ *
+ * It does not support transcoding - get_transcoders() returns null.
+ * Also, its RygelSimpleDataSource does not support time-base seeking.
+ */
 internal class Rygel.SimpleMediaEngine : MediaEngine {
     private List<DLNAProfile> profiles = new List<DLNAProfile> ();