@camstack/addon-decoder-ffmpeg 1.2.29 → 1.2.30
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/index.js +77 -2
- package/dist/index.mjs +77 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15611,7 +15611,23 @@ var NcHistoryEntrySchema = object({
|
|
|
15611
15611
|
updatedAt: number(),
|
|
15612
15612
|
/** Failure detail — present on a `dead` row. */
|
|
15613
15613
|
error: string().optional(),
|
|
15614
|
-
subject: NcHistorySubjectSchema
|
|
15614
|
+
subject: NcHistorySubjectSchema,
|
|
15615
|
+
/**
|
|
15616
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
15617
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
15618
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
15619
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
15620
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
15621
|
+
*
|
|
15622
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
15623
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
15624
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
15625
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
15626
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
15627
|
+
* Assistant export) must render as "no image right now", never as a
|
|
15628
|
+
* broken link.
|
|
15629
|
+
*/
|
|
15630
|
+
artifactIds: array(string().min(1)).optional()
|
|
15615
15631
|
});
|
|
15616
15632
|
/**
|
|
15617
15633
|
* Query filter for `getHistory` (spec §4.2). Every field is a narrowing
|
|
@@ -15838,7 +15854,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
15838
15854
|
}), method(object({}), object({
|
|
15839
15855
|
catalog: array(NcConditionDescriptorSchema),
|
|
15840
15856
|
taxonomy: NcTaxonomySchema.optional()
|
|
15841
|
-
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15857
|
+
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15842
15858
|
kind: "mutation",
|
|
15843
15859
|
caller: "required"
|
|
15844
15860
|
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
@@ -25130,6 +25146,39 @@ var ReadGopBytesResultSchema = object({
|
|
|
25130
25146
|
/** Media ms the returned fragment covers. */
|
|
25131
25147
|
gopDurMs: number()
|
|
25132
25148
|
});
|
|
25149
|
+
/**
|
|
25150
|
+
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
25151
|
+
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
25152
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
|
|
25153
|
+
* a replay needs several seconds of native pixels, not one frame.
|
|
25154
|
+
*
|
|
25155
|
+
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
25156
|
+
* is `false` when the returned bytes were cut short by the read's own safety
|
|
25157
|
+
* byte cap before covering `[fromMs, toMs)` — a truncation, reported, not a
|
|
25158
|
+
* silently shorter answer. `spans-multiple-segments` is a REFUSAL, not a
|
|
25159
|
+
* degradation: a window whose end falls past the covering segment would need
|
|
25160
|
+
* bytes stitched from a second segment file (its own `ftyp`+`moov`), which is
|
|
25161
|
+
* not one standalone-demuxable stream — the caller's answer is to request a
|
|
25162
|
+
* shorter window or one aligned to a single segment, not to receive spliced
|
|
25163
|
+
* bytes nothing has proven decodable.
|
|
25164
|
+
*/
|
|
25165
|
+
var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
|
|
25166
|
+
kind: literal("ok"),
|
|
25167
|
+
data: _instanceof(Uint8Array),
|
|
25168
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
25169
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
25170
|
+
gopStartMs: number(),
|
|
25171
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
25172
|
+
gopDurMs: number(),
|
|
25173
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
25174
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
25175
|
+
reachesRequestedEnd: boolean()
|
|
25176
|
+
}), object({
|
|
25177
|
+
kind: literal("spans-multiple-segments"),
|
|
25178
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
25179
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
25180
|
+
segmentEndMs: number()
|
|
25181
|
+
})]);
|
|
25133
25182
|
method(object({
|
|
25134
25183
|
deviceId: number(),
|
|
25135
25184
|
fromMs: number(),
|
|
@@ -25180,6 +25229,15 @@ method(object({
|
|
|
25180
25229
|
}), ReadGopBytesResultSchema, {
|
|
25181
25230
|
kind: "query",
|
|
25182
25231
|
auth: "admin"
|
|
25232
|
+
}), method(object({
|
|
25233
|
+
deviceId: number(),
|
|
25234
|
+
profile: string(),
|
|
25235
|
+
startMs: number(),
|
|
25236
|
+
fromMs: number(),
|
|
25237
|
+
toMs: number()
|
|
25238
|
+
}), ReadWindowBytesResultSchema, {
|
|
25239
|
+
kind: "query",
|
|
25240
|
+
auth: "admin"
|
|
25183
25241
|
}), method(object({
|
|
25184
25242
|
deviceId: number(),
|
|
25185
25243
|
config: RecordingConfigSchema
|
|
@@ -29598,6 +29656,12 @@ Object.freeze({
|
|
|
29598
29656
|
addonId: null,
|
|
29599
29657
|
access: "view"
|
|
29600
29658
|
},
|
|
29659
|
+
"notificationRules.resolveArtifactUrl": {
|
|
29660
|
+
capName: "notification-rules",
|
|
29661
|
+
capScope: "system",
|
|
29662
|
+
addonId: null,
|
|
29663
|
+
access: "view"
|
|
29664
|
+
},
|
|
29601
29665
|
"notificationRules.setAlarmConfig": {
|
|
29602
29666
|
capName: "notification-rules",
|
|
29603
29667
|
capScope: "system",
|
|
@@ -31002,6 +31066,12 @@ Object.freeze({
|
|
|
31002
31066
|
addonId: null,
|
|
31003
31067
|
access: "view"
|
|
31004
31068
|
},
|
|
31069
|
+
"recording.readWindowBytes": {
|
|
31070
|
+
capName: "recording",
|
|
31071
|
+
capScope: "system",
|
|
31072
|
+
addonId: null,
|
|
31073
|
+
access: "view"
|
|
31074
|
+
},
|
|
31005
31075
|
"recording.refreshStorageLocationsForMigration": {
|
|
31006
31076
|
capName: "recording",
|
|
31007
31077
|
capScope: "system",
|
|
@@ -33832,6 +33902,11 @@ Object.freeze({
|
|
|
33832
33902
|
form: "single",
|
|
33833
33903
|
optional: false
|
|
33834
33904
|
}],
|
|
33905
|
+
"recording.readWindowBytes": [{
|
|
33906
|
+
name: "deviceId",
|
|
33907
|
+
form: "single",
|
|
33908
|
+
optional: false
|
|
33909
|
+
}],
|
|
33835
33910
|
"recording.relocateFootage": [{
|
|
33836
33911
|
name: "deviceId",
|
|
33837
33912
|
form: "single",
|
package/dist/index.mjs
CHANGED
|
@@ -15607,7 +15607,23 @@ var NcHistoryEntrySchema = object({
|
|
|
15607
15607
|
updatedAt: number(),
|
|
15608
15608
|
/** Failure detail — present on a `dead` row. */
|
|
15609
15609
|
error: string().optional(),
|
|
15610
|
-
subject: NcHistorySubjectSchema
|
|
15610
|
+
subject: NcHistorySubjectSchema,
|
|
15611
|
+
/**
|
|
15612
|
+
* Ids of the artefacts (still, then gif, then clip) this row's successful
|
|
15613
|
+
* delivery indexed in the artefact library — a REFERENCE, never the bytes
|
|
15614
|
+
* (an artefact is often megabytes; this row is durable JSON rewritten on
|
|
15615
|
+
* every delivery attempt). Absent on a row still pending/dead, a row
|
|
15616
|
+
* delivered before this field shipped, or a wiring with no artefact index.
|
|
15617
|
+
*
|
|
15618
|
+
* Resolve one to a fetchable URL with `resolveArtifactUrl` — an id
|
|
15619
|
+
* outlives any one URL's TTL, so a caller mints a fresh link on demand
|
|
15620
|
+
* rather than trusting one frozen at delivery time. `resolveArtifactUrl`
|
|
15621
|
+
* also answers `null` for an id whose artefact has since expired past the
|
|
15622
|
+
* retained shelf's own age bound — the degrade a caller (the Home
|
|
15623
|
+
* Assistant export) must render as "no image right now", never as a
|
|
15624
|
+
* broken link.
|
|
15625
|
+
*/
|
|
15626
|
+
artifactIds: array(string().min(1)).optional()
|
|
15611
15627
|
});
|
|
15612
15628
|
/**
|
|
15613
15629
|
* Query filter for `getHistory` (spec §4.2). Every field is a narrowing
|
|
@@ -15834,7 +15850,7 @@ method(object({}), object({ rules: array(NcRuleSchema) }), { auth: "admin" }), m
|
|
|
15834
15850
|
}), method(object({}), object({
|
|
15835
15851
|
catalog: array(NcConditionDescriptorSchema),
|
|
15836
15852
|
taxonomy: NcTaxonomySchema.optional()
|
|
15837
|
-
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15853
|
+
})), method(object({ filter: NcHistoryFilterSchema.default({ limit: 100 }) }), object({ entries: array(NcHistoryEntrySchema) }), { auth: "admin" }), method(object({ artifactId: string().min(1) }), object({ url: string().nullable() }), { auth: "admin" }), method(object({}), object({ snoozes: array(NcSnoozeSchema) }), { caller: "required" }), method(object({ snooze: NcSnoozeInputSchema }), object({ snooze: NcSnoozeSchema }), {
|
|
15838
15854
|
kind: "mutation",
|
|
15839
15855
|
caller: "required"
|
|
15840
15856
|
}), method(object({ snoozeId: string() }), object({ success: literal(true) }), {
|
|
@@ -25126,6 +25142,39 @@ var ReadGopBytesResultSchema = object({
|
|
|
25126
25142
|
/** Media ms the returned fragment covers. */
|
|
25127
25143
|
gopDurMs: number()
|
|
25128
25144
|
});
|
|
25145
|
+
/**
|
|
25146
|
+
* A time WINDOW of one finalized segment, cut by byte range — the multi-GOP
|
|
25147
|
+
* twin of {@link ReadGopBytesResultSchema}'s single instant. Built for the
|
|
25148
|
+
* replay clip's `recording` source (`docs/design/plans/2026-08-26-replay-clip-su-pipeline.md`):
|
|
25149
|
+
* a replay needs several seconds of native pixels, not one frame.
|
|
25150
|
+
*
|
|
25151
|
+
* `ok.data` is standalone-demuxable, same as a GOP read. `ok.reachesRequestedEnd`
|
|
25152
|
+
* is `false` when the returned bytes were cut short by the read's own safety
|
|
25153
|
+
* byte cap before covering `[fromMs, toMs)` — a truncation, reported, not a
|
|
25154
|
+
* silently shorter answer. `spans-multiple-segments` is a REFUSAL, not a
|
|
25155
|
+
* degradation: a window whose end falls past the covering segment would need
|
|
25156
|
+
* bytes stitched from a second segment file (its own `ftyp`+`moov`), which is
|
|
25157
|
+
* not one standalone-demuxable stream — the caller's answer is to request a
|
|
25158
|
+
* shorter window or one aligned to a single segment, not to receive spliced
|
|
25159
|
+
* bytes nothing has proven decodable.
|
|
25160
|
+
*/
|
|
25161
|
+
var ReadWindowBytesResultSchema = discriminatedUnion("kind", [object({
|
|
25162
|
+
kind: literal("ok"),
|
|
25163
|
+
data: _instanceof(Uint8Array),
|
|
25164
|
+
/** Absolute epoch ms of the returned bytes' first sample — at or before
|
|
25165
|
+
* the requested `fromMs` (anchored on the nearest keyframe). */
|
|
25166
|
+
gopStartMs: number(),
|
|
25167
|
+
/** Media ms the returned bytes cover, from `gopStartMs`. */
|
|
25168
|
+
gopDurMs: number(),
|
|
25169
|
+
/** `false` ⇒ the safety byte cap cut the read short before it reached
|
|
25170
|
+
* the requested `toMs`; the caller got fewer frames than asked for. */
|
|
25171
|
+
reachesRequestedEnd: boolean()
|
|
25172
|
+
}), object({
|
|
25173
|
+
kind: literal("spans-multiple-segments"),
|
|
25174
|
+
/** Where the covering segment's own footage runs out — informational,
|
|
25175
|
+
* not a retry hint (retrying the same window would refuse again). */
|
|
25176
|
+
segmentEndMs: number()
|
|
25177
|
+
})]);
|
|
25129
25178
|
method(object({
|
|
25130
25179
|
deviceId: number(),
|
|
25131
25180
|
fromMs: number(),
|
|
@@ -25176,6 +25225,15 @@ method(object({
|
|
|
25176
25225
|
}), ReadGopBytesResultSchema, {
|
|
25177
25226
|
kind: "query",
|
|
25178
25227
|
auth: "admin"
|
|
25228
|
+
}), method(object({
|
|
25229
|
+
deviceId: number(),
|
|
25230
|
+
profile: string(),
|
|
25231
|
+
startMs: number(),
|
|
25232
|
+
fromMs: number(),
|
|
25233
|
+
toMs: number()
|
|
25234
|
+
}), ReadWindowBytesResultSchema, {
|
|
25235
|
+
kind: "query",
|
|
25236
|
+
auth: "admin"
|
|
25179
25237
|
}), method(object({
|
|
25180
25238
|
deviceId: number(),
|
|
25181
25239
|
config: RecordingConfigSchema
|
|
@@ -29594,6 +29652,12 @@ Object.freeze({
|
|
|
29594
29652
|
addonId: null,
|
|
29595
29653
|
access: "view"
|
|
29596
29654
|
},
|
|
29655
|
+
"notificationRules.resolveArtifactUrl": {
|
|
29656
|
+
capName: "notification-rules",
|
|
29657
|
+
capScope: "system",
|
|
29658
|
+
addonId: null,
|
|
29659
|
+
access: "view"
|
|
29660
|
+
},
|
|
29597
29661
|
"notificationRules.setAlarmConfig": {
|
|
29598
29662
|
capName: "notification-rules",
|
|
29599
29663
|
capScope: "system",
|
|
@@ -30998,6 +31062,12 @@ Object.freeze({
|
|
|
30998
31062
|
addonId: null,
|
|
30999
31063
|
access: "view"
|
|
31000
31064
|
},
|
|
31065
|
+
"recording.readWindowBytes": {
|
|
31066
|
+
capName: "recording",
|
|
31067
|
+
capScope: "system",
|
|
31068
|
+
addonId: null,
|
|
31069
|
+
access: "view"
|
|
31070
|
+
},
|
|
31001
31071
|
"recording.refreshStorageLocationsForMigration": {
|
|
31002
31072
|
capName: "recording",
|
|
31003
31073
|
capScope: "system",
|
|
@@ -33828,6 +33898,11 @@ Object.freeze({
|
|
|
33828
33898
|
form: "single",
|
|
33829
33899
|
optional: false
|
|
33830
33900
|
}],
|
|
33901
|
+
"recording.readWindowBytes": [{
|
|
33902
|
+
name: "deviceId",
|
|
33903
|
+
form: "single",
|
|
33904
|
+
optional: false
|
|
33905
|
+
}],
|
|
33831
33906
|
"recording.relocateFootage": [{
|
|
33832
33907
|
name: "deviceId",
|
|
33833
33908
|
form: "single",
|