Configuration file for mm-renderer

Updated: April 19, 2023

The multimedia renderer configuration file specifies the plugins to load and the values for some plugin parameters. This file must exist at a location known to mm-renderer before you can launch the service.

The default path for the configuration file is /etc/mm/mm-renderer.conf (on the target). You can specify another path through the MM_RENDERER_CONFIG environment variable, which must be defined before starting mm-renderer.

You can use the configuration file shipped with the multimedia package (found at base_dir/target/qnx7/etc/mm/mm-renderer.conf on the host, where base_dir is the location that the multimedia package gets installed to by QNX Software Center), modify the settings in that file as needed, or define your own file.

Note: After it starts, mm-renderer does not support dynamic configuration changes. To modify the configuration, you must shut down the service, update its configuration file, and restart it. You might do these manual steps during debugging but in a production setting, you'll most likely launch mm-renderer in a startup script and hence, you'll have to reboot to make configuration changes take effect.

File syntax

The configuration file is a text file that gets parsed by the core library of mm-renderer at startup. Blank lines are ignored, as is any leading or trailing white space. Lines specifying parameters are in the form key=value. For comments, just start a line with the number sign (#).

The file is divided into sections, each of which configures a plugin. Sections begin with the [plugin] string on its own line. The name of the plugin library file is given on the next line, with the dll key. On the lines that follow, you can set values to any plugin parameters that allow themselves to be overridden through the configuration. Some parameters can also be overridden through the API; if values are provided for a parameter in both the configuration and API, the latter setting is used.

Suppose you want to use the MultiMedia Framework (MMF) audio/video player routing plugin and to override the default update interval of 1000 ms with an update interval of half that time. You would then write the following section:
# Configure the audio/video player routing plugin
[plugin]
dll=mmr-mmf-routing.so
# Set a half-second (500 ms) interval between updates
updateinterval=500

Configurable plugins

The configuration file lets you specify engine and routing plugins, which play certain input types and manage media flows for certain output types. Output plugins, which direct the media to output files or devices, are not listed in the configuration file but instead are loaded and configured by the engine plugins. This design is explained in the Plugins subsection in the architecture description.

The following plugins and parameters can be specified in the configuration:
Playlist engine plugin
Library file: mmr-playlist-engine.so
CAUTION:

Playlists and autolists aren't supported in the shipped version of mm-renderer. If you need this capability, contact QNX Customer Support.

You should add this plugin only if you have playlist and autolist support. If you specify this plugin in the configuration file but don't actually have the libraries, mm-renderer won't work properly; it might not even start.

This plugin supports the playlist and autolist input types, and recognizes these parameters:
queue_max
The maximum number of tracks in the queue window.
The default value (if you don't define this option) is 20 and the minimum value is 3. There's no maximum limit.
tracks_max
The maximum number of tracks to keep open.
The default value is 2 and the minimum value is 1. There's no maximum limit.
Single-track engine plugin
Library file: mmr-track-engine.so
This plugin supports the track input type. There are no parameters for this plugin.
MMF audio/video player routing plugin
Library file: mmr-mmf-routing.so
This plugin supports many parameters:
audio_decoder
The name of the filter to use for decoding all audio input. If you define this parameter, you can't play anything that the named filter doesn't support, even if there's another filter on the target system that does support the input.
If you don't define this parameter, mm-renderer follows its default behavior of querying all installed decoders (when you attach the input) and picking the one that rates itself the highest.
To allow switching between tracks of different formats, you can set audio_decoder to shell_filter. This causes mm-renderer to change to another decoder (if necessary) each time you select a new track for playback. Although this setting uses more resources, without this setting, if you try switching to a track of a format other than the one of the first selected or default track, the operation fails.
audio_writer_prio
The priority level to assign the thread that runs the audio writer filter. The default is 25.
decoder_prio
The priority level to assign any thread that runs a decoder filter. The default is 20.
reader_prio
The priority level to assign the thread that runs the reader filter. The default is 15.
status_prio
The priority level to assign the status thread, which is created by the routing plugin to monitor the media content processing and periodically post status updates. The default is 21.
subpicture_decoder
Note: This parameter has effect only if you've obtained support for subtitles by working with QNX Engineering Services.
The name of the filter to use for decoding all video subtitle input. If you define this parameter, you can't play anything that the named filter doesn't support, even if there's another filter on the target system that does support the input.
If you don't define this parameter, mm-renderer follows its default behavior of querying all installed decoders (when you attach the input) and picking the one that rates itself the highest.
subpicture_decoder_prio
Note: This parameter has effect only if you've obtained support for subtitles by working with QNX Engineering Services.
The priority level to assign the thread that runs the subtitle decoder filter. The default is 19.
updateinterval
The interval between status updates, in milliseconds. The default is 1000 ms.
video_writer_prio
The priority level to assign the thread that runs the video writer filter. The default is 22.
vocoder_filter
Note: This parameter has effect only if you've obtained support for audio trick play by working with QNX Engineering Services.
The name of the filter to use for smooth audio trick play (i.e., playing at non-normal speeds without audio skips). The only filter with the required functionality is named vocoder, so this option, when present, must be set to that value to enable the feature. By default, no vocoder filter is used (and hence, smooth audio trick play isn't supported).
vocoderspeedlimit
Note: This parameter has effect only if you've obtained support for audio trick play by working with QNX Engineering Services.
The speed limit, in units of one-thousandth (1/1000) of normal playback speed, for smooth trick play. At speeds above this limit, the plugin reverts to the default method of skip-based trick play to avoid consuming excessive CPU cycles. In this case, the playback will jump between audio chunks, creating discontinuities.
The range for this field is between 1,000 (normal speed) and 16,000. Values outside this range cause mm-renderer to exit at startup (when the parameter is checked).
MMF audio recorder routing plugin
Library file: mmr-mmfrip-routing.so
This plugin recognizes one parameter: updateinterval, which defines the interval between status updates, in milliseconds. The default value is 100 ms.