> ## Documentation Index
> Fetch the complete documentation index at: https://docs.liv.tv/llms.txt
> Use this file to discover all available pages before exploring further.

# LckMediator

> How to register, look up, and listen for cameras and monitors in the LIV Camera Kit (LCK) SDK for Unity.

## Description

`LckMediator` is a static utility that coordinates registration and lookup of cameras (`ILckCamera`) and monitors (`ILckMonitor`) within LCK. It maintains collections of active cameras and monitors, raises events when they are registered or unregistered, and forwards monitor-to-camera assignments to downstream systems like mixers.

In most cases you won't call `LckMediator` directly — `LckCamera` and `LckMonitor` register and unregister themselves automatically during their lifecycle. Use it when you need manual control over custom camera/monitor implementations or want to react to registration events.

***

## Usage

### Manually registering a custom ILckCamera implementation

```c# theme={null}
var customCamera = new CustomLckCamera(); 
LckMediator.RegisterCamera(customCamera);

var foundCamera = LckMediator.GetCameraById(customCamera.CameraId);
if (foundCamera != null)
    Debug.Log($"Camera {foundCamera.CameraId} is registered.");

// When cleaning up
LckMediator.UnregisterCamera(customCamera);
```

### Reacting to camera/monitor registration events

```c# theme={null}
LckMediator.CameraRegistered += cam =>
    Debug.Log($"Camera registered: {cam.CameraId}");

LckMediator.MonitorRegistered += mon =>
    Debug.Log($"Monitor registered: {mon.MonitorId}");
```

***

## References

### Events

| Event                     | Type                                                           | Description                                     |
| :------------------------ | :------------------------------------------------------------- | :---------------------------------------------- |
| CameraRegistered          | Action\<[`ILckCamera`](/api-reference/interface/ILckCamera)>   | Invoked when a new camera is registered.        |
| CameraUnregistered        | Action\<[`ILckCamera`](/api-reference/interface/ILckCamera)>   | Invoked when a camera is unregistered.          |
| MonitorRegistered         | Action\<[`ILckMonitor`](/api-reference/interface/ILckMonitor)> | Invoked when a new monitor is registered.       |
| MonitorUnregistered       | Action\<[`ILckMonitor`](/api-reference/interface/ILckMonitor)> | Invoked when a monitor is unregistered.         |
| MonitorToCameraAssignment | Action\<string, string>                                        | Invoked when a monitor is assigned to a camera. |

### Methods

| Method                                                                   | Returns                                                             | Description                                                        |
| :----------------------------------------------------------------------- | :------------------------------------------------------------------ | :----------------------------------------------------------------- |
| RegisterCamera([`ILckCamera`](/api-reference/interface/ILckCamera))      | void                                                                | Registers a camera if not already present.                         |
| UnregisterCamera([`ILckCamera`](/api-reference/interface/ILckCamera))    | void                                                                | Unregisters a camera by ID.                                        |
| RegisterMonitor([`ILckMonitor`](/api-reference/interface/ILckMonitor))   | void                                                                | Registers a monitor if not already present.                        |
| UnregisterMonitor([`ILckMonitor`](/api-reference/interface/ILckMonitor)) | void                                                                | Unregisters a monitor by ID.                                       |
| GetCameraById(string id)                                                 | ILckCamera                                                          | Retrieves a registered camera by its ID.                           |
| GetMonitorById(string id)                                                | ILckMonitor                                                         | Retrieves a registered monitor by its ID.                          |
| GetCameras()                                                             | IEnumerable\<[`ILckCamera`](/api-reference/interface/ILckCamera)>   | Returns all currently registered cameras.                          |
| GetMonitors()                                                            | IEnumerable\<[`ILckMonitor`](/api-reference/interface/ILckMonitor)> | Returns all currently registered monitors.                         |
| NotifyMixerAboutMonitorForCamera(string, string)                         | void                                                                | Notifies listeners about an assignment between monitor and camera. |

***

## See Also

* [LckCamera](/api-reference/unity/classes/LckCameraController) — MonoBehaviour that auto-registers with LckMediator on enable
* [LckMonitor](/api-reference/unity/classes/LckMonitor) — MonoBehaviour that auto-registers with LckMediator on enable
* [LckCamera](/api-reference/unity/classes/LckCameraController) — Interface for custom camera implementations
* [LckMonitor](/api-reference/unity/classes/LckMonitor) — Interface for custom monitor implementations
