fix(demo): pace gait windows before buffering

Make the OpenGait-studio demo drop unpaced frames before they grow the silhouette window. Separate source-frame gap tracking from paced-frame stride tracking so runtime scheduling matches the documented demo-window-and-stride behavior.

Add regressions for paced window growth and schedule-frame stride semantics.
This commit is contained in:
2026-03-14 11:31:44 +08:00
parent ede9690318
commit d4e2a59ad2
4 changed files with 131 additions and 14 deletions
+9 -2
View File
@@ -148,6 +148,7 @@ class ScoliosisPipeline:
_visualizer: OpenCVVisualizer | None
_last_viz_payload: _VizPayload | None
_frame_pacer: _FramePacer | None
_paced_frame_idx: int
_visualizer_accepts_pose_data: bool | None
_visualizer_signature_owner: object | None
@@ -209,6 +210,7 @@ class ScoliosisPipeline:
self._visualizer = None
self._last_viz_payload = None
self._frame_pacer = _FramePacer(target_fps) if target_fps is not None else None
self._paced_frame_idx = -1
self._visualizer_accepts_pose_data = None
self._visualizer_signature_owner = None
@@ -393,8 +395,6 @@ class ScoliosisPipeline:
"confidence": None,
"pose": pose_data,
}
self._window.push(silhouette, frame_idx=frame_idx, track_id=track_id)
if self._frame_pacer is not None and not self._frame_pacer.should_emit(
timestamp_ns
):
@@ -409,6 +409,13 @@ class ScoliosisPipeline:
"confidence": None,
"pose": pose_data,
}
self._paced_frame_idx += 1
self._window.push(
silhouette,
frame_idx=frame_idx,
track_id=track_id,
schedule_frame_idx=self._paced_frame_idx,
)
segmentation_input = self._window.buffered_silhouettes
if not self._window.should_classify():