# vision

<a id="vision"></a>

# vision

Video analysis for decoded frames: sampling, normalising and detecting, with results reported as vision events.

## Classes

| Name | Description |
|------|-------------|
| [`DetectionQueue`](https://auscaster.com/icey/docs/api-reference/icy-vision-DetectionQueue.md#detectionqueue) | Async queue for normalized detector-ready frames. |
| [`Detector`](https://auscaster.com/icey/docs/api-reference/icy-vision-Detector.md#detector-1) | Base interface for detectors that consume normalized vision frames. |
| [`FrameNormalizer`](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameNormalizer.md#framenormalizer) | Converts sampled decoded video into owned detector-ready frames. |
| [`FrameSampler`](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameSampler.md#framesampler) | [PacketProcessor](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) that forwards a sampled subset of decoded video frames. |
| [`MotionDetector`](https://auscaster.com/icey/docs/api-reference/icy-vision-MotionDetector.md#motiondetector) | Detects motion by comparing each frame with the previous one on a coarse grid, and emits a detect event when the change reaches the threshold. |
| [`VisionEventEmitter`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionEventEmitter.md#visioneventemitter) | Emits vision events to the listeners on its Event signal. |
| [`Detection`](https://auscaster.com/icey/docs/api-reference/icy-vision-Detection.md#detection) | Something a detector found in one frame: its label, confidence and region, and the track it belongs to when one is known. |
| [`FrameNormalizerConfig`](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameNormalizerConfig.md#framenormalizerconfig) | The frames a [FrameNormalizer](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameNormalizer.md#framenormalizer) produces: their source and stream IDs, size and pixel format. A zero size or empty format keeps the decoded frame's own. |
| [`FrameNormalizerStats`](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameNormalizerStats.md#framenormalizerstats) | Counts of frames seen, emitted, dropped and converted. |
| [`FrameSamplerConfig`](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameSamplerConfig.md#framesamplerconfig) | Which frames a [FrameSampler](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameSampler.md#framesampler) forwards: every Nth frame, and no two closer together than the minimum interval. |
| [`FrameSamplerStats`](https://auscaster.com/icey/docs/api-reference/icy-vision-FrameSamplerStats.md#framesamplerstats) | Counts of frames seen, forwarded and dropped. |
| [`MotionDetectorConfig`](https://auscaster.com/icey/docs/api-reference/icy-vision-MotionDetectorConfig.md#motiondetectorconfig) | Settings for a [MotionDetector](https://auscaster.com/icey/docs/api-reference/icy-vision-MotionDetector.md#motiondetector): the grid each frame is reduced to, the frames it learns from before reporting, the change that counts as motion, and the least time between events. |
| [`MotionDetectorStats`](https://auscaster.com/icey/docs/api-reference/icy-vision-MotionDetectorStats.md#motiondetectorstats) | Counts of frames seen and events emitted, and the last motion score. |
| [`Region`](https://auscaster.com/icey/docs/api-reference/icy-vision-Region.md#region-1) | A rectangle within a frame, in coordinates normalised from 0 to 1. |
| [`Track`](https://auscaster.com/icey/docs/api-reference/icy-vision-Track.md#track) | An object followed across frames: its track ID, label, confidence and region. |
| [`VisionEvent`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionEvent.md#visionevent) | A detector's report on one frame, with its detections and tracks, in the vision.event.v1 schema. |
| [`VisionFrameContext`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFrameContext.md#visionframecontext) | The frame a result refers to: its source and stream, frame ID, timing, size, pixel format and whether it is a keyframe. |
| [`VisionFramePacket`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFramePacket.md#visionframepacket) | Owned detector-ready frame buffer carrying stable frame metadata. |

## Typedefs

| Return | Name | Description |
|--------|------|-------------|
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`VisionEvent`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionEvent.md#visionevent) &)> | [`VisionEventSignal`](#visioneventsignal)  |  |
| [`VisionFrameContext`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFrameContext.md#visionframecontext) | [`FrameRef`](#frameref)  |  |

---

<a id="visioneventsignal"></a>

### VisionEventSignal

```cpp
using VisionEventSignal = Signal< void(const VisionEvent &)>
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void(const [`VisionEvent`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionEvent.md#visionevent) &)>

[Defined in src/vision/include/icy/vision/eventemitter.h:26](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/eventemitter.h#L26)

---

<a id="frameref"></a>

### FrameRef

```cpp
using FrameRef = VisionFrameContext
```

Type: [`VisionFrameContext`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFrameContext.md#visionframecontext)

[Defined in src/vision/include/icy/vision/types.h:44](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/types.h#L44)

## Functions

| Return | Name | Description |
|--------|------|-------------|
| [`Vision_API`](https://auscaster.com/icey/docs/api-reference/vision.md#vision_api)[`VisionFrameContext`](https://auscaster.com/icey/docs/api-reference/icy-vision-VisionFrameContext.md#visionframecontext) | [`makeVisionFrameContext`](#makevisionframecontext)  |  |
| [`FrameRef`](#frameref) | [`makeFrameRef`](#makeframeref) `inline` |  |
| [`Vision_API`](https://auscaster.com/icey/docs/api-reference/vision.md#vision_api)[`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) | [`toJson`](#tojson-3)  |  |
| [`Vision_API`](https://auscaster.com/icey/docs/api-reference/vision.md#vision_api)[`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) | [`toJson`](#tojson-4)  |  |
| [`Vision_API`](https://auscaster.com/icey/docs/api-reference/vision.md#vision_api)[`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) | [`toJson`](#tojson-5)  |  |
| [`Vision_API`](https://auscaster.com/icey/docs/api-reference/vision.md#vision_api)[`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) | [`toJson`](#tojson-6)  |  |
| [`Vision_API`](https://auscaster.com/icey/docs/api-reference/vision.md#vision_api)[`json::Value`](https://auscaster.com/icey/docs/api-reference/icy-json.md#value) | [`toJson`](#tojson-7)  |  |

---

<a id="makevisionframecontext"></a>

### makeVisionFrameContext

```cpp
Vision_APIVisionFrameContext makeVisionFrameContext(const av::PlanarVideoPacket & packet, uint64_t frameId = 0, const std::string & sourceId = {}, const std::string & streamId = {}, int64_t receivedAtUsec = 0)
```

[Defined in src/vision/include/icy/vision/event.h:46](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L46)

---

<a id="makeframeref"></a>

### makeFrameRef

`inline`

```cpp
inline FrameRef makeFrameRef(const av::PlanarVideoPacket & packet, uint64_t sequence = 0, const std::string & sourceId = {}, const std::string & streamId = {}, int64_t receivedAtUsec = 0)
```

[Defined in src/vision/include/icy/vision/event.h:52](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L52)

---

<a id="tojson-3"></a>

### toJson

```cpp
Vision_APIjson::Value toJson(const Region & region)
```

[Defined in src/vision/include/icy/vision/event.h:60](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L60)

---

<a id="tojson-4"></a>

### toJson

```cpp
Vision_APIjson::Value toJson(const VisionFrameContext & frame)
```

[Defined in src/vision/include/icy/vision/event.h:61](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L61)

---

<a id="tojson-5"></a>

### toJson

```cpp
Vision_APIjson::Value toJson(const Detection & detection)
```

[Defined in src/vision/include/icy/vision/event.h:62](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L62)

---

<a id="tojson-6"></a>

### toJson

```cpp
Vision_APIjson::Value toJson(const Track & track)
```

[Defined in src/vision/include/icy/vision/event.h:63](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L63)

---

<a id="tojson-7"></a>

### toJson

```cpp
Vision_APIjson::Value toJson(const VisionEvent & event)
```

[Defined in src/vision/include/icy/vision/event.h:64](https://github.com/auscaster/icey/blob/main/src/vision/include/icy/vision/event.h#L64)
