Repository navigation
Record: camera fixes, mirroring, voice clean-up - #11
Merged
Merged
Conversation
…ideo The C920 offers 30.00003 fps and refuses a frame duration of exactly 1/30, which crashed the recorder whenever a camera was chosen; use the range's own duration. A still (ctl frame, the viewer's freeze) dropped any video frame lasting under half a frame, which hid the first second of every take: the fps filter now passes the last frame, and the recorder no longer writes a frame a few milliseconds after the one it holds at the start or a resume. `record setup` also brings back sources that stopped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Look.mirror flips the picture before its crop, mask and hidden box, in the viewer and in export alike (one hflip in the shared filters). The inspector has it under Crop and mirror; `ctl look --mirror`. Record's scene has a Mirror switch: the preview flips at once and a take's camera clip comes in mirrored, while camera.mp4 stays as the camera saw it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A clip's sound can be cleaned up as a voice, like OBS's mic filters: rumble cut below 80 Hz, steady noise lowered (afftdn, its floor rising with the strength, so a webcam's room noise drops about 5 dB at the default), and the level evened out (dynaudnorm, which lifts quiet words without raising the noise in pauses). One list of filters serves export and the viewer, which decodes a cleaned clip's sound as it does a retimed one. Inspector: Sound > Clean up the voice; ctl: `clean --clip C [--noise F] [--even]`; Record: a switch under the mic (`record setup --clean`) so takes' mic clips come in cleaned, the file left as recorded. The live preview drew the camera bubble square: gpui clips to rectangles. Camera preview frames now arrive cut to the part the scene shows, and are drawn round themselves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Camera takes crashed, and stills of new takes left layers out. Found while testing the camera after #10. This PR also adds the next Record features: mirroring and voice clean-up.
Fixes
ctl frameand the viewer's still dropped any video frame lasting under half a frame. Every take starts with a held frame a few milliseconds before the first real one, so the camera (and sometimes the screen) disappeared for the first second.fps=…:eof_action=pass). This also helps variable-rate footage from phones.record setuprestarts stopped sources. Before, it only restarted them when the setup had changed.Mirror
Look.mirrorflips a picture left to right, before its crop, mask and hidden box. The viewer and export share the same filters, so both use onehflip. It's in the inspector under "Crop and mirror", and in ctl aslook --mirror.record setup --mirror) flips the live preview and brings each take's camera clip in mirrored.camera.mp4itself is never flipped.mirroris left out).Voice clean-up (like OBS's mic filters)
Clip.cleanruns three steps:afftdn). Its noise floor rises with the strength setting, and that floor mattered more than the reduction amount.dynaudnorm). In tests this lifted a quiet voice from −32 to −23 dB and held a loud one back slightly, while noise in pauses stayed below the original. A compressor with make-up gain raised the room noise instead, so it was dropped.anlmdnfor the same result, and doesn't shift timing.clean --clip C [--noise F] [--even/--no-even] | --off.record setup --clean), so each take's mic clip comes in cleaned.microphone.m4astays as recorded.Tested by hand:
ctl frame.fmt, clippy, doc and tests pass, with new tests for: the mirror filter order, the studio's mirror in every layout, the clean-up filters and their place in the export chain, cutting preview frames, and the new ctl flags.
🤖 Generated with Claude Code