Skip to content

Releases: Oceanswave/a1-stitcher

v0.9.0 — Original-only export, pilot views and panorama TIFFs

Choose a tag to compare

@Oceanswave Oceanswave released this 13 Sep 04:53
a788238

A1 Stitcher 0.9.0 adds original-only export, recorded pilot viewing and 16-bit panorama TIFFs.

  • Export without Studio or manual calibration: supported A1 originals provide embedded camera orientation and lens geometry. Automatic overlap fitting requires consistent evidence and rejects unsupported layouts or poor fits.
  • Follow the pilot by default: video exports include a timed quaternion path and guided viewer with seeking, free look and a smooth return to pilot follow. Use --view fixed to opt out. The MP4 stays a stabilized full sphere; ordinary players do not automatically consume the companion path.
  • Prepare 360 photos: photo stitches supported JPEG-based INSP originals into lossless RGB16 TIFFs with GPano equirectangular metadata and available ICC profiles. verify-photo checks every pixel, precision and panorama dimensions.

Native 8K, 16-bit image processing, 10-bit HEVC and automatic Metal remain the video defaults. Original-only mode uses embedded frame orientation; advanced gyro, exposure and sensor-row correction still require an explicit sensor calibration. Recorded pilot zoom, other tracking categories, DNG development and exact Studio parity remain unqualified. Sixteen-bit TIFF output does not add captured precision or dynamic range to the tested 8-bit source.

The README, source/archive importance table, format notes and discoverable agent skill cover the new defaults and remaining differences. Validation and limitations separate technical checks from perceptual acceptance.

Validation includes 368 passing Mac tests with actual Metal, Rockybot Python 3.12/3.13 checks, and an isolated installed-wheel export of original-only 8K/10-bit video and panorama TIFF. Wheel, source archive and SHA-256 checksums are attached.

Alpha: keep untouched originals. Pilot zoom, difficult seams, flare, propellers and broader camera/firmware qualification remain open. No footage, per-camera profiles, vendor binaries or models are distributed. No PyPI publication is implied.

v0.8.0 — Image timing, reviewed masks and continuous comparisons

Choose a tag to compare

@Oceanswave Oceanswave released this 13 Sep 03:03
77aeb2b

A1 Stitcher 0.8 adds image-based timing, reviewed obstruction proposals, multiband seams and continuous reference comparisons.

  • Compare moving shots: benchmark produces six fixed views and per-frame measurements over a contiguous range, with explicit source mapping and tracking coverage.
  • Fit image timing: sync-calibrate refines gyro offset and row readout. Fits must pass temporal holdouts; incompatible camera modes, gyro profiles and row settings are rejected.
  • Review camera masks: mask-propose creates native overlays; mask-approve enables reviewed exclusions. Forced replacements check alternate-lens clipping/contrast and fail when no usable view exists.
  • Blend broader brightness differences: opt-in --seam multiband preserves native detail, bounds gain changes and tapers corrections inside valid overlap.

The README and agent skill describe every new option and the importance of source/archive differences. Native 8K, 16-bit processing, 10-bit HEVC and automatic Metal remain the finishing defaults. Experimental timing, masks and multiband remain explicit choices.

Final matched 20-second comparisons reduced the p95 motion diagnostic by about 36% on the fitting interval and 24% on a separate recording. These are image-track measurements, not a universal image-quality score.

Validation includes 342 passing local tests, 66 actual Metal cases, Rockybot Python 3.12/3.13 CI, an outside-checkout 8K/10-bit wheel proof with GPX, and longer source-matched Studio comparisons. Measured results and limits separate motion, geometry, brightness, technical verification and sampled visual review.

Alpha: Studio remains smoother on the tested intervals. Complete moving-propeller segmentation, severe occlusion, flare and broader camera qualification remain open. Keep INSV originals. No footage, per-camera profiles, vendor binaries or models are distributed. The project has no vendor runtime dependency.

Install the attached wheel with Python 3.12+ and FFmpeg, or use the tagged GitHub source. No PyPI publication is implied.

v0.7.0 — Exposure synchronization and native visibility masks

Choose a tag to compare

@Oceanswave Oceanswave released this 13 Sep 01:11
9a0ff33

A1 Stitcher 0.7 adds optional exposure-aware synchronization and camera-bound native visibility masks. Conversion remains independent of Studio after per-unit calibration.

  • calibrate --frame-clock exposure refits mounting/time alignment to a checked exposure-midpoint clock. Schema-2 profiles prevent silently applying this model to an old nominal calibration.
  • mask-template and mask-preview let agents create and inspect native lens exclusions. stitch --occlusion-profile uses real pixels from the alternate lens on CPU or Metal and fails when neither lens covers a pixel. Camera and propeller-guard metadata must match the profile.
  • Receipts, batch resolution, completed-job reuse, README archive/export deltas and the discoverable agent skill include the new options.

Nominal timing and existing quality defaults remain unchanged. Two matched 90-frame exposure tests improved the motion diagnostic, including a 31.5% reduction at the 95th percentile in one sample, but calibration holdouts were mixed. Authored masks are not an automatic rotating-blade detector or a reconstruction of doubly occluded detail. Broad masks can worsen flare/seams; default flow already avoids much of the housing in the tested footage.

Validation: 300 local tests including 49 real Metal cases, FFmpeg integration, Ruff, distribution build and an isolated installed-wheel 8K/native-lens export with exposure timing, masks, gyro row trajectories and GPX enabled together. Five 90-frame comparison exports passed full decode. Technical checks and sampled visual inspection do not constitute whole-sphere motion acceptance.

Methods, measurements and limits · CLI and agent options

Alpha; independent software, not an official Antigravity/Insta360 product or a reproduction of proprietary FlowState/AI stitching. No private media, per-camera profiles or vendor binaries/models are distributed.

A1 Stitcher 0.6.0 — motion tools and faster gyro queries

Choose a tag to compare

@Oceanswave Oceanswave released this 12 Sep 22:08
f99562c

Independent motion tooling and faster gyro processing, informed by read-only investigation of Antigravity Studio 2.0.4.

  • Fixed source-frame heading across exports: --heading-reference-frame 0 by default; -1 restores clip-start heading.
  • Experimental changing-motion row correction on CPU and Metal: --rolling-shutter-model trajectory. Real-footage results were mixed, so the proven velocity model remains the default.
  • Exposure telemetry in inspect, with explicit units and no guessed adjustment to the fitted frame clock.
  • Faster gyro queries through contiguous sensor data and reused anchor corrections. A scoped query benchmark improved 147×; one complete 90-frame 8K trajectory export improved from 155.75 to 80.81 seconds with an identical output checksum. This is not a general export-speed guarantee.

255 local tests passed, including 24 actual Metal parity cases, with 90.12% Python coverage. The installed wheel passed native 8K rendering, full decode and GPX checks outside the checkout. Python 3.12/3.13 CI uses the dedicated Rockybot runner.

README, format notes and discoverable skill are updated. See the motion qualification report and remaining Studio functionality. Exposure-aware image timing, camera/propeller removal, multiscale fusion and broader ingest remain open. Technical checks and sampled comparisons do not establish uninterrupted perceptual acceptance.

No vendor code, models, footage or camera-specific profiles are included. Keep the INSV originals.

v0.5.0 — Native 8K finishing, Metal and anchored gyro

Choose a tag to compare

@Oceanswave Oceanswave released this 12 Sep 21:28
2c1057c

A1 Stitcher now defaults to native lens resolution, an 8192×4096 sphere, 16-bit image processing and 10-bit HEVC. ProRes 422 HQ MOV is available for finishing, with explicit limited-range BT.709 metadata that also verifies with FFmpeg 6.1.

An independent Metal renderer is selected automatically on supported Macs, with CPU fallback recorded in the receipt. On an M1 Max, the measured stitching-stage speedups were 5.1× at 2K, 13.8× at 4K and 31.0× at 8K. A separate complete three-frame 8K ProRes job improved from 35.73 s to 9.34 s (3.8×). Stage timings exclude decoding, encoding and verification; these are bounded measurements, not universal throughput claims.

Optional raw-gyro calibration checks timing, proper axis rotation, held-out motion and transfer to a second recording. Integration uses recorded-attitude anchors, with 100 ms spacing by default in this optional mode. Short real-motion diagnostics improved on both recordings; high-frequency image timing, long-duration motion and difficult parallax remain experimental.

The README now rates the practical importance of every source-archive/output difference. The installed agent skill and complete options reference cover the new defaults, encoding/backend controls, gyro, GPX and conditional workspace preparation/Resolve handoffs.

Validation: 220 tests passed with actual Metal execution on macOS. Python 3.12/3.13 CI runs on the dedicated Rockybot Linux runner; each passes 208 tests and explicitly skips the 12 GPU-only tests. The final installed wheel produced fully decoded native 8K HEVC/GPX and ProRes samples outside the checkout. Private recordings and per-unit profiles are not included.

Read the README, quality and performance report, and complete skill options.

This remains an independent alpha release. Preserve the camera originals and review complete intended intervals in motion before using generated spheres as production masters.

v0.4.0 - GPX flight tracks

Pre-release

Choose a tag to compare

@Oceanswave Oceanswave released this 12 Sep 18:39
6bf7fe1

Export A1 flight tracks as GPX, independently of video rendering or alongside a stitched sphere.

a1-stitch gpx recording.insv --output flight.gpx
a1-stitch stitch recording.insv --calibration camera-calibration.json \
  --first-frame 1200 --frames 360 --output selected-sphere.mp4 --export-gpx

GPX contains recorded positions, UTC time and reported elevation, with speed/course extensions. Tracks cover the entire source recording. Missing fixes and long gaps remain separate segments; malformed data fails without invented positions. Altitude datum and precise GPS-to-video synchronization remain unqualified.

Standalone extraction needs no Studio, calibration or FFmpeg. Batch jobs accept export_gpx: true. Receipts track provenance and checksums; combined resume checks both the video and GPX.

Validated with 177 synthetic/integration tests and two original-source GPX exports against the official GPX 1.1 schema. Image stitching remains alpha with the same quality limits as 0.3.0. No private flight tracks or vendor binaries are included.

v0.3.0 — Studio comparisons and cleaner color

Choose a tag to compare

@Oceanswave Oceanswave released this 12 Sep 18:09
7f9387f

Studio frame comparisons caught a color-balancing regression that could paint a dark band into clear sky. This release confines correction to measured overlap, avoids large unsupported arcs and adds a repeatable comparison workflow.

  • New a1-stitch compare: mapped reference frames, globally aligned and original views, geometry diagnostics and a review page.
  • Experimental --seam adaptive: periodic seam selection with limited spatial and temporal movement. Fixed flow remains default.
  • Skip unused lens samples and decode both tracks through one reader. Fixed-flow core benchmarks on an M1 Max were about 15–16% faster at 2K and 4K; this excludes I/O and encoding.
  • Updated discoverable agent skill and documented evidence/limits.

Validation: 143 tests, 89% coverage, passing macOS/Linux CI, wheel/sdist builds, and a fresh fully decoded 4K render from an installed wheel outside the checkout. Original-footage comparisons supplement synthetic checks; they do not establish full-motion or whole-image acceptance.

Camera/propeller removal, high-rate gyro fusion, severe occlusion, motion deblurring, GPU execution and log/HDR remain unqualified. No vendor code, masks, models or binaries are included. The project remains alpha.

See measurements and limits and PR #2. Release assets include the wheel, source distribution and SHA-256 checksums; no PyPI publication is implied.

A1 Stitcher v0.2.0 — seams, color and rolling shutter

Choose a tag to compare

@Oceanswave Oceanswave released this 12 Sep 16:38
b21f959

This release improves visible lens seams and fast-turn geometry in original A1 footage.

  • Cleaner seam detail: bidirectional overlap flow, confidence/texture/displacement checks, and a narrower detail transition reduce doubled branches and vehicle edges. Output pixels still come directly from the original lens tracks.
  • Local lens color matching: bounded, spatially smoothed color ratios reduce brighter mismatches without spreading haze into the cleaner lens. Balance adapts gradually through a sequence.
  • Native-row rolling-shutter correction: embedded sensor readout timing and recorded angular motion correct different capture times across each lens image. At two held-out frames around a rapid turn, P90 angular mismatch fell from 0.546° to 0.218° and 1.160° to 0.316°.

Defaults are --seam flow --rolling-shutter auto. For comparison or difficult footage, retain the original path with --seam feather --rolling-shutter off. Options are included in recipe/cache identity and receipts. The agent skill and README describe the new behavior.

Validation: 117 tests passed, 88% coverage, with all macOS/Linux CI jobs passing in PR #1. Tests include known synthetic disparity and rolling-shutter scenes, invalid/nonfinite flow and readout guards, metadata, process cleanup and complete conversions. An installed release wheel outside the checkout rendered original A1 footage at 4096×2048 with both corrections and passed full decode, color and spherical metadata checks.

Read quality evidence and limits. This remains an alpha for a tested A1 unit: severe occlusion, camera/propeller removal, high-frequency vibration, motion blur and broader unit/profile coverage remain. The new quality path costs additional CPU time; it is not real-time processing. Current output is 8-bit SDR BT.709.

The implementation is independent. No Studio binaries, code, model weights, private footage or per-camera profiles are distributed. Python 3.12+ and a separately installed FFmpeg/ffprobe are required. Downloadable wheel/source packages and SHA-256 checksums are attached.

A1 Stitcher v0.1.0 — initial alpha

Pre-release

Choose a tag to compare

@Oceanswave Oceanswave released this 12 Sep 15:33

A1 Stitcher turns original Antigravity A1 lens tracks and recorded attitude into standard equirectangular MP4s, so calibrated footage can be prepared without driving Studio for every clip.

This is the first public alpha release, licensed under MIT. Image quality still needs work around fast motion, rolling shutter, close seams and camera visibility. A new unit currently needs a one-time vendor-stitched calibration reference. Only 8-bit SDR BT.709 is supported; unsupported profiles and audio inputs are rejected.

Included:

  • Installable a1-stitch CLI with inspection, calibration, stitching, verification, sequential batch jobs and completed-job reuse.
  • Source-bound calibration, safe no-clobber output, process deadlines, receipts, checksums, spherical MP4 metadata and full decode verification.
  • Discoverable stitch-a1-video agent skill in skills/, with usage and qualification guidance.
  • Synthetic unit/integration tests, public format documentation and contribution instructions. No private footage, per-camera profiles, vendor binaries or SDKs are included.

Validation: 94 tests passed, 87% coverage, with no skipped tests, on macOS/Python 3.12 and Linux/Python 3.12 and 3.13. CI for this commit. The installed wheel also rendered 60 frames of original A1 footage at 4096×2048 and 30000/1001 fps, with complete decode and metadata verification. This verifies conversion behavior, not whole-shot perceptual acceptance or vendor-equivalent image quality.

Python 3.12+ and a separately installed FFmpeg/ffprobe are required. Install the wheel with pip install a1_stitcher-0.1.0-py3-none-any.whl, then run a1-stitch doctor. See the README for calibration, rendering, batch manifests and skill installation. Download checksums are in SHA256SUMS.