@camstack/addon-pipeline 1.1.33 → 1.1.34
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/decoder-ffmpeg/index.js +5 -5
- package/dist/decoder-ffmpeg/index.mjs +5 -5
- package/dist/decoder-nodeav/index.js +1 -1
- package/dist/decoder-nodeav/index.mjs +1 -1
- package/dist/{frame-ring-sink-B_WjDX0x.mjs → frame-ring-sink-1aLGcNNf.mjs} +20 -13
- package/dist/{frame-ring-sink-B-DxHelU.js → frame-ring-sink-CvlcAUOu.js} +20 -13
- package/package.json +1 -1
- package/python/__pycache__/inference_pool.cpython-313.pyc +0 -0
- package/python/__pycache__/inference_pool.cpython-314.pyc +0 -0
- package/python/__pycache__/test_inference_pool_backpressure.cpython-314.pyc +0 -0
- package/python/__pycache__/test_inference_pool_coreml_cache.cpython-314.pyc +0 -0
- package/python/__pycache__/test_inference_pool_device_selection.cpython-314.pyc +0 -0
- package/python/__pycache__/yamnet_audio.cpython-314.pyc +0 -0
- package/python/postprocessors/__pycache__/__init__.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/__init__.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/_safety.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/arcface.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/arcface.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/clip.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/ctc.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/ctc.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/saliency.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/saliency.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/scrfd.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/scrfd.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/softmax.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/softmax.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/test_clip.cpython-313-pytest-9.1.1.pyc +0 -0
- package/python/postprocessors/__pycache__/test_saliency.cpython-313-pytest-9.1.1.pyc +0 -0
- package/python/postprocessors/__pycache__/yamnet.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/yamnet.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/yolo.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/yolo.cpython-313.pyc +0 -0
- package/python/postprocessors/__pycache__/yolo_seg.cpython-312.pyc +0 -0
- package/python/postprocessors/__pycache__/yolo_seg.cpython-313.pyc +0 -0
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_dist = require("../dist-BrIE85BG.js");
|
|
6
|
-
const require_frame_ring_sink = require("../frame-ring-sink-
|
|
6
|
+
const require_frame_ring_sink = require("../frame-ring-sink-CvlcAUOu.js");
|
|
7
7
|
const require_ffmpeg_args = require("../ffmpeg-args-Dl9mLcOC.js");
|
|
8
8
|
const require_frame_dropper = require("../frame-dropper-DKLM6pMz.js");
|
|
9
9
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
@@ -667,11 +667,11 @@ var DEFAULT_DECODER_FFMPEG_ADDON_CONFIG = {
|
|
|
667
667
|
};
|
|
668
668
|
/** The two selectable decoder backends, in default-first order. */
|
|
669
669
|
var DECODER_BACKEND_OPTIONS = [{
|
|
670
|
-
value: "ffmpeg",
|
|
671
|
-
label: "ffmpeg (subprocess — crash-isolated, default)"
|
|
672
|
-
}, {
|
|
673
670
|
value: "nodeav",
|
|
674
|
-
label: "node-av (in-process FFmpeg bindings)"
|
|
671
|
+
label: "node-av (in-process FFmpeg bindings — default)"
|
|
672
|
+
}, {
|
|
673
|
+
value: "ffmpeg",
|
|
674
|
+
label: "ffmpeg (subprocess — crash-isolated fallback)"
|
|
675
675
|
}];
|
|
676
676
|
var DecoderFfmpegAddon = class extends require_dist.BaseAddon {
|
|
677
677
|
sessions = /* @__PURE__ */ new Map();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { B as errMsg, V as BaseAddon, d as HWACCEL_OPTIONS, s as DEFAULT_DECODER_HWACCEL_CONFIG, x as decoderCapability } from "../dist-CfSORkv2.mjs";
|
|
2
|
-
import { c as DEFAULT_DECODER_BACKEND, i as NotifyingRingBuffer, n as RING_BUDGET_MB, s as resolveOwnDecoderBackend, t as DecoderFrameRingSink } from "../frame-ring-sink-
|
|
2
|
+
import { c as DEFAULT_DECODER_BACKEND, i as NotifyingRingBuffer, n as RING_BUDGET_MB, s as resolveOwnDecoderBackend, t as DecoderFrameRingSink } from "../frame-ring-sink-1aLGcNNf.mjs";
|
|
3
3
|
import { a as codecToInputFormat, c as maxDecodeWidth, d as pickDecodeHwAccel, f as rankDecodeHwAccels, i as channelsForPixel, l as parseAvailableGpuScaleFilters, m as resolveGpuScaleFilter, n as DEFAULT_VAAPI_RENDER_DEVICE, o as computeOutputGeometry, p as rawPixelForFormat, r as buildFfmpegDecodeArgs, s as isSoftwareHwAccel, t as DECODE_HWACCEL_RANK, u as parseFfmpegOutputDims } from "../ffmpeg-args-CpeRWwL4.mjs";
|
|
4
4
|
import { t as FrameDropper } from "../frame-dropper-AjheBGMG.mjs";
|
|
5
5
|
import { FrameRingReaderCache } from "@camstack/shm-ring";
|
|
@@ -663,11 +663,11 @@ var DEFAULT_DECODER_FFMPEG_ADDON_CONFIG = {
|
|
|
663
663
|
};
|
|
664
664
|
/** The two selectable decoder backends, in default-first order. */
|
|
665
665
|
var DECODER_BACKEND_OPTIONS = [{
|
|
666
|
-
value: "ffmpeg",
|
|
667
|
-
label: "ffmpeg (subprocess — crash-isolated, default)"
|
|
668
|
-
}, {
|
|
669
666
|
value: "nodeav",
|
|
670
|
-
label: "node-av (in-process FFmpeg bindings)"
|
|
667
|
+
label: "node-av (in-process FFmpeg bindings — default)"
|
|
668
|
+
}, {
|
|
669
|
+
value: "ffmpeg",
|
|
670
|
+
label: "ffmpeg (subprocess — crash-isolated fallback)"
|
|
671
671
|
}];
|
|
672
672
|
var DecoderFfmpegAddon = class extends BaseAddon {
|
|
673
673
|
sessions = /* @__PURE__ */ new Map();
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_dist = require("../dist-BrIE85BG.js");
|
|
6
|
-
const require_frame_ring_sink = require("../frame-ring-sink-
|
|
6
|
+
const require_frame_ring_sink = require("../frame-ring-sink-CvlcAUOu.js");
|
|
7
7
|
const require_ffmpeg_args = require("../ffmpeg-args-Dl9mLcOC.js");
|
|
8
8
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
9
9
|
let node_crypto = require("node:crypto");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { B as errMsg, V as BaseAddon, d as HWACCEL_OPTIONS, s as DEFAULT_DECODER_HWACCEL_CONFIG, x as decoderCapability } from "../dist-CfSORkv2.mjs";
|
|
2
|
-
import { a as resolveDecoderBackend, i as NotifyingRingBuffer, n as RING_BUDGET_MB, o as resolveDecoderHwAccel, r as makeSegmentName, t as DecoderFrameRingSink } from "../frame-ring-sink-
|
|
2
|
+
import { a as resolveDecoderBackend, i as NotifyingRingBuffer, n as RING_BUDGET_MB, o as resolveDecoderHwAccel, r as makeSegmentName, t as DecoderFrameRingSink } from "../frame-ring-sink-1aLGcNNf.mjs";
|
|
3
3
|
import { f as rankDecodeHwAccels } from "../ffmpeg-args-CpeRWwL4.mjs";
|
|
4
4
|
import { FrameRingReaderCache } from "@camstack/shm-ring";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { d as HWACCEL_OPTIONS, p as RingBuffer } from "./dist-CfSORkv2.mjs";
|
|
2
2
|
import { FrameRingWriter, MIN_RING_SLOTS, computeSegmentSize, computeSlotByteLength, createSegment, deriveSlotCount } from "@camstack/shm-ring";
|
|
3
3
|
//#region src/shared/decoder-backend-keys.ts
|
|
4
|
-
/** Built-in default when a node has no selection — the
|
|
5
|
-
|
|
4
|
+
/** Built-in default when a node has no selection — the in-process node-av
|
|
5
|
+
* decoder. node-av is the standing default everywhere; the ffmpeg subprocess
|
|
6
|
+
* decoder is an explicit opt-in fallback only. A stale/failed settings read at
|
|
7
|
+
* boot therefore resolves to node-av (never leaves the node with no decoder). */
|
|
8
|
+
var DEFAULT_DECODER_BACKEND = "nodeav";
|
|
6
9
|
/** Narrow an unknown settings value to a {@link DecoderBackend}, else `null`. */
|
|
7
10
|
function parseDecoderBackend(value) {
|
|
8
11
|
return value === "ffmpeg" || value === "nodeav" ? value : null;
|
|
@@ -65,9 +68,13 @@ function normalizeDecoderNodeId(rawNodeId) {
|
|
|
65
68
|
* original bug), the raw settings-store cap, or any custom side channel.
|
|
66
69
|
*
|
|
67
70
|
* Resolution: the node's scoped value → the built-in default
|
|
68
|
-
* {@link DEFAULT_DECODER_BACKEND} (`'
|
|
71
|
+
* {@link DEFAULT_DECODER_BACKEND} (`'nodeav'` — node-av is primary everywhere;
|
|
72
|
+
* ffmpeg is an explicit opt-in fallback only). There is deliberately NO
|
|
69
73
|
* bare-key fallback (see `decoder-backend-keys.ts`), and any read failure
|
|
70
|
-
* resolves to the default so
|
|
74
|
+
* resolves to the default so a decoder still comes up — and, because the
|
|
75
|
+
* default IS the primary backend, a stale/failed read can never leave the node
|
|
76
|
+
* with NO decoder (the old `'ffmpeg'` default made node-av stand down on a
|
|
77
|
+
* missed read → both addons down).
|
|
71
78
|
*
|
|
72
79
|
* ## Switching backends
|
|
73
80
|
*
|
|
@@ -100,7 +107,7 @@ function pickDecoderBackendFromSettings(view) {
|
|
|
100
107
|
if (view === null) return DEFAULT_DECODER_BACKEND;
|
|
101
108
|
for (const section of view.sections) for (const entry of section.fields) {
|
|
102
109
|
if (!isHydratedField(entry) || entry.key !== "backend") continue;
|
|
103
|
-
return parseDecoderBackend(entry.value) ?? "
|
|
110
|
+
return parseDecoderBackend(entry.value) ?? "nodeav";
|
|
104
111
|
}
|
|
105
112
|
return DEFAULT_DECODER_BACKEND;
|
|
106
113
|
}
|
|
@@ -112,13 +119,13 @@ function pickDecoderBackendFromSettings(view) {
|
|
|
112
119
|
* routing `addonSettings.getGlobalSettings({addonId:'decoder-ffmpeg'})` back to
|
|
113
120
|
* itself during its OWN `onInitialize` DEADLOCKS (the addon is not "loaded" on
|
|
114
121
|
* the node until init completes, but init is blocked on the read) → the read
|
|
115
|
-
* throws `transport-failed (addon not loaded)` → it silently defaults to
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* has no deadlock.
|
|
122
|
+
* throws `transport-failed (addon not loaded)` → it silently defaults to the
|
|
123
|
+
* built-in default and mis-decides its own registration (e.g. an explicitly
|
|
124
|
+
* selected `ffmpeg` fallback would never come up). Reading its own store is
|
|
125
|
+
* local, race-free, and has no deadlock.
|
|
119
126
|
*/
|
|
120
127
|
function resolveOwnDecoderBackend(projectedGlobalStore) {
|
|
121
|
-
return parseDecoderBackend(projectedGlobalStore["backend"]) ?? "
|
|
128
|
+
return parseDecoderBackend(projectedGlobalStore["backend"]) ?? "nodeav";
|
|
122
129
|
}
|
|
123
130
|
/** Transient transport/settings-store fingerprints worth retrying on. */
|
|
124
131
|
function isTransientSettingsError(message) {
|
|
@@ -130,9 +137,9 @@ function isTransientSettingsError(message) {
|
|
|
130
137
|
*
|
|
131
138
|
* The read routes to the owner addon's child runner; during a simultaneous
|
|
132
139
|
* (re)start the owner may not be up yet → a transient `transport-failed (addon
|
|
133
|
-
* not loaded)`. Immediately defaulting
|
|
134
|
-
*
|
|
135
|
-
*
|
|
140
|
+
* not loaded)`. Immediately defaulting here would ignore an explicit `ffmpeg`
|
|
141
|
+
* selection (the node would silently run the node-av default instead). So retry
|
|
142
|
+
* on the transient fingerprints with a bounded budget (mirrors
|
|
136
143
|
* `BaseAddon.readAddonStoreWithRetry`) until the owner answers; only a
|
|
137
144
|
* persistent failure falls back to {@link DEFAULT_DECODER_BACKEND}.
|
|
138
145
|
*
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
const require_dist = require("./dist-BrIE85BG.js");
|
|
2
2
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
3
3
|
//#region src/shared/decoder-backend-keys.ts
|
|
4
|
-
/** Built-in default when a node has no selection — the
|
|
5
|
-
|
|
4
|
+
/** Built-in default when a node has no selection — the in-process node-av
|
|
5
|
+
* decoder. node-av is the standing default everywhere; the ffmpeg subprocess
|
|
6
|
+
* decoder is an explicit opt-in fallback only. A stale/failed settings read at
|
|
7
|
+
* boot therefore resolves to node-av (never leaves the node with no decoder). */
|
|
8
|
+
var DEFAULT_DECODER_BACKEND = "nodeav";
|
|
6
9
|
/** Narrow an unknown settings value to a {@link DecoderBackend}, else `null`. */
|
|
7
10
|
function parseDecoderBackend(value) {
|
|
8
11
|
return value === "ffmpeg" || value === "nodeav" ? value : null;
|
|
@@ -65,9 +68,13 @@ function normalizeDecoderNodeId(rawNodeId) {
|
|
|
65
68
|
* original bug), the raw settings-store cap, or any custom side channel.
|
|
66
69
|
*
|
|
67
70
|
* Resolution: the node's scoped value → the built-in default
|
|
68
|
-
* {@link DEFAULT_DECODER_BACKEND} (`'
|
|
71
|
+
* {@link DEFAULT_DECODER_BACKEND} (`'nodeav'` — node-av is primary everywhere;
|
|
72
|
+
* ffmpeg is an explicit opt-in fallback only). There is deliberately NO
|
|
69
73
|
* bare-key fallback (see `decoder-backend-keys.ts`), and any read failure
|
|
70
|
-
* resolves to the default so
|
|
74
|
+
* resolves to the default so a decoder still comes up — and, because the
|
|
75
|
+
* default IS the primary backend, a stale/failed read can never leave the node
|
|
76
|
+
* with NO decoder (the old `'ffmpeg'` default made node-av stand down on a
|
|
77
|
+
* missed read → both addons down).
|
|
71
78
|
*
|
|
72
79
|
* ## Switching backends
|
|
73
80
|
*
|
|
@@ -100,7 +107,7 @@ function pickDecoderBackendFromSettings(view) {
|
|
|
100
107
|
if (view === null) return DEFAULT_DECODER_BACKEND;
|
|
101
108
|
for (const section of view.sections) for (const entry of section.fields) {
|
|
102
109
|
if (!isHydratedField(entry) || entry.key !== "backend") continue;
|
|
103
|
-
return parseDecoderBackend(entry.value) ?? "
|
|
110
|
+
return parseDecoderBackend(entry.value) ?? "nodeav";
|
|
104
111
|
}
|
|
105
112
|
return DEFAULT_DECODER_BACKEND;
|
|
106
113
|
}
|
|
@@ -112,13 +119,13 @@ function pickDecoderBackendFromSettings(view) {
|
|
|
112
119
|
* routing `addonSettings.getGlobalSettings({addonId:'decoder-ffmpeg'})` back to
|
|
113
120
|
* itself during its OWN `onInitialize` DEADLOCKS (the addon is not "loaded" on
|
|
114
121
|
* the node until init completes, but init is blocked on the read) → the read
|
|
115
|
-
* throws `transport-failed (addon not loaded)` → it silently defaults to
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* has no deadlock.
|
|
122
|
+
* throws `transport-failed (addon not loaded)` → it silently defaults to the
|
|
123
|
+
* built-in default and mis-decides its own registration (e.g. an explicitly
|
|
124
|
+
* selected `ffmpeg` fallback would never come up). Reading its own store is
|
|
125
|
+
* local, race-free, and has no deadlock.
|
|
119
126
|
*/
|
|
120
127
|
function resolveOwnDecoderBackend(projectedGlobalStore) {
|
|
121
|
-
return parseDecoderBackend(projectedGlobalStore["backend"]) ?? "
|
|
128
|
+
return parseDecoderBackend(projectedGlobalStore["backend"]) ?? "nodeav";
|
|
122
129
|
}
|
|
123
130
|
/** Transient transport/settings-store fingerprints worth retrying on. */
|
|
124
131
|
function isTransientSettingsError(message) {
|
|
@@ -130,9 +137,9 @@ function isTransientSettingsError(message) {
|
|
|
130
137
|
*
|
|
131
138
|
* The read routes to the owner addon's child runner; during a simultaneous
|
|
132
139
|
* (re)start the owner may not be up yet → a transient `transport-failed (addon
|
|
133
|
-
* not loaded)`. Immediately defaulting
|
|
134
|
-
*
|
|
135
|
-
*
|
|
140
|
+
* not loaded)`. Immediately defaulting here would ignore an explicit `ffmpeg`
|
|
141
|
+
* selection (the node would silently run the node-av default instead). So retry
|
|
142
|
+
* on the transient fingerprints with a bounded budget (mirrors
|
|
136
143
|
* `BaseAddon.readAddonStoreWithRetry`) until the owner answers; only a
|
|
137
144
|
* persistent failure falls back to {@link DEFAULT_DECODER_BACKEND}.
|
|
138
145
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-pipeline",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.34",
|
|
4
4
|
"description": "CamStack Pipeline bundle — runner, detection, motion, decoders, audio + stream broker. Multi-entry npm package shipping 7 addons under a single bundle.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|