# Base Encoder Plugin

Base layer encoding is implemented via a plugin system. Base encoder plugins, along with their corresponding wrappers, are dynamically loaded at runtime, based upon the name of the Base encoder specified in the `EILOpenSettings` structure.&#x20;

The name of the base encoder that the EIL uses for base encoding should not contain the preceding `lcevc_eilp_` (`liblcevc_eilp_` on Linux) or the platform's dynamic library extension. For example, if a plugin is called `liblcevc_eilp_x264.so` or `lcevc_eilp_x264.dll`, then the `base_encoder` string should be `x264`.

The EIL utilises several search paths to locate plugins. This is to assist with different program usage behaviours and EIL integration techniques. The order of search is as follows:

1. The location of the application process.
2. The current working directory.
3. System-defined PATH environment variable.

An API is provided for the EIL to interact with plugins. This allows a user to optionally implement their own base encoder through the plugin system without the need to be embedded within the EIL, and provides the benefits of modularity. Note: This requires the base plugin API and further documentation on how to develop your own base encoder plugin.
