Repository navigation
Never save a clip shorter than its card says, and keep a gaming choice - #215
Merged
Merged
Conversation
Issue #213: a clip's card said 64s and it played for 2, with the facecam left where it sat in the stream instead of a split. - The tracked render decodes on the GPU, and sampled_frames reads FFmpeg exiting early as the end of the clip. Only a decoder that gave nothing fell back to the CPU, so a decoder that stopped partway left a short clip: -shortest cut the audio to match and it was saved with its full window. The renderer now finishes on the CPU from the frame the GPU stopped at. On a real 1080p60 clip with the decoder stopped at a third, main made 6.6s of 20; this makes all 20s. With the decoder working, the output is byte-identical to main's. - Each clip is measured before it's saved. One that came out under 90% of its length is reported as a failed render and not saved, whatever made it short. - "Use standard processing" on a job Vertical Live refused dropped only vertical_live. A job that asked for its gaming content kept gaming scoring and got the plain crop. It now runs as Gaming / Reaction, the 16:9 form of that choice. - The Feedback Hub sent reports without the video picked in them, so the diagnostics described the last job's video instead (here a deleted Twitch VOD). Send now passes it, like the preview. Refs #213 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
This branch was successfully deployed
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.
Issue #213 (app 2.1.0, an RTX 5070 Ti): a clip's card said 64s but it played for 0:02, and the facecam sat where it was in the stream instead of in a split. The report also described the wrong video. This fixes three bugs behind that. Refs #213, which stays open: one cause of the missing split needs a real gaming VOD to check (see below).
1. A clip that played for 2 seconds while its card said 64
end_s - start_s). Nothing compared that window to the file.video/encoding.py:sampled_frames), which reads FFmpeg exiting early as the end of the clip.produce's docstring promised a fallback "if the stream ends early".-shortestcut the audio to match, the end card was added, and the clip was saved with its full window.video/cropper.pychecks the frames written against the clip's frame count. If the GPU stopped more than half a second short, it seeks OpenCV to that frame and finishes there.core/pipeline.py_finishmeasures each clip first. A file under 90% of what it was made as is reported through the existing "Render failed for …" line and isn't saved. The short file is deleted unless a clip already points at it. A file that can't be measured passes.Checked on a real 1080p60 clip (20 s, NVENC, with the GPU decoder forced to stop at a third):
When the decoder stops, frames 0–395 are identical to the normal render. From the switch on, they differ only by the CPU's decode rounding: about 45 dB PSNR, never below 41.9. So no frame is skipped or repeated.
2. Gaming scores with the plain crop
vertical_live, so the job keptgaming_scoringand laid the clips out with the standard crop._standard_retryturns that into Gaming / Reaction (gaming: true), the 16:9 form of the choice. A plain Vertical Live retry is unchanged.queue.retrygainsupdatesnext todrop.gaming/run.py:render, "camera fills the frame").3. The bug report described the wrong video
The Feedback Hub's "see what will be shared" preview passed the chosen video, but Send didn't. So every report fell back to the latest job's video: #213 named "дверистрим" and arrived with a deleted Twitch VOD's details. Send now passes
video_id: realVideoId().Checks
tests/test_render_length.py:tests/test_vertical_live.py.tests/test_ui_feedback_report.py.newtests, which fail the same way on unchanged main inside a Windows venv.cv2in my local venv, and they fail the same way on unchanged main.🤖 Generated with Claude Code