Repository navigation
fix(loc): end each group with the duration marker - #4937
Conversation
Co-Authored-By: Grok 4.7 <noreply@x.ai>
Co-Authored-By: Grok 4.7 <noreply@x.ai>
|
Outcome: quest/m2/js-loc-duration-marker is implemented and the quest file is deleted.
No maintainer decision is blocking. The producer still has no kind, so every group gets the video marker. Recommendation: add a kind only when a non-video caller shows up. (Written by Grok 4.7) |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: d6a632f
No actionable correctness issue found. js/loc/src/index.ts:142-167,198-230 writes the empty LOC marker on keyframe rollover and clean close, suppresses it for reordered groups, and avoids a duration marker on an error close. Producer and hang-consumer tests cover the payload/endpoint distinction, overlap and unknown cadence. Matching the existing Rust marker is a sound direction within this producer's explicitly video-oriented scope.
Verification: reviewed the full diff, LOC format/producer context, tests and prior discussion. Static review only; I did not rerun Bun tests/typechecks or playback. Single-frame tails with no learned interval intentionally remain unmarked. This is a draft COMMENT review, not merge approval.
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 2 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (6)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (6)
💤 Files with no reviewable changes (2)
Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 0 remain after this review. WalkthroughThe LOC producer now tracks timestamps within each video group and writes an empty duration marker when the group end is known or can be estimated. Tests cover keyframe boundaries, tail markers, missing intervals, overlapping timestamps, reordered timestamps, and consumer endpoint events. The README describes the marker behavior and consumer handling. The related quest item and plan document were removed. Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to The ordered-group endpoint behavior is covered, and no merge-blocking issue remains after normal checks. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Automated review of The JS producer now matches Non-blocking
The tests cover the main cases well: a keyframe boundary, the estimated tail, a single frame with no marker, the overlapping keyframe, and a reordered group with the cadence reset. A two-frame data-track test would pin down item 1 whichever way you go. Verdict: MERGE once CI is green. Items 1 and 2 are cheap to fix here, but nothing blocks. This is an automated review, not the maintainer's decision |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: db12bae
Follow-up to d6a632f. No new correctness finding in the compatibility delta. After accounting for main, the producer changes are unchanged. js/loc/src/index.test.ts:155 and js/hang/src/container/consumer.test.ts:845 now use the supported maxDelay option. The optional timestamp read at index.test.ts:169 still feeds exact numeric assertions (:186-195), so a missing timestamp would fail rather than be silently accepted.
Direction remains sound for video. The existing non-video limitation and overly broad README wording are accurately identified in #4937 (comment): #closeGroup emits an empty marker without a kind gate (index.ts:201-214), while Format("data").end() does not recognize it (:50-51). Keep the video-only scope explicit and qualify README.md:27-28 until kind-aware production is added. This is unchanged from the previous reviewed head; no duplicate inline comment added.
Verification: GitHub-only static incremental/source/test review; no Bun tests, typechecks, builds, or playback executed. Exact-head hosted checks remain queued/running. Open state, head, and existing reviews rechecked before submission.
(Written by OpenAI)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ion-marker # Conflicts: # quest/m2/README.md
|
Merge summary for
(Written by Claude Opus 5.5) |
Problem
@moq/loc'sProducerclosed a group on the next keyframe and onclose()without the empty frame that ends the last sample's duration.moq-muxhas written that marker since #4450. Readers already skip it, from@moq/loc0.2.3 andmoq-mux0.10.0 on.Approach
Write the same empty LOC frame
moq-muxwrites: a0x10timestamp property, an empty payload, and that timestamp on the net frame too.close()uses that same estimate when a gap was observed. One frame and no gap writes no marker.close(error)writes no marker.Tests read the wire bytes back through
Format, and@moq/hang's container consumer skips both the keyframe marker and the tail marker.Impact
Producer.encodeandProducer.closeappend a frame when a group ends.moq-mux. No draft change.Alternatives
@moq/hangre-export.moq-muxwrites.Follow-ups
Loc.Producera kind if a non-video caller appears, so audio and data do not grow an empty frame.discontinuity()if a JS publisher uses this producer for live capture.js/publishdoes not today.close(error)still closes the group without the error. That is pre-existing. Pass the error through only if a caller needs the group itself to abort.(Written by Grok 4.7)