# &app; Developers Manual

for &app; 0.99.99 (API version 5.8)

## Overview

&app; provides a framework for implementing stream directory handlers which can be loaded from separate plugins.

The API is not orthogonal with GObject and could be cleaner, but can nevertheless be used to easily add support for new stream directories to streamtuner.

### Conventions

- Unless noted otherwise, strings passed to functions or used as structure members must be encoded in UTF-8.

- Unless noted otherwise, strings returned by streamtuner are encoded in UTF-8.

- Handler callbacks which are susceptible to block the application for a long period will be run in a separate thread of execution.

### Plugins

Plugins will be looked up in `LIBDIR/streamtuner/plugins`, `~/.streamtuner/plugins`, and in the directories specified in the colon-separated environment variable `STREAMTUNER_PLUGINS_PATH` (in that order). Filenames not having the system-specific shared object extension (usually .so) will be ignored.

A plugin must define an initialization function, which is responsible for registering one or more stream directory handlers. See STPluginInitCallback().

## API Reference

&st-action; &STCategory; &st-dialog; &STHandler; &STHandlerField; &st-handlers; &st-m3u; &st-pls; &STPlugin; &st-programs; &st-re; &st-settings; &st-sgml-ref; &st-state; &STStream; &st-transfer; &st-util; &st-version;