Conversation
Size Report
Startup median (7 runs, lower is better):
|
|
Reviewed a3412ea. I have one scope question before this layer is ready. Does this layer need more than the Swift helper, Not blocking: the error pass-through at contact-sheet-frames.ts#L107 (and L252) is wider than the cancel case and could narrow to CI: Lint & Format fails on contact-sheet-frames.test.ts, which this PR adds, and Compatibility & Provenance fails on the unused exports and the clone above, so both are related. The Coverage eager-closure failure comes from the #2743 base. Smoke fails on a WebView step that this decoder is not wired to, so it looks unrelated. No conflicts. |
a3412ea to
766267a
Compare
766267a to
ccf6687
Compare
|
Narrowed — the subpath now carries exactly three names: Nothing has to change first for the subpath to exist; it lands with its first consumer, and every other name now arrives in the layer that raises it: the duration reason with the sample grid (#2745), the pixel-budget reason with the renderer (#2746), container/write/collision plus the result and cell types with the pipeline (#2752), and Non-blocking items taken:
|
|
Reviewed ccf6687. The scope question from the first review is answered: the contracts subpath now declares only the three reasons this layer raises, each has a reader here, and the unused-export and clone findings are gone. The cancellation rethrow, the single extraction-failure helper and the Not blocking: the cancellation test (contact-sheet-frames.test.ts#L284) aborts before CI: Smoke Tests was still running. This module has no production importer yet, so Smoke does not reach it. No conflicts. |
ccf6687 to
442d367
Compare
442d367 to
e88dd5b
Compare
|
Reviewed e88dd5b. Since 442d367, this only moves the three refusal reasons from the contracts subpath into CI is still running, with no failures yet. No conflicts. |
Why
A contact sheet needs real decoded frames, and the only decoder that can read the clips this repo produces is Apple AVFoundation. This layer answers one question: can we hand a caller the frames at N requested times?
What
recording-frames.swiftcompiled through the existing cached Swift seam, plusextractRecordingFrames()on the TypeScript side.packages/capture-kit/src/recording/contact-sheet-report.ts, beside the extraction that fails with them:contact_sheet_unsupported_host,contact_sheet_frame_extraction_failed,contact_sheet_no_frames. Nothing outside this package reads them yet, so they are not cross-layer contracts and get nopackages/contractssubpath.Notes
Frames are decoded once at the sheet's cell width and never re-encoded; the pipeline re-lays them out without asking AVFoundation again.