# Remote camera control

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

The Video SDK for Windows lets one user request control of another user's camera by panning, tilting, and zooming it remotely, which is useful for remote-assistance and inspection workflows. You control a specific user's camera through that user's `IZoomVideoSDKRemoteCameraControlHelper`, obtained with `getRemoteCameraControlHelper`.

```cpp
IZoomVideoSDKRemoteCameraControlHelper* pControlHelper = pUser->getRemoteCameraControlHelper();
```

## Request control of a remote camera

Before you can move a camera, call `requestControlRemoteCamera`. The target user receives `onCameraControlRequestReceived` and must approve the request. When they respond, the SDK calls `onCameraControlRequestResult` with whether the request was approved. For details, see [Camera control requests](/docs/video-sdk/windows/video/video-events/#camera-control-requests).

```cpp
pControlHelper->requestControlRemoteCamera();
```

## Pan, tilt, and zoom

Once your request is approved, move the camera with `turnLeft`, `turnRight`, `turnUp`, `turnDown`, `zoomIn`, and `zoomOut`. Each method takes an optional `range` from 10 to 100 that controls how far the camera moves, defaulting to 50.

```cpp
// Pan right by the default amount.
pControlHelper->turnRight();

// Tilt up by a smaller amount.
pControlHelper->turnUp(20);

// Zoom in.
pControlHelper->zoomIn();
```

## Give up control

When you're finished, release the camera with `giveUpControlRemoteCamera`.

```cpp
pControlHelper->giveUpControlRemoteCamera();
```

## Respond to a control request

When another user requests control of the local user's camera, the SDK calls `onCameraControlRequestReceived` and passes an `IZoomVideoSDKCameraControlRequestHandler`. Call `approve` to grant control or `decline` to refuse.

```cpp
void CExampleListener::onCameraControlRequestReceived(IZoomVideoSDKUser* pUser, ZoomVideoSDKCameraControlRequestType requestType, IZoomVideoSDKCameraControlRequestHandler* pCameraControlRequestHandler)
{
    // After confirming with the local user:
    pCameraControlRequestHandler->approve();
    // Or, to refuse:
    // pCameraControlRequestHandler->decline();
}
```
