From 2af7dd1f9fd6020262b35847326251b6ec1e3be6 Mon Sep 17 00:00:00 2001 From: Bryce Tham Date: Fri, 20 Oct 2023 13:57:09 -0400 Subject: [PATCH] feat: add API for virtual background (#5) Co-authored-by: Bryce Tham --- src/web-capabilities.spec.ts | 12 ++++++++---- src/web-capabilities.ts | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/web-capabilities.spec.ts b/src/web-capabilities.spec.ts index 01c4e44..9e39153 100644 --- a/src/web-capabilities.spec.ts +++ b/src/web-capabilities.spec.ts @@ -13,38 +13,42 @@ const mockCpuInfo = (cpuInfo: CpuInfo) => { describe('WebCapabilities', () => { it('should get correct capabilities for a machine with unknown CPU information', () => { - expect.assertions(3); + expect.assertions(4); mockCpuInfo({}); expect(WebCapabilities.isCapableOfBackgroundNoiseRemoval()).toBe(CapabilityState.UNKNOWN); + expect(WebCapabilities.isCapableOfVirtualBackground()).toBe(CapabilityState.UNKNOWN); expect(WebCapabilities.isCapableOfReceiving1080pVideo()).toBe(CapabilityState.UNKNOWN); expect(WebCapabilities.isCapableOfSending1080pVideo()).toBe(CapabilityState.UNKNOWN); }); it('should get correct capabilities for a 1-core machine', () => { - expect.assertions(3); + expect.assertions(4); mockCpuInfo({ numLogicalCores: 1 }); expect(WebCapabilities.isCapableOfBackgroundNoiseRemoval()).toBe(CapabilityState.NOT_CAPABLE); + expect(WebCapabilities.isCapableOfVirtualBackground()).toBe(CapabilityState.NOT_CAPABLE); expect(WebCapabilities.isCapableOfReceiving1080pVideo()).toBe(CapabilityState.NOT_CAPABLE); expect(WebCapabilities.isCapableOfSending1080pVideo()).toBe(CapabilityState.NOT_CAPABLE); }); it('should get correct capabilities for a 2-core machine', () => { - expect.assertions(3); + expect.assertions(4); mockCpuInfo({ numLogicalCores: 2 }); expect(WebCapabilities.isCapableOfBackgroundNoiseRemoval()).toBe(CapabilityState.CAPABLE); + expect(WebCapabilities.isCapableOfVirtualBackground()).toBe(CapabilityState.CAPABLE); expect(WebCapabilities.isCapableOfReceiving1080pVideo()).toBe(CapabilityState.CAPABLE); expect(WebCapabilities.isCapableOfSending1080pVideo()).toBe(CapabilityState.NOT_CAPABLE); }); it('should get correct capabilities for a 8-core machine', () => { - expect.assertions(3); + expect.assertions(4); mockCpuInfo({ numLogicalCores: 8 }); expect(WebCapabilities.isCapableOfBackgroundNoiseRemoval()).toBe(CapabilityState.CAPABLE); + expect(WebCapabilities.isCapableOfVirtualBackground()).toBe(CapabilityState.CAPABLE); expect(WebCapabilities.isCapableOfReceiving1080pVideo()).toBe(CapabilityState.CAPABLE); expect(WebCapabilities.isCapableOfSending1080pVideo()).toBe(CapabilityState.CAPABLE); }); diff --git a/src/web-capabilities.ts b/src/web-capabilities.ts index e3735f4..c84c760 100644 --- a/src/web-capabilities.ts +++ b/src/web-capabilities.ts @@ -33,6 +33,21 @@ export class WebCapabilities { return CapabilityState.CAPABLE; } + /** + * Checks whether the machine is capable of virtual background. + * + * @returns A {@link CapabilityState}. + */ + static isCapableOfVirtualBackground(): CapabilityState { + if (WebCapabilities.cpuInfo.numLogicalCores === undefined) { + return CapabilityState.UNKNOWN; + } + if (WebCapabilities.cpuInfo.numLogicalCores < 2) { + return CapabilityState.NOT_CAPABLE; + } + return CapabilityState.CAPABLE; + } + /** * Checks whether the machine is capable of receiving 1080p video. *