diff --git a/CHANGELOG.md b/CHANGELOG.md index 5cf38f3b..8999623c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,9 @@ Repository: **** ## Changelog -### **HEAD -> main** 2021/05/24 mandic00@live.com +### **HEAD -> main** 2021/05/25 mandic00@live.com +- implemented unified result.persons that combines face, body and hands for each person - added experimental results interpolation for smooth draw operations ### **1.9.3** 2021/05/23 mandic00@live.com diff --git a/demo/index.js b/demo/index.js index 9a7fcc89..f14911c5 100644 --- a/demo/index.js +++ b/demo/index.js @@ -304,10 +304,19 @@ async function setupCamera() { ui.busy = false; return msg; } + // enumerate devices for diag purposes + const devices = await navigator.mediaDevices.enumerateDevices(); + log('enumerated devices:'); + for (const device of devices) log(` kind:${device.kind} label:${device.label} id:${device.deviceId}`); + let stream; const constraints = { audio: false, - video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' }, + video: { + facingMode: ui.facing ? 'user' : 'environment', + resizeMode: ui.crop ? 'crop-and-scale' : 'none', + // deviceId: 'xxxx' // if you have multiple webcams, specify one to use explicitly + }, }; if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth }; else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) }; @@ -328,8 +337,19 @@ async function setupCamera() { ui.busy = false; return 'camera stream empty'; } + const tracks = stream.getVideoTracks(); + if (tracks && tracks.length >= 1) { + if (tracks.length >= 1) { + log('enumerated viable tracks:', tracks.length); + for (const t of tracks) log(` ${t.kind}: ${t.label}`); + } + } else { + ui.busy = false; + return 'no camera track'; + } const track = stream.getVideoTracks()[0]; const settings = track.getSettings(); + log('selected camera:', track.label, 'id:', settings.deviceId); // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track); ui.camera = { name: track.label.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' }; return new Promise((resolve) => { diff --git a/package.json b/package.json index a630a7d2..df405b6e 100644 --- a/package.json +++ b/package.json @@ -67,8 +67,8 @@ "@vladmandic/pilogger": "^0.2.17", "canvas": "^2.8.0", "chokidar": "^3.5.1", - "dayjs": "^1.10.4", - "esbuild": "^0.12.2", + "dayjs": "^1.10.5", + "esbuild": "^0.12.3", "eslint": "^7.27.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-plugin-import": "^2.23.3", diff --git a/server/build.log b/server/build.log index dd59a0b5..d3b74f40 100644 --- a/server/build.log +++ b/server/build.log @@ -1,17 +1,17 @@ -2021-05-25 08:45:35 INFO:  @vladmandic/human version 1.9.3 -2021-05-25 08:45:35 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0 -2021-05-25 08:45:35 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true} -2021-05-25 08:45:35 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"} -2021-05-25 08:45:35 STATE: Build for: node type: node: {"imports":37,"importBytes":431051,"outputBytes":385549,"outputFiles":"dist/human.node.js"} -2021-05-25 08:45:35 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"} -2021-05-25 08:45:35 STATE: Build for: nodeGPU type: node: {"imports":37,"importBytes":431059,"outputBytes":385553,"outputFiles":"dist/human.node-gpu.js"} -2021-05-25 08:45:35 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"} -2021-05-25 08:45:35 STATE: Build for: nodeWASM type: node: {"imports":37,"importBytes":431126,"outputBytes":385625,"outputFiles":"dist/human.node-wasm.js"} -2021-05-25 08:45:35 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2478,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"} -2021-05-25 08:45:35 STATE: Build for: browserNoBundle type: esm: {"imports":37,"importBytes":431153,"outputBytes":236268,"outputFiles":"dist/human.esm-nobundle.js"} -2021-05-25 08:45:36 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2478,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"} -2021-05-25 08:45:36 STATE: Build for: browserBundle type: iife: {"imports":37,"importBytes":1541173,"outputBytes":1344154,"outputFiles":"dist/human.js"} -2021-05-25 08:45:36 STATE: Build for: browserBundle type: esm: {"imports":37,"importBytes":1541173,"outputBytes":1344146,"outputFiles":"dist/human.esm.js"} -2021-05-25 08:45:36 INFO:  Generate types: ["src/human.ts"] -2021-05-25 08:45:41 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"] -2021-05-25 08:45:41 INFO:  Generate TypeDocs: ["src/human.ts"] +2021-05-26 07:57:03 INFO:  @vladmandic/human version 1.9.3 +2021-05-26 07:57:03 INFO:  User: vlado Platform: linux Arch: x64 Node: v16.0.0 +2021-05-26 07:57:03 INFO:  Build: file startup all type: production config: {"minifyWhitespace":true,"minifyIdentifiers":true,"minifySyntax":true} +2021-05-26 07:57:03 STATE: Build for: node type: tfjs: {"imports":1,"importBytes":102,"outputBytes":1292,"outputFiles":"dist/tfjs.esm.js"} +2021-05-26 07:57:03 STATE: Build for: node type: node: {"imports":37,"importBytes":431051,"outputBytes":385549,"outputFiles":"dist/human.node.js"} +2021-05-26 07:57:03 STATE: Build for: nodeGPU type: tfjs: {"imports":1,"importBytes":110,"outputBytes":1300,"outputFiles":"dist/tfjs.esm.js"} +2021-05-26 07:57:03 STATE: Build for: nodeGPU type: node: {"imports":37,"importBytes":431059,"outputBytes":385553,"outputFiles":"dist/human.node-gpu.js"} +2021-05-26 07:57:03 STATE: Build for: nodeWASM type: tfjs: {"imports":1,"importBytes":149,"outputBytes":1367,"outputFiles":"dist/tfjs.esm.js"} +2021-05-26 07:57:03 STATE: Build for: nodeWASM type: node: {"imports":37,"importBytes":431126,"outputBytes":385625,"outputFiles":"dist/human.node-wasm.js"} +2021-05-26 07:57:03 STATE: Build for: browserNoBundle type: tfjs: {"imports":1,"importBytes":2478,"outputBytes":1394,"outputFiles":"dist/tfjs.esm.js"} +2021-05-26 07:57:03 STATE: Build for: browserNoBundle type: esm: {"imports":37,"importBytes":431153,"outputBytes":236268,"outputFiles":"dist/human.esm-nobundle.js"} +2021-05-26 07:57:04 STATE: Build for: browserBundle type: tfjs: {"modules":1274,"moduleBytes":4114813,"imports":7,"importBytes":2478,"outputBytes":1111414,"outputFiles":"dist/tfjs.esm.js"} +2021-05-26 07:57:04 STATE: Build for: browserBundle type: iife: {"imports":37,"importBytes":1541173,"outputBytes":1344154,"outputFiles":"dist/human.js"} +2021-05-26 07:57:05 STATE: Build for: browserBundle type: esm: {"imports":37,"importBytes":1541173,"outputBytes":1344146,"outputFiles":"dist/human.esm.js"} +2021-05-26 07:57:05 INFO:  Generate types: ["src/human.ts"] +2021-05-26 07:57:10 INFO:  Update Change log: ["/home/vlado/dev/human/CHANGELOG.md"] +2021-05-26 07:57:10 INFO:  Generate TypeDocs: ["src/human.ts"]