@camstack/addon-pipeline 1.1.55 → 1.1.56
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/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +23 -16
- package/dist/detection-pipeline/index.mjs +23 -16
- package/dist/{dist-DI57FC8K.js → dist-ClE6_i0p.js} +942 -38
- package/dist/{dist-RWGGPwVx.mjs → dist-CrjLGrkj.mjs} +942 -38
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +119 -11
- package/dist/pipeline-runner/index.mjs +119 -11
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.mjs +1 -1
- package/dist/{remote-source-plane-DU0aRSPv.mjs → remote-source-plane-B28iGi7h.mjs} +1 -1
- package/dist/{remote-source-plane-CHgvzzA6.js → remote-source-plane-BAqEHSgm.js} +1 -1
- package/dist/session-decode/decode-worker-child.js +5 -3
- package/dist/session-decode/decode-worker-child.mjs +5 -3
- package/dist/{step-definitions-CNBFKjZe.js → step-definitions-C9kUXgC7.js} +2 -2
- package/dist/{step-definitions-CP9kVSml.mjs → step-definitions-dCghpdRo.mjs} +2 -2
- package/dist/stream-broker/_stub.js +79 -79
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-mDCPzmT3.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-D4xH4Tm-.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-D2z_vRMH.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-Dn_pxzP-.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-TWCUWhCm.mjs} +2 -2
- package/dist/stream-broker/{hostInit-GM_CI22k.mjs → hostInit-Di9WUNlQ.mjs} +2 -2
- package/dist/stream-broker/index.js +60 -3
- package/dist/stream-broker/index.mjs +60 -3
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-BChW0ntM.js → MaskShapeCanvas-DI4BY7W2-Ca93F1js.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-DDzqEbSe.js → MotionZonesSettings-NcxxQN8r-CDqgb-WA.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-B879GXaf.js → PrivacyMaskSettings-APgPLF7p-BlxPhY_w.js} +1 -1
- package/embed-dist/assets/index-B23riUw8.js +81 -0
- package/embed-dist/assets/index-Bmpl9O1K.css +2 -0
- package/embed-dist/index.html +2 -2
- package/package.json +1 -1
- package/python/inference_pool.py +11 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-B3gTdHEh.mjs +0 -26
- package/embed-dist/assets/index-CC06JBcl.css +0 -2
- package/embed-dist/assets/index-CNjQ5rAE.js +0 -81
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-ClE6_i0p.js");
|
|
7
7
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
8
8
|
const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BLXzxpRB.js");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import { C as mapAudioLabelToMacro, I as errMsg, L as BaseAddon, U as hydrateSchema, h as audioAnalyzerCapability, l as HF_BASE_URL, m as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG } from "../dist-
|
|
2
|
+
import { C as mapAudioLabelToMacro, I as errMsg, L as BaseAddon, U as hydrateSchema, h as audioAnalyzerCapability, l as HF_BASE_URL, m as audioAnalysisCapability, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG } from "../dist-CrjLGrkj.mjs";
|
|
3
3
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
4
4
|
import { r as downloadFile } from "../model-download-service-C-IHWnXx-BPy6aoAx.mjs";
|
|
5
5
|
import * as fs from "node:fs";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../chunk-D6vf50IK.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
7
|
-
const require_step_definitions = require("../step-definitions-
|
|
6
|
+
const require_dist = require("../dist-ClE6_i0p.js");
|
|
7
|
+
const require_step_definitions = require("../step-definitions-C9kUXgC7.js");
|
|
8
8
|
const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
|
|
9
9
|
const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BLXzxpRB.js");
|
|
10
10
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
@@ -2860,12 +2860,19 @@ var PipelineExecutor = class {
|
|
|
2860
2860
|
/** Per-key last-warn timestamps, so a persistently-failing/skipping child
|
|
2861
2861
|
* step surfaces a diagnostic without spamming the log every frame. */
|
|
2862
2862
|
warnThrottleAt = /* @__PURE__ */ new Map();
|
|
2863
|
-
throttledWarn(key, everyMs, message, meta) {
|
|
2863
|
+
throttledWarn(key, everyMs, message, meta, deviceId) {
|
|
2864
2864
|
const logger = this.opts.logger;
|
|
2865
2865
|
if (!logger) return;
|
|
2866
2866
|
const now = Date.now();
|
|
2867
2867
|
if (now - (this.warnThrottleAt.get(key) ?? 0) < everyMs) return;
|
|
2868
2868
|
this.warnThrottleAt.set(key, now);
|
|
2869
|
+
if (deviceId !== void 0) {
|
|
2870
|
+
logger.warn(message, {
|
|
2871
|
+
tags: { deviceId },
|
|
2872
|
+
meta
|
|
2873
|
+
});
|
|
2874
|
+
return;
|
|
2875
|
+
}
|
|
2869
2876
|
logger.warn(message, { meta });
|
|
2870
2877
|
}
|
|
2871
2878
|
/**
|
|
@@ -2875,15 +2882,15 @@ var PipelineExecutor = class {
|
|
|
2875
2882
|
* native crop, the NATIVE face size so an operator sees the size that actually
|
|
2876
2883
|
* gated. Throttled so it isn't per-frame spam.
|
|
2877
2884
|
*/
|
|
2878
|
-
warnFaceTooSmall(child, detShortSidePx, minFaceSizePx, nativeFaceShortSidePx) {
|
|
2879
|
-
this.throttledWarn(`face-small:${child.stepId}`, 3e4, "face detected but too small to embed — skipping", {
|
|
2885
|
+
warnFaceTooSmall(child, detShortSidePx, minFaceSizePx, nativeFaceShortSidePx, deviceId) {
|
|
2886
|
+
this.throttledWarn(`face-small:${child.stepId}:${deviceId}`, 3e4, "face detected but too small to embed — skipping", {
|
|
2880
2887
|
step: child.stepId,
|
|
2881
2888
|
model: child.modelId,
|
|
2882
2889
|
faceShortSidePx: Math.round(detShortSidePx),
|
|
2883
2890
|
minFaceSizePx,
|
|
2884
2891
|
gatedOn: nativeFaceShortSidePx === void 0 ? "detection" : "native",
|
|
2885
2892
|
...nativeFaceShortSidePx === void 0 ? {} : { nativeFaceShortSidePx: Math.round(nativeFaceShortSidePx) }
|
|
2886
|
-
});
|
|
2893
|
+
}, deviceId);
|
|
2887
2894
|
}
|
|
2888
2895
|
/**
|
|
2889
2896
|
* Execute the full pipeline tree against a frame.
|
|
@@ -2926,7 +2933,7 @@ var PipelineExecutor = class {
|
|
|
2926
2933
|
const mutable = this.synthesizeRootDetection(rootOutput, rootStep, idGen, rootMs, imageWidth, imageHeight);
|
|
2927
2934
|
applyChildOutput(mutable, rootStep, rootOutput, rootMs, ctx);
|
|
2928
2935
|
try {
|
|
2929
|
-
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, nativeFaceCropProvider);
|
|
2936
|
+
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, deviceId, nativeFaceCropProvider);
|
|
2930
2937
|
} catch (err) {
|
|
2931
2938
|
this.opts.logger?.warn("Pipeline child execution failed — keeping parent detection", {
|
|
2932
2939
|
tags: { deviceId },
|
|
@@ -2956,7 +2963,7 @@ var PipelineExecutor = class {
|
|
|
2956
2963
|
continue;
|
|
2957
2964
|
}
|
|
2958
2965
|
try {
|
|
2959
|
-
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, nativeFaceCropProvider);
|
|
2966
|
+
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, deviceId, nativeFaceCropProvider);
|
|
2960
2967
|
} catch (err) {
|
|
2961
2968
|
this.opts.logger?.warn("Pipeline child execution failed — keeping parent detection", {
|
|
2962
2969
|
tags: { deviceId },
|
|
@@ -3081,7 +3088,7 @@ var PipelineExecutor = class {
|
|
|
3081
3088
|
});
|
|
3082
3089
|
return output;
|
|
3083
3090
|
}
|
|
3084
|
-
async executeChildren(children, parentDetection, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, nativeFaceCropProvider) {
|
|
3091
|
+
async executeChildren(children, parentDetection, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, deviceId, nativeFaceCropProvider) {
|
|
3085
3092
|
for (const child of children) {
|
|
3086
3093
|
if (plane === "frame" && child.definition.inputClasses !== null) continue;
|
|
3087
3094
|
if (!this.matchesInputClasses(parentDetection.macroClass, child.inputClasses)) continue;
|
|
@@ -3099,13 +3106,13 @@ var PipelineExecutor = class {
|
|
|
3099
3106
|
const minFaceSize = typeof child.settings?.["minFaceSize"] === "number" ? child.settings["minFaceSize"] : DEFAULT_MIN_FACE_SIZE_PX;
|
|
3100
3107
|
const detShortSide = bboxShortSide(parentDetection.bbox);
|
|
3101
3108
|
if (detShortSide < MIN_FACE_DETECTION_FLOOR_PX) {
|
|
3102
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0);
|
|
3109
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0, deviceId);
|
|
3103
3110
|
continue;
|
|
3104
3111
|
}
|
|
3105
3112
|
const lms = parentDetection.landmarks;
|
|
3106
3113
|
if (lms && lms.length >= 5) {
|
|
3107
3114
|
if (!nativeFaceCropProvider && detShortSide < minFaceSize) {
|
|
3108
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0);
|
|
3115
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0, deviceId);
|
|
3109
3116
|
continue;
|
|
3110
3117
|
}
|
|
3111
3118
|
const aligned = await buildAlignedFaceCrop({
|
|
@@ -3122,7 +3129,7 @@ var PipelineExecutor = class {
|
|
|
3122
3129
|
});
|
|
3123
3130
|
const gateShortSide = aligned.nativeFaceShortSidePx ?? detShortSide;
|
|
3124
3131
|
if (gateShortSide < minFaceSize) {
|
|
3125
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, aligned.source === "native" ? gateShortSide : void 0);
|
|
3132
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, aligned.source === "native" ? gateShortSide : void 0, deviceId);
|
|
3126
3133
|
continue;
|
|
3127
3134
|
}
|
|
3128
3135
|
cropJpegBuf = aligned.jpeg;
|
|
@@ -3131,7 +3138,7 @@ var PipelineExecutor = class {
|
|
|
3131
3138
|
parentDetection.faceAlignedCrop = cropJpegBuf.toString("base64");
|
|
3132
3139
|
} else {
|
|
3133
3140
|
if (detShortSide < minFaceSize) {
|
|
3134
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0);
|
|
3141
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0, deviceId);
|
|
3135
3142
|
continue;
|
|
3136
3143
|
}
|
|
3137
3144
|
const crop = await cropJpeg(fullFrameJpeg, parentDetection.bbox, imageWidth, imageHeight);
|
|
@@ -3163,15 +3170,15 @@ var PipelineExecutor = class {
|
|
|
3163
3170
|
y: l.y + py1
|
|
3164
3171
|
}));
|
|
3165
3172
|
}
|
|
3166
|
-
await this.executeChildren(child.children, detail, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, nativeFaceCropProvider);
|
|
3173
|
+
await this.executeChildren(child.children, detail, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, deviceId, nativeFaceCropProvider);
|
|
3167
3174
|
}
|
|
3168
3175
|
}
|
|
3169
3176
|
} catch (err) {
|
|
3170
|
-
this.throttledWarn(`child-fail:${child.stepId}`, 15e3, "pipeline child step failed", {
|
|
3177
|
+
this.throttledWarn(`child-fail:${child.stepId}:${deviceId}`, 15e3, "pipeline child step failed", {
|
|
3171
3178
|
step: child.stepId,
|
|
3172
3179
|
model: child.modelId,
|
|
3173
3180
|
error: require_dist.errMsg(err)
|
|
3174
|
-
});
|
|
3181
|
+
}, deviceId);
|
|
3175
3182
|
}
|
|
3176
3183
|
}
|
|
3177
3184
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import { D as nodePin, H as createEvent, I as errMsg, L as BaseAddon, O as pipelineExecutorCapability, P as supportedRuntimes$1, U as hydrateSchema, V as EventCategory, X as sleep, b as detectionPipelineCapability, f as YAMNET_TO_MACRO, j as runtimeDevices$1, q as parseJsonUnknown, t as APPLE_SA_TO_MACRO, v as defaultDeviceFor$1, x as evaluateZoneRules } from "../dist-
|
|
3
|
-
import { a as getStepDefinition, i as getStep, n as ALL_STEPS, o as resolveModelForFormat, r as getDefaultModelForFormat, t as ALL_PIPELINE_STEPS } from "../step-definitions-
|
|
2
|
+
import { D as nodePin, H as createEvent, I as errMsg, L as BaseAddon, O as pipelineExecutorCapability, P as supportedRuntimes$1, U as hydrateSchema, V as EventCategory, X as sleep, b as detectionPipelineCapability, f as YAMNET_TO_MACRO, j as runtimeDevices$1, q as parseJsonUnknown, t as APPLE_SA_TO_MACRO, v as defaultDeviceFor$1, x as evaluateZoneRules } from "../dist-CrjLGrkj.mjs";
|
|
3
|
+
import { a as getStepDefinition, i as getStep, n as ALL_STEPS, o as resolveModelForFormat, r as getDefaultModelForFormat, t as ALL_PIPELINE_STEPS } from "../step-definitions-dCghpdRo.mjs";
|
|
4
4
|
import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
|
|
5
5
|
import { a as isModelDownloaded, i as ensureModel, n as deleteModelFromDisk } from "../model-download-service-C-IHWnXx-BPy6aoAx.mjs";
|
|
6
6
|
import { FrameRingReaderCache } from "@camstack/shm-ring";
|
|
@@ -2852,12 +2852,19 @@ var PipelineExecutor = class {
|
|
|
2852
2852
|
/** Per-key last-warn timestamps, so a persistently-failing/skipping child
|
|
2853
2853
|
* step surfaces a diagnostic without spamming the log every frame. */
|
|
2854
2854
|
warnThrottleAt = /* @__PURE__ */ new Map();
|
|
2855
|
-
throttledWarn(key, everyMs, message, meta) {
|
|
2855
|
+
throttledWarn(key, everyMs, message, meta, deviceId) {
|
|
2856
2856
|
const logger = this.opts.logger;
|
|
2857
2857
|
if (!logger) return;
|
|
2858
2858
|
const now = Date.now();
|
|
2859
2859
|
if (now - (this.warnThrottleAt.get(key) ?? 0) < everyMs) return;
|
|
2860
2860
|
this.warnThrottleAt.set(key, now);
|
|
2861
|
+
if (deviceId !== void 0) {
|
|
2862
|
+
logger.warn(message, {
|
|
2863
|
+
tags: { deviceId },
|
|
2864
|
+
meta
|
|
2865
|
+
});
|
|
2866
|
+
return;
|
|
2867
|
+
}
|
|
2861
2868
|
logger.warn(message, { meta });
|
|
2862
2869
|
}
|
|
2863
2870
|
/**
|
|
@@ -2867,15 +2874,15 @@ var PipelineExecutor = class {
|
|
|
2867
2874
|
* native crop, the NATIVE face size so an operator sees the size that actually
|
|
2868
2875
|
* gated. Throttled so it isn't per-frame spam.
|
|
2869
2876
|
*/
|
|
2870
|
-
warnFaceTooSmall(child, detShortSidePx, minFaceSizePx, nativeFaceShortSidePx) {
|
|
2871
|
-
this.throttledWarn(`face-small:${child.stepId}`, 3e4, "face detected but too small to embed — skipping", {
|
|
2877
|
+
warnFaceTooSmall(child, detShortSidePx, minFaceSizePx, nativeFaceShortSidePx, deviceId) {
|
|
2878
|
+
this.throttledWarn(`face-small:${child.stepId}:${deviceId}`, 3e4, "face detected but too small to embed — skipping", {
|
|
2872
2879
|
step: child.stepId,
|
|
2873
2880
|
model: child.modelId,
|
|
2874
2881
|
faceShortSidePx: Math.round(detShortSidePx),
|
|
2875
2882
|
minFaceSizePx,
|
|
2876
2883
|
gatedOn: nativeFaceShortSidePx === void 0 ? "detection" : "native",
|
|
2877
2884
|
...nativeFaceShortSidePx === void 0 ? {} : { nativeFaceShortSidePx: Math.round(nativeFaceShortSidePx) }
|
|
2878
|
-
});
|
|
2885
|
+
}, deviceId);
|
|
2879
2886
|
}
|
|
2880
2887
|
/**
|
|
2881
2888
|
* Execute the full pipeline tree against a frame.
|
|
@@ -2918,7 +2925,7 @@ var PipelineExecutor = class {
|
|
|
2918
2925
|
const mutable = this.synthesizeRootDetection(rootOutput, rootStep, idGen, rootMs, imageWidth, imageHeight);
|
|
2919
2926
|
applyChildOutput(mutable, rootStep, rootOutput, rootMs, ctx);
|
|
2920
2927
|
try {
|
|
2921
|
-
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, nativeFaceCropProvider);
|
|
2928
|
+
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, deviceId, nativeFaceCropProvider);
|
|
2922
2929
|
} catch (err) {
|
|
2923
2930
|
this.opts.logger?.warn("Pipeline child execution failed — keeping parent detection", {
|
|
2924
2931
|
tags: { deviceId },
|
|
@@ -2948,7 +2955,7 @@ var PipelineExecutor = class {
|
|
|
2948
2955
|
continue;
|
|
2949
2956
|
}
|
|
2950
2957
|
try {
|
|
2951
|
-
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, nativeFaceCropProvider);
|
|
2958
|
+
await this.executeChildren(rootStep.children, mutable, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, runOpts?.plane, deviceId, nativeFaceCropProvider);
|
|
2952
2959
|
} catch (err) {
|
|
2953
2960
|
this.opts.logger?.warn("Pipeline child execution failed — keeping parent detection", {
|
|
2954
2961
|
tags: { deviceId },
|
|
@@ -3073,7 +3080,7 @@ var PipelineExecutor = class {
|
|
|
3073
3080
|
});
|
|
3074
3081
|
return output;
|
|
3075
3082
|
}
|
|
3076
|
-
async executeChildren(children, parentDetection, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, nativeFaceCropProvider) {
|
|
3083
|
+
async executeChildren(children, parentDetection, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, deviceId, nativeFaceCropProvider) {
|
|
3077
3084
|
for (const child of children) {
|
|
3078
3085
|
if (plane === "frame" && child.definition.inputClasses !== null) continue;
|
|
3079
3086
|
if (!this.matchesInputClasses(parentDetection.macroClass, child.inputClasses)) continue;
|
|
@@ -3091,13 +3098,13 @@ var PipelineExecutor = class {
|
|
|
3091
3098
|
const minFaceSize = typeof child.settings?.["minFaceSize"] === "number" ? child.settings["minFaceSize"] : DEFAULT_MIN_FACE_SIZE_PX;
|
|
3092
3099
|
const detShortSide = bboxShortSide(parentDetection.bbox);
|
|
3093
3100
|
if (detShortSide < MIN_FACE_DETECTION_FLOOR_PX) {
|
|
3094
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0);
|
|
3101
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0, deviceId);
|
|
3095
3102
|
continue;
|
|
3096
3103
|
}
|
|
3097
3104
|
const lms = parentDetection.landmarks;
|
|
3098
3105
|
if (lms && lms.length >= 5) {
|
|
3099
3106
|
if (!nativeFaceCropProvider && detShortSide < minFaceSize) {
|
|
3100
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0);
|
|
3107
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0, deviceId);
|
|
3101
3108
|
continue;
|
|
3102
3109
|
}
|
|
3103
3110
|
const aligned = await buildAlignedFaceCrop({
|
|
@@ -3114,7 +3121,7 @@ var PipelineExecutor = class {
|
|
|
3114
3121
|
});
|
|
3115
3122
|
const gateShortSide = aligned.nativeFaceShortSidePx ?? detShortSide;
|
|
3116
3123
|
if (gateShortSide < minFaceSize) {
|
|
3117
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, aligned.source === "native" ? gateShortSide : void 0);
|
|
3124
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, aligned.source === "native" ? gateShortSide : void 0, deviceId);
|
|
3118
3125
|
continue;
|
|
3119
3126
|
}
|
|
3120
3127
|
cropJpegBuf = aligned.jpeg;
|
|
@@ -3123,7 +3130,7 @@ var PipelineExecutor = class {
|
|
|
3123
3130
|
parentDetection.faceAlignedCrop = cropJpegBuf.toString("base64");
|
|
3124
3131
|
} else {
|
|
3125
3132
|
if (detShortSide < minFaceSize) {
|
|
3126
|
-
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0);
|
|
3133
|
+
this.warnFaceTooSmall(child, detShortSide, minFaceSize, void 0, deviceId);
|
|
3127
3134
|
continue;
|
|
3128
3135
|
}
|
|
3129
3136
|
const crop = await cropJpeg(fullFrameJpeg, parentDetection.bbox, imageWidth, imageHeight);
|
|
@@ -3155,15 +3162,15 @@ var PipelineExecutor = class {
|
|
|
3155
3162
|
y: l.y + py1
|
|
3156
3163
|
}));
|
|
3157
3164
|
}
|
|
3158
|
-
await this.executeChildren(child.children, detail, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, nativeFaceCropProvider);
|
|
3165
|
+
await this.executeChildren(child.children, detail, fullFrameJpegProvider, imageWidth, imageHeight, traceBuilder, stepTimings, ctx, poolAgg, plane, deviceId, nativeFaceCropProvider);
|
|
3159
3166
|
}
|
|
3160
3167
|
}
|
|
3161
3168
|
} catch (err) {
|
|
3162
|
-
this.throttledWarn(`child-fail:${child.stepId}`, 15e3, "pipeline child step failed", {
|
|
3169
|
+
this.throttledWarn(`child-fail:${child.stepId}:${deviceId}`, 15e3, "pipeline child step failed", {
|
|
3163
3170
|
step: child.stepId,
|
|
3164
3171
|
model: child.modelId,
|
|
3165
3172
|
error: errMsg(err)
|
|
3166
|
-
});
|
|
3173
|
+
}, deviceId);
|
|
3167
3174
|
}
|
|
3168
3175
|
}
|
|
3169
3176
|
}
|