ITC Visual Studio / Browser Version
User Manual
ITC Visual Studio / Browser Version is a session-based image and video analysis tool for visual ITC and scrying experiments. It runs entirely in your web browser. It can record a session with a camera and microphone, or it can import outside videos for analysis.
Overview
The Browser Version stores all working session data locally in your browser using IndexedDB. Recordings, evidence, and capsules are not uploaded to any server. Your research stays on your device.
The primary workflow is:
- Create or restore a session
- Record video or import existing video
- Extract frames for analysis
- Review frames, apply effects, mark evidence
- Build slideshows from evidence
- Export a Session Capsule for backup or portability
Quick Workflow
- The app opens to Camera / Session so you can create, restore, or prepare a session first.
- Create a new session with a name and experiment type, or restore a Session Capsule.
- Record a new video with your camera, or import an existing video file.
- Frames are extracted automatically. The app opens Analysis Lab.
- Use Frame Skim playback to move quickly through setup or empty sections.
- Mark junk frames for cleanup. Checked evidence frames are protected.
- Zoom, pan, and apply effects to inspect details.
- Check frames worth keeping and save them as evidence.
- Build a slideshow from saved evidence.
- Export a Session Capsule for backup or portability.
Sessions
Each session is stored locally in your browser. A session keeps the source video, extracted frames, evidence, slideshow projects, and metadata together.
Create A New Session
Use Create Session when starting a fresh experiment. Enter a session name (required) and choose an experiment type.
Restore A Capsule
Use Restore Capsule to import a .vitc.zip archive from a previous session or from the Mac application.
Import Video
Use Import Video / Extract Frames to analyze an existing video file. A session is created automatically if one is not active.
Experiment Types
WaterFire / FlameSmokeInkSteam / VaporMirror / ReflectionGeneral Visual ITCCustom
Experiment types help categorize sessions. They do not change application behavior.
Camera & Recording
Camera Selection
When a session is active, the Camera page shows available camera devices. Select your camera from the Device dropdown. The app automatically enumerates available cameras, including external USB cameras and Continuity Camera.
Device Identity
Instead of showing an ambiguous "System Default," the Camera dropdown displays the actual physical device name when the browser exposes it. For example:
- System Default — MX Brio
- System Default — FaceTime HD Camera
All available named cameras are listed below the default entry after browser permission is granted.
Active Camera Display
Below the camera dropdown, the Active Camera readout shows the actual device attached to the current media stream. This is derived from the browser's MediaStreamTrack.label and represents the physical device currently in use — not merely the dropdown selection.
Format & Frame Rate
Choose a resolution from the Format dropdown:
640 x 480960 x 5401024 x 5761280 x 7201600 x 8961920 x 1080
Choose a frame rate: 24 FPS or 30 FPS (default).
Recording Duration
Choose a recording duration from the Recording Duration dropdown:
- 1 Minute (default) — Produces approximately 1,800 frames at 30 FPS
- 2 Minutes — Produces approximately 3,600 frames at 30 FPS
The shorter 1-minute option is useful for shorter experimental sessions and produces fewer extracted frames, reducing post-recording processing time. The 2-minute option is the absolute maximum allowed.
The recording duration selector is disabled during recording and finalization.
Microphone
The microphone connects automatically when the camera starts. Select your microphone device, channel count (Mono/Stereo), and sample rate (48000 Hz or 44100 Hz) from the Microphone panel. Audio level meters show RMS and Peak levels during preview.
Microphone Device Identity
The microphone dropdown displays the actual physical device name, just like the camera dropdown. For example:
- System Default — MX Brio
- System Default — MacBook Pro Microphone
Active Microphone Display
Below the microphone dropdown, the Active Microphone readout shows the actual device attached to the current audio stream.
Device Changes
When you connect or disconnect a camera or microphone, the device lists refresh automatically. If the active device is disconnected, the status display updates to show "disconnected." Active recording is not interrupted for device list refreshes.
Live Preview
The camera preview starts automatically after a session becomes active. No manual "Connect Devices" or "Arm Camera" step is required. The preview updates when you change the camera device, format, or frame rate.
Recording
Press Record to begin capturing video. Press Record again (now showing Stop) to end the recording.
MP4/H.264 Preferred
The app prefers MP4/H.264 recording when the browser supports it. If MP4 is not available, it falls back to WebM. The actual recording format is displayed in Settings > Advanced Diagnostics.
Recording Limit
Recording is limited to the selected duration (1 minute or 2 minutes). This limit protects browser performance and prevents excessively large frame-analysis sessions. The absolute maximum is 2 minutes (120 seconds).
Final 10-Second Countdown
During the last 10 seconds of recording, a red countdown overlay appears in the camera preview:
- 10-6 seconds remaining: Red pulsing number with "SECONDS LEFT" label
- 5-1 seconds remaining: Harder pulse, brighter red
- 0 seconds: Recording stops automatically
For a 1-minute recording, the countdown begins at 0:50. For a 2-minute recording, the countdown begins at 1:50.
The countdown is a UI overlay only. It is not recorded into the video file.
After Recording
After recording stops, the video is automatically processed: frames are extracted and Analysis Lab opens. The recorded video is preserved as the session source video for Session Video playback.
Importing Media
Import Video / Extract Frames
You do not have to record video with the app. You can import an existing video file for analysis.
MP4MOVWebMMKVAVI
Video Preflight
Before extraction, the app inspects the video and shows a summary:
- File name and size
- Duration and resolution
- Estimated frame count (when FPS is known)
If the video is very large (over 2 minutes, over 4,000 estimated frames, or over 250 MB), a warning dialog appears asking whether to proceed. You can cancel without affecting the session.
Restore Capsule
Use Restore Capsule to import a .vitc.zip session archive. See the Capsule Restore section for details.
Frame Extraction Architecture
When you record or import a video, the app extracts individual frames for analysis.
How It Works
- The source video is decoded using FFmpeg WASM (WebAssembly)
- Frames are extracted as temporary PNG images
- Each PNG is converted to JPEG using browser-native image APIs
- Final JPEG frames are stored in the session at quality 0.93
RuntimeError: memory access out of bounds crashes. The PNG-to-JPEG architecture uses browser-native image processing which is more stable. This is not an unnecessary conversion — it is a required workaround for the current FFmpeg WASM build.
Batch Processing
Frames are extracted in 5-second batches to manage memory pressure. The source frame rate is preserved: a 30 FPS video produces approximately 30 frames per second of video.
Analysis Lab
Analysis Lab is where the main review work happens. It has two viewing modes:
FRAMES Mode
Review extracted still frames. Use Frame Skim Speed to control playback rate. Apply effects, zoom, pan, and mark evidence.
SESSION VIDEO Mode
Play back the original source video with play/pause/scrub controls. Frame Skim Speed has no effect on Session Video.
Frame Skim Speed
Frame Skim Speed controls how quickly extracted frames advance during playback:
- Range: 1–20 FPS (integer values)
- Default: 1 FPS
- Effect on Session Video: None — completely independent
Transport Controls
Play / Pause
Starts or pauses frame-by-frame skim playback.
Navigation
|< First frame. < Previous. > Next. >| Last frame.
Frame Position
The slider shows and controls the current frame position in the set.
Filmstrip
The filmstrip at the bottom shows frame thumbnails. The active frame is highlighted.
Viewer Modes
FIT
Fits the entire frame in the viewer, centered, with aspect ratio preserved.
FOCUS
Fills the viewport with the image. Overflow is cropped for closer inspection.
MANUAL
Actual pixels (1:1 zoom). User controls zoom and pan. Note: this is a viewer mode, not the User Manual.
Zoom & Pan
Use the mouse wheel to zoom in and out (0.25x to 8x range). Drag the image to pan when zoomed in. Use Fit to return to the full-image view.
Effects
Effects are analysis and visual-processing tools. They are applied to individual frame review state. Use effects to make contrast, edges, shapes, or light patterns easier to evaluate.
Effect Groups
ALL
Browse all available presets across every group.
GEN / General
Normal, Monochrome, High Contrast, Negative, Edge, High Gain, Soft Vignette, Vintage Contrast, Screen Glow, Thermal Style, Night Vision, X-Ray Style.
WATER
Natural, Reflection Boost, Deep Contrast, Blue Luma, Cyan Detail, Surface Edge, Ripple Detail, High Gain Water, Monochrome Water, Negative Water, False Color, LUT presets, and more.
SMOKE
Natural, Density Boost, Edge, Fine Structure, Blue Contrast, Green Contrast, Monochrome, Negative, High Gain, False Color, and more.
FIRE
Natural, Flame Detail, High Contrast, Ember Detail, Monochrome, Negative, Edge, Heat False Color, Shadow Recovery, and more.
INK
Natural, Flow Detail, Edge, High Contrast, Monochrome, Negative, High Gain, False Color, Plate Contrast, and more.
STEAM
Natural, Density, Edge, High Gain, Cool Contrast, Monochrome, Negative, Fine Detail, False Color, and more.
REF / Reflection
Natural, Contrast, Shadow Detail, Highlight Detail, Monochrome, Edge, Negative, Color Isolation, High Gain, Mirror Vignette, and more.
Effects use the same viewing-layer stack as the Mac application: Monochrome, Contrast, Gamma, Soft Glow, Vignette, Negative, Sobel Edge Enhancement, High Gain with shadow boost/grain, and Posterization. Water-scrying LUT files use trilinear interpolation.
Frames Workspace
The Frames workspace shows the complete session frame collection as a scrollable grid of thumbnails.
Large Frame Collections
Large sessions are rendered incrementally for browser performance. The frame count label always shows the authoritative session total (e.g., "3,600 frames"). Not all full-resolution thumbnails need to be decoded simultaneously — only visible and near-visible thumbnails exist as DOM nodes.
The grid uses continuous scroll: as you scroll down, more thumbnails are automatically loaded and rendered.
Evidence
Evidence Candidates
Evidence frames are researcher-selected candidate frames from the session. They represent frames worth keeping, reviewing further, or including in slideshows.
Check Frame
Marks the current frame as a candidate. Preserves the frame number, effect, zoom level, pan position, and preview snapshot.
Uncheck Frame
Removes the candidate mark. The frame remains in the session but is no longer an evidence candidate.
Save Selected As Evidence
Saves all checked frames as evidence. Evidence is visible in the Evidence workspace and available for export and slideshow building.
Frames vs. Evidence
- Frames: All extracted analysis frames from the session
- Evidence: Researcher-selected candidate frames worth keeping
Evidence Workspace
The Evidence workspace shows saved evidence candidates in a grid. From here you can:
- Export individual or batch evidence images
- Send evidence to the Slideshow Builder
- Preview evidence with or without effects
Export Evidence
Evidence export saves selected images as standalone files. Choose format (JPEG/PNG), quality, original or edited output, and optional watermark settings.
Slideshow Builder
The Slideshow Builder creates MP4 presentations from saved evidence frames.
Projects
Each slideshow is saved as a named project. You can have multiple projects per session.
- New: Opens a naming dialog. Every project requires a name.
- Save: Persists the current project configuration.
- Saved Projects: Dropdown lists all projects for the active session. Select one to load it.
Projects track dirty state. If you have unsaved changes, the status indicator shows "Unsaved Changes" in yellow.
Frame Selection
- Select All: Selects all evidence frames
- Clear: Deselects all frames
- Chronological: Arranges selected frames in recording order
Slide Settings
Slide Duration
3.0, 5.0 (default), or 8.0 seconds per slide.
Transition
Cross Fade, Fade In / Out, Dissolve, Horizontal Wipe, Vertical Wipe.
Transition Duration
0.75, 1.00, or 1.50 seconds.
Resolution
720p (1280 x 720) or 1080p (1920 x 1080).
Frame Rate
24 or 30 FPS (default).
Transitions
Cross Fade
Both images visible simultaneously. Outgoing fades out while incoming fades in.
Fade In / Out
Outgoing fades to black, then incoming fades in. No simultaneous overlap.
Dissolve
Per-pixel noise mask. Pixels transition at different times based on a deterministic hash.
Horizontal Wipe
Incoming image revealed left-to-right via clipping.
Vertical Wipe
Incoming image revealed top-to-bottom via clipping.
Ken Burns Pan/Zoom
Ken Burns adds motion to still images by slowly zooming and panning. Select "Ken Burns Pan/Zoom" from the Motion dropdown. Adjust the Start and End zoom sliders (1.0 to 2.0). Six deterministic motion patterns rotate through the slide index to create visual variety.
Ken Burns motion continues through transitions. It works independently in Still mode as well.
Watermark
Enable a text or image watermark on slideshow frames.
Text Watermark
- Custom text with configurable color
- Color picker with 10 preset colors: White, Blue, Amber, Red, Green, Purple, Cyan, Orange, Pink, Black
- Position: Bottom Right, Bottom Left, Top Right, Top Left, Center
- Opacity: 0–1 (default 0.5)
- Size: 0.4–2.4 (default 1.0)
Image Watermark
- Upload a PNG, JPEG, or WebP image
- Scaled proportionally to base size × size slider
- Same position and opacity controls as text
Preview
Use Play Slideshow to preview the full slideshow with transitions, Ken Burns motion, and watermarks. Use Preview Transition to test just the transition between two slides. Use Stop to end playback.
Export
Export MP4 creates the slideshow video. The project is auto-saved before export. MP4 is preferred; WebM is used as fallback if MP4 MediaRecorder is not available. The exported file downloads to your device and is also saved in the session.
Session Capsule
A Session Capsule is a portable archive of your research session. It packages everything needed to restore the session on another device or at a later time.
Format
<Session Name>.vitc.zip
The capsule is a standard ZIP archive with a .vitc.zip extension.
Contents
A capsule may contain:
- Metadata/ — Session configuration, frame metadata, evidence metadata, slideshow project metadata
- Images/ — Extracted JPEG or PNG frames
- Evidence/ — Saved evidence candidate images
- Markers/ — Session markers
- Notes/ — Session notes
- Video/ — Source video (recorded or imported)
- Exports/Slideshows/ — Rendered slideshow MP4/WebM files
- Slideshow/Projects/ — Watermark image assets for slideshow projects
Content depends on what was actually created in the session. If no slideshow was created, no slideshow files are included.
Capsule Export
Export creates a complete portable archive of the current session.
How to Export
- Open the Export workspace
- Review the session summary (name, type, frames, evidence, slideshows)
- Press EXPORT SESSION CAPSULE
Export Status
During export, a prominent status overlay appears:
Detailed progress stages appear beneath the primary status:
- Adding Metadata
- Adding Frames (with count)
- Adding Evidence
- Adding Source Video
- Adding Slideshows
- Adding Slideshow Projects
- Creating ZIP
Export Completion
When the archive is generated successfully:
The file downloads automatically. The live Library session is not deleted by export.
Large Archives
If the estimated capsule size exceeds 200 MB, a confirmation dialog appears showing the estimated size and contents. You can cancel or continue.
Capsule Restore
Restore reconstructs a session from a .vitc.zip capsule into browser storage.
How to Restore
- Click Restore Capsule (available on Camera, Library, or Import pages)
- Select a
.vitc.zipfile - Wait for the restore to complete
Restore Status
During restore, a prominent status overlay appears:
Large capsules containing thousands of frames may require noticeable time to restore. The status remains visible throughout the entire operation.
Detailed progress stages include:
- Restoring Session Metadata
- Restoring Frames
- Restoring Evidence
- Restoring Source Video
- Restoring Slideshow Projects
- Restoring Slideshow Exports
- Saving Session
Restore Completion
When restore is successful:
What Gets Restored
A complete round-trip restore includes:
- Session metadata and configuration
- All extracted frames
- Evidence candidates with their edit state
- Source video (when included in capsule)
- Slideshow projects with all settings
- Rendered slideshow MP4s
Runtime object URLs are recreated as needed. They are browser-local references, not portable file paths.
Session Library
The Library shows all sessions stored in your browser. Each session card displays:
- Session name
- Experiment type
- Date and time
- Frame count
- Evidence count
- Source video availability
- Slideshow count (when applicable)
Opening Sessions
Click a session card to open it. The session loads into Analysis Lab for continued review.
Deleting Sessions
Deleting a Library session removes its browser-local session data permanently. Export a Session Capsule first if you want a portable backup.
Browser Storage & Session Capsule Backups
The Browser Version stores working session information locally in your browser using IndexedDB.
Important Facts
- Refreshing the page does not normally remove persisted sessions.
- Closing and reopening the browser usually preserves sessions.
- Clearing browser/site data can remove locally stored sessions.
- Using incognito/private mode does not persist sessions after the window closes.
Backup Recommendation
For important research sessions, always export a Session Capsule. The capsule is a portable .vitc.zip file that you can store on your computer, external drive, or cloud storage. Browser-local data should not be treated as your only permanent archive.
Browser Compatibility
Primary Tested Browser
Google Chrome / Chromium
The Browser Version is developed and primarily tested in Chrome/Chromium.
Other Browsers
Browser APIs can differ across Safari, Firefox, Opera, Edge, and other Chromium/non-Chromium browsers. The following APIs may behave differently between browsers:
- Camera permissions and
getUserMedia - Recording codecs (
MediaRecorder) - Video playback formats
- IndexedDB behavior and storage limits
OffscreenCanvassupport- DecompressionStream for ZIP extraction
Full compatibility outside Chrome/Chromium has not been verified. If you encounter issues in another browser, try Chrome/Chromium.
Privacy & Local Data Architecture
All session media remains local to your browser. The Browser Version does not upload recordings, evidence, frames, or capsules to any server.
What Is Hosted
- Application code: Hosted on the web (Cloudflare/GitHub Pages)
- Your research sessions: Stored locally in your browser (IndexedDB)
Website hosting and application code hosting are separate from your locally stored research sessions. Your data stays on your device.
Recommended Working Method
- Create a session with a clear, descriptive name before recording or importing.
- Use 720p / 30 FPS unless you need a larger source.
- Confirm your Active Camera and Active Microphone are the intended devices.
- Record or import your video.
- Frames are extracted automatically.
- Use Frame Skim playback (1–20 FPS) to move through setup or empty sections.
- Use Mark Before to mark junk frames before the first useful frame.
- Use Delete Marked to remove junk frames. Checked evidence frames are protected.
- Review remaining frames. Use FIT, FOCUS, or MANUAL viewer modes as needed.
- Apply effects only to test whether detail becomes clearer.
- Check frames worth keeping.
- Save checked frames as evidence.
- Export evidence images if needed.
- Build a slideshow from saved evidence.
- Export a Session Capsule for backup before closing.
Session Research Documentation
Before beginning an experimental session, researchers should confirm and, where appropriate, record or document:
- Active camera device
- Active microphone device
- Recording resolution
- Frame rate
- Recording duration
- Session name
This is good practice for session reproducibility and research documentation. The Active Camera and Active Microphone readouts in the Camera panel provide the exact device names for your records.
Troubleshooting
Camera Does Not Start
Create or open a session first. Check browser camera permission. Try the Refresh button. Use 1280 x 720 at 30 FPS. Close other apps using the camera.
Microphone Does Not Start
Create or open a session first. Check browser microphone permission. Try the Refresh button. Confirm the correct device is selected.
Device Labels Show "System Default"
Device names are not available until browser permission is granted. Allow camera and microphone access, then the actual device names will appear in the dropdowns and active device readouts.
Imported Video Does Not Extract
Try MP4 or MOV if MKV fails. Confirm the file plays outside the browser. Make sure the file is not still being written.
Frames Look Wrong
Confirm Normal effect is selected. Use Fit to reset zoom/pan. Re-extract frames if the source was incomplete.
Capsule Restore Is Slow
Large capsules with thousands of frames take time. The "INSTALLING CAPSULE SESSION..." overlay shows progress. Wait for the "CAPSULE SESSION INSTALLED" confirmation.
Slideshow Preview Is Black
Confirm evidence frames are selected and exist. Try Still mode first, then test Ken Burns and transitions.
I Lost My Session
Sessions are stored in browser storage. If you cleared browser data, sessions are lost. Always export a Session Capsule for backup.
Manual Does Not Open
The Manual opens in a new browser tab. Allow pop-ups for this site if your browser blocks it.
Interface Shows Older Behavior After Update
If the application appears to show older behavior after a production update, perform a hard refresh of your browser (Cmd+Shift+R on Mac, Ctrl+Shift+R on Windows). Production deployments use a version query on the app.js script to prevent stale cached JavaScript.
FFmpeg Engine Takes Time to Load
The browser loads the FFmpeg WASM processing engine when video processing is first required. The initial load may take longer than subsequent cached loads. This is normal — the engine is loaded on demand and does not affect camera preview or recording.