# Implementing Rygel Media Engines

## Implementing Media Engines: Overview

This library may be used to create Rygel media engines by implementing the RygelMediaEngine class. Rygel media engines contain knowledge about the streaming and (optionally) the transcoding and seeking capabilites of the media library in use.

The actual media engine used by Rygel at runtime is specified by the media-engine configuration key. For instance, in `rygel.conf`: `media-engine=librygel-media-engine-gst.so`

A media engines should derive its own RygelDataSource, returning an instance of it from its create_data_source() implementation.

Optionally, a derived RygelMediaEngine may implement the get_dlna_profiles() and get_transcoders() virtual functions.

Rygel itself provides two media engines:

1. gstreamer: A media engine that uses GStreamer for transcoding and seeking.

2. simple: A media engine that uses no multimedia framework, and therefore offers no transcoding or time-based seeking.