v145 · macOS · Device Inventory Diff
Device inventory diff
Enumerate every camera Chrome can see, classify each as real / DAL-virtual / CMIO-virtual, and diff against what Chrome 144 would have shown. Built-in macOS continuity + CoreMediaIO-aware virtual cameras stay; legacy DAL-only virtual cameras are gone.
enumerateDevices().
cameras on this machine
Still supported (Chrome 145)
No devices yet.
Removed in Chrome 145
No devices yet.
how the diff works
Chrome 145 drops support for cameras that only register through the legacy DAL (Device Abstraction Layer) plug-in API on macOS — a long-deprecated Apple framework. Cameras that adopt the modern CoreMediaIO (CMIO) extension framework (the path Apple ships with macOS Monterey+) keep working. Continuity Camera, iOS passthrough, and AVCaptureDevice-backed virtual cameras are unaffected.
We can't read the underlying framework from JavaScript, but the device label is a strong signal. The page applies a heuristic — labels matching well-known DAL-only virtual camera names (older OBS Virtual Camera builds, ManyCam DAL, CamTwist) move to the "Removed" column.
const devices = await navigator.mediaDevices.enumerateDevices();
const cameras = devices.filter(d => d.kind === 'videoinput');
const DAL_HINTS = [/obs.*virtual.*camera\s*\(.*dal/i, /camtwist/i, /manycam.*dal/i];
const classify = (label) => {
if (DAL_HINTS.some(rx => rx.test(label))) return 'removed';
if (/virtual/i.test(label)) return 'virtual-cmio'; // assumes CMIO migration
if (/iphone|continuity/i.test(label)) return 'continuity';
return 'real';
};
const removed = cameras.filter(c => classify(c.label) === 'removed');