1
This commit is contained in:
@@ -12,8 +12,12 @@ class FrameAnalyzer {
|
||||
/// 连续检测:100ms 一帧
|
||||
int intervalMs = 100;
|
||||
|
||||
/// null = 模型加载失败,仅预览不分析
|
||||
final DetectorWorker? worker;
|
||||
DetectorWorker? _worker;
|
||||
|
||||
/// 当前推理 worker(null = 仅预览不分析);相机启动后可用 [attachWorker]
|
||||
/// 原地替换(相机帧流回调闭包捕获的是本 analyzer 对象,无需重启相机)
|
||||
DetectorWorker? get worker => _worker;
|
||||
|
||||
final CameraViewModel viewModel;
|
||||
|
||||
int _lastDetectMs = 0;
|
||||
@@ -29,9 +33,21 @@ class FrameAnalyzer {
|
||||
/// 图像流回调是否到达(诊断用)
|
||||
int framesReceived = 0;
|
||||
|
||||
FrameAnalyzer({required this.worker, required this.viewModel}) {
|
||||
worker?.onResult = _onResult;
|
||||
worker?.onError = _onError;
|
||||
FrameAnalyzer({DetectorWorker? worker, required this.viewModel}) {
|
||||
attachWorker(worker);
|
||||
}
|
||||
|
||||
/// 替换推理 worker(null = 停识别仅预览)。旧 worker 在此释放;若相机已
|
||||
/// 启动则新 worker 立即接管后续帧——重启相机会重新 initialize
|
||||
/// (iOS ~1s+)且预览闪断,原地替换即时生效(2026-09-03)。
|
||||
void attachWorker(DetectorWorker? w) {
|
||||
if (identical(_worker, w)) return;
|
||||
final old = _worker;
|
||||
_worker = w;
|
||||
w?.onResult = _onResult;
|
||||
w?.onError = _onError;
|
||||
old?.dispose();
|
||||
_lastDetectMs = 0;
|
||||
}
|
||||
|
||||
void recordStreamError(String msg) {
|
||||
@@ -127,5 +143,5 @@ class FrameAnalyzer {
|
||||
|
||||
void reset() => _lastDetectMs = 0;
|
||||
|
||||
void dispose() => worker?.dispose();
|
||||
void dispose() => _worker?.dispose();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user