# DeviceCameraBinding

`import { DeviceCameraBinding } from "destack:device/binding";`

Camera binding family.

```ds title="DeviceCameraBinding"
export interface DeviceCameraBinding {
    listCameraDevices(): Result<CameraDevice[], HostError>;
    openCameraWatch(): Result<CameraWatchHandle, HostError>;
    closeCameraWatch(watch: CameraWatchHandle): Result<void, HostError>;
    readCameraWatch(watch: CameraWatchHandle, timeoutNs?: uint64 | undefined): Result<CameraWatchEvent, HostError>;
    openCameraDevice(id: &'a readonly string): Result<CameraDeviceHandle, HostError>;
    closeCameraDevice(camera: CameraDeviceHandle): Result<void, HostError>;
    describeCameraDevice(camera: CameraDeviceHandle): Result<CameraDevice, HostError>;
    listCameraFormats(camera: CameraDeviceHandle): Result<CameraFormat[], HostError>;
    openCameraStream(camera: CameraDeviceHandle, options: &'a readonly CameraStreamOptions): Result<CameraStreamHandle, HostError>;
    closeCameraStream(stream: CameraStreamHandle): Result<void, HostError>;
    startCameraStream(stream: CameraStreamHandle): Result<void, HostError>;
    stopCameraStream(stream: CameraStreamHandle): Result<void, HostError>;
    readCameraFrame(stream: CameraStreamHandle, buffer: &'a [uint8], planes: &'b [CameraPlane], timeoutNs?: uint64 | undefined): Result<CameraFrame, HostError>;
    listCameraControls(stream: CameraStreamHandle): Result<CameraControlCapability[], HostError>;
    getCameraControls(stream: CameraStreamHandle, controls: &'a readonly [CameraControl], values: &'b [CameraControlValue]): Result<uint32, HostError>;
    setCameraControls(stream: CameraStreamHandle, controls: &'a readonly [CameraControlValue]): Result<void, HostError>;
}
```

[language/library/src/device/binding/camera.ds:267:429](https://github.com/destack-sh/destack/blob/main/language/library/src/device/binding/camera.ds#L267-L429)

## Members

### `listCameraDevices(): Result<CameraDevice[], HostError>`

List camera devices.

### `openCameraWatch(): Result<CameraWatchHandle, HostError>`

Open a camera topology watch.

### `closeCameraWatch(watch: CameraWatchHandle): Result<void, HostError>`

Close a camera topology watch.

### `readCameraWatch(watch: CameraWatchHandle, timeoutNs?: uint64 | undefined): Result<CameraWatchEvent, HostError>`

Read one camera topology event.

### `openCameraDevice(id: &'a readonly string): Result<CameraDeviceHandle, HostError>`

Open a camera device.

### `closeCameraDevice(camera: CameraDeviceHandle): Result<void, HostError>`

Close a camera device.

### `describeCameraDevice(camera: CameraDeviceHandle): Result<CameraDevice, HostError>`

Describe a camera device.

### `listCameraFormats(camera: CameraDeviceHandle): Result<CameraFormat[], HostError>`

List camera stream formats.

### `openCameraStream(camera: CameraDeviceHandle, options: &'a readonly CameraStreamOptions): Result<CameraStreamHandle, HostError>`

Open a camera stream.

### `closeCameraStream(stream: CameraStreamHandle): Result<void, HostError>`

Close a camera stream.

### `startCameraStream(stream: CameraStreamHandle): Result<void, HostError>`

Start camera stream capture.

### `stopCameraStream(stream: CameraStreamHandle): Result<void, HostError>`

Stop camera stream capture.

### `readCameraFrame(stream: CameraStreamHandle, buffer: &'a [uint8], planes: &'b [CameraPlane], timeoutNs?: uint64 | undefined): Result<CameraFrame, HostError>`

Read one camera frame.

### `listCameraControls(stream: CameraStreamHandle): Result<CameraControlCapability[], HostError>`

List camera control capabilities.

### `getCameraControls(stream: CameraStreamHandle, controls: &'a readonly [CameraControl], values: &'b [CameraControlValue]): Result<uint32, HostError>`

Read camera control values.

### `setCameraControls(stream: CameraStreamHandle, controls: &'a readonly [CameraControlValue]): Result<void, HostError>`

Update camera control values.
