This section describes how to integrate FFDShow into your third party applications (video players, media centers etc.). It is possible to get or set any live setting of a running instance of FFDShow.
For example, retrieve the list of audio/subtitles streams and switch between them, or get and set any postprocessing setting (picture brightness, noise reduction, subtitles delay or font size…).
To do this, a .NET library (coded in C#) is delivered in source and binary form. Feel free to use and modify it. A sample application which uses some functions of this library is included as well.
Each time an FFDShow instance is loaded to decode or process a video, a listener thread is created. This thread (FFDShowRemoteAPI) is able to handle a list of predefined commands, such as “get this setting” or “set this setting with this value”. The .NET library encapsulates the communication primitives and integrates a list of main functions (see below). For now it is only possible to communicate with FFDShow video instances/filters. Accessing remotely FFDShow's audio filters is not supported. However, FFDShow video integrates some features that go beyond its scope, such as the handling of audio/subtitle streams and chapters. About that, FFDShow video will browse the DirectShow filters that support multiple streams such as Matroska splitters (Haali's or Gabest's), or FFDShow audio that can handle multiple audio streams within Bivx files (i.e. an AVI file with multiple audio streams).
With the library you can do the following with little effort. More functions will come in the future.
The following paragraph describes how FFDShow should be configured in order to be used with the FFDShowAPI library. This configuration applies to both developers and end users.
Before using the library, FFDShow needs to be configured in order to accept incoming requests. Open the FFDShow video configuration dialog and go to the “Keys & remote” section:
You don't have to change anything else. Other options allow you to define keyboard shortcuts, but using this feature is not recommended as some applications like Media Center don't work with it.
It is recommended to enable two additional features thus allowing the full use of the library. The features are: