A renderer is an element capable of playing media elements and playlists of media elements.
As in the case of MAFW sources, in order to create a renderer plugin a shared library should be implemented, as well as a module initializer and a GObject inheriting from MafwRenderer. An example would be very similar to the Mafw source's one.
Of course, the methods that have to be redefined are the ones defined at MafwRenderer, and again, the developer may choose not to provide an implementation for some of them. The MafwRenderer class defines many methods that can be classified like this:
Playback: Those used to control playback (play, stop, pause, resume, volume, etc)
Playlist management: Those used to assign a playlist to the renderer and manipulate it.
Status: Used to query the status of the renderer, like its current playback state or selected media.
Position: Used to query the current playback position or set it (seeking).
Renderers also define some signals that should be taken into account, such as: