JoyAI live editing latency: what the 443 ms measurement includes
Read JoyAI's 443 ms result with its loopback measurement boundary. Compare frame processing and emission stages with downloadable data and sample counts.
Windflow's September 14, 2026 JoyAI-Video-Edit experiment measured 443.1 ms median and 578.2 ms p90 from camera frame to edited pixels at 1248 × 720 on one AMD MI355X. A separate stage, from edited pixels to socket emission, measured 256.4 ms median and 585.3 ms p90. The probe ran over loopback on the worker host. It did not measure a physical webcam, a user network or pixels displayed in a browser.
Those boundaries matter when evaluating a live editing API. A short model-side interval can coexist with a longer visible delay after encoding, queues and presentation. JoyAI-Video-Edit is the model from JD's open-source project; the configurations and measurements below are Windflow's recorded experiment.
Results from three archived runs
| Output and configured clock | Observed probe fps | Frame → edited pixels p50 / p90, ms | Edited pixels → socket p50 / p90, ms | Origin-stamped samples |
|---|---|---|---|---|
| 840 × 480 at 24 fps | 23.00 | 304.2 / 434.7 | 149.2 / 284.0 | 1384 |
| 1248 × 720 at 24 fps | 22.87 | 443.1 / 578.2 | 256.4 / 585.3 | 1376 |
| 1248 × 720 at 30 fps | 28.12 | 427.9 / 532.1 | 169.9 / 416.2 | 1689 |
The configured clock is a requested playback cadence, not the probe's observed rate. The synthetic camera ran approximately 3% slow in this setup; startup and the mid-run instruction change also affect the observation window. Retain the observed values rather than replacing them with the configured target.
The p50 of one stage cannot be added to the p50 of another to claim an end-to-end median. The same is true for p90: the slowest observations in each stage need not be the same frames. An end-to-end percentile requires paired per-frame timestamps at the chosen start and end points.
How the probe was configured
The worker used one AMD Instinct MI355X VF, FP8 through torch._scaled_mm / hipBLASLt, and a compiled whole-DiT path. The runtime was the JoyAI ROCm adaptation at 1e3ab08f; the JoyAI checkpoint revision was e14d9ac5. The environment used torch 2.13.0+rocm10.1.0a20260807.
The 60-second ws_stream_smoke.py probe published a synthetic 640 × 352 camera as H.264 at the model clock, over loopback. It changed the instruction approximately 30 seconds after the first frame. Producer-stamped frame-origin fields expose the two stage distributions above. Each listed run had zero reported native sequence gaps; the 1248 × 720, 24 fps run still had an 800 ms maximum packet gap. Zero missing sequence numbers does not imply perfectly even playback.
The 1376 stamped frames in that run are observations from one session, not 1376 independent launches or GPU hosts. This report makes no statistical claim about host-to-host variation.
Which measurements are still needed for an application
| Product question | Additional measurement |
|---|---|
| How late does a person see their camera motion? | Physical capture timestamp to the corresponding displayed edited frame |
| How long does a new style take to appear? | Instruction submission to its detected visible effect, with the matching method stated |
| Will a phone maintain smooth output? | Presented frame intervals, freezes, decoder performance and thermal behavior on that phone |
| Can users recover after a dropped connection? | Actual disconnect/reconnect sequence with retained or restarted model state identified |
| How much latency comes from the network? | Paired observations across the tested client path, without subtracting unsynchronized clocks |
Choose the boundary before choosing the headline number. A loopback probe helps isolate the worker path. It cannot answer every user-experience question.
Data and a reproducible method
Download JSON or CSV. The JSON preserves sample counts, separate stage values, observed rates, source filenames and SHA-256 hashes. Sandbox, room and operational identifiers have been omitted. These are selected aggregates from the archived probe outputs, not the complete per-frame trace or a fresh rerun.
To repeat the method, pin the runtime and weights, publish a repeatable source at a stated clock, retain origin-stamped frame identities, and change one setting at a time. Save the complete run, including startup, instruction changes and gaps. Report the probe location and transport next to the number. Add actual client presentation as a separate stage when the question is browser responsiveness.
Start integration with the JoyAI API guide. Use the latency measurement guide for client-side evaluation. Current model access and service specifications are on the JoyAI model page; an old experiment does not establish today's capacity or placement.
FAQ
Is 443 ms the latency a user will see in their browser?
No. It is the median camera-frame-to-edited-pixels interval from the documented worker-loopback experiment. Encoding, emission, networking and client presentation need their own accounting.
Can I add the stage medians to get total latency?
No. Compute an end-to-end distribution from paired frame timestamps. Adding independent stage percentiles does not establish an end-to-end percentile.
Why publish observed FPS as well as the configured FPS?
The configured rate describes the requested clock. The observed rate includes what the probe actually received during its observation window. They answer different questions and can differ around startup, slow camera supply or an instruction change.
