> ## 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.

# Tablet Interface API Reference

> Complete API reference for the LCKTablet module in Unreal Engine, including ULCKSubsystem, ULCKService, ULCKTabletDataModel, ULCKBaseCameraMode, structs, delegates, and save helpers for the LIV Camera Kit (LCK) SDK.

## Classes

### ULCKSubsystem

<ResponseField name="ULCKSubsystem" type="class">
  World subsystem managing ULCKService lifecycle.

  **Parent:** `UWorldSubsystem`

  **Module:** `LCKTablet`
</ResponseField>

#### Methods

| Method                   | Return         | Description                             |
| ------------------------ | -------------- | --------------------------------------- |
| `Initialize(Collection)` | `void`         | Initialize subsystem and create service |
| `Deinitialize()`         | `void`         | Cleanup and destroy service             |
| `GetService()`           | `ULCKService*` | Get the service instance                |

***

### ULCKService

<ResponseField name="ULCKService" type="class">
  Central service for recording and camera control.

  **Parent:** `UObject`

  **Module:** `LCKTablet`
</ResponseField>

#### Recording Methods

| Method                             | Return  | Description                        |
| ---------------------------------- | ------- | ---------------------------------- |
| `StartRecording()`                 | `bool`  | Begin video recording              |
| `StopRecording()`                  | `void`  | End video recording                |
| `ForceStopRecording()`             | `void`  | Force stop (bypasses state checks) |
| `PauseRecording()`                 | `void`  | Pause recording                    |
| `ResumeRecording()`                | `void`  | Resume paused recording            |
| `TakePhoto()`                      | `void`  | Capture single frame               |
| `IsRecording()`                    | `bool`  | Check if currently recording       |
| `GetCurrentRecordingDuration()`    | `float` | Get recording time in seconds      |
| `GetCurrentMicrophoneAudioLevel()` | `float` | Get microphone volume (0-1)        |
| `SetMicrophoneEnabled(bEnabled)`   | `void`  | Enable/disable microphone          |
| `IsMicrophoneEnabled()`            | `bool`  | Check if microphone enabled        |

#### Configuration Methods

| Method                       | Parameters                                                       | Description                  |
| ---------------------------- | ---------------------------------------------------------------- | ---------------------------- |
| `ApplyRecordingSettings`     | Width, Height, Framerate, VideoBitrate, AudioBitrate, Samplerate | Apply recording parameters   |
| `RegisterCaptureComponent`   | `FName ComponentName, USceneCaptureComponent2D*`                 | Register capture source      |
| `UnregisterCaptureComponent` | `FName ComponentName`                                            | Unregister capture component |

#### Delegates

| Delegate                  | Signature                                 | Description         |
| ------------------------- | ----------------------------------------- | ------------------- |
| `OnRecordingError`        | `(FString ErrorMessage, int32 ErrorCode)` | Error occurred      |
| `OnCameraModeChanged`     | `(UClass* ModeClass)`                     | Camera mode changed |
| `OnRecordingSaveFinished` | `(bool Success)`                          | Save completed      |
| `OnRecordingSaveProgress` | `(float Progress)`                        | Save progress (0-1) |

***

### ULCKTabletDataModel

<ResponseField name="ULCKTabletDataModel" type="class">
  Reactive data store with UI binding delegates.

  **Parent:** `UObject`

  **Module:** `LCKTablet`
</ResponseField>

#### Camera Mode Methods

| Method                   | Description                   |
| ------------------------ | ----------------------------- |
| `SetCameraMode(UClass*)` | Switch camera mode            |
| `GetCameraMode()`        | Get current camera mode class |

#### Selfie Mode Methods

| Method                                    | Description            |
| ----------------------------------------- | ---------------------- |
| `SetSelfieFOV(int8 Direction)`            | Adjust FOV (-1/+1)     |
| `SetSelfieSmoothness(int8 Direction)`     | Adjust smoothness      |
| `ToggleSelfieIsFollowing()`               | Toggle follow mode     |
| `SetSelfieFollowDistance(int8 Direction)` | Adjust follow distance |
| `ToggleSelfieCameraFacing()`              | Toggle front/rear      |
| `SetSelfieCameraFacing(ELCKCameraFacing)` | Set facing directly    |

#### First Person Methods

| Method                                     | Description       |
| ------------------------------------------ | ----------------- |
| `SetFirstPersonFOV(int8 Direction)`        | Adjust FOV        |
| `SetFirstPersonSmoothness(int8 Direction)` | Adjust smoothness |

#### Third Person Methods

| Method                                     | Description       |
| ------------------------------------------ | ----------------- |
| `SetThirdPersonFOV(int8 Direction)`        | Adjust FOV        |
| `SetThirdPersonSmoothness(int8 Direction)` | Adjust smoothness |
| `SetThirdPersonDistance(int8 Direction)`   | Adjust distance   |
| `ToggleThirdPersonIsFront()`               | Toggle front/back |

#### Recording Methods

| Method                                        | Description               |
| --------------------------------------------- | ------------------------- |
| `ToggleMicState()`                            | Toggle microphone on/off  |
| `SetMicState(ELCKMicState)`                   | Set mic state directly    |
| `GetMicState()`                               | Get current mic state     |
| `ToggleScreenOrientation()`                   | Toggle landscape/portrait |
| `SetScreenOrientation(ELCKScreenOrientation)` | Set orientation           |
| `GetScreenOrientation()`                      | Get current orientation   |
| `CycleVideoQuality()`                         | Cycle quality presets     |
| `SetVideoQuality(ELCKVideoQuality)`           | Set quality directly      |
| `GetCurrentVideoQuality()`                    | Get current quality       |

#### Recording Profiles

| Property     | Type                   | Description       |
| ------------ | ---------------------- | ----------------- |
| `Profile_SD` | `FLCKRecordingProfile` | SD preset (720p)  |
| `Profile_HD` | `FLCKRecordingProfile` | HD preset (1080p) |
| `Profile_2K` | `FLCKRecordingProfile` | 2K preset (1440p) |
| `Profile_4K` | `FLCKRecordingProfile` | 4K preset (2160p) |

***

### ULCKBaseCameraMode

<ResponseField name="ULCKBaseCameraMode" type="class">
  Abstract base class for camera modes.

  **Parent:** `UActorComponent`

  **Module:** `LCKTablet`
</ResponseField>

#### Methods

| Method                               | Description                 |
| ------------------------------------ | --------------------------- |
| `ActivateMode(Camera)`               | Activate this camera mode   |
| `DeactivateMode(Camera)`             | Deactivate this camera mode |
| `SetSmoothness(float)`               | Set camera smoothness       |
| `SetDistance(float)`                 | Set camera distance         |
| `SetCameraRoot(USceneComponent*)`    | Set root component          |
| `SetSpringArm(USpringArmComponent*)` | Set spring arm              |

***

## Structures

### FLCKTabletData

Saveable structure for user preferences.

```cpp theme={null}
USTRUCT(BlueprintType)
struct FLCKTabletData
{
    UPROPERTY(SaveGame)
    TSoftClassPtr<ULCKBaseCameraMode> CameraMode;

    // Selfie Settings
    UPROPERTY(SaveGame) float SelfieFOV;
    UPROPERTY(SaveGame) float SelfieSmoothness;
    UPROPERTY(SaveGame) bool SelfieIsFollowing;

    // First Person Settings
    UPROPERTY(SaveGame) float FirstPersonFOV;
    UPROPERTY(SaveGame) float FirstPersonSmoothness;

    // Third Person Settings
    UPROPERTY(SaveGame) float ThirdPersonFOV;
    UPROPERTY(SaveGame) float ThirdPersonDistance;

    // Recording Settings
    UPROPERTY(SaveGame) ELCKScreenOrientation ScreenOrientation;
    UPROPERTY(SaveGame) ELCKVideoQuality VideoQuality;
};
```

### FLCKRecordingProfile

```cpp theme={null}
USTRUCT(BlueprintType)
struct FLCKRecordingProfile
{
    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Width;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Height;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Framerate;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 VideoBitrate;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 AudioBitrate;

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    int32 Samplerate;
};
```

***

## Delegates

### Service Delegates

```cpp theme={null}
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnRecordingError,
    FString, ErrorMessage, int32, ErrorCode);

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnCameraModeChanged,
    UClass*, ModeClass);

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRecordingSaveFinished,
    bool, Success);

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnRecordingSaveProgress,
    float, Progress);
```

### Data Model Delegates

```cpp theme={null}
DECLARE_MULTICAST_DELEGATE_OneParam(FOnTabletCameraModeChanged, UClass*);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnSelfieFOVChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnSelfieSmoothnessChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnSelfieIsFollowingChanged, bool);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnSelfieFollowDistanceChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnSelfieCameraFacingChanged, ELCKCameraFacing);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnFirstPersonFOVChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnFirstPersonSmoothnessChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnThirdPersonFOVChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnThirdPersonSmoothnessChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnThirdPersonDistanceChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnThirdPersonIsFrontPositionChanged, bool);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnMicStateChanged, ELCKMicState);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnMicLevelChanged, float);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnScreenOrientationChanged, ELCKScreenOrientation);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnVideoQualityChanged, ELCKVideoQuality);
DECLARE_MULTICAST_DELEGATE_OneParam(FOnRecordStateChange, ELCKRecordingState);
```

***

## Helper Classes

### FLCKJsonSaveHelper

JSON-based save/load utility.

```cpp theme={null}
class FLCKJsonSaveHelper
{
public:
    static bool SaveToFile(const FLCKTabletData& Data, const FString& Filename);
    static bool LoadFromFile(FLCKTabletData& Data, const FString& Filename);
};
```

***

## Log Category

```cpp theme={null}
DECLARE_LOG_CATEGORY_EXTERN(LogA2LCKTablet, Log, All);
```
