Camera Controller Universal

User Guide

Getting Started

What is Camera Controller Universal?

Camera Controller Universal gives you full control over your webcam or conference camera. Instead of being stuck with whatever your camera decided looks good, you can:

It works with most USB webcams and conference cameras on Windows 10 and 11.

How to Use Camera Controller

Camera Controller is flexible — you can use it in different ways depending on what you need. Here are the three most common setups:

Standalone camera control

Use Camera Controller on its own to set up and fine-tune your camera. The live preview shows you exactly what the camera sees while you adjust picture settings, point and zoom the camera, and save presets for later.

images/mode-standalone.png

This is the best way to get started: take your time to explore the controls, find the right settings for your room and lighting, and save a few presets.

Control bar alongside a video call

During a Teams, Zoom, or Google Meet call, keep Camera Controller as a compact bar below your video window. You get full control over picture, zoom, and camera position — and you can switch presets during the call without touching the video app. (Yes, that's me!)

images/mode-control-bar-preview.png

For an even slimmer bar, switch off "Show Preview" — the camera view is already in your video call, so you don't need it twice.

images/mode-control-bar.png

Important: Start Camera Controller before you join the call. If Teams or Zoom opens the camera first, it may take exclusive access and Camera Controller won't be able to connect. See Sharing Camera Access for how to set up shared camera mode on Windows 11.

Preset switcher

If you've already saved your favourite camera setups as presets, you can shrink Camera Controller down to just the preset buttons. Hide the preview and all control panels, and you're left with a minimal strip that lets you switch between camera positions and settings with a single click — even during a live call.

images/mode-preset-switcher.png

This is ideal when you want to switch between "Close-Up" and "Whiteboard" views during a presentation without any distracting controls on screen.

Installing the App

Install Camera Controller Universal from the Microsoft Store. Once installed, launch it from the Start menu or taskbar like any other app.

If you use video conferencing software (Zoom, Teams, Google Meet, etc.), you should enable Windows shared camera mode so that Camera Controller Universal can show its preview and adjust the camera while you're in a call. This requires Windows 11 version 24H2 or later. See Sharing Camera Access Between Applications for step-by-step instructions.

Your First Steps

1. Plug in your camera

Connect your USB camera if it isn't already. The app detects your cameras automatically.

2. Open the app

Click the Camera Controller Universal icon. You'll see the main window:

Camera Controller Universal Logitech BRIO [4K Stream Edition] Camera Preview Presets Picture Controls Camera Controls Settings M1 M1 W W CU CU + Brightness + - 128 Contrast + - 32 Saturation + - 64 Pan: 12 Tilt: -5 Auto Zoom + - 100 Focus + - 40 Show Preview Shared Access Remember Settings Show Numeric Settings Show Presets Advanced... Settings... A Camera Selector B Live Preview C Drag to Resize 1 2 3 4

3. Choose your camera

Use the dropdown at the top (A) to select which camera you want to control. If you only have one camera, it's already selected.

4. Check the preview

The upper part of the window (B) shows a live preview of what your camera sees. This updates in real time as you make changes.

5. Start adjusting

The lower part of the window has four panels. Here's a quick overview:

Panel What it does
Presets (1) A column of round buttons on the left. Each one is a saved camera setup you can load with a click.
Picture (2) Vertical joysticks for brightness, contrast, saturation, and other picture adjustments.
Camera (3) A joystick pad for pointing the camera, plus vertical joysticks for zoom and focus.
Settings (4) Quick on/off switches and buttons for common options.

6. Adjust the picture

The controllers in the Picture and Camera panels behave like joysticks:

  1. Grab the round button in the middle of a vertical joystick and drag it up or down.
  2. The further you drag, the faster the value changes. A small drag = slow, precise adjustment. A big drag = fast change.
  3. Let go and the button snaps back to the centre, stopping the change. The value stays where you left it.

Each joystick has a gauge - a coloured fill inside the track that shows you the current value at a glance. You can also turn on numeric value display via "Show Numeric Settings" in the Settings panel.

This gives you much finer control than a regular slider, especially for small tweaks.

7. Point and zoom the camera

If your camera supports it, the Camera panel shows a square joystick pad. Grab the dot in the centre and drag in any direction to pan and tilt the camera. Let go to stop. Use the arrow buttons around the edges for tiny, precise movements.

The Zoom and Focus joysticks next to the pad work the same way as the picture joysticks.

8. Save a preset

Once you have everything set up the way you like, click the + button in the Presets panel to save both the camera settings and the screen layout. Give it a short name and a label (up to three characters). You can save multiple presets for different situations and switch between them with a mouse click. Double-click a preset to overwrite it with the current settings.

The camera also returns to your last settings on restart if you switch on "Remember Settings".

Tips

The Main Window

When you open Camera Controller Universal, you see three areas stacked top to bottom: the camera selector, the live preview, and the control panels.

Camera Controller Universal Logitech BRIO [4K Stream Edition] Camera Preview Presets Picture Controls Camera Controls Settings M1 M1 W W CU CU + Brightness + - 128 Contrast + - 32 Saturation + - 64 Pan: 12 Tilt: -5 Auto Zoom + - 100 Focus + - 40 Show Preview Shared Access Remember Settings Show Numeric Settings Show Presets Advanced... Settings... A Camera Selector B Live Preview C Drag to Resize 1 2 3 4

Camera Selector (A)

The dropdown bar at the very top lists all cameras connected to your computer. Click it to choose which camera you want to control. The app remembers your last choice and selects the same camera next time you open it.

Live Preview (B)

The middle area shows a live view from the selected camera. Everything you change in the controls below is immediately visible here.

Control Panels (1-4)

The bottom area is divided into four panels, arranged left to right:

1. Presets

Your saved camera setups. By default they appear as round buttons with short labels (up to three characters). With Preset Thumbnails enabled (see Settings), each button shows a small camera snapshot instead, making it easy to identify presets visually. Click to load, double-click to update. See Presets for details.

2. Picture

Vertical joysticks for adjusting the image: brightness, contrast, saturation, and others. See Adjusting the Picture to learn how they work.

3. Camera

The joystick pad for pointing the camera (pan and tilt) plus vertical joysticks for zoom, focus, and other camera properties. See Pointing & Zooming the Camera.

4. Settings

Quick on/off switches for common options, plus buttons to open the Advanced camera settings and the full Settings window. See Settings.

Adapting to Your Camera

Not every camera supports every feature. The app detects what your camera can do and only shows the relevant controls. For example:

Dark and Light Mode

The app follows your Windows colour scheme by default. If Windows is set to dark mode, the app uses a dark theme; if light, it uses a light theme. You can also force a specific mode in the Settings window.

Picture Controls

The Picture panel contains vertical joysticks for adjusting how the image looks: brightness, contrast, colour saturation, and more.

Brightness A + - 128 Resting Brightness A + - Dragged up = faster increase 165 Dragging Auto Gauge Grip

How the Joysticks Work

The controllers behave like joysticks:

  1. Grab the round grip in the centre and drag it up or down.
  2. How far you drag controls how fast the value changes. A small drag gives you slow, precise adjustment. A large drag changes the value quickly.
  3. Let go and the grip snaps back to the centre. The change stops immediately, and the value stays where it is.

What You See on a Joystick

Available Properties

By default, the app shows three properties:

Property What it does
Brightness Makes the overall image lighter or darker.
Contrast Controls the difference between the lightest and darkest parts of the image. Higher contrast = more punch.
Saturation Controls how vivid the colours are. Turn it down for a more muted look, up for richer colours.

Many cameras support additional properties that are hidden by default to keep the panel clean. Here is how the panel looks with all properties visible:

Picture Controls - All Properties Visible Bright. 128 Contr. 32 Hue 0 Satur. 64 Sharp. 3 Gamma 100 WB 4500 Backl. 0 Gain 16 Each control can be shown or hidden in Settings. By default, only 3 are visible.

Property What it does
Hue Shifts all colours around the colour wheel.
Sharpness Makes edges crisper or softer.
Gamma Adjusts mid-tone brightness without affecting the very darkest or lightest areas.
White Balance Adjusts colour temperature (warm/cool) to match your lighting.
Backlight Compensates when there's a bright light behind the subject.
Gain Boosts the image in low-light conditions (may add graininess).

Each property can be shown or hidden individually. Click Settings... in the Settings panel and use the visibility switches. See Settings.

Automatic Mode

Some properties (like White Balance or Exposure) offer an Auto switch below the joystick. When Auto is on:

When you switch Auto off, the value freezes at whatever the camera had settled on. This is useful when you want the camera to find a good value first, then lock it in so it doesn't keep changing.

Anti-Flicker

If your camera image has a noticeable flicker under fluorescent or LED lighting, you can set the anti-flicker option in the Settings window. Choose 50 Hz (most of Europe, Asia, and Africa) or 60 Hz (the Americas and parts of Asia) to match your local electricity frequency.

Camera Controls

If your camera supports pan, tilt, zoom, or focus, the Camera panel gives you hands-on control. This includes cameras with physical motors (like conference cameras) as well as many 4K webcams that offer electronic pan, tilt, and zoom by cropping from a high-resolution sensor.

The Joystick Pad

The joystick is a square pad with a round grip in the centre. It controls where the camera is pointing.

Pan: 12 Tilt: -5 Auto Pan gauge (below) Tilt gauge (right) Drag to move. Release to stop. Use the gauges to aim when the camera only moves after you release - this is a camera limitation.

How to use it

  1. Grab the round grip in the centre and drag in any direction.
  2. The camera moves the way you drag. Drag further = faster movement.
  3. Let go to stop. The grip snaps back to the centre.

For small, precise adjustments, use the arrow buttons around the edges of the pad. Each click nudges the camera by the smallest possible step.

Double-click the grip to centre the camera (move to pan 0, tilt 0).

Position gauges

Two coloured bars show where the camera is currently pointing:

When the "Show Numeric Settings" setting is on, the exact position numbers are displayed below the pad.

Using the gauges to aim

Some cameras (particularly some Logitech models) only move the camera after you release the joystick, rather than while you're dragging. This is a limitation of the camera's own firmware - it is not something Windows or this app can change.

When this happens, the gauges become your guide: drag the joystick to set your target position, watch the gauge bars to see where the camera will end up, then release. The camera moves to that position. With a little practice this becomes intuitive - think of it like setting coordinates and then pressing "go".

Auto mode

Some cameras can track a subject automatically. If your camera supports this, an Auto switch appears below the joystick. When Auto is on, the camera points itself and the joystick is disabled.

Zoom, Focus, and Other Controls

To the right of the joystick pad, you'll find vertical joysticks for additional camera properties. These work the same way as the picture joysticks - drag the grip away from centre to change the value, let go to stop. Each one has a gauge showing the current value.

Control What it does
Zoom Move closer to or further from the subject without physically moving the camera.
Focus Sharpen the image at a specific distance. Most useful in manual mode.

Other controls (Exposure, Iris, Roll) may appear depending on your camera. Here is how the panel looks with all controls visible:

Camera Controls - All Properties Visible Pan: 12 Tilt: -5 Auto Zoom 100 Focus 40 Expos. -5 Iris 4 Roll 0

Each control can be shown or hidden individually in Settings.

The Focus Trick

Many people use this workflow to get a sharp, stable focus:

  1. Leave Auto switched on. The camera will search for the right focus distance.
  2. Once the image is sharp, switch Auto off. The focus locks in place.
  3. The camera stops "hunting" (the annoying in-and-out searching that some cameras do).

This is especially useful during video calls and recordings where you want a consistently sharp image.

Physical Joystick / Gamepad

You can connect a USB joystick, gamepad, or flight stick to control your camera hands-free. The physical joystick works alongside the on-screen joystick - both use the same control logic.

Axis mapping

By default the joystick axes are mapped to:

Axis Camera function
X axis (left/right) Pan
Y axis (forward/back) Tilt
Z axis or throttle Zoom
Additional axes Focus, Exposure, Iris (if available)

You can reassign axes and buttons in Settings.

How movement speed works

The app distinguishes between a nudge and continuous movement based on how long you hold the stick:

The arrow buttons on the on-screen joystick pad always produce a single nudge, regardless of how long you hold them.

Within the continuous zone, the stick has a dead zone near the centre (~10%) to prevent drift, and speed increases smoothly with deflection up to full speed.

Button mapping

Joystick buttons can be mapped to actions like recalling presets or toggling auto-focus. See Settings for details.

Does My Camera Support Pan, Tilt, or Zoom?

Many cameras support more than you might expect. Conference cameras with physical motors obviously do, but many 4K webcams also offer electronic pan, tilt, and zoom - even some older HD models like the Logitech C920 have limited support. The app automatically detects what your camera can do.

If you're not sure, here's a quick way to check:

  1. Open Settings... in the Settings panel.
  2. Set Advanced Opens to "DirectShow property page".
  3. Click OK, then click the Advanced... button in the main window.
  4. The camera's own property page opens, showing all the features your camera reports to Windows.

If pan, tilt, or zoom appear there, the app can control them. If they don't appear in the camera's own property page either, then the camera (or its driver) simply doesn't offer those features to Windows.

Camera Startup Behaviour

Some conference cameras go through a short startup routine when they're first switched on or when the app starts - the camera physically moves to a starting position. This is normal. If you have "Remember Settings" enabled, the app will wait a few seconds for this to finish and then move the camera to your saved position. You can adjust the wait time under "Startup Delay" in Settings.

Presets

Presets let you save your complete camera setup and screen layout, and recall it instantly. This is perfect when you regularly switch between different scenarios - for example, switching between a "Whiteboard" view and a "Close-Up" during a presentation.

What Gets Saved

A preset captures everything:

When you load a preset, all of these are applied at once.

The Presets Panel

The narrow column on the left side of the control area shows your presets. By default they appear as round buttons with short labels:

Presets Meeting Room 1 M1 W CU +

If you enable Preset Thumbnails in the Settings window, each preset shows a small snapshot of what the camera was seeing when the preset was saved, making it easy to pick the right one at a glance:

Presets M1 M1 W W CU CU +

When thumbnails are enabled the panel automatically arranges presets into multiple columns if there isn't enough vertical space to show them all in one column.

You can hide this panel using the "Show Presets" switch in the Settings panel. Presets can also be reviewed and managed in the Settings window.

Creating a Preset

  1. Set up the camera exactly the way you want it - picture adjustments, camera position, zoom, everything.
  2. Click the + button in the Presets panel.
  3. If thumbnails are enabled, the dialog shows a snapshot of the current camera view on the left. The Save thumbnail checkbox (on by default) controls whether this snapshot is stored with the preset.
  4. Enter a label (up to three characters, e.g., "WB" or "MTG"). This must be unique.
  5. Enter a name (up to 16 characters, e.g., "Whiteboard").
  6. Click OK.

Your preset now appears as a new button in the panel — with a thumbnail if you chose to save one.

Updating a Preset

Made changes and want to save them to an existing preset? Double-click the preset button. The edit dialog opens with a fresh snapshot from the camera. Confirm to overwrite the preset with your current camera settings and thumbnail.

Editing the Name or Deleting a Preset

Double-click a preset button to open the edit window:

Edit Preset Save thumbnail Initial (3 chars) M1 Name (max 16 chars) Meeting Room 1 Initial must be unique. Double-click a preset to load it. Delete OK Cancel

Here you can:

Supported Cameras

Presets work with all cameras, but pan/tilt position in presets requires a camera that supports absolute positioning. This includes:

Tips

Settings

Quick Settings (Main Window)

The Settings panel on the right side of the main window gives you quick access to common options:

Switch What it does
Show Preview Show or hide the live camera view. Hiding it gives you more room for the controls.
Shared Access When on, other apps (like Teams or Zoom) can use the camera at the same time. When off, only Camera Controller Universal uses the camera.
Remember Settings When on, your camera adjustments are saved when you close the app and restored next time.
Show Numeric Settings Show or hide the numbers on the joysticks.
Show Presets Show or hide the presets column on the left.

Below the switches are two buttons:

The Settings Window

Click Settings... to open the full configuration window. It has four columns:

images/settings-dialog.png

Column 1 - Picture Controls

Lists all picture properties your camera supports. For each one:

At the bottom:

Column 2 - Camera Controls

Same idea as Column 1, but for camera positioning: pan/tilt, zoom, focus, exposure, iris, and roll.

Pan and Tilt share a single visibility switch because they are controlled together with the joystick.

Column 3 - Settings Switches

Controls which quick switches appear in the main window and what their current value is.

Each setting has two toggles:

This lets you simplify the main window by hiding switches you don't use regularly, while still being able to change them here when needed.

Column 4 - System & Presets

Advanced Opens:

Choose what the "Advanced..." button in the main window opens:

Startup Delay:

How long the app waits after startup before restoring your saved camera position. Some cameras need a few seconds to finish their startup routine before they accept position commands. If your camera doesn't move to the saved position on startup, try increasing this delay. Default is 5 seconds.

Display Mode:

Show Presets:

Show or hide the presets panel in the main window.

Preset Thumbnails:

Controls the size of thumbnail snapshots shown on preset buttons. Drag the slider to choose a display height (shown in millimetres so the size is consistent regardless of your screen resolution). Slide all the way to the left to turn thumbnails off — presets revert to the original round buttons with letter labels. A preview box with diagonal lines shows the approximate thumbnail size at the current setting.

Presets:

A list of all presets saved for the current camera. You can edit the label and name of each preset, or delete presets using the × button.

Bottom Buttons

Button What it does
Reset Camera Sets all properties of the current camera back to their factory defaults. Your presets are not affected.
Reset UI Resets the window layout (panel sizes, position) to defaults. Your camera settings and presets are not affected.
Reset All Removes all saved settings and presets for all cameras. The app returns to its initial state. Use with care.
Windows Settings Opens the Windows camera settings page for your camera. From there you can enable shared camera mode and access other system-level camera options.
Camera Properties Opens the camera's own property page provided by the manufacturer.
Joystick Setup Opens the joystick configuration for mapping physical joystick axes and buttons.

Per-Camera Settings

Each camera has its own settings. When you switch cameras, the app loads the settings you previously configured for that specific camera. You can have completely different setups for different cameras.

Troubleshooting

General

My camera doesn't appear in the list

A control I expect is missing

The app only shows controls that your camera actually supports. If a property doesn't appear, your camera doesn't offer it. You can also check that the property isn't hidden: open Settings... and look for its Visible switch.

The camera is being used by another app

If you see a blank preview or get no response from controls, another application might have exclusive access to the camera. Either close that application, or turn on Shared Access in the Settings panel to allow multiple apps to use the camera at the same time.

Pan, Tilt, and Zoom

The camera doesn't move to my saved position on startup

Many conference cameras go through a startup routine where they physically move to a home position when first powered on. The app waits before restoring your saved position (default: 5 seconds). If your camera takes longer, increase the Startup Delay in Settings.

The camera only moves when I release the joystick

This is a known behaviour with some Logitech cameras (including the BCC950 and C920 series). The camera hardware only processes movement after you stop sending commands. There is no workaround within the app - it's how those cameras behave. Cameras with speed-based movement (common on professional conference cameras) respond smoothly during the drag.

The joystick doesn't appear

Your camera doesn't report pan/tilt capability to Windows. The joystick only appears for cameras that support it - this includes both cameras with physical motors and cameras with electronic pan/tilt (common on 4K webcams). Check the camera's own property page via the Advanced... button - if pan/tilt doesn't appear there either, the camera's driver simply doesn't offer it. Contact the camera manufacturer for more information.

Note: The Logitech PTZ Pro 2 and Logitech Group do not expose pan/tilt through the standard Windows interface, but Camera Controller Universal detects them automatically and provides full joystick control including presets with camera position.

The camera hits its limits

Some cameras don't accurately report their movement range. If the camera physically bumps into its pan or tilt limits, try reducing the range of movement by not dragging the joystick all the way to the edge.

Picture Adjustments

Changes don't seem to take effect

If you have another app (like OBS or Teams) using the camera, it may be overriding your settings. Try turning off Shared Access for exclusive control, or check the other app's camera settings.

The image flickers under artificial lighting

Open Settings and set the Anti-Flicker option to match your region: 50 Hz for most of Europe, Asia, and Africa; 60 Hz for the Americas and parts of Asia.

Logitech-Specific Notes

Logitech Rally

The Rally camera can be slow to respond to rapid adjustments. If position readings seem inconsistent or the camera behaves erratically, try making changes more slowly and waiting between adjustments.

Logitech PTZ Pro 2 / Logitech Group

These cameras do not expose pan and tilt through the standard Windows camera interface. Camera Controller Universal detects them automatically and provides full pan/tilt control via Logitech's proprietary interface.

What works:

Limitations:

Preview

Preview flickers or disappears at very large window sizes

On high-DPI displays, stretching the window very tall (so the preview area exceeds approximately 3800 pixels in height) may cause the live preview to briefly disappear or flicker. This is a limitation of the VMR-9 video renderer's Direct3D 9 back buffer, which must match the full window size. The preview recovers automatically when the window is resized to a smaller height, or when maximizing/restoring.

Settings

My settings are lost after a Windows update

In rare cases, a major Windows update may reset application settings. If this happens, you will need to reconfigure your camera settings. Using presets makes recovery faster - but presets are stored in the same location, so they may also be affected.

Different USB port = different settings

The app identifies cameras partly by which USB port they are connected to. If you plug the same camera into a different port, it may appear as a new device with default settings. For consistent behaviour, always use the same USB port for a given camera.

Technical Appendix

This section is for developers and advanced users who want to understand the internals of Camera Controller Universal.

Architecture

DirectShow Interfaces

Two COM interfaces control camera properties:

IAMVideoProcAmp

Controls picture properties (brightness, contrast, hue, saturation, sharpness, gamma, white balance, backlight compensation, gain, colour enable, digital multiplier, digital multiplier limit, white balance component, powerline frequency).

IAMCameraControl

Controls mechanical/optical properties (pan, tilt, roll, zoom, exposure, iris, focus). Same API shape as IAMVideoProcAmp.

Flag Constants

Flag Value Meaning
CameraControl_Flags_Auto 0x0001 Camera manages the property
CameraControl_Flags_Manual 0x0002 Application sets the value
KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE 0x0010 Value is a speed, not a position

capsFlags is a bitmask of supported modes. Bit 0 = auto supported, bit 1 = manual supported, bit 4 = relative (speed-based) movement supported.

Relative (Rate-Based) Control

Some PTZ cameras support relative mode where value is a speed:

Detection: Only check capsFlags & 0x10. Do NOT probe with Set() calls - many cameras silently accept relative commands but treat the value as an absolute position, causing unexpected movement to position 0.

Settings Storage

All settings are stored in the Windows Registry under:


HKEY_CURRENT_USER\Software\CameraControllerUniversal

Global Settings

Key Type Description
LastCameraPath REG_SZ Device path of the last-selected camera
RestoreSettings REG_DWORD 0/1 - restore on startup
PreviewEnabled REG_DWORD 0/1 - preview visible
AdvancedOpensMode REG_DWORD 0=DirectShow page, 1=Windows Settings
RestoreDelaySec REG_DWORD Tenths of seconds (50 = 5.0s)
DisplayMode REG_DWORD 0=System, 1=Dark, 2=Light
WindowRect REG_BINARY RECT structure (window position/size)
PanelsHeight REG_DWORD User-set panel height in pixels
VisPreview, VisShared, VisRestore, VisValues, VisPresets REG_DWORD Visibility of Settings panel toggles
ShowValues, ShowPresets REG_DWORD Current toggle states

Per-Camera Settings

Stored under ...\Cameras\:

Key Pattern Description
VP_ / VP__f VideoProcAmp value and flags
CC_ / CC__f CameraControl value and flags
Vis_VP_ Visibility for VideoProcAmp property
Vis_CC_ Visibility for CameraControl property
AntiFlicker 0=disabled, 1=50Hz, 2=60Hz

Device paths are sanitised by replacing \, /, #, ?, {, }, : with _.

DPI Scaling

All layout dimensions are computed relative to the system DPI. The scale factor is dpi / 96.0. Control widths, heights, padding, and font sizes are multiplied by this factor. The Settings panel width is measured from actual rendered text widths rather than fixed pixel values.

Direct2D render targets are explicitly set to 96 DPI to avoid coordinate mismatches between the Win32 pixel space and the D2D drawing space.

Update Rate and Timer Architecture

All interactive controls (sliders and joystick) use a timer-based update pattern:

This architecture prevents WM_TIMER starvation from high-frequency mouse messages (an 800 DPI mouse can generate hundreds of WM_MOUSEMOVE per second, which would starve the low-priority WM_TIMER if repaints were triggered on every mouse move).

Spring Slider Value Computation

  1. Compute elapsed real time (capped at 100ms per tick).
  2. Normalise thumb displacement to [-1..+1], apply power curve (^1.5) for fine control near centre.
  3. Compute position delta: curvedRate * dt / FULL_RANGE_SECONDS (5.0 seconds for full sweep).
  4. Clamp normalised position [0..1], convert to integer via step-grid snapping.
  5. Send change notification only if the integer value changed.

Joystick Speed Computation

The joystick applies a dead zone / saturation curve to the raw displacement:

The parent window converts the normalised speed to camera commands:

PTZ Position Restore

Pan/tilt restore is deferred because many cameras home on startup:

  1. On camera selection, all properties except pan/tilt are restored immediately.
  2. A one-shot timer is started with the configured restore delay.
  3. When the timer fires, saved pan/tilt positions are applied.
  4. On the first joystick grab after restore, a "jiggle" (+/-1 step) is sent to wake the camera motor if needed.

Position tracking uses internal variables (m_panPos, m_tiltPos) rather than API reads, because IAMCameraControl::Get() echoes the last-set value rather than reporting actual physical position.

Build Dependencies

Library Purpose
d2d1.lib Direct2D rendering
dwrite.lib DirectWrite text
strmiids.lib DirectShow GUIDs
ole32.lib, oleaut32.lib COM infrastructure
dwmapi.lib Desktop Window Manager (dark mode title bar)
uxtheme.lib Visual theme detection
comctl32.lib Common controls (tooltips)
windowscodecs.lib WIC image loading (application icon)
shlwapi.lib Shell utility functions

References

Sharing Camera Access

Why this matters

By default, Windows only allows one application to use a camera at a time. This means that if you're in a Zoom, Teams, or Google Meet call, Camera Controller Universal cannot show a preview or control the camera — and vice versa.

Starting with Windows 11 version 24H2, you can enable shared camera mode so that multiple applications can access the same camera simultaneously. With this setting enabled, Camera Controller Universal can show its live preview and adjust camera settings while you're in a video call.

We recommend enabling this setting before using the app, especially if you plan to adjust your camera during meetings. Otherwise you need to switch off the preview in Camera Controller Universal to show the camera in Teams, Zoom or other applications.

How to enable shared camera mode

The quickest way is directly from Camera Controller:

  1. Click Settings... in the Settings panel.

images/settings-dialog.png

  1. Click the Windows Settings button at the bottom of the Settings window.
  2. Windows opens the camera settings page. Click on your camera, then scroll down to Advanced camera options and click Edit.

images/shared-camera-settings.png

  1. Turn on "Allow multiple apps to use camera at the same time" and click Apply.

images/shared-camera-advanced.png

Back on the camera settings page, you should see a confirmation banner:

images/shared-camera-enabled.png

The setting is persistent — you only need to do this once per camera.

Notes