# Partial Configurations

A session configuration can include a group of useful tasks from another file, called a partial configuration. This means that you can build groups of related tasks and re-use them in different places, or move a complex sequence of operations into a separate file.

A partial configuration has a similar structure to a session configuration. It begins with a section named `[Library]`, rather than `[Session]`, but contains a list of tasks defined using the `Engine` parameter. Each of the tasks is configured in a named section. The `[Library]` section also specifies the input to, and output from, the partial configuration.

- The parameter `Input` specifies a list of aliases for tracks that are expected as input. Tasks in the partial configuration must use these aliases to refer to tracks provided by the session configuration.

- The parameter `Output` specifies a list of tracks to return to the session configuration. Specify the track names in the format:

  `Alias:TaskName.TrackName`

  ...where `Alias` is the track name to return to the session configuration, `TaskName` is the name of the task (in the partial configuration) that produced the track, and `TrackName` is the name of the track.

The following is an example partial configuration.

    [Library]
    Engine0 = ObjectClassRecognizer
    Engine1 = ObjectTypeFilter
    Input0 = PartialConfigInput
    Output0 = PartialConfigOutput:ObjectTypeFilter.Output

    [ObjectClassRecognizer]
    Type = ObjectClassRecognition
    Recognizer = ...
    Input = PartialConfigInput

    [ObjectTypeFilter]
    Type = Filter
    Input = ObjectClassRecognizer.DataWithSource
    LuaScript = OutputCarsOnly.lua

To use a partial configuration, set the `Import` parameter in the `[Session]` section of your session configuration. This specifies the name of a section that provides more information about the partial configuration. In the named section:

- The `Config` parameter specifies the partial session configuration to use. You can specify a file path, either absolute or relative to the Media Server configurations directory (which is specified by the `ConfigDirectory` parameter in the `[Paths]` section of your Media Server configuration file). Alternatively, if you send the partial configuration to Media Server as part of the process request, you can specify the name of an additional data label. For more information about sending additional data in the `process` action, refer to the documentation for the `process` action in the Media Server Reference.

- The `Input` parameter specifies a list of tracks to provide as input to the partial configuration. You do not need to list the default tracks produced by your ingest engine, because these are available in the partial configuration by default. However, you must specify any other tracks that you want to use. Specify track names in the format:

  `Alias:TaskName.TrackName`

  ...where `Alias` matches the alias defined by the `Input` parameter in the partial configuration.

For example:

    [Session]
    Engine0 = IngestSourceMedia
    Engine1 = FilterVideoFrames
    Engine2 = OutputXML
    Import0 = UseMyPartialConfig

    [IngestSourceMedia]
    Type=Video
    ...

    [FilterVideoFrames]
    Type=Filter
    ...

    [UseMyPartialConfig]
    Config = MyPartialConfig.cfg
    // Send track FilterVideoFrames.Output to partial configuration
    // In the partial configuration this track is called PartialConfigInput
    Input0 = PartialConfigInput:FilterVideoFrames.Output

    [OutputXML]
    Type=XML
    // Use track returned from partial configuration
    Input = UseMyPartialConfig.PartialConfigOutput
    ...

A partial configuration can import other partial configurations. If you want to do this, set the `Import` parameter in the `[Library]` section.

_FT_HTML5_bannerTitle.htm