---
title: CNScript
framework: cinematic
role: symbol
role_heading: Class
path: cinematic/cnscript-1ispe
---

# CNScript

A collection of focus decisions, focus transitions, detections, and detection tracks associated with a movie captured in Cinematic mode and methods to change them.

## Declaration

```swift
final class CNScript
```

## Overview

Overview The Cinematic script provides thread-safe access to information about the focus decisions made in the original recorded Cinematic movie. The script supports changing those decisions and obtaining updated information about where to focus each frame. You can snapshot changes to a script and later reload them. tip: Look up what you need up front, outside your critical code, and pass the immutable results to where it’s needed. That way, you’re not blocked when you access the information inside the rendering portion of your code.

## Topics

### Structures

- [CNScript.Changes](cinematic/cnscript-1ispe/changes.md)
- [CNScript.Frame](cinematic/cnscript-1ispe/frame.md)

### Initializers

- [init(asset:changes:progress:)](cinematic/cnscript-1ispe/init(asset:changes:progress:).md)

### Instance Properties

- [addedDetectionTracks](cinematic/cnscript-1ispe/addeddetectiontracks.md)
- [fNumber](cinematic/cnscript-1ispe/fnumber.md)
- [timeRange](cinematic/cnscript-1ispe/timerange.md)

### Instance Methods

- [addDetectionTrack(_:)](cinematic/cnscript-1ispe/adddetectiontrack(_:).md)
- [addUserDecision(_:)](cinematic/cnscript-1ispe/adduserdecision(_:).md)
- [baseDecisions(in:)](cinematic/cnscript-1ispe/basedecisions(in:).md)
- [changes()](cinematic/cnscript-1ispe/changes().md)
- [changes(trimmedBy:)](cinematic/cnscript-1ispe/changes(trimmedby:).md)
- [decision(after:)](cinematic/cnscript-1ispe/decision(after:).md)
- [decision(at:tolerance:)](cinematic/cnscript-1ispe/decision(at:tolerance:).md)
- [decision(before:)](cinematic/cnscript-1ispe/decision(before:).md)
- [decisions(in:)](cinematic/cnscript-1ispe/decisions(in:).md)
- [detectionTrack(for:)](cinematic/cnscript-1ispe/detectiontrack(for:)-1xvsa.md)
- [detectionTrack(for:)](cinematic/cnscript-1ispe/detectiontrack(for:)-6f8mk.md)
- [frame(at:tolerance:)](cinematic/cnscript-1ispe/frame(at:tolerance:).md)
- [frames(in:)](cinematic/cnscript-1ispe/frames(in:).md)
- [primaryDecision(at:)](cinematic/cnscript-1ispe/primarydecision(at:).md)
- [reload(changes:)](cinematic/cnscript-1ispe/reload(changes:).md)
- [removeAllUserDecisions()](cinematic/cnscript-1ispe/removealluserdecisions().md)
- [removeDetectionTrack(_:)](cinematic/cnscript-1ispe/removedetectiontrack(_:).md)
- [removeUserDecision(_:)](cinematic/cnscript-1ispe/removeuserdecision(_:).md)
- [secondaryDecision(at:)](cinematic/cnscript-1ispe/secondarydecision(at:).md)
- [timeRangeOfTransition(after:)](cinematic/cnscript-1ispe/timerangeoftransition(after:).md)
- [timeRangeOfTransition(before:)](cinematic/cnscript-1ispe/timerangeoftransition(before:).md)
- [userDecisions(in:)](cinematic/cnscript-1ispe/userdecisions(in:).md)

## Relationships

### Conforms To

- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Essentials

- [Playing and editing Cinematic mode video](cinematic/playing-and-editing-cinematic-mode-video.md)
