@urun-sh/core 0.2.55 → 0.2.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -1
- package/dist/{chunk-ROHOB3GT.mjs → chunk-GR7O2DMI.mjs} +5 -5
- package/dist/{chunk-5MCYL2CA.mjs → chunk-TZ4YVHOL.mjs} +2 -2
- package/dist/index.browser.d.mts +90 -3
- package/dist/index.browser.d.ts +90 -3
- package/dist/index.browser.js +2 -2
- package/dist/index.browser.mjs +1 -1
- package/dist/index.d.mts +90 -3
- package/dist/index.d.ts +90 -3
- package/dist/index.js +5 -5
- package/dist/index.mjs +1 -1
- package/dist/internal.browser.d.mts +1 -1
- package/dist/internal.browser.d.ts +1 -1
- package/dist/internal.browser.js +2 -2
- package/dist/internal.browser.mjs +1 -1
- package/dist/internal.d.mts +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +5 -5
- package/dist/internal.mjs +1 -1
- package/dist/{stream-data-Cb0t-gV0.d.mts → stream-data-Cgh02-qs.d.mts} +87 -3
- package/dist/{stream-data-Cb0t-gV0.d.ts → stream-data-Cgh02-qs.d.ts} +87 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,71 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 0.2.57
|
|
4
|
+
|
|
5
|
+
- **FIX: `jitterBufferTarget` range guard (0–4000ms).** The W3C
|
|
6
|
+
`RTCRtpReceiver.jitterBufferTarget` attribute is specified over [0, 4000]ms
|
|
7
|
+
and an out-of-range assignment THROWS a RangeError. The consume path set the
|
|
8
|
+
target with no range check, so an out-of-range configured value threw inside
|
|
9
|
+
`_onConsume` — reached through the un-awaited `_handleMessage`, that throw
|
|
10
|
+
surfaced only as an UNHANDLED REJECTION while the lane was never
|
|
11
|
+
`resumeConsumer`'d: a silent dead media lane over a config typo. Out-of-range
|
|
12
|
+
targets are now refused with the same posture as the existing non-finite
|
|
13
|
+
guard (a default-visible `*-jitter-buffer-invalid` warning naming the value;
|
|
14
|
+
the receiver is left alone; media flows), and the signaling `onmessage`
|
|
15
|
+
dispatch now attaches a rejection handler to `_handleMessage` (same `error`
|
|
16
|
+
surface as its synchronous parse failures — the fire-and-forget shape is
|
|
17
|
+
unchanged).
|
|
18
|
+
|
|
19
|
+
- **Opt-in steady-state session stats** (`sessionStats?: { pollMs? }` on
|
|
20
|
+
`TransportSessionOptions` AND `AppOptions`, threaded through `App()`; new
|
|
21
|
+
`Session.onStats(handler)` — optional on the interface, the `onActivation`
|
|
22
|
+
additive precedent). When enabled, inbound RTP stats are sampled PER MEDIA
|
|
23
|
+
KIND every `pollMs` (default 2000ms) and emitted as a `SessionStatsSample`
|
|
24
|
+
on a NEW `stats` transport event: per-kind `InboundStatsSample`s plus
|
|
25
|
+
**`avSyncMs` = video − audio `estimatedPlayoutTimestamp`** — the first-class
|
|
26
|
+
measurement of the standing audio-behind-video delay class (liveavatar
|
|
27
|
+
measured 2.2–2.7s). Off by default: no sampler runs at all unless asked for.
|
|
28
|
+
Deliberately its OWN timer and event: never the join-probe timer (whose
|
|
29
|
+
contract is settle-then-disarm; the stats timer is stopped at every teardown
|
|
30
|
+
site the probe is) and never the diagnostic channel (each diagnostic is a
|
|
31
|
+
default-visible console line and, with an events reporter wired, an HTTP
|
|
32
|
+
POST per event). `readInboundSample` no longer gates per-field aggregation
|
|
33
|
+
to video-only (audio fields were structurally invisible — null forever), and
|
|
34
|
+
the inbound field set gains `estimatedPlayoutTimestamp`,
|
|
35
|
+
`jitterBufferTargetDelay`, `jitterBufferMinimumDelay`, `concealedSamples`,
|
|
36
|
+
`insertedSamplesForDeceleration`. `avSyncMs` is measured WITHIN ONE STREAM:
|
|
37
|
+
a session can carry several named streams at once, so the sampled lanes are
|
|
38
|
+
grouped by A/V pair key (the parent name of a `{parent}--audio` /
|
|
39
|
+
`{parent}--video` derived-leg pair) and the busiest group carrying BOTH
|
|
40
|
+
kinds is the one measured — differencing two unrelated streams' playout
|
|
41
|
+
instants would be a fabricated offset that reads like a real measurement.
|
|
42
|
+
The chosen pair is named on the sample as `stream` (null for unnamed legacy
|
|
43
|
+
lanes). `estimatedPlayoutTimestamp` aggregates as the LATEST instant across
|
|
44
|
+
a report's `inbound-rtp` entries rather than a sum (it is an NTP-anchored
|
|
45
|
+
instant, not a cumulative counter — summing fabricates a timestamp); the
|
|
46
|
+
other new fields are genuine counters and stay additive. A THROWING `stats`
|
|
47
|
+
subscriber is routed to the transport `error` surface instead of becoming an
|
|
48
|
+
unhandled rejection on every sampling tick, and sampling continues.
|
|
49
|
+
|
|
50
|
+
- **Per-kind playout knob — MECHANISM ONLY** (`videoPlayout?:
|
|
51
|
+
VideoPlayoutOptions`, additive beside `audioPlayout` at every thread point).
|
|
52
|
+
`_capAudioJitterBuffer` is generalized to `_capJitterBuffer(consumer, kind)`
|
|
53
|
+
with per-kind target resolution: audio keeps its 300ms default UNCHANGED;
|
|
54
|
+
video's default is **UNSET** — no hidden number. Video receivers remain
|
|
55
|
+
untouched unless `videoPlayout` is explicitly passed ("video renders on
|
|
56
|
+
arrival" stays the default behavior; formally amending that commitment is a
|
|
57
|
+
queued owner ruling). CAVEAT, verbatim from the review: under a
|
|
58
|
+
single-element muxed playout the browser resolves the effective
|
|
59
|
+
jitter-buffer target as the max() across the element's receivers — a small
|
|
60
|
+
VIDEO target can RAISE the AUDIO leg's standing delay to match. Defaults
|
|
61
|
+
await `avSyncMs` measurement. Cap-before-`resumeConsumer` ordering is
|
|
62
|
+
preserved. Receipts: every capped/unsupported/invalid diagnostic now carries
|
|
63
|
+
`mediaKind` + `transportId`, and the previously-silent no-RTCRtpReceiver
|
|
64
|
+
path (node/werift legs) emits a `debug` receipt. Audio diagnostic kind
|
|
65
|
+
strings (`audio-jitter-buffer-*`) are unchanged — consumers string-match
|
|
66
|
+
them; video uses the new parallel `video-jitter-buffer-*` family.
|
|
67
|
+
|
|
68
|
+
## 0.2.53
|
|
4
69
|
|
|
5
70
|
- **Audio receiver jitter-buffer cap** (`AudioPlayoutOptions`, new export). A
|
|
6
71
|
muxed A/V egress reaches the browser as TWO RTP tracks with independent
|