# Core features

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

The Video SDK for Windows lets you programmatically control user video during a session: check video status, start video, stop video, and render a user's video. For switching cameras, mirroring, and rotating, see [Camera controls](/docs/video-sdk/windows/video/camera-controls/).

You control video with `IZoomVideoSDKVideoHelper`, obtained from `getVideoHelper`.

## Check whether video is on

To check whether a user has their video on, read `isOn` from the user's `ZoomVideoSDKVideoStatus`.

```cpp
// Get the video status for the user.
ZoomVideoSDKVideoStatus videoStatus = pUserInfo->getVideoStatus();
// Check whether the user's video is on.
bool isVideoOn = videoStatus.isOn;
```

## Start video

To start the local user's video, call `startVideo` on the `IZoomVideoSDKVideoHelper`.

```cpp
// Get the IZoomVideoSDKVideoHelper to perform video actions.
IZoomVideoSDKVideoHelper* pVideoHelper = m_pVideoSDK->getVideoHelper();
if (pVideoHelper) {
    // Start the local user's video.
    pVideoHelper->startVideo();
}
```

## Stop video

To stop displaying the local user's video, call `stopVideo`.

```cpp
// Get the IZoomVideoSDKVideoHelper to perform video actions.
IZoomVideoSDKVideoHelper* pVideoHelper = m_pVideoSDK->getVideoHelper();
if (pVideoHelper) {
    // Stop the local user's video.
    pVideoHelper->stopVideo();
}
```

## Render a user's video

On Windows, you render a user's video by subscribing to their raw video data pipe and drawing the YUV frames you receive. For the full subscription and rendering flow, see [Receive raw data](/docs/video-sdk/windows/raw-data/receive-raw-data/).
