Skip to content

fix: isolate video codec runtime from capture#41

Merged
abrichr merged 2 commits into
mainfrom
agent/optional-video-codec
Jul 23, 2026
Merged

fix: isolate video codec runtime from capture#41
abrichr merged 2 commits into
mainfrom
agent/optional-video-codec

Conversation

@abrichr

@abrichr abrichr commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

  • remove PyAV from the core/runtime dependency closure while keeping video enabled by default
  • stage lossless timestamped PNG frames and encode transactionally through a separately provisioned FFmpeg process
  • resolve Desktop-managed FFmpeg/ffprobe, explicit developer paths, or PATH without downloading or bundling codec binaries
  • perform a real encode plus PNG-decode/select probe before listeners start, with verified automatic encoder choice and portable mpeg4/yuv420p fallback
  • preserve nearest-frame-within-tolerance extraction and video metadata through ffprobe
  • retain staged frames on encoding failure; atomically publish and delete staging only after verification

Verification

  • Python 3.12 macOS unit suite: 312 passed, 8 deselected
  • Python 3.10 macOS unit suite: 312 passed, 8 deselected
  • focused video/import/API suite: 56 passed
  • exact managed LGPL runtime smoke: mpeg4 encode, yuv420p, PNG verification, ffprobe metadata, nearest-frame extraction passed with the 5.4 MB FFmpeg 8.1.2 pair
  • ruff check openadapt_capture: passed
  • wheel and sdist release-boundary verifier: passed
  • clean installed-wheel import: passed; av absent from dependencies and modules

Artifact boundary

The wheel and sdist contain no PyAV dependency and no FFmpeg, ffprobe, libavcodec/libavformat, x264, or x265 binary. Desktop provisions the separately distributed runtime and supplies absolute executable paths.

@abrichr
abrichr merged commit dd84934 into main Jul 23, 2026
12 checks passed
@abrichr
abrichr deleted the agent/optional-video-codec branch July 23, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant