# Sequencer Camera Preview Window

Task: `TODOS.phase-72.72.15.2.6`

The sequencer camera preview window is a V2Editor TimelineVisualizer
picture-in-picture surface for inspecting cinematic camera output while editing.
It builds on the viewport preview model and adds window state, render target
routing, safe-frame guides, and camera metadata for a dockable preview panel.

## Runtime API

- Panel spec: `FV2SequencerCameraPreviewWindowPanelSpec`
- Request: `FV2SequencerCameraPreviewWindowRequest`
- Safe-frame rect: `FV2SequencerCameraPreviewSafeFrameRect`
- Metadata row: `FV2SequencerCameraPreviewMetadataRow`
- Model: `FV2SequencerCameraPreviewWindowModel`
- Issue enum: `EV2SequencerCameraPreviewWindowIssueType`

`BuildSequencerCameraPreviewWindowModel` evaluates
`BuildSequencerViewportPreviewModel` for the requested frame, then exposes the
active camera state through a render-target-backed picture-in-picture window. It
also provides pinned/docked state, aspect ratio, letterbox state, action/title
safe-frame rectangles, and metadata rows for camera binding, frame, time, FOV,
and preview resolution.

## Behavior

- Picture-in-picture output uses
  `/V2Editor/RenderTargets/RT_SequencerCameraPreview.RT_SequencerCameraPreview`.
- Camera state is sourced from the viewport preview so the PiP window matches
  live timeline playback and scrubbing.
- Window state preserves pinned and docked flags without changing sequence data.
- Safe-frame guides expose action-safe and title-safe pixel rectangles for the
  configured preview dimensions.
- Camera metadata exposes active camera binding, frame, time, FOV, and preview
  resolution.
- Validation reports invalid sequences, invalid requests, out-of-range frames,
  invalid preview sizes, missing camera state, and viewport preview failures.

The default QA fixture uses `Seq.DataModel.CouncilIntro`, frame `60`, previous
frame `20`, active camera binding `Binding.Camera.Hero`, and a `480x270`
picture-in-picture preview.

## QA Inventory

- PiP window: verify picture-in-picture visibility, pinned state, docked state,
  letterbox state, preview dimensions, aspect ratio, and render target path.
- Camera output: verify active camera binding and evaluated FOV from the hero
  camera preview state.
- Safe guides: verify action-safe and title-safe rectangles for `480x270`.
- Metadata: verify camera binding and FOV metadata rows.
- Off-path: reject invalid preview size, invalid frame, and missing camera
  state.

`js_repl` Playwright interaction was unavailable in this session and the
affected surface is Unreal editor data rather than browser-rendered UI, so
verification is through UE editor automation and contract gates.

## Verification

- `python3 V2/ue/Tools/check-v2-sequencer-camera-preview-window.py`
- `V2.Editor.Sequencer.CameraPreviewWindow`
- `python3 V2/ue/Tools/check-v2-editor-module.py`
- `python3 V2/ue/Tools/check-v2-ci-workflow.py`
