@camstack/types 1.2.216 → 1.2.218
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/dist/{canonical-hash-biq7T_dN.mjs → canonical-hash-DI7tT-zZ.mjs} +1 -0
- package/dist/{canonical-hash-BxuA6beb.js → canonical-hash-sTEH1IHd.js} +1 -0
- package/dist/capabilities/capability-definition.d.ts +17 -0
- package/dist/ffmpeg/invocation.d.ts +19 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/node.js +1 -1
- package/dist/node.mjs +1 -1
- package/package.json +1 -1
|
@@ -60,6 +60,7 @@ function buildInputArgs(input, decodeHwAccel) {
|
|
|
60
60
|
if (input.analyzeDurationUs !== void 0) args.push("-analyzeduration", String(input.analyzeDurationUs));
|
|
61
61
|
if (input.probeSizeBytes !== void 0) args.push("-probesize", String(input.probeSizeBytes));
|
|
62
62
|
if (input.lowDelay === true) args.push("-flags", "low_delay");
|
|
63
|
+
if (input.useWallclockTimestamps === true) args.push("-use_wallclock_as_timestamps", "1");
|
|
63
64
|
if (input.fflags?.length) for (const flag of input.fflags) args.push("-fflags", flag);
|
|
64
65
|
if (input.rtspTransport) args.push("-rtsp_transport", input.rtspTransport);
|
|
65
66
|
args.push("-i", input.url);
|
|
@@ -60,6 +60,7 @@ function buildInputArgs(input, decodeHwAccel) {
|
|
|
60
60
|
if (input.analyzeDurationUs !== void 0) args.push("-analyzeduration", String(input.analyzeDurationUs));
|
|
61
61
|
if (input.probeSizeBytes !== void 0) args.push("-probesize", String(input.probeSizeBytes));
|
|
62
62
|
if (input.lowDelay === true) args.push("-flags", "low_delay");
|
|
63
|
+
if (input.useWallclockTimestamps === true) args.push("-use_wallclock_as_timestamps", "1");
|
|
63
64
|
if (input.fflags?.length) for (const flag of input.fflags) args.push("-fflags", flag);
|
|
64
65
|
if (input.rtspTransport) args.push("-rtsp_transport", input.rtspTransport);
|
|
65
66
|
args.push("-i", input.url);
|
|
@@ -127,6 +127,10 @@ export interface CapabilityEventSchema<TData extends z.ZodType = z.ZodType> {
|
|
|
127
127
|
}
|
|
128
128
|
export type CapabilityStatusKind = 'push' | 'poll' | 'command-driven';
|
|
129
129
|
/**
|
|
130
|
+
* ⚠ NO LIVE CALLER since 2026-08-08 — see the note on
|
|
131
|
+
* {@link CapabilityStatusSchema.empty}. Kept as the shape a future wiring
|
|
132
|
+
* mechanism would need, not as something that runs today.
|
|
133
|
+
*
|
|
130
134
|
* Declares that a cap's status is an ITEM-ARRAY wiring target: the status
|
|
131
135
|
* holds an array of keyed items (`consumables.items`) that device-links can
|
|
132
136
|
* populate per item via `DeviceLink.target.itemKey`. Links sharing an
|
|
@@ -161,6 +165,19 @@ export interface CapabilityStatusSchema<TStatus extends z.ZodType = z.ZodType> {
|
|
|
161
165
|
* this cap (no native provider). Required-but-unlinked fields (enums,
|
|
162
166
|
* timestamps) come from here so the synthesized status validates against
|
|
163
167
|
* `schema`. Omit for caps that are never synthesize targets.
|
|
168
|
+
*
|
|
169
|
+
* ⚠ NO LIVE CALLER since 2026-08-08. The device-link mechanism this seeds was
|
|
170
|
+
* deleted that day — 302 devices, 0 links, a month after it shipped — and the
|
|
171
|
+
* only code that still reads this field is the `includeSynthesizable` branch
|
|
172
|
+
* of `getWireableFields`, which nothing passes `true` to. Four caps declare
|
|
173
|
+
* it (`battery`, `consumables`, `network-link`, `recording-signal`).
|
|
174
|
+
*
|
|
175
|
+
* KEPT, not deleted, and deliberately: the operator has a live request that
|
|
176
|
+
* needs exactly this shape (a Dreame's HA sensors presenting as
|
|
177
|
+
* `consumables`/`battery` on the robot) and has queued the wiring design for
|
|
178
|
+
* discussion. This marker exists so the field is not mistaken for working
|
|
179
|
+
* machinery in the meantime — which is the one thing a leftover must never
|
|
180
|
+
* be allowed to be.
|
|
164
181
|
*/
|
|
165
182
|
readonly empty?: z.infer<TStatus>;
|
|
166
183
|
/**
|
|
@@ -68,6 +68,25 @@ export interface FfmpegInputPlan {
|
|
|
68
68
|
* reorder will decode out of order.
|
|
69
69
|
*/
|
|
70
70
|
readonly lowDelay?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* `-use_wallclock_as_timestamps 1` — stamp this input by ARRIVAL time.
|
|
73
|
+
*
|
|
74
|
+
* ffmpeg normalises each input so its first frame is pts 0, and a filter that
|
|
75
|
+
* pairs inputs (`overlay`) pairs them BY PTS. Two sources that joined at
|
|
76
|
+
* different moments therefore compose frames from different moments, for the
|
|
77
|
+
* life of the child, with nothing to correct it: each tile's clock started
|
|
78
|
+
* whenever that tile's first frame happened to arrive.
|
|
79
|
+
*
|
|
80
|
+
* The spread is real. Four joins of the SAME restream in one series measured
|
|
81
|
+
* 1830 / 3987 / 3985 / 4025 ms (hub, 2026-09-18) — a `/muted` dial is served
|
|
82
|
+
* at once only within ~500 ms of an IDR and otherwise waits for the next, so
|
|
83
|
+
* two tiles of one composite can start a key-frame interval apart.
|
|
84
|
+
*
|
|
85
|
+
* Ask for it where several inputs must agree about WHEN. A single-input
|
|
86
|
+
* transcode does not care and should leave it alone: wall-clock stamping ties
|
|
87
|
+
* the output's timing to this machine's clock rather than to the source's.
|
|
88
|
+
*/
|
|
89
|
+
readonly useWallclockTimestamps?: boolean;
|
|
71
90
|
/** Caller-supplied input options (an `EncodeProfile.inputArgs`, probe flags). */
|
|
72
91
|
readonly extraArgs?: readonly string[];
|
|
73
92
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_sleep = require("./sleep-VlZxDyXq.js");
|
|
3
3
|
const require_event_category = require("./event-category-BVfsrBYA.js");
|
|
4
|
-
const require_canonical_hash = require("./canonical-hash-
|
|
4
|
+
const require_canonical_hash = require("./canonical-hash-sTEH1IHd.js");
|
|
5
5
|
const require_enums = require("./enums.js");
|
|
6
6
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
7
7
|
let zod = require("zod");
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { $ as CAM_PROFILE_ORDER, A as DeviceType, At as isEvent, B as systemMethod, Bt as isAudioChunkFormat, C as customAction, Ct as SHARE_VIEW_KINDS, D as ChargingStatus, Dt as createDurableState, E as deviceCustomAction, Et as normalizeAddonInitResult, F as event, Ft as hydrateSchema, G as ReadinessRegistry, H as nodePin, I as expandCapMethods, It as resolveHydratedFieldValue, J as readinessKey, K as ReadinessTimeoutError, L as isDeviceConfigCap, Lt as AUDIO_CHUNK_FORMATS, M as DEFAULT_RUNTIME_STATE_DURABILITY, Mt as WELL_KNOWN_TAB_MAP, N as DEVICE_SETTINGS_CONTRIBUTION_METHODS, Nt as collectHydratedFieldEntries, O as DeviceFeature, Ot as createEvent, P as DEVICE_STATUS_METHOD, Pt as collectHydratedFieldValues, Q as BrokerStatusSchema, R as method, Rt as audioChunkBytesPerSample, S as DEVICE_CHILDREN_BATCH_MAX, St as DATAPLANE_SECRET_HEADER, T as describeCustomActions, Tt as BaseAddon, U as readNodePin, V as CAP_NODE_PIN_CONTEXT_KEY, W as toNodeId, X as AudioChunkFormatSchema, Y as scopeKey, Z as BrokerStatsSchema, _ as createMirrorSource, _t as SubscribeFramesResultSchema, a as asJsonObject, at as DecodedFrameSchema, b as deviceOpsCapability, bt as parseProfileBrokerId, c as parseJsonArray, ct as FrameHandleSchema, d as BOOT_RECOVERY_BACKOFF_MS, dt as ProfileSlotStatusSchema, et as CamProfileSchema, f as DEVICE_SCOPED_CAPS, ft as StreamSourceEntrySchema, g as createLazyTrpcSource, gt as SubscribeFramesInputSchema, h as createEventBusSliceSource, ht as SubscribeAudioChunksResultSchema, i as asJsonArray, it as DecodedAudioChunkSchema, j as adminUiCapability, jt as WELL_KNOWN_TABS, k as DeviceRole, kt as emitReadiness, l as parseJsonObject, lt as ProfileRtspEntrySchema, m as createDeviceProxy, mt as SubscribeAudioChunksInputSchema, n as sleepCancellable, nt as CamStreamResolutionSchema, o as asNumber, ot as EncodedPacketSchema, p as isDeviceScopedCap, pt as StreamSourceSchema, q as emitDownForOwnedCaps, r as asBoolean, rt as CameraStreamSchema, s as asString, st as FrameHandleFormatSchema, t as sleep, tt as CamStreamKindSchema, u as parseJsonUnknown, ut as ProfileSlotSchema, v as createSliceHandle, vt as makeProfileBrokerId, w as defineCustomActions, wt as DisposerChain, x as viewerUiCapability, xt as selectAssignedProfileSlots, y as RawStateResultSchema, yt as makeSourceBrokerId, z as resolveCapMount, zt as expandAudioChunkToF32le } from "./sleep-GU_us3DG.mjs";
|
|
2
2
|
import { t as EventCategory } from "./event-category-BVDXG4tB.mjs";
|
|
3
|
-
import { a as buildAudioArgs, c as buildVideoArgs, d as logBannerArgs, f as pickVideoEncoder, i as audioPlanFromEncodeProfile, l as invocationFromEncodeProfile, n as Fmp4BoxSplitter, o as buildFfmpegArgs, p as resolveStreamMaps, r as AUDIO_PRESETS, s as buildInputArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-
|
|
3
|
+
import { a as buildAudioArgs, c as buildVideoArgs, d as logBannerArgs, f as pickVideoEncoder, i as audioPlanFromEncodeProfile, l as invocationFromEncodeProfile, n as Fmp4BoxSplitter, o as buildFfmpegArgs, p as resolveStreamMaps, r as AUDIO_PRESETS, s as buildInputArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-DI7tT-zZ.mjs";
|
|
4
4
|
import { EventSourceType } from "./enums.mjs";
|
|
5
5
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
6
6
|
import { z } from "zod";
|
package/dist/node.js
CHANGED
|
@@ -21,7 +21,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
21
21
|
enumerable: true
|
|
22
22
|
}) : target, mod));
|
|
23
23
|
//#endregion
|
|
24
|
-
const require_canonical_hash = require("./canonical-hash-
|
|
24
|
+
const require_canonical_hash = require("./canonical-hash-sTEH1IHd.js");
|
|
25
25
|
const require_err_msg = require("./err-msg-COpsHMw2.js");
|
|
26
26
|
let node_crypto = require("node:crypto");
|
|
27
27
|
let node_fs = require("node:fs");
|
package/dist/node.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as Fmp4BoxSplitter, o as buildFfmpegArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-
|
|
1
|
+
import { n as Fmp4BoxSplitter, o as buildFfmpegArgs, t as canonicalHash, u as isSoftwareDecode } from "./canonical-hash-DI7tT-zZ.mjs";
|
|
2
2
|
import { t as errMsg } from "./err-msg-IQTHeDzc.mjs";
|
|
3
3
|
import { createHash, createHmac, randomUUID, timingSafeEqual } from "node:crypto";
|
|
4
4
|
import * as fs from "node:fs";
|