New Release: v0.5.2 is out

Do you like these release announcements or shall I keep it silent?

v0.5.2 out

Bug fixes

  • Rig tilt/roll save corruption fixed (degrees/radians mismatch). Could cause the export to be upside down.

  • Export no longer hangs when using start time with GPU decode

  • Multi-file segments now report correct total duration

  • Clip length capped to the shorter camera to prevent EOF issues

  • Windows export path false-positive read-only check removed

  • “Finalizing” status no longer appears at export start. More accurate messages.

  • Sync offset crash on out-of-range values prevented

  • FFmpeg console windows hidden during calibration on Windows

  • ORT log spam filtered

Quality API

  • --crf replaced by --quality-value (0-100, higher = better)

  • Consistent bitrate output across NVENC, VideoToolbox, and other encoders

GUI

  • Sync offset: text input with Apply button (was a laggy slider)

  • Export errors shown inline in the export dialog

  • [+] button appends segments instead of replacing

  • [X] button works for single files

AI detection debugging

  • New scripts/visualize_detections.py for inspecting what the AI sees

  • PannerDebug event showing cluster, ball, and FOV decisions per frame

Packaging

  • DirectML.dll bundled in Windows release (fixes #304)

  • YOLO 640 model available for faster inference on integrated GPUs. Highly recommended, shouldn’t lose too much accuracy.


How to visualize AI detections (CLI stitch only, will be supported in GUI in v0.5.3)

# 1. Export with events
reco stitch left.mp4 right.mp4 -c cal.json -o output.mp4 \
    --model yolo26n.onnx --tracking field --events events.jsonl

# 2. Render annotated video (both cameras stacked, with ROI overlay)
python scripts/visualize_detections.py export events.jsonl left.mp4 right.mp4 \
    -c cal.json -o annotated.mp4

# 3. Or browse frame by frame (arrow keys to step, q to quit)
python scripts/visualize_detections.py browse events.jsonl left.mp4 right.mp4 \
    -c cal.json

Requires opencv-python (pip install opencv-python).

3 Likes

I like these realease announcements. Great change the sync offset, in my case I had to put it in 0 and with slider it was a little bit difficult.

Thank you!

1 Like

I tried to export this:
hangs here for hours… log dump

2026-05-19T16:25:06.043439Z INFO reco_gui: Telemetry disabled (opt-in via Preferences).
2026-05-19T16:25:06.046928Z INFO ort: Loaded ONNX Runtime dylib from “C:\Users\jeffg\OneDrive\Desktop\ActionStitch\Reco\onnxruntime.dll”; version ‘1.24.4’
2026-05-19T16:25:06.184022Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-19T16:25:06.211918Z INFO reco_gui: AI: DirectML (CPU path - works for file export, not live GPU decode)
2026-05-19T16:25:06.211965Z INFO reco_gui: Reco GUI v0.5.2 (61f2513)
2026-05-19T16:25:06.212734Z INFO reco_gui: Available codecs: h264, hevc, av1
2026-05-19T16:25:06.939810Z INFO reco_gui: Captured Slint wgpu 28 device/queue for zero-copy preview
2026-05-19T16:25:17.236147Z INFO reco_gui: Left: 8 segments selected, chaining via concat demuxer
2026-05-19T16:25:24.890252Z INFO reco_gui: Right: 8 segments selected, chaining via concat demuxer
2026-05-19T16:25:53.157136Z INFO reco_gui: Auto-calibrate: 4 frames, skip=[0.0s, -0s], imu_seeds=false, akaze=0.00009999999747378752, detect_y=[0.05, 0.95]
2026-05-19T16:25:53.218159Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:25:53.265042Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:25:53.455460Z INFO reco_calibrate::lens_database: lens database: 9794 profiles from 1687 cameras (embedded)
2026-05-19T16:25:53.480637Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.480674Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.481247Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.481250Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.481713Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.481716Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.481720Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.481722Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.481736Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.481738Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.507881Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.507921Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.508446Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.508449Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.508821Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.508823Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.508828Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.508830Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.508843Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.508845Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.511161Z INFO reco_calibrate::lens_database: lens auto-detect: exact match gopro/hero8-black 3840x2160 FOV=Wide (GoPro/GoPro_HERO8 Black_Wide_HS High_4k_16by9_3840x2160-29.97fps.json)
2026-05-19T16:25:53.511172Z INFO reco_calibrate::lens_database: lens auto-detect: exact match gopro/hero8-black 3840x2160 FOV=Wide (GoPro/GoPro_HERO8 Black_Wide_HS High_4k_16by9_3840x2160-29.97fps.json)
2026-05-19T16:25:53.523059Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.523103Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.523778Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.523781Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.524252Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.524254Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.524258Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.524260Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.524274Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.524276Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.706345Z INFO reco_calibrate::telemetry: telemetry: GoPro HERO8 Black - 106639 gyro, 106639 accel samples, 31860 quaternions, lens profile: none, FOV: Wide
2026-05-19T16:25:53.723884Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.723910Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.724534Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.724536Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.724993Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.724995Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.725000Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.725002Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.725015Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-19T16:25:53.725017Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-19T16:25:53.903105Z INFO reco_calibrate::telemetry: telemetry: GoPro HERO8 Black - 105813 gyro, 105813 accel samples, 31860 quaternions, lens profile: none, FOV: Wide
2026-05-19T16:25:53.919570Z WARN reco_calibrate::telemetry: gyro sync: correlation too low (0.1126), rejecting offset
2026-05-19T16:25:53.919710Z INFO reco_calibrate::telemetry: differential orientation: roll=-0.0158 rad (-0.9 deg), pitch=-0.7510 rad (-43.0 deg), tilt_diff=0.0079 rad (0.5 deg)
2026-05-19T16:25:53.919717Z INFO reco_calibrate::telemetry: rig tilt (accel): 0.3678 rad (21.1 deg)
2026-05-19T16:25:53.919738Z INFO reco_calibrate::pipeline: differential roll: -0.91 deg, pitch: -43.03 deg, tilt: 0.45 deg
2026-05-19T16:25:53.919740Z INFO reco_calibrate::pipeline: pitch > 2 deg, enabling x_rx seeded at -0.7510 rad
2026-05-19T16:25:53.919742Z INFO reco_calibrate::pipeline: rig tilt: 21.1 deg
2026-05-19T16:25:53.919744Z INFO reco_calibrate::pipeline: rig roll: left=22.4 deg, right=21.5 deg, avg=0.5 deg
2026-05-19T16:25:53.919747Z WARN reco_calibrate::video: sync: IMU returned no offset (one or both telemetry streams missing); trying audio
2026-05-19T16:25:53.920108Z WARN reco_calibrate::video: sync: audio extraction failed for left=C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010489.MP4 (audio extraction failed: failed to run ffmpeg: program not found); sync_offset stays at 0
2026-05-19T16:25:53.920129Z INFO reco_calibrate::video: extracting 4 frames (fps: 59.9, sync_offset: 0)
2026-05-19T16:25:53.953607Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:25:54.792796Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:25:55.605856Z INFO reco_core::gpu: wgpu backends: Backends(DX12)
2026-05-19T16:25:57.415477Z INFO reco_core::gpu: Selected GPU: NVIDIA GeForce RTX 4050 Laptop GPU (Dx12)
2026-05-19T16:25:57.415502Z INFO reco_core::gpu: Requesting device with features: Features { features_wgpu: FeaturesWGPU(TEXTURE_FORMAT_16BIT_NORM | TEXTURE_FORMAT_NV12 | TEXTURE_FORMAT_P010), features_webgpu: FeaturesWebGPU(0x0) }
2026-05-19T16:25:57.486365Z INFO reco_core::gpu: Device created successfully
2026-05-19T16:25:57.486396Z INFO reco_calibrate::video: GPU: NVIDIA GeForce RTX 4050 Laptop GPU
2026-05-19T16:25:57.699693Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:25:57.701873Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:25:57.703023Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:25:57.705265Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:03.257649Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:26:03.257998Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:26:03.265484Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:03.265784Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:13.809611Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:26:13.809906Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:26:13.816775Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:13.817270Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:23.807134Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:26:23.810550Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-19T16:26:23.814730Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:23.818543Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-19T16:26:32.368888Z INFO reco_calibrate: 4/4 frame pairs produced matches
2026-05-19T16:26:32.368996Z INFO reco_calibrate: 134 total matched points
2026-05-19T16:26:32.369002Z INFO reco_calibrate: x-plane range: x=[-0.339, -0.067] y=[-0.056, 0.157]
2026-05-19T16:26:32.369014Z INFO reco_calibrate: z-plane range: x=[0.108, 0.317] y=[-0.049, 0.130]
2026-05-19T16:26:32.389661Z INFO reco_calibrate: calibration complete: median_error=0.000009, trimmed=0.000022, total_reproj=1.829772, angular_error=1.862600, confidence=1.00, z_rz=0.0000
2026-05-19T16:26:32.428149Z INFO reco_gui: Auto-calibration complete: 134 matches
2026-05-19T16:26:32.463683Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:32.498806Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:32.537024Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:32.596840Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:32.637456Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:32.637501Z INFO reco_io::adapters: right decoder: D3D11VA (3840x2160)
2026-05-19T16:26:32.841911Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:32.841996Z INFO reco_io::adapters: left decoder: D3D11VA (3840x2160)
2026-05-19T16:26:32.944418Z INFO reco_core::gpu: GpuContext from external device: Slint-shared wgpu 28 device (Vulkan)
2026-05-19T16:26:32.944481Z INFO reco_gui::preview: PreviewBridge (zero-copy): GPU=Slint-shared wgpu 28 device (Vulkan)
2026-05-19T16:26:32.946001Z INFO reco_core::projection::coverage: CoverageBoundary: pitch [-0.581, 0.592] (67.2 deg), min pitch range 53.6 deg
2026-05-19T16:26:33.156831Z INFO reco_core::render::pipeline: Pipeline initialized: 1920x1080 output, GPU: Slint-shared wgpu 28 device
2026-05-19T16:26:33.165756Z INFO reco_gui: Auto-saved calibration to C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010489_calibration.json
2026-05-19T16:26:33.333673Z INFO reco_calibrate::lens_database: lens database: 9794 profiles from 1687 cameras (embedded)
2026-05-19T16:26:51.180820Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:51.423184Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:26:51.669407Z INFO reco_gui: ROI frame extraction: left=true right=true
2026-05-19T16:26:51.757951Z INFO reco_gui: ROI editor: wrote 39363492 bytes to C:\Users\jeffg\AppData\Local\Temp\reco\roi\roi_editor.html, opening in browser
2026-05-19T16:27:48.461580Z INFO reco_gui: Saved calibration to C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010489_calibration.json
2026-05-19T16:28:25.823471Z INFO reco_gui: Export requested: output=C:\Users\jeffg\OneDrive\Desktop\ActionStitch\reco-test1.mp4
2026-05-19T16:28:25.823649Z INFO reco_gui: Export range: start=0.0s, end=531.5s
2026-05-19T16:28:25.857411Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:25.888467Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:25.935125Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:25.979887Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.025864Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.069325Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.112094Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.155766Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.197300Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.204993Z INFO reco_io::adapters: Chained source: 4220.3s total across 8 segments
2026-05-19T16:28:26.231659Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.274780Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.316565Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.359357Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.402524Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.443048Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.483379Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.524235Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.532165Z INFO reco_io::adapters: Chained source: 4205.5s total across 8 segments
2026-05-19T16:28:26.532187Z INFO reco_io::adapters: Duration mismatch: left=4220.3s, right=4205.5s, using shorter (4205.5s)
2026-05-19T16:28:26.568820Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.577519Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 8 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_pv4NIZ.txt
2026-05-19T16:28:26.578541Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 8 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_y9GQCt.txt
2026-05-19T16:28:26.603542Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.625406Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.625454Z INFO reco_io::adapters: right decoder: D3D11VA (3840x2160)
2026-05-19T16:28:26.731297Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:26.731416Z INFO reco_io::adapters: left decoder: D3D11VA (3840x2160)
2026-05-19T16:28:26.741791Z INFO reco_core::gpu: wgpu backends: Backends(DX12)
2026-05-19T16:28:28.578101Z INFO reco_core::gpu: Selected GPU: NVIDIA GeForce RTX 4050 Laptop GPU (Dx12)
2026-05-19T16:28:28.578135Z INFO reco_core::gpu: Requesting device with features: Features { features_wgpu: FeaturesWGPU(TEXTURE_FORMAT_16BIT_NORM | TEXTURE_FORMAT_NV12 | TEXTURE_FORMAT_P010), features_webgpu: FeaturesWebGPU(0x0) }
2026-05-19T16:28:28.628912Z INFO reco_core::gpu: Device created successfully
2026-05-19T16:28:28.628964Z INFO reco_io::stitch_job: StitchJob::run: force_cpu_decode=false
2026-05-19T16:28:28.666953Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:28.707902Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:28.719069Z INFO reco_io::smart_source: SmartFileSource: D3D11VA zero-copy decode enabled
2026-05-19T16:28:28.746718Z INFO reco_core::render::pipeline: Pipeline initialized: 1920x1080 output, GPU: NVIDIA GeForce RTX 4050 Laptop GPU
2026-05-19T16:28:28.750411Z INFO reco_core::gpu::rgba_readback: RgbaReadback: 1920x1080 → 8294400 bytes staging (7 MB, row padding 7680/7680)
2026-05-19T16:28:28.750966Z INFO reco_core::projection::coverage: CoverageBoundary: pitch [-0.581, 0.592] (67.2 deg), min pitch range 53.6 deg
2026-05-19T16:28:28.779854Z INFO reco_core::gpu::nv12_converter: NV12 converter: 1920x1080 → 3110400 bytes (3.0 MB), dispatch (30, 270, 1)
2026-05-19T16:28:28.810521Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-19T16:28:28.810564Z INFO reco_detect::ort_session: ORT: DirectML execution provider enabled
2026-05-19T16:28:30.071753Z WARN reco_detect::ort_session: No class names in model metadata, assuming single-class ‘ball’ model
2026-05-19T16:28:30.120962Z INFO reco_autocam: Autocam: field ROI filtering enabled
2026-05-19T16:28:30.120998Z WARN reco_autocam: Class ‘person’ not found in model labels, using COCO default ID 0
2026-05-19T16:28:30.146096Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-19T16:28:30.146131Z INFO reco_detect::ort_session: ORT: DirectML execution provider enabled
2026-05-19T16:28:30.399928Z WARN reco_detect::ort_session: No class names in model metadata, assuming single-class ‘ball’ model
2026-05-19T16:28:30.399964Z INFO reco_detect::detectors::cpu: CpuYoloDetector loaded: input=299x299, 1 classes, conf_thresh=0.1
2026-05-19T16:28:30.418663Z INFO reco_detect::wgpu_preprocess: WgpuPreprocessor: 3840x2160 → 299x299, scale=0.078, pad=(0.0,65.5), tensor=1.0MB
2026-05-19T16:28:30.418708Z INFO reco_autocam: Autocam: wgpu preprocessing + DirectML tracking enabled (model: C:\Users\jeffg\Downloads\adv_inception_v3_Opset16.onnx)
2026-05-19T16:28:30.418713Z INFO reco_autocam: Detection interval: every 3 frames
2026-05-19T16:28:30.418718Z WARN reco_autocam: Class ‘person’ not found in model labels, using COCO default ID 0
2026-05-19T16:28:30.418720Z INFO reco_autocam: Class IDs: ball=0, person=0 (from 1 model labels)
2026-05-19T16:28:30.418722Z INFO reco_autocam: Tracking mode: field (PlayerTracker + BallTracker + FieldPanner, player_class=0, ball_class=0)
2026-05-19T16:28:30.418725Z INFO reco_core::session::wiring: StitchSession: ball tracker attached (class_id=0)
2026-05-19T16:28:30.418728Z INFO reco_core::session::wiring: StitchSession: player tracker attached (class_id=0)
2026-05-19T16:28:30.418730Z INFO reco_core::session::wiring: StitchSession: panner attached
2026-05-19T16:28:30.418734Z INFO reco_gui::export: Export: AI tracking: active
2026-05-19T16:28:30.445828Z INFO reco_io::ffmpeg::decoder: Shared hw device created: D3D11VA
2026-05-19T16:28:30.447279Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 8 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_PX3T4G.txt
2026-05-19T16:28:30.447895Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 8 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_UzOQB2.txt
2026-05-19T16:28:30.488550Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:30.488602Z INFO reco_io::zero_copy: D3D11VA decode thread left: backend=D3D11VA
2026-05-19T16:28:30.686959Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-19T16:28:30.687000Z INFO reco_io::zero_copy: D3D11VA decode thread right: backend=D3D11VA
2026-05-19T16:28:30.718675Z INFO reco_io::ffmpeg::encoder: Encoder: 1920x1080 h264_nvenc (hardware) @ 2997/50 fps
2026-05-19T16:28:30.723292Z INFO reco_io::ffmpeg::encoder: Audio passthrough from C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010489.MP4 (stream 1, codec: AAC)
2026-05-19T16:28:30.723654Z INFO reco_io::stitch_job: frame limit: 31860 (from end_time 531.53s)
2026-05-19T16:28:30.727566Z INFO reco_core::session::frame_processing: D3D11VA staging pool created: 3840x2160, 4 Nv12 slots
2026-05-19T16:28:30.728896Z INFO reco_core::interop::d3d11: D3D11VA staging pool: using FFmpeg’s device with multithread protection
2026-05-19T18:18:21.837596Z INFO reco_gui: Playback toggle ignored: export in progress
2026-05-19T18:18:23.415190Z INFO reco_gui: Playback toggle ignored: export in progress

What is adv_inception_v3_Opset16.onnx ?

Does it work with the provided yolo.onnx or yolo_640.onnx models?

@Den-Soccer

I replaced it with yolo.onnx and retried it. it seems to be exporting, but shows no progress. Bottom of GUI just says: Exporting: opening encoder and decoders and hasnt changed in 30 minutes

the logs

2026-05-23T14:04:56.103731Z INFO reco_io::adapters: left decoder: D3D11VA (3840x2160)
2026-05-23T14:04:56.243742Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:04:56.243869Z INFO reco_io::adapters: right decoder: D3D11VA (3840x2160)
2026-05-23T14:04:56.292722Z INFO reco_core::gpu: wgpu backends: Backends(DX12)
2026-05-23T14:04:56.518461Z INFO reco_gui: Cancel requested
2026-05-23T14:04:58.055602Z INFO reco_gui: Cancel requested
2026-05-23T14:04:58.337471Z INFO reco_core::gpu: Selected GPU: NVIDIA GeForce RTX 4050 Laptop GPU (Dx12)
2026-05-23T14:04:58.337506Z INFO reco_core::gpu: Requesting device with features: Features { features_wgpu: FeaturesWGPU(TEXTURE_FORMAT_16BIT_NORM | TEXTURE_FORMAT_NV12 | TEXTURE_FORMAT_P010), features_webgpu: FeaturesWebGPU(0x0) }
2026-05-23T14:04:58.424799Z INFO reco_core::gpu: Device created successfully
2026-05-23T14:04:58.455875Z INFO reco_io::stitch_job: StitchJob::run: force_cpu_decode=false
2026-05-23T14:04:58.501563Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:04:58.559163Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:04:58.574078Z INFO reco_io::smart_source: SmartFileSource: D3D11VA zero-copy decode enabled
2026-05-23T14:04:58.681403Z INFO reco_core::render::pipeline: Pipeline initialized: 2560x1440 output, GPU: NVIDIA GeForce RTX 4050 Laptop GPU
2026-05-23T14:04:58.688097Z INFO reco_core::gpu::rgba_readback: RgbaReadback: 2560x1440 → 14745600 bytes staging (14 MB, row padding 10240/10240)
2026-05-23T14:04:58.689177Z INFO reco_core::projection::coverage: CoverageBoundary: pitch [-0.478, 0.470] (54.3 deg), min pitch range 47.5 deg
2026-05-23T14:04:58.714262Z INFO reco_core::gpu::nv12_converter: NV12 converter: 2560x1440 → 5529600 bytes (5.3 MB), dispatch (40, 360, 1)
2026-05-23T14:04:58.749805Z INFO reco_io::ffmpeg::decoder: Shared hw device created: D3D11VA
2026-05-23T14:04:58.785686Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 9 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_fSc1UP.txt
2026-05-23T14:04:58.786018Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 9 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_movLrI.txt
2026-05-23T14:04:58.841637Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:04:58.841704Z INFO reco_io::zero_copy: D3D11VA decode thread right: backend=D3D11VA
2026-05-23T14:04:58.996258Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:04:58.996323Z INFO reco_io::zero_copy: D3D11VA decode thread left: backend=D3D11VA
2026-05-23T14:04:59.003492Z INFO reco_gui: Cancel requested
2026-05-23T14:04:59.437020Z INFO reco_io::ffmpeg::encoder: Encoder: 2560x1440 h264_nvenc (hardware) @ 2997/50 fps
2026-05-23T14:04:59.444505Z INFO reco_io::ffmpeg::encoder: Audio passthrough from C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010490.MP4 (stream 1, codec: AAC)
2026-05-23T14:04:59.447538Z INFO reco_io::stitch_job: frame limit: 31860 (from end_time 531.53s)
2026-05-23T14:04:59.452223Z INFO reco_io::ffmpeg::encoder: Encoder finished: 0 frames written
2026-05-23T14:04:59.770035Z INFO reco_gui: Cancel requested
2026-05-23T14:05:21.477296Z INFO reco_gui: Export requested: output=C:\Users\jeffg\OneDrive\Desktop\ActionStitch\reco-take6.mp4
2026-05-23T14:05:21.477711Z INFO reco_gui: Export range: start=0.0s, end=531.5s
2026-05-23T14:05:21.588164Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:21.680945Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:21.800033Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:21.925192Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.042704Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.148248Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.247142Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.346746Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.430015Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.506120Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.527169Z INFO reco_io::adapters: Chained source: 4545.2s total across 9 segments
2026-05-23T14:05:22.586729Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.663401Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.740970Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.818803Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.897130Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:22.972876Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.046530Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.121709Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.193518Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.212348Z INFO reco_io::adapters: Chained source: 4560.6s total across 9 segments
2026-05-23T14:05:23.212385Z INFO reco_io::adapters: Duration mismatch: left=4545.2s, right=4560.6s, using shorter (4545.2s)
2026-05-23T14:05:23.294377Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.346375Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 9 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_QoLYQf.txt
2026-05-23T14:05:23.346713Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 9 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_NzTbGm.txt
2026-05-23T14:05:23.373753Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.423933Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.424022Z INFO reco_io::adapters: right decoder: D3D11VA (3840x2160)
2026-05-23T14:05:23.551752Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:23.551862Z INFO reco_io::adapters: left decoder: D3D11VA (3840x2160)
2026-05-23T14:05:23.563770Z INFO reco_core::gpu: wgpu backends: Backends(DX12)
2026-05-23T14:05:24.774423Z INFO reco_core::gpu: Selected GPU: NVIDIA GeForce RTX 4050 Laptop GPU (Dx12)
2026-05-23T14:05:24.774472Z INFO reco_core::gpu: Requesting device with features: Features { features_wgpu: FeaturesWGPU(TEXTURE_FORMAT_16BIT_NORM | TEXTURE_FORMAT_NV12 | TEXTURE_FORMAT_P010), features_webgpu: FeaturesWebGPU(0x0) }
2026-05-23T14:05:24.894669Z INFO reco_core::gpu: Device created successfully
2026-05-23T14:05:24.911461Z INFO reco_io::stitch_job: StitchJob::run: force_cpu_decode=false
2026-05-23T14:05:24.972239Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:25.049656Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:25.070220Z INFO reco_io::smart_source: SmartFileSource: D3D11VA zero-copy decode enabled
2026-05-23T14:05:25.139029Z INFO reco_core::render::pipeline: Pipeline initialized: 2560x1440 output, GPU: NVIDIA GeForce RTX 4050 Laptop GPU
2026-05-23T14:05:25.146155Z INFO reco_core::gpu::rgba_readback: RgbaReadback: 2560x1440 → 14745600 bytes staging (14 MB, row padding 10240/10240)
2026-05-23T14:05:25.147400Z INFO reco_core::projection::coverage: CoverageBoundary: pitch [-0.478, 0.470] (54.3 deg), min pitch range 47.5 deg
2026-05-23T14:05:25.180430Z INFO reco_core::gpu::nv12_converter: NV12 converter: 2560x1440 → 5529600 bytes (5.3 MB), dispatch (40, 360, 1)
2026-05-23T14:05:25.254288Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-23T14:05:25.254344Z INFO reco_detect::ort_session: ORT: DirectML execution provider enabled
2026-05-23T14:05:27.586441Z WARN ort::logging: Some nodes were not assigned to the preferred execution providers which may or may not have an negative impact on performance. e.g. ORT explicitly assigns shape related ops to CPU to improve perf.
2026-05-23T14:05:27.970238Z INFO reco_detect::detectors::cpu: Auto-detected 80 class labels from model metadata
2026-05-23T14:05:28.095765Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-23T14:05:28.095825Z INFO reco_detect::ort_session: ORT: DirectML execution provider enabled
2026-05-23T14:05:28.425974Z WARN ort::logging: Some nodes were not assigned to the preferred execution providers which may or may not have an negative impact on performance. e.g. ORT explicitly assigns shape related ops to CPU to improve perf.
2026-05-23T14:05:28.439126Z INFO reco_detect::detectors::cpu: Auto-detected 80 class labels from model metadata
2026-05-23T14:05:28.439180Z INFO reco_detect::detectors::cpu: CpuYoloDetector loaded: input=1280x1280, 80 classes, conf_thresh=0.1
2026-05-23T14:05:28.496923Z INFO reco_detect::wgpu_preprocess: WgpuPreprocessor: 3840x2160 → 1280x1280, scale=0.333, pad=(0.0,280.0), tensor=18.8MB
2026-05-23T14:05:28.496987Z INFO reco_autocam: Autocam: wgpu preprocessing + DirectML tracking enabled (model: C:\Users\jeffg\Downloads\yolo26n.onnx)
2026-05-23T14:05:28.496994Z INFO reco_autocam: Detection interval: every 3 frames
2026-05-23T14:05:28.496999Z INFO reco_autocam: Class IDs: ball=32, person=0 (from 80 model labels)
2026-05-23T14:05:28.497003Z INFO reco_autocam: Tracking mode: field (PlayerTracker + BallTracker + FieldPanner, player_class=0, ball_class=32)
2026-05-23T14:05:28.497008Z INFO reco_core::session::wiring: StitchSession: ball tracker attached (class_id=32)
2026-05-23T14:05:28.497012Z INFO reco_core::session::wiring: StitchSession: player tracker attached (class_id=0)
2026-05-23T14:05:28.497449Z INFO reco_core::session::wiring: StitchSession: panner attached
2026-05-23T14:05:28.497477Z INFO reco_gui::export: Export: AI tracking: active
2026-05-23T14:05:28.532207Z INFO reco_io::ffmpeg::decoder: Shared hw device created: D3D11VA
2026-05-23T14:05:28.533701Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 9 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_kGbat2.txt
2026-05-23T14:05:28.533907Z INFO reco_io::ffmpeg::decoder: Concat demuxer: chaining 9 segments via C:\Users\jeffg\AppData\Local\Temp\reco_concat_3B4rTV.txt
2026-05-23T14:05:28.594712Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:28.594769Z INFO reco_io::zero_copy: D3D11VA decode thread left: backend=D3D11VA
2026-05-23T14:05:28.742591Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:05:28.742704Z INFO reco_io::zero_copy: D3D11VA decode thread right: backend=D3D11VA
2026-05-23T14:05:28.750799Z INFO reco_io::ffmpeg::encoder: Encoder: 2560x1440 h264_nvenc (hardware) @ 2997/50 fps
2026-05-23T14:05:28.760474Z INFO reco_io::ffmpeg::encoder: Audio passthrough from C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010490.MP4 (stream 1, codec: AAC)
2026-05-23T14:05:28.760994Z INFO reco_io::stitch_job: frame limit: 31860 (from end_time 531.53s)
2026-05-23T14:05:28.895479Z INFO reco_core::session::frame_processing: D3D11VA staging pool created: 3840x2160, 4 Nv12 slots
2026-05-23T14:05:28.895553Z INFO reco_core::interop::d3d11: D3D11VA staging pool: using FFmpeg’s device with multithread protection
2026-05-23T14:36:42.620472Z INFO reco_gui: Playback toggle ignored: export in progress
2026-05-23T14:36:44.025427Z INFO reco_gui: Playback toggle ignored: export in progress

Attempt on a single file from LEFT+right camera w/ 720p output

2026-05-23T14:44:40.184882Z INFO reco_gui: Telemetry enabled (client_id=02edb03b).
2026-05-23T14:44:40.216948Z INFO ort: Loaded ONNX Runtime dylib from “C:\Users\jeffg\OneDrive\Desktop\ActionStitch\Reco\onnxruntime.dll”; version ‘1.24.4’
2026-05-23T14:44:40.648365Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-23T14:44:40.718662Z INFO reco_gui: AI: DirectML (CPU path - works for file export, not live GPU decode)
2026-05-23T14:44:40.718769Z INFO reco_gui: Reco GUI v0.5.2 (61f2513)
2026-05-23T14:44:40.719990Z INFO reco_gui: Available codecs: h264, hevc, av1
2026-05-23T14:44:42.136994Z INFO reco_gui: Captured Slint wgpu 28 device/queue for zero-copy preview
2026-05-23T14:44:57.219606Z INFO reco_gui: Auto-calibrate: 4 frames, skip=[0.0s, -0s], imu_seeds=false, akaze=0.00009999999747378752, detect_y=[0.05, 0.95]
2026-05-23T14:44:57.355435Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:44:57.512255Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:44:58.122311Z INFO reco_calibrate::lens_database: lens database: 9794 profiles from 1687 cameras (embedded)
2026-05-23T14:44:58.150336Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.150463Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.153433Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.153510Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.155409Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.184865Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.185015Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.185032Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.185127Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.185169Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.220078Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.220163Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.221874Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.221886Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.223159Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.223168Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.223184Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.223192Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.223236Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.223243Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.231552Z INFO reco_calibrate::lens_database: lens auto-detect: exact match gopro/hero8-black 3840x2160 FOV=Wide (GoPro/GoPro_HERO8 Black_Wide_HS High_4k_16by9_3840x2160-29.97fps.json)
2026-05-23T14:44:58.231616Z INFO reco_calibrate::lens_database: lens auto-detect: exact match gopro/hero8-black 3840x2160 FOV=Wide (GoPro/GoPro_HERO8 Black_Wide_HS High_4k_16by9_3840x2160-29.97fps.json)
2026-05-23T14:44:58.263100Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.263200Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.265364Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.265419Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.266886Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.266899Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.266914Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.266921Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.266963Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.266970Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.465239Z INFO reco_calibrate::telemetry: telemetry: GoPro HERO8 Black - 106650 gyro, 106650 accel samples, 31860 quaternions, lens profile: none, FOV: Wide
2026-05-23T14:44:58.512369Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.512487Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.514603Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.514652Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.516040Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.516053Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.516070Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.516078Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.516131Z WARN mp4parse: InvalidData(HdlrPredefinedNonzero)
2026-05-23T14:44:58.516138Z WARN mp4parse: InvalidData(HdlrNameNoNul)
2026-05-23T14:44:58.684350Z INFO reco_calibrate::telemetry: telemetry: GoPro HERO8 Black - 105814 gyro, 105814 accel samples, 31860 quaternions, lens profile: none, FOV: Wide
2026-05-23T14:44:58.717544Z WARN reco_calibrate::telemetry: gyro sync: correlation too low (0.1086), rejecting offset
2026-05-23T14:44:58.718021Z INFO reco_calibrate::telemetry: differential orientation: roll=0.0147 rad (0.8 deg), pitch=-0.7679 rad (-44.0 deg), tilt_diff=-0.0073 rad (-0.4 deg)
2026-05-23T14:44:58.718057Z INFO reco_calibrate::telemetry: rig tilt (accel): 0.3924 rad (22.5 deg)
2026-05-23T14:44:58.718072Z INFO reco_calibrate::pipeline: differential roll: 0.84 deg, pitch: -44.00 deg, tilt: -0.42 deg
2026-05-23T14:44:58.718079Z INFO reco_calibrate::pipeline: pitch > 2 deg, enabling x_rx seeded at -0.7679 rad
2026-05-23T14:44:58.718086Z INFO reco_calibrate::pipeline: rig tilt: 22.5 deg
2026-05-23T14:44:58.718092Z INFO reco_calibrate::pipeline: rig roll: left=22.0 deg, right=22.9 deg, avg=-0.4 deg
2026-05-23T14:44:58.718105Z WARN reco_calibrate::video: sync: IMU returned no offset (one or both telemetry streams missing); trying audio
2026-05-23T14:44:58.719072Z WARN reco_calibrate::video: sync: audio extraction failed for left=C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010490.MP4 (audio extraction failed: failed to run ffmpeg: program not found); sync_offset stays at 0
2026-05-23T14:44:58.719125Z INFO reco_calibrate::video: extracting 4 frames (fps: 59.9, sync_offset: 0)
2026-05-23T14:44:58.796200Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:00.180412Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:01.790989Z INFO reco_core::gpu: wgpu backends: Backends(DX12)
2026-05-23T14:45:03.894425Z INFO reco_core::gpu: Selected GPU: NVIDIA GeForce RTX 4050 Laptop GPU (Dx12)
2026-05-23T14:45:03.894468Z INFO reco_core::gpu: Requesting device with features: Features { features_wgpu: FeaturesWGPU(TEXTURE_FORMAT_16BIT_NORM | TEXTURE_FORMAT_NV12 | TEXTURE_FORMAT_P010), features_webgpu: FeaturesWebGPU(0x0) }
2026-05-23T14:45:03.997147Z INFO reco_core::gpu: Device created successfully
2026-05-23T14:45:03.997228Z INFO reco_calibrate::video: GPU: NVIDIA GeForce RTX 4050 Laptop GPU
2026-05-23T14:45:04.249019Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:04.259605Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:04.266364Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:04.275684Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:10.881050Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:10.883618Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:10.893541Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:10.897266Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:21.801750Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:21.810940Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:21.811466Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:21.820588Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:31.772112Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:31.775908Z INFO reco_calibrate::akaze::image: Loaded an 8-bit image
2026-05-23T14:45:31.782285Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:31.786215Z INFO reco_calibrate::akaze: Loaded a 1920 x 1975 image
2026-05-23T14:45:41.578796Z INFO reco_calibrate: 4/4 frame pairs produced matches
2026-05-23T14:45:41.578897Z INFO reco_calibrate: 103 total matched points
2026-05-23T14:45:41.578918Z INFO reco_calibrate: x-plane range: x=[-0.305, -0.210] y=[-0.075, 0.082]
2026-05-23T14:45:41.578932Z INFO reco_calibrate: z-plane range: x=[0.205, 0.296] y=[-0.070, 0.086]
2026-05-23T14:45:41.608929Z INFO reco_calibrate: calibration complete: median_error=0.000011, trimmed=0.000022, total_reproj=0.000107, angular_error=0.107854, confidence=1.00, z_rz=0.0000
2026-05-23T14:45:41.678659Z INFO reco_gui: Auto-calibration complete: 103 matches
2026-05-23T14:45:41.752391Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:41.837780Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:41.934413Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:42.158127Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:42.237533Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:42.237632Z INFO reco_io::adapters: left decoder: D3D11VA (3840x2160)
2026-05-23T14:45:42.355923Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:45:42.356028Z INFO reco_io::adapters: right decoder: D3D11VA (3840x2160)
2026-05-23T14:45:42.456410Z INFO reco_core::gpu: GpuContext from external device: Slint-shared wgpu 28 device (Vulkan)
2026-05-23T14:45:42.456494Z INFO reco_gui::preview: PreviewBridge (zero-copy): GPU=Slint-shared wgpu 28 device (Vulkan)
2026-05-23T14:45:42.458302Z INFO reco_core::projection::coverage: CoverageBoundary: pitch [-0.478, 0.470] (54.3 deg), min pitch range 47.5 deg
2026-05-23T14:45:42.477185Z INFO reco_core::render::pipeline: Pipeline initialized: 1920x1080 output, GPU: Slint-shared wgpu 28 device
2026-05-23T14:45:42.489142Z INFO reco_gui: Auto-saved calibration to C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010490_calibration.json
2026-05-23T14:45:42.895330Z INFO reco_calibrate::lens_database: lens database: 9794 profiles from 1687 cameras (embedded)
2026-05-23T14:47:39.810948Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:47:40.514144Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:47:41.141650Z INFO reco_gui: ROI frame extraction: left=true right=true
2026-05-23T14:47:41.299772Z INFO reco_gui: ROI editor: wrote 34953673 bytes to C:\Users\jeffg\AppData\Local\Temp\reco\roi\roi_editor.html, opening in browser
2026-05-23T14:50:26.303962Z INFO reco_gui: Export requested: output=C:\Users\jeffg\OneDrive\Desktop\ActionStitch\reco7.mp4
2026-05-23T14:50:26.304376Z INFO reco_gui: Export range: start=0.0s, end=531.5s
2026-05-23T14:50:26.434760Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:26.547386Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:26.658593Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.173552Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.246322Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.288524Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.288608Z INFO reco_io::adapters: right decoder: D3D11VA (3840x2160)
2026-05-23T14:50:27.441704Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.441828Z INFO reco_io::adapters: left decoder: D3D11VA (3840x2160)
2026-05-23T14:50:27.453313Z INFO reco_core::gpu: wgpu backends: Backends(DX12)
2026-05-23T14:50:27.664240Z INFO reco_core::gpu: Selected GPU: NVIDIA GeForce RTX 4050 Laptop GPU (Dx12)
2026-05-23T14:50:27.664294Z INFO reco_core::gpu: Requesting device with features: Features { features_wgpu: FeaturesWGPU(TEXTURE_FORMAT_16BIT_NORM | TEXTURE_FORMAT_NV12 | TEXTURE_FORMAT_P010), features_webgpu: FeaturesWebGPU(0x0) }
2026-05-23T14:50:27.802556Z INFO reco_core::gpu: Device created successfully
2026-05-23T14:50:27.802655Z INFO reco_io::stitch_job: StitchJob::run: force_cpu_decode=false
2026-05-23T14:50:27.868905Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.954544Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:27.978599Z INFO reco_io::smart_source: SmartFileSource: D3D11VA zero-copy decode enabled
2026-05-23T14:50:28.041755Z INFO reco_core::render::pipeline: Pipeline initialized: 1280x720 output, GPU: NVIDIA GeForce RTX 4050 Laptop GPU
2026-05-23T14:50:28.077888Z INFO reco_core::gpu::rgba_readback: RgbaReadback: 1280x720 → 3686400 bytes staging (3 MB, row padding 5120/5120)
2026-05-23T14:50:28.079257Z INFO reco_core::projection::coverage: CoverageBoundary: pitch [-0.478, 0.470] (54.3 deg), min pitch range 47.5 deg
2026-05-23T14:50:28.109894Z INFO reco_core::gpu::nv12_converter: NV12 converter: 1280x720 → 1382400 bytes (1.3 MB), dispatch (20, 180, 1)
2026-05-23T14:50:28.152612Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-23T14:50:28.152702Z INFO reco_detect::ort_session: ORT: DirectML execution provider enabled
2026-05-23T14:50:28.659984Z WARN ort::logging: Some nodes were not assigned to the preferred execution providers which may or may not have an negative impact on performance. e.g. ORT explicitly assigns shape related ops to CPU to improve perf.
2026-05-23T14:50:28.848446Z INFO reco_detect::detectors::cpu: Auto-detected 80 class labels from model metadata
2026-05-23T14:50:28.932740Z INFO ort::ep: Successfully registered DmlExecutionProvider source=session options
2026-05-23T14:50:28.932793Z INFO reco_detect::ort_session: ORT: DirectML execution provider enabled
2026-05-23T14:50:29.238958Z WARN ort::logging: Some nodes were not assigned to the preferred execution providers which may or may not have an negative impact on performance. e.g. ORT explicitly assigns shape related ops to CPU to improve perf.
2026-05-23T14:50:29.251186Z INFO reco_detect::detectors::cpu: Auto-detected 80 class labels from model metadata
2026-05-23T14:50:29.251248Z INFO reco_detect::detectors::cpu: CpuYoloDetector loaded: input=1280x1280, 80 classes, conf_thresh=0.1
2026-05-23T14:50:29.268600Z INFO reco_detect::wgpu_preprocess: WgpuPreprocessor: 3840x2160 → 1280x1280, scale=0.333, pad=(0.0,280.0), tensor=18.8MB
2026-05-23T14:50:29.268648Z INFO reco_autocam: Autocam: wgpu preprocessing + DirectML tracking enabled (model: C:\Users\jeffg\Downloads\yolo26n.onnx)
2026-05-23T14:50:29.268656Z INFO reco_autocam: Detection interval: every 3 frames
2026-05-23T14:50:29.268663Z INFO reco_autocam: Class IDs: ball=32, person=0 (from 80 model labels)
2026-05-23T14:50:29.268668Z INFO reco_autocam: Tracking mode: field (PlayerTracker + BallTracker + FieldPanner, player_class=0, ball_class=32)
2026-05-23T14:50:29.268679Z INFO reco_core::session::wiring: StitchSession: ball tracker attached (class_id=32)
2026-05-23T14:50:29.268683Z INFO reco_core::session::wiring: StitchSession: player tracker attached (class_id=0)
2026-05-23T14:50:29.268697Z INFO reco_core::session::wiring: StitchSession: panner attached
2026-05-23T14:50:29.268705Z INFO reco_gui::export: Export: AI tracking: active
2026-05-23T14:50:29.305078Z INFO reco_io::ffmpeg::decoder: Shared hw device created: D3D11VA
2026-05-23T14:50:29.315161Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:29.315246Z INFO reco_io::zero_copy: D3D11VA decode thread right: backend=D3D11VA
2026-05-23T14:50:29.316533Z INFO reco_io::ffmpeg::decoder: Source is full-range YUV (format=YUVJ420P, color_range=AVCOL_RANGE_JPEG)
2026-05-23T14:50:29.316598Z INFO reco_io::zero_copy: D3D11VA decode thread left: backend=D3D11VA
2026-05-23T14:50:29.454172Z INFO reco_io::ffmpeg::encoder: Encoder: 1280x720 h264_nvenc (hardware) @ 2997/50 fps
2026-05-23T14:50:29.459857Z INFO reco_io::ffmpeg::encoder: Audio passthrough from C:\Users\jeffg\OneDrive\Desktop\ActionStitch\LEFT\GX010490.MP4 (stream 1, codec: AAC)
2026-05-23T14:50:29.460167Z INFO reco_io::stitch_job: frame limit: 31860 (from end_time 531.53s)
2026-05-23T14:50:29.460230Z INFO reco_core::session::frame_processing: D3D11VA staging pool created: 3840x2160, 4 Nv12 slots
2026-05-23T14:50:29.463598Z INFO reco_core::interop::d3d11: D3D11VA staging pool: using FFmpeg’s device with multithread protection
2026-05-23T14:55:33.348081Z INFO reco_gui: Cancel requested
2026-05-23T14:55:34.119474Z INFO reco_gui: Cancel requested
2026-05-23T14:55:34.308032Z INFO reco_gui: Cancel requested
2026-05-23T14:55:34.469441Z INFO reco_gui: Cancel requested
2026-05-23T14:55:34.602778Z INFO reco_gui: Cancel requested
2026-05-23T14:55:34.757817Z INFO reco_gui: Cancel requested
2026-05-23T14:55:34.907513Z INFO reco_gui: Cancel requested
2026-05-23T14:55:35.058099Z INFO reco_gui: Cancel requested
2026-05-23T14:55:35.227552Z INFO reco_gui: Cancel requested

Any suggestions why it just seems to hang on processing?

I’ll work on it tomorrow. Let’s move the discussion to private chat.

So finally managed to get a stitch together of a game of touch rugby. Due to me, conditions and equipment, really poor quality. AI doesn’t stand a chance (it seems to vaguely look around the half of the pitch with no players on it…).

Would it be possible to setup a manual tracking recording? So record my personal point of focus whilst playing the video as I track along with it? Maybe horizontal only to make it smoother (or as an option)? Or perhaps even as a combination thing, so I can select which times to override the AI and instead track what I’m on? That way as I provide better footage it can track more easily, AI can do most the work, but then I can still override. Rugby has a disadvantage over football in that the ball can be out of sight for long periods, and a cluster of players isn’t always necessarily the right place to look (or vaguely looking at open field… but again, that’s probably on me!).

EDIT - Using the “Field” option definitely helps, it tracked the group of players much better, but still off, since the weight of players is basically spread, despite the action being on the far side.

EDIT EDIT - This could also be useful in terms of clipping for coaching etc, where the main play/ball is, isn’t always what you want to be pointing out to players. Sometimes it’s positioning in the backfield etc.

1 Like

Were you able to use “ROI” to select the field and have the AI only consider players that are there?

If you are curious you could try the other pre-release I have published. v0.5.3-beta.1 Release v0.5.3-beta.1 · reco-project/video-stitcher · GitHub

It should have better tracking.

Is the stitch seamless or is it not perfect? Show us a screenshot if possible!

Once again sorry for not having clearer instructions. It will become simpler and clearer. In the meantime, have a look at QUICKSTART.md video-stitcher/QUICKSTART.md at main · reco-project/video-stitcher · GitHub

Trying the 5.3 beta. Seam isn’t perfect, but it’s well timed with playing with the offset. I can’t get the Autocalibrate to work well, so I’m relying on an older calibration not from the pitch. When I try from these videos, it completely squashes the left side, bringing the posts right up close. I’m guessing if I’d put a cone in between the blue and yellow (like a red one), it would have given it a nice point to lock onto. Though just now it worked, but still worse than the other older calibration.

Tracking field definitely helps. Unfortunately my clips aren’t long, the exposure was different (so used editing to improve brightness of one), and one of the phones decided to revert back to 1080p recording instead of 4k, which took me far too long to realise (lots of wasted time failing to get any image up, obviously exposure reset too etc). So had to upscale it with an online AI. I’ll try and find a better pair of clips to work with (after realising all the things I needed to correct I just worked with one pair of clips).

Please do not apologise for my ignorance and poor recordings!

This is a picture of the seam at it’s best (again, this was me holding the phone holder, so not stable at all. The tripod has just arrived, but need to do some adaptations to get it to actually hold the phone holder.

Going to keep on playing around, hopefully with a better clip for better results.

EDIT - At the moment, the quality just isn’t there for the ball tracking I believe. It was evening when recorded, and unstable due to me. I’ll try and get hold of another better quality phone so I can try and get a better result in a few weeks time. I can certainly see the potential. And with a lens calibration (lg g6 doesn’t have one) I suspect it’ll go even smoother.

1 Like

As you can see the pitch, in the horizon, is slightly curved. This indicates you are not using a perfect lens profile and is the most probable cause as to why the seam isn’t perfect and to why the Autocalibrate fails. This page describes how you can film a video that will allow you to create your custom lens profile: Lens Calibration | Gyroflow documentation
That Gyroflow app has a built in Lens Profile builder that is compatible with Reco. Otherwise you can just send me the video and I will try to calibrate it for you.

The resolutions and details seem fine, but the AI will have a very hard time if the rig is moving. Also, the app assumes that the cameras are fixed between one another. So if you were holding each in a hand, it will miserably fail.

Did you try lookahead? It should help.

I haven’t had time to test when input resolutions differ. On paper it should work but I did not really experiment it. Did it fail completely for you, until you resized it?

Thank you for all your efforts and testing, it helps a lot. Sorry for late response.
And for tripod, use some tape :smiley: I always end up using that lol.

Hello @DenSoccer,

It’s been a while! Are you still encountering the issues above? v0.5.3 shipped many new fixes targetting export hangs.

Maybe you could try again? And if you ever get new bugs, please consider using the Report button in the Desktop App, as it attaches the logs and allows me to debug better.

Thanks!!