# Identify Isolated Events–AndNot Engine

The AndNot engine compares tracks to identify when an event occurs in the first track and nothing happens in the other track(s) within a specified time interval.

For example, you can identify all the occasions when a company logo appears in a video without mention of the company name in the speech:

1. An object recognition task recognizes the logo.
2. A speech-to-text task produces a transcript of the speech.
3. An ESP filter task extracts records from the speech-to-text output that contain the company name and outputs them to a new track.
4. An ESP task (using the AndNot engine) uses the output tracks from the object recognition and filter tasks. It compares events in both tracks and identifies isolated events in the first track (the object track). The engine produces an output track containing records from the object track for when a logo is recognized but is not followed within the specified time interval by the company name in the filtered SpeechToText track.

NOTE: The AndNot engine does not enforce an order of events: the first track's event is considered isolated if an event in another track does not occur either before or after it. If you want to consider only events occurring after (or at the same time as) events in the first track, you can use the AndNotThen engine (see Identify Isolated Events–AndNotThen Engine).

To identify isolated events

1. Create a new configuration to send to Media Server with the `process` action, or open an existing configuration that you want to modify.

2. In the `[Session]` section, add a new task by setting the `EngineN` parameter. You can give the task any name, for example:

       [Session]
       Engine0=Ingest
       ...
       Engine5=IsolatedEvents

3. Create a new configuration section for the task and set the following parameters:

   `Type` | The ESP engine to use. Set this parameter to `AndNot`.
   `Input0` | The first input track. This track must be an output track produced by another task.
   `InputN` | One or more additional input tracks. These must be output tracks produced by other tasks.
   `TimestampCondition` | (Optional) Specifies time limits for matching records, based on the record timestamps. If you are processing images or documents, this parameter is ignored and records are considered related if they are associated with the same page.
   `LuaScript` | (Optional) The name of a Lua script that defines conditions for a discarding a record from the first track. For information about writing the script, see Write a Lua Script for an ESP Engine.

   For more details about the parameters, including the values that they accept, refer to the Media Server Reference.

4. Save and close the configuration file. Micro Focus recommends that you save your configuration files in the location specified by the `ConfigDirectory` parameter.

Example

The following example produces an output track called `LogoWithoutCompanyName.Output`. This track contains records from an object recognition task that indicate when the company logo was recognized. However, the track only contains the appearances when the company name was not mentioned in the audio within five seconds.

    [Session]
    ...
    Engine5=FilterAudio
    Engine6=LogoWithoutCompanyName

    [FilterAudio]
    Type=filter
    ...

    [LogoWithoutCompanyName]
    Type=andnot
    Input0=RecognizeCompanyLogo.Result
    Input1=FilterAudio.output
    TimestampCondition=start1 >= start0 -5s, start1 <= start0 +5s

_FT_HTML5_bannerTitle.htm